@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--color-primary:#212842;--color-primary-hover:#171c30;--color-primary-raised:#2c3454;--color-primary-tint:#e8e9ef;--color-on-primary:#f0e7d5;--color-secondary:#f0e7d5;--color-secondary-hover:#e6d9bf;--color-on-secondary:#212842;--color-page:#fdfbf7;--color-chrome:#f5efe2;--color-surface:#fff;--color-terminal:#1e1e1e;--color-on-terminal:#ccc;--color-line:#e4d9c2;--color-line-strong:#d4c4a3;--color-gutter:#b7aa8c;--color-ink:#212842;--color-ink-2:#4b5068;--color-ink-3:#5c6175;--color-mark:#e8d6ae;--color-ok:#2e6a4e;--color-ok-on-primary:#8fd1a8;--color-markdown:#b3551a;--color-folder:#9e7424;--color-number:#a0521b;--color-link:#2f5f9e;--color-pending:#8a5a00;--color-star:#e3b341;--color-alert-line:#8fcaa6;--color-alert-icon:#2e6a4e;--color-alert-title:#1f5139;--color-alert-later:#e8f5ed;--color-transparent:transparent;--color-current:currentColor;--font-display:"Schibsted Grotesk", "Helvetica Neue", Arial, sans-serif;--font-body:"Source Serif 4", "Times New Roman", Times, serif;--font-code:ui-monospace, "SFMono-Regular", Menlo, Consolas, "Liberation Mono", monospace;--text-chrome:.75rem;--text-chrome--line-height:1.4;--text-status:.6875rem;--text-status--line-height:1;--text-meta:.8125rem;--text-meta--line-height:1.45;--text-small:.875rem;--text-small--line-height:1.4;--text-button:.9375rem;--text-button--line-height:1;--text-read:1rem;--text-read--line-height:1.65;--text-body:1.0625rem;--text-body--line-height:1.6;--text-h3:1.125rem;--text-h3--line-height:1.3;--text-h2:1.5rem;--text-h2--line-height:1.2;--text-h2--letter-spacing:-.01em;--text-display:clamp(2.25rem, 1.6rem + 2.4vw, 3.25rem);--text-display--line-height:1.02;--text-display--letter-spacing:-.025em;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--spacing-0:0px;--spacing-px:1px;--spacing-1:.25rem;--spacing-2:.5rem;--spacing-3:.75rem;--spacing-4:1rem;--spacing-5:1.25rem;--spacing-6:1.5rem;--spacing-8:2rem;--spacing-10:2.5rem;--spacing-12:3rem;--spacing-16:4rem;--spacing-24:6rem;--spacing-32:8rem;--spacing-control:2.5rem;--spacing-tap:2.75rem;--spacing-row:2rem;--spacing-title:2.125rem;--spacing-tabs:2.125rem;--spacing-crumbs:1.75rem;--spacing-status:1.5rem;--spacing-rail:3rem;--spacing-side:17rem;--container-measure:none;--container-view:72rem;--container-page:72rem;--radius-sm:3px;--radius-md:6px;--radius-control:8px;--radius-card:12px;--radius-full:9999px;--breakpoint-sm:40rem;--breakpoint-md:52rem;--breakpoint-lg:64rem;--ease-out:cubic-bezier(.2, .7, .2, 1);--default-transition-duration:.16s;--default-transition-timing-function:cubic-bezier(.2, .7, .2, 1);--default-font-family:var(--font-body);--default-mono-font-family:var(--font-code)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}html{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;scrollbar-width:thin;scrollbar-color:var(--color-primary) var(--color-chrome)}html::-webkit-scrollbar{width:10px}html::-webkit-scrollbar-track{background:var(--color-chrome)}html::-webkit-scrollbar-thumb{background:var(--color-primary);border:2px solid var(--color-chrome);border-radius:var(--radius-full)}body{background:var(--color-page);color:var(--color-ink);font-family:var(--font-body);font-size:var(--text-read);line-height:var(--text-read--line-height);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0}h1,h2,h3{font-family:var(--font-display);color:var(--color-ink);text-wrap:balance;margin:0}h1{font-size:var(--text-display);line-height:var(--text-display--line-height);letter-spacing:var(--text-display--letter-spacing);font-weight:var(--font-weight-bold)}h2{font-size:var(--text-h2);line-height:var(--text-h2--line-height);letter-spacing:var(--text-h2--letter-spacing);font-weight:var(--font-weight-bold)}h3{font-size:var(--text-h3);line-height:var(--text-h3--line-height);font-weight:var(--font-weight-semibold)}p,ul,ol,dl,figure{margin:0}ul,ol{padding:0}strong,b{font-weight:var(--font-weight-semibold)}a{color:var(--color-primary);text-underline-offset:.2em;text-decoration:underline;text-decoration-thickness:1px}a:hover{color:var(--color-primary-hover);text-decoration-thickness:2px}button{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:var(--radius-sm)}::selection{background:var(--color-secondary);color:var(--color-on-secondary)}code{font-family:var(--font-code);font-size:.85em}[hidden]{display:none!important}}@layer components{.btn{align-items:center;gap:var(--spacing-2);min-height:var(--spacing-control);padding-inline:var(--spacing-4);border:1px solid var(--color-primary);border-radius:var(--radius-control);background:var(--color-primary);color:var(--color-on-primary);font-family:var(--font-display);font-size:var(--text-button);line-height:var(--text-button--line-height);font-weight:var(--font-weight-bold);white-space:nowrap;cursor:pointer;transition:background-color var(--default-transition-duration) var(--ease-out), border-color var(--default-transition-duration) var(--ease-out);text-decoration:none;display:inline-flex}.btn:hover{background:var(--color-primary-hover);border-color:var(--color-primary-hover);color:var(--color-on-primary)}.btn:focus-visible{border-radius:var(--radius-control)}.btn small{font-size:var(--text-meta);font-weight:var(--font-weight-medium);opacity:.8}.btn svg{flex:none;width:18px;height:18px}.btn-secondary{background:var(--color-page);color:var(--color-on-secondary)}.btn-secondary:hover{background:var(--color-secondary);border-color:var(--color-primary);color:var(--color-on-secondary)}.btn-quiet{color:var(--color-primary);background:0 0;border-color:#0000}.btn-quiet:hover{background:var(--color-primary-tint);color:var(--color-primary);border-color:#0000}@media (pointer:coarse){.btn{min-height:var(--spacing-tap)}}.md-icon:before{content:"M↓";border-radius:var(--radius-sm);background:var(--color-markdown);color:var(--color-surface);font:var(--font-weight-bold) 10px/1.2 var(--font-code);flex:none;padding:2px 4px;text-decoration:none}.hero{--hero-name:clamp(2.5rem, calc(1.2rem + 4.2vw + 6px), 4.5rem);--hero-role:clamp(.8125rem, .78rem + .15vw, .875rem);--hero-lede:clamp(1rem, .93rem + .3vw, 1.125rem);--hero-cell:32px;--hero-fade:96px;--hero-strip:72px;--hero-speed:42s;--hero-cy:calc(50% - var(--hero-strip) / 2);--hero-glow:34rem 17rem;isolation:isolate;background:var(--color-page);grid-template-rows:minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr);place-items:stretch stretch;min-height:100svh;padding:0;display:grid;position:relative;overflow:hidden}.hero:before{--hero-hair:1px;content:"";z-index:-2;pointer-events:none;background-image:linear-gradient(to right, var(--color-line) var(--hero-hair), transparent var(--hero-hair)), linear-gradient(to bottom, var(--color-line) var(--hero-hair), transparent var(--hero-hair));background-size:var(--hero-cell) var(--hero-cell);opacity:.55;-webkit-mask-image:radial-gradient(ellipse var(--hero-glow) at 50% var(--hero-cy), transparent 58%, #000 135%);-webkit-mask-image:radial-gradient(ellipse var(--hero-glow) at 50% var(--hero-cy), transparent 58%, #000 135%);-webkit-mask-image:radial-gradient(ellipse var(--hero-glow) at 50% var(--hero-cy), transparent 58%, #000 135%);-webkit-mask-image:radial-gradient(ellipse var(--hero-glow) at 50% var(--hero-cy), transparent 58%, #000 135%);mask-image:radial-gradient(ellipse var(--hero-glow) at 50% var(--hero-cy), transparent 58%, #000 135%);background-position:50%;position:absolute;inset:0}@media (min-resolution:2x){.hero:before{--hero-hair:.5px;opacity:.8}}.hero-main{padding:var(--spacing-16) var(--spacing-4);text-align:center;align-content:center;justify-items:center;display:grid}.hero-name{font-size:var(--hero-name);letter-spacing:-.03em;line-height:1.02;font-weight:var(--font-weight-semibold)}.hero-role{margin-top:var(--spacing-5);font:var(--font-weight-semibold) var(--hero-role) / 1.4 var(--font-code);letter-spacing:.14em;text-transform:uppercase;color:var(--color-ink-2)}.hero-lede{max-width:34rem;margin-top:var(--spacing-3);font-family:var(--font-body);font-size:var(--hero-lede);color:var(--color-ink-2);text-wrap:balance;line-height:1.6}.hero-fig{font-variant-numeric:proportional-nums;font-variation-settings:"wght" 360;font-size:.94em}.hero-actions{justify-content:center;gap:var(--spacing-3);margin-top:var(--spacing-8);flex-wrap:wrap;display:flex}.hero .btn{min-height:var(--spacing-tap);padding-inline:var(--spacing-5)}.hero .btn img{flex:none}.hero-strip{border-top:1px solid var(--color-line);background:var(--color-page)}.hero-marquee{max-width:90rem;height:var(--hero-strip);-webkit-mask-image:linear-gradient(to right, transparent, #000 var(--hero-fade), #000 calc(100% - var(--hero-fade)), transparent);-webkit-mask-image:linear-gradient(to right, transparent, #000 var(--hero-fade), #000 calc(100% - var(--hero-fade)), transparent);-webkit-mask-image:linear-gradient(to right, transparent, #000 var(--hero-fade), #000 calc(100% - var(--hero-fade)), transparent);-webkit-mask-image:linear-gradient(to right, transparent, #000 var(--hero-fade), #000 calc(100% - var(--hero-fade)), transparent);mask-image:linear-gradient(to right, transparent, #000 var(--hero-fade), #000 calc(100% - var(--hero-fade)), transparent);align-items:center;margin-inline:auto;display:flex;overflow:hidden}.hero-marquee:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px;border-radius:0}.hero-track{width:max-content;display:flex}.hero-tools{align-items:center;gap:var(--spacing-10);padding-right:var(--spacing-10);animation:hero-marquee var(--hero-speed) linear infinite;will-change:transform;backface-visibility:hidden;flex:none;list-style:none;display:flex}.hero-marquee:focus-within .hero-tools{animation-play-state:paused}@media (hover:hover){.hero-marquee:hover .hero-tools{animation-play-state:paused}}.hero-marquee.is-js{scrollbar-width:none;overscroll-behavior-x:contain;touch-action:pan-x pan-y pinch-zoom;-webkit-user-select:none;user-select:none;overflow:auto hidden}.hero-marquee.is-js::-webkit-scrollbar{display:none}.hero-marquee.is-js .hero-track{will-change:transform}.hero-marquee.is-js .hero-tools{will-change:auto;animation:none}.hero-marquee.is-js img{-webkit-user-drag:none}@media (hover:hover) and (pointer:fine){.hero-marquee.is-js{cursor:grab}.hero-marquee.is-js.is-dragging{cursor:grabbing}}@keyframes hero-marquee{0%{transform:translate(0)}to{transform:translate(-100%)}}@media (prefers-reduced-motion:reduce){.hero{--hero-speed:84s}}.hero-tools li{align-items:center;gap:var(--spacing-2);font:var(--font-weight-medium) var(--text-small) / 1 var(--font-display);color:var(--color-ink-2);white-space:nowrap;display:flex}.hero-tool-logo{object-fit:contain;flex:none;width:22px;height:22px}.hero-tool-logo--wide{width:auto}@media (max-width:39.99rem){.hero{--hero-fade:48px;--hero-strip:64px;--hero-glow:15rem 20rem;--hero-cy:calc(50% - (var(--hero-strip) + var(--spacing-6)) / 2);padding-bottom:var(--spacing-6)}.hero-main{padding-block:var(--spacing-12)}.hero-lede{text-wrap:pretty;max-width:min(19rem,88%)}.hero-actions{width:min(100%,18rem);display:grid}.hero .btn{justify-content:center}}.ide{grid-template-columns:var(--spacing-rail) var(--spacing-side) minmax(0, 1fr);background:var(--color-page);grid-template-rows:auto 1fr auto;min-height:100dvh;display:grid}.ide.no-side{grid-template-columns:var(--spacing-rail) 0 minmax(0, 1fr)}.ide.no-side .ide-side{visibility:hidden}.ide-title{z-index:40;height:var(--spacing-title);padding-inline:var(--spacing-3);border-bottom:1px solid var(--color-line);background:var(--color-chrome);color:var(--color-ink-3);font:var(--text-chrome) / 1 var(--font-code);grid-area:1/1/auto/-1;grid-template-columns:1fr auto 1fr;align-items:center;display:grid;position:sticky;top:0}.ide-title .dots{gap:8px;width:max-content;display:flex}.ide-title .dots i{box-sizing:border-box;border-radius:var(--radius-full);border:.5px solid #0000001f;width:12px;height:12px}.ide-title .dots .dot-close{background:#ff5f57}.ide-title .dots .dot-min{background:#febc2e}.ide-title .dots .dot-max{background:#28c840}.ide-title .title{color:var(--color-ink-2);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.ide-title .menu{display:none}.ide-nav{display:contents}.ide-rail{z-index:35;top:var(--spacing-title);height:calc(100dvh - var(--spacing-title) - var(--spacing-status));padding-block:var(--spacing-2);background:var(--color-primary);flex-direction:column;grid-area:2/1;align-self:start;align-items:center;gap:2px;display:flex;position:sticky}.rail-btn{width:var(--spacing-rail);height:var(--spacing-tap);color:var(--color-on-primary);opacity:.7;cursor:pointer;background:0 0;border:0;place-items:center;text-decoration:none;display:grid;position:relative}.rail-btn svg{width:22px;height:22px}.rail-btn:hover,.rail-btn[aria-pressed=true],.rail-btn.is-action{opacity:1;color:var(--color-on-primary)}.rail-btn[aria-pressed=true]:before{content:"";background:var(--color-mark);width:2px;position:absolute;top:10px;bottom:10px;left:0}.rail-btn:hover{background:var(--color-primary-raised)}.rail-btn:focus-visible{outline-color:var(--color-on-primary);outline-offset:-4px}.rail-spacer{flex:1}.rail-rule{width:24px;margin-block:var(--spacing-1);border-top:1px solid #f0e7d540}@supports (color:color-mix(in lab, red, red)){.rail-rule{border-top:1px solid color-mix(in srgb, var(--color-on-primary) 25%, transparent)}}[data-tip]{position:relative}[data-tip]:hover:after,[data-tip]:focus-visible:after{content:attr(data-tip);z-index:60;border:1px solid var(--color-line);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-ink);font:var(--text-chrome) / 1.2 var(--font-code);white-space:nowrap;pointer-events:none;padding:4px 8px;position:absolute;top:50%;left:calc(100% + 6px);transform:translateY(-50%);box-shadow:0 4px 12px #2128421f}.ide-side{top:var(--spacing-title);height:calc(100dvh - var(--spacing-title) - var(--spacing-status));padding:var(--spacing-2);border-right:1px solid var(--color-line);background:var(--color-chrome);font:.8125rem / 1.2 var(--font-code);scrollbar-width:thin;grid-area:2/2;align-self:start;position:sticky;overflow:auto}.side-head{padding:var(--spacing-1) var(--spacing-2) var(--spacing-2);color:var(--color-ink-3)}.tree,.tree ul{list-style:none}.tree a,.tree .folder{min-height:var(--spacing-row);padding-inline:var(--spacing-2);border-radius:var(--radius-sm);color:var(--color-ink-2);white-space:nowrap;align-items:center;gap:7px;text-decoration:none;display:flex}.tree a:hover{background:var(--color-secondary);color:var(--color-ink)}.tree a[aria-current=page]{background:var(--color-secondary);color:var(--color-ink);font-weight:var(--font-weight-semibold);box-shadow:inset 2px 0 0 var(--color-primary)}.tree .name{text-overflow:ellipsis;min-width:0;overflow:hidden}.tree .folder{cursor:default;color:var(--color-ink-2)}.tree .folder:before{content:"▾";color:var(--color-ink-3);font-size:12px}.tree .folder svg{width:17px;height:17px;color:var(--color-folder);flex:none}.tree .l1{padding-left:24px}.tree .l2{padding-left:59px}.tree .ongoing:after{content:"";border-radius:var(--radius-full);background:var(--color-ok);flex:none;width:8px;height:8px;margin-left:auto}@media (pointer:coarse){.tree a{min-height:var(--spacing-tap)}}.ide-main{flex-direction:column;grid-area:2/3;min-width:0;display:flex}.tabs{top:var(--spacing-title);z-index:30;height:var(--spacing-tabs);scrollbar-width:none;border-bottom:1px solid var(--color-line);background:var(--color-chrome);font:var(--text-chrome) / 1 var(--font-code);display:flex;position:sticky;overflow-x:auto}.tabs::-webkit-scrollbar{display:none}.tab{align-items:center;gap:var(--spacing-2);max-width:18rem;height:100%;padding-left:var(--spacing-3);padding-right:var(--spacing-1);border-right:1px solid var(--color-line);color:var(--color-ink-3);flex:none;display:flex}.tab a{align-items:center;gap:var(--spacing-2);min-width:0;height:100%;color:inherit;text-decoration:none;display:flex}.tab a span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tab.is-active{background:var(--color-page);color:var(--color-ink);box-shadow:inset 0 2px 0 var(--color-primary);margin-bottom:-1px}.tab-close{border-radius:var(--radius-sm);width:24px;height:24px;color:var(--color-ink-3);cursor:pointer;background:0 0;border:0;place-items:center;display:grid}.tab-close:hover{background:var(--color-secondary);color:var(--color-ink)}.tab.is-pinned{padding-right:var(--spacing-3)}@media (pointer:coarse){.tab-close{width:var(--spacing-tap);height:100%}}.tabs-close-all{width:var(--spacing-tabs);border:0;border-left:1px solid var(--color-line);background:var(--color-chrome);height:100%;color:var(--color-ink-3);cursor:pointer;flex:none;place-items:center;margin-left:auto;display:grid;position:sticky;right:0}.tabs-close-all svg{width:16px;height:16px}.tabs-close-all:hover{background:var(--color-secondary);color:var(--color-ink)}@media (pointer:coarse){.tabs-close-all{width:var(--spacing-tap)}}.crumbs{top:calc(var(--spacing-title) + var(--spacing-tabs));z-index:30;align-items:center;gap:var(--spacing-2);min-height:var(--spacing-crumbs);padding-inline:var(--spacing-4);border-bottom:1px solid var(--color-line);background:var(--color-page);color:var(--color-ink-3);font:var(--text-chrome) / 1.2 var(--font-code);display:flex;position:sticky}.crumbs nav{flex:1;min-width:0}.crumbs ol{flex-wrap:wrap;align-items:center;gap:6px;min-width:0;list-style:none;display:flex}.crumbs li+li:before{content:"›";margin-right:6px}.crumbs [aria-current]{color:var(--color-ink)}.seg{border:1px solid var(--color-line);border-radius:var(--radius-md);flex:none;margin-left:auto;display:flex;overflow:hidden}.seg button{height:22px;padding-inline:var(--spacing-3);color:var(--color-ink-3);font:var(--text-chrome) / 1 var(--font-code);cursor:pointer;background:0 0;border:0}.seg button[aria-pressed=true]{background:var(--color-primary);color:var(--color-on-primary)}@media (pointer:coarse){.seg button{height:var(--spacing-row)}}.view-wrap{flex:1;position:relative}.view{max-width:var(--container-view);padding:var(--spacing-8) var(--spacing-10) var(--spacing-24)}.ide-status{z-index:40;height:var(--spacing-status);background:var(--color-primary);color:var(--color-on-primary);font:var(--text-status) / 1 var(--font-code);grid-area:3/1/auto/-1;justify-content:space-between;display:flex;position:sticky;bottom:0}.ide-status .group{align-items:stretch;min-width:0;display:flex}.ide-status .group:first-child{flex:none}.ide-status .item{align-items:center;gap:var(--spacing-1);padding-inline:var(--spacing-2);white-space:nowrap;display:flex}.ide-status .mark-left{background:var(--color-mark);color:var(--color-primary);font-weight:var(--font-weight-bold);padding-inline:10px}.ide-status .mark-right{background:var(--color-secondary);min-width:0;color:var(--color-primary);font-weight:var(--font-weight-bold);padding-inline:10px;overflow:hidden}.ide-status .mark-right span{text-overflow:ellipsis;overflow:hidden}.star{color:var(--color-star)}.ide-status .sb-icon{flex:none;width:14px;height:14px}.ide-status a.item{color:inherit;text-decoration:none}.ide-status a.item:hover{background:var(--color-primary-raised)}.ide-status a.item:focus-visible{outline-color:var(--color-on-primary);outline-offset:-3px}.ide-status .is-otw{font-weight:var(--font-weight-semibold)}.ide-status .is-otw:before{content:"";border-radius:var(--radius-full);background:var(--color-ok-on-primary);flex:none;width:7px;height:7px}.quick{z-index:70;background:#2128422e;position:fixed;inset:0}html:has(.quick:not([hidden])){padding-right:var(--scrollbar-w,0px);overflow:hidden}.quick-list,.pm-list{overscroll-behavior:contain}.quick-box{border:1px solid var(--color-line);background:var(--color-surface);border-radius:10px;width:min(35rem,100vw - 2rem);position:absolute;top:5.5rem;left:50%;overflow:hidden;transform:translate(-50%);box-shadow:0 16px 40px #21284240}.quick input{box-sizing:border-box;width:100%;padding:var(--spacing-3) 14px;border:0;border-bottom:1px solid var(--color-line);background:var(--color-page);color:var(--color-ink);font:13px / 1.4 var(--font-code);outline:none}.quick input:focus-visible{box-shadow:inset 0 -2px 0 var(--color-primary)}.quick-list{max-height:20rem;padding:6px;list-style:none;overflow:auto}.quick-list li{min-height:var(--spacing-row);border-radius:var(--radius-md);font:var(--text-chrome) / 1.3 var(--font-code);cursor:pointer;justify-content:space-between;align-items:center;gap:10px;padding:0 10px;display:flex}.quick-list li .where{color:var(--color-ink-3);font-size:var(--text-status)}.quick-list li[aria-selected=true]{background:var(--color-primary);color:var(--color-on-primary)}.quick-list li[aria-selected=true] .where{color:var(--color-mark)}.quick-list mark{background:var(--color-mark);color:var(--color-primary);border-radius:2px}.quick-hint{padding:var(--spacing-3) 14px;color:var(--color-ink-3);font:var(--text-chrome) / 1.5 var(--font-code)}.pm-box{width:min(30rem,100vw - 2rem)}.pm-box:focus{outline:none}.pm-head{padding:var(--spacing-2) var(--spacing-2) var(--spacing-2) 14px;border-bottom:1px solid var(--color-line);background:var(--color-page);font:var(--font-weight-bold) var(--text-chrome) / 1.2 var(--font-code);justify-content:space-between;align-items:center;display:flex}.pm-close{width:var(--spacing-row);height:var(--spacing-row);border-radius:var(--radius-md);color:var(--color-ink-3);cursor:pointer;background:0 0;border:0;place-items:center;font-size:18px;display:grid}.pm-close:hover{background:var(--color-chrome);color:var(--color-ink)}.pm-list{max-height:min(28rem,100dvh - 10rem);padding:6px;list-style:none;overflow:auto}.pm-item{align-items:center;gap:var(--spacing-3);min-height:var(--spacing-tap);padding:6px var(--spacing-2);border-radius:var(--radius-control);color:var(--color-ink);grid-template-columns:2.25rem minmax(0,1fr) auto;text-decoration:none;display:grid}a.pm-item:hover,a.pm-item:focus-visible{background:var(--color-secondary);color:var(--color-ink)}a.pm-item[aria-current=page]{box-shadow:inset 2px 0 0 var(--color-primary);background:var(--color-chrome)}.pm-item.is-static{color:var(--color-ink-2)}.pm-logo{border:1px solid var(--color-line);border-radius:var(--radius-md);background:var(--color-surface);width:2.25rem;height:2.25rem;font:var(--font-weight-bold) 11px / 1 var(--font-code);color:var(--color-ink-3);place-items:center;display:grid;overflow:hidden}.pm-logo img{object-fit:contain;width:28px;height:28px}.pm-text{min-width:0;display:grid}.pm-name{text-overflow:ellipsis;white-space:nowrap;font:var(--font-weight-bold) var(--text-small) / 1.3 var(--font-display);overflow:hidden}.pm-co{-webkit-line-clamp:2;text-overflow:ellipsis;white-space:normal;font:11.5px / 1.4 var(--font-code);color:var(--color-ink-3);-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.pm-go{color:var(--color-ink-3);transition:transform var(--default-transition-duration) var(--ease-out), color var(--default-transition-duration) var(--ease-out);place-items:center;display:grid}.pm-go svg{width:16px;height:16px}a.pm-item:hover .pm-go,a.pm-item:focus-visible .pm-go{color:var(--color-ink);transform:translate(2px)}@media (prefers-reduced-motion:reduce){.pm-go{transition:none}a.pm-item:hover .pm-go{transform:none}}.caption{font:var(--text-chrome) / 1.3 var(--font-code);color:var(--color-ink-3)}.sec{gap:var(--spacing-4);padding-block:var(--spacing-2) var(--spacing-10);scroll-margin-top:7rem;display:grid}.sec+.sec{padding-top:var(--spacing-10);border-top:1px solid var(--color-line)}.sec-head{gap:var(--spacing-1);display:grid}.sec-head h2{align-items:baseline;gap:var(--spacing-3);display:flex}.prose{max-width:var(--container-measure);color:var(--color-ink-2)}.prose+.prose{margin-top:var(--spacing-3)}.actions{gap:var(--spacing-2);flex-wrap:wrap;display:flex}.intro{gap:var(--spacing-4);padding-bottom:var(--spacing-10);display:grid}.intro .lead{max-width:var(--container-measure);color:var(--color-ink-2);font-size:1.1875rem;line-height:1.6}.repo-card{border:1px solid var(--color-line);border-radius:var(--radius-card);background:var(--color-surface);overflow:hidden}.repo-top{align-items:center;gap:var(--spacing-3) var(--spacing-4);padding:var(--spacing-4) var(--spacing-5);border-bottom:1px solid var(--color-line);flex-wrap:wrap;display:flex}.repo-logo{width:var(--spacing-12);height:var(--spacing-12);background:var(--color-chrome);border-radius:10px;flex:none;place-items:center;display:grid}.repo-id{gap:var(--spacing-1);min-width:0;display:grid}.repo-name{font:var(--font-weight-semibold) 1.125rem / 1.3 var(--font-code);overflow-wrap:anywhere}.repo-owner{color:var(--color-ink-3);font-weight:var(--font-weight-normal)}.repo-public{padding:1px var(--spacing-2);border:1px solid var(--color-ok);border-radius:var(--radius-full);color:var(--color-ok);font:11px / 1.4 var(--font-code);vertical-align:2px;margin-left:6px}.repo-stats{gap:var(--spacing-5);margin-left:auto;display:flex}.repo-stats>div{flex-direction:column-reverse;display:flex}.repo-stats dt{font:12px / 1.3 var(--font-code);color:var(--color-ink-2)}.repo-stats dd{font:var(--font-weight-bold) 1.125rem / 1.2 var(--font-display);align-items:center;gap:4px;margin:0;display:flex}.repo-stats .star{font-size:1rem;font-weight:var(--font-weight-normal)}.repo-body{gap:var(--spacing-5);padding:var(--spacing-4) var(--spacing-5) var(--spacing-5);align-items:start;display:grid}.repo-body>*{min-width:0}.topics{flex-wrap:wrap;gap:6px;list-style:none;display:flex}.topics li{border-radius:var(--radius-full);color:var(--color-link);font:var(--text-meta) / 1.3 var(--font-display);background:#eef1f8;padding:3px 10px}.feat-grid{gap:var(--spacing-3);grid-template-columns:repeat(auto-fill,minmax(14.5rem,1fr));list-style:none;display:grid}.feat-grid li{align-content:start;gap:var(--spacing-1);padding:var(--spacing-3);border:1px solid var(--color-line);background:var(--color-surface);border-radius:10px;display:grid}.feat-grid h3{font:var(--font-weight-bold) var(--text-small) / 1.3 var(--font-display)}.feat-grid p{font:.9375rem / 1.55 var(--font-body);color:var(--color-ink-2)}.copy{border:1px solid;flex:none;height:28px;padding-inline:10px}@supports (color:color-mix(in lab, red, red)){.copy{border:1px solid color-mix(in srgb, currentColor 40%, transparent)}}.copy{border-radius:var(--radius-md);color:inherit;font:var(--font-weight-semibold) 11px / 1 var(--font-code);cursor:pointer;background:0 0}.copy.is-done{color:var(--color-ok);border-color:currentColor}.copy.is-icon{width:var(--spacing-row);height:var(--spacing-row);place-items:center;padding:0;display:grid}.copy.is-icon svg{width:16px;height:16px}.copy.is-icon .icon-done,.copy.is-icon.is-done .icon-copy{display:none}.copy.is-icon.is-done .icon-done{display:block}@media (pointer:coarse){.copy.is-icon{width:var(--spacing-tap);height:var(--spacing-tap)}.copy{height:var(--spacing-tap)}}.ruled li strong{font-family:var(--font-display);font-size:.9375em;font-weight:var(--font-weight-bold);color:var(--color-ink)}.gitlog{list-style:none}.commit{grid-template-columns:var(--spacing-10) minmax(0, 1fr);display:grid;position:relative}.commit:before{content:"";background:var(--color-primary);width:2px;position:absolute;top:0;bottom:0;left:18px}.commit:first-child:before{top:26px}.commit:last-child:before{height:26px;bottom:auto}.commit-node{position:relative}.commit-node:before{content:"";box-sizing:border-box;border:2px solid var(--color-primary);border-radius:var(--radius-full);background:var(--color-page);width:18px;height:18px;position:absolute;top:17px;left:10px}.commit.is-head .commit-node:before{background:var(--color-primary);box-shadow:0 0 0 3px var(--color-mark)}.commit-msg{gap:var(--spacing-2);padding:var(--spacing-3) 0 var(--spacing-5);border-bottom:1px solid var(--color-line);display:grid}.commit:last-child .commit-msg{border-bottom:0}.commit.is-title .commit-msg{border-bottom:0;padding-bottom:0}.commit-subject{align-items:center;gap:var(--spacing-2);font:var(--font-weight-bold) 1.0625rem / 1.3 var(--font-display);flex-wrap:wrap;display:flex}.commit-subject img{object-fit:contain;width:auto;max-width:5.5rem;height:20px}.commit-meta{font:11.5px / 1.4 var(--font-code);color:var(--color-ink-3)}.tag{border-radius:var(--radius-sm);font:var(--font-weight-bold) 10.5px / 1.3 var(--font-code);padding:2px 7px}.tag-head{background:var(--color-ok);color:var(--color-surface)}.tag-promoted{background:var(--color-mark);color:var(--color-primary)}.tag-initial{border:1px solid var(--color-line);background:var(--color-chrome);color:var(--color-ink-2)}.tasks{gap:3px;list-style:none;display:grid}.tasks li{grid-template-columns:var(--spacing-4) minmax(0, 1fr);max-width:var(--container-measure);color:var(--color-ink);display:grid}.tasks li:before{content:"-";color:var(--color-ink-3);font:var(--font-weight-semibold) 14px / 1.65 var(--font-code)}.commit-msg .prose,.commit-msg .tasks li{max-width:none}.files{align-items:center;gap:var(--spacing-1) var(--spacing-3);padding-top:var(--spacing-2);border-top:1px dashed var(--color-line);font:11.5px / 1.4 var(--font-code);color:var(--color-ink-3);flex-wrap:wrap;display:flex}.files .plus{color:var(--color-ok);font-weight:var(--font-weight-bold)}.files a{min-height:var(--spacing-row);text-underline-offset:3px;align-items:center;gap:6px;display:inline-flex}.filter{flex-wrap:wrap;gap:6px;display:flex}.filter button{height:var(--spacing-row);padding-inline:var(--spacing-3);border:1px solid var(--color-line);border-radius:var(--radius-control);background:var(--color-surface);color:var(--color-ink-2);font:var(--font-weight-semibold) 12.5px / 1 var(--font-display);cursor:pointer}.filter button[aria-pressed=true]{border-color:var(--color-primary);background:var(--color-primary);color:var(--color-on-primary)}@media (pointer:coarse){.filter button{height:var(--spacing-tap)}}.deck{grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));gap:14px;list-style:none;display:grid}.card{--mx:50%;--my:50%;--rx:0deg;--ry:0deg;align-content:start;gap:var(--spacing-2);box-sizing:border-box;height:100%;padding:var(--spacing-2) var(--spacing-2) var(--spacing-3);border-radius:var(--radius-card);background:var(--color-primary);color:var(--color-on-primary);transform:perspective(700px) rotateX(var(--rx)) rotateY(var(--ry));transition:transform .2s var(--ease-out), box-shadow .2s var(--ease-out);text-decoration:none;display:grid}a.card:hover{color:var(--color-on-primary);box-shadow:0 12px 26px #21284240, 0 0 0 2px var(--color-mark)}a.card:focus-visible{outline-offset:3px;border-radius:var(--radius-card)}.card-art{height:4.5rem;margin-bottom:var(--spacing-1);border-radius:var(--radius-control);background:var(--color-page);place-items:center;display:grid;position:relative;overflow:hidden}.card-art img{object-fit:contain;max-width:62%;max-height:3rem}.card-art .none{font:var(--font-weight-bold) var(--text-chrome) / 1 var(--font-code);color:var(--color-ink-3)}.text-logo{justify-items:center;gap:var(--spacing-1);display:grid}.text-logo-mark{font:var(--font-weight-bold) 1.5rem / 1 var(--font-code);letter-spacing:.04em;color:var(--color-primary)}.text-logo-tag{border:1px solid var(--color-primary);border-radius:var(--radius-sm);font:var(--font-weight-bold) 10px / 1.2 var(--font-code);letter-spacing:.12em;text-transform:uppercase;color:var(--color-primary);padding:2px 6px}a.card:hover .card-art:after{content:"";background:radial-gradient(circle at var(--mx) var(--my), #f0e7d51a 0%, #e8d6aebf 22%, transparent 48%), linear-gradient(115deg, transparent 30%, #f0e7d559 46%, #e8d6ae8c 52%, transparent 64%);mix-blend-mode:multiply;position:absolute;inset:0}.card-head{padding-inline:var(--spacing-1);gap:2px;display:grid}.card-title{font:var(--font-weight-bold) var(--text-h3) / 1.25 var(--font-display);padding-inline:0}.card-mech{padding-inline:var(--spacing-1);font:var(--text-small) / 1.5 var(--font-body);color:var(--color-on-primary)}.card-meta{justify-content:space-between;gap:var(--spacing-2);color:var(--color-mark);font:var(--text-chrome) / 1.4 var(--font-code);flex-wrap:wrap;margin-top:0;padding:0;display:flex}.card-meta span{white-space:nowrap}.card.is-outline{border:1.5px dashed var(--color-line-strong);background:var(--color-surface);color:var(--color-ink);transform:none}.card.is-outline .card-mech{color:var(--color-ink-2)}.card.is-outline .card-meta{color:var(--color-ink-3)}a.card{grid-template-rows:auto auto 1fr auto}.card-cta{padding:var(--spacing-2) var(--spacing-1) 0;border-top:1px solid #f0e7d533}@supports (color:color-mix(in lab, red, red)){.card-cta{border-top:1px solid color-mix(in srgb, var(--color-on-primary) 20%, transparent)}}.card-cta{color:var(--color-mark);font:var(--font-weight-semibold) var(--text-meta) / 1.4 var(--font-display)}.card-cta-arrow{transition:transform var(--default-transition-duration) var(--ease-out);display:inline-block}a.card:hover .card-cta-arrow,a.card:focus-visible .card-cta-arrow{transform:translate(2px)}@media (prefers-reduced-motion:reduce){.card{transition:none;transform:none}a.card:hover .card-art:after{display:none}.card-cta-arrow{transition:none}a.card:hover .card-cta-arrow,a.card:focus-visible .card-cta-arrow{transform:none}}.ext-group{gap:var(--spacing-2);display:grid}.ext-group+.ext-group{margin-top:var(--spacing-4)}.ext-group h3{font:var(--font-weight-semibold) var(--text-small) / 1.3 var(--font-display);color:var(--color-ink-2)}.ext{gap:var(--spacing-2);grid-template-columns:repeat(auto-fill,minmax(15rem,1fr));list-style:none;display:grid}.ext li{grid-template-columns:var(--spacing-10) minmax(0, 1fr);align-items:center;gap:var(--spacing-3);padding:var(--spacing-2);border:1px solid var(--color-line);border-radius:var(--radius-control);background:var(--color-surface);display:grid}.ext-logo{width:var(--spacing-10);height:var(--spacing-10);border-radius:var(--radius-md);background:var(--color-chrome);font:var(--font-weight-bold) 11px / 1 var(--font-code);color:var(--color-primary);place-items:center;display:grid}.ext-logo img{width:22px;height:22px}.ext-name{font:var(--font-weight-bold) var(--text-small) / 1.3 var(--font-display);display:block}.ext-used{text-overflow:ellipsis;white-space:nowrap;font:11px / 1.4 var(--font-code);color:var(--color-ink-3);display:block;overflow:hidden}.ext-used.is-count{overflow:visible}.ext-more{font:inherit;color:var(--color-primary);text-underline-offset:.2em;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline;text-decoration-thickness:1px;position:relative}.ext-more:hover{color:var(--color-primary-hover);text-decoration-thickness:2px}.ext-more:after{content:"";inset:calc(-1 * var(--spacing-2)) calc(-1 * var(--spacing-1));position:absolute}@media (pointer:coarse){.ext li{position:relative}.ext-more{position:static}.ext-more:after{inset:0}}.kv{border-top:1px solid var(--color-line);display:grid}.kv>div{gap:var(--spacing-1) var(--spacing-6);padding-block:var(--spacing-2);border-bottom:1px solid var(--color-line);display:grid}.kv dt{font:var(--font-weight-semibold) var(--text-small) / 1.5 var(--font-display);color:var(--color-ink-2)}.kv dd{margin:0}.kv.is-ui dd{font:var(--text-small) / 1.5 var(--font-display)}@media (min-width:40rem){.kv>div{grid-template-columns:11rem minmax(0,1fr)}}.skill-rows{border-top:1px solid var(--color-line)}.skill-rows>div{gap:var(--spacing-2) var(--spacing-4);padding-block:var(--spacing-3);border-bottom:1px solid var(--color-line);display:grid}.skill-rows dt{font:var(--font-weight-semibold) var(--text-small) / 1.4 var(--font-display);color:var(--color-ink-2);padding-top:3px}.skill-rows dd{margin:0}.tags{flex-wrap:wrap;gap:5px;list-style:none;display:flex}.tags li{padding:3px var(--spacing-2);border:1px solid var(--color-line);border-radius:var(--radius-md);background:var(--color-chrome);font:12.5px / 1.3 var(--font-display);color:var(--color-ink-2)}@media (min-width:40rem){.skill-rows>div{grid-template-columns:9rem minmax(0,1fr)}}.facts-cards{gap:var(--spacing-3);grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));display:grid}.fact-card{align-content:start;gap:var(--spacing-1);padding:var(--spacing-3) 14px;border:1px solid var(--color-line);border-radius:var(--radius-card);background:var(--color-surface);display:grid}.fact-title{font:var(--font-weight-bold) .9375rem / 1.35 var(--font-display)}.langs{list-style:none}.langs li{justify-content:space-between;align-items:center;gap:var(--spacing-2);border-bottom:1px solid var(--color-line);font:var(--text-small) / 1.4 var(--font-display);padding-block:6px;display:flex}.langs li:last-child{border-bottom:0}.level{padding:2px var(--spacing-2);border:1px solid var(--color-line);border-radius:var(--radius-full);background:var(--color-chrome);font:11px / 1.3 var(--font-code);color:var(--color-ink-2);text-align:right}.level.is-native{border-color:var(--color-primary);background:var(--color-primary);color:var(--color-on-primary)}.contact{gap:var(--spacing-6);display:grid}.contact-box{gap:var(--spacing-4);padding:var(--spacing-4);border:1px solid var(--color-line);border-radius:var(--radius-card);background:var(--color-surface);display:grid}.contact-box-status{gap:var(--spacing-1);display:grid}.contact-box-title{align-items:center;gap:var(--spacing-2);font:var(--font-weight-bold) var(--text-h3) / 1.3 var(--font-display);color:var(--color-alert-title);flex-wrap:wrap;display:flex}.contact-box-title:before{content:"";border-radius:var(--radius-full);background:var(--color-ok);flex:none;width:8px;height:8px}.contact-box-body{font:var(--text-small) / 1.5 var(--font-display);color:var(--color-ink-2)}.contact-box-email{padding-top:var(--spacing-4);border-top:1px solid var(--color-line);container-type:inline-size}.contact-box-row{gap:var(--spacing-3);display:grid}.contact-box-address{align-items:center;gap:var(--spacing-2);min-width:0;display:flex}.contact-box-address p{overflow-wrap:anywhere;min-width:0;font:var(--font-weight-medium) var(--text-read) / 1.4 var(--font-code);color:var(--color-ink)}.contact-box-row .btn{justify-content:center}.contact-box .copy.is-icon{width:var(--spacing-6);height:var(--spacing-6);position:relative}.contact-box .copy.is-icon svg{width:14px;height:14px}@media (pointer:coarse){.contact-box .copy.is-icon:after{content:"";position:absolute;inset:-10px}}.contact-box-id{gap:var(--spacing-1);min-width:0;display:grid}.contact-box-loc{font:var(--text-meta) / 1.45 var(--font-display);color:var(--color-ink-3)}@container (min-width:28rem){.contact-box-row{align-items:center;gap:var(--spacing-4);grid-template-columns:minmax(0,1fr) auto}}@media (min-width:40rem){.contact-box{padding:var(--spacing-5) var(--spacing-6)}}.contact-more{gap:var(--spacing-3);display:grid}.contact-more ul{gap:var(--spacing-2);flex-wrap:wrap;margin-inline-start:calc(-1 * var(--spacing-4));list-style:none;display:flex}.project{font-size:var(--text-body);line-height:var(--text-body--line-height)}@media (min-width:52rem){[data-preview]{padding-right:5rem}}.sec h2,.sec h3{scroll-margin-top:calc(var(--spacing-title) + var(--spacing-tabs) + var(--spacing-crumbs) + var(--spacing-6))}.project-head{gap:var(--spacing-4);padding-bottom:var(--spacing-6);display:grid}.project-head h1{align-items:center;gap:var(--spacing-3);flex-wrap:wrap;display:flex}.project-head .lead{max-width:var(--container-measure);color:var(--color-ink-2)}.badge{border:1px solid var(--color-ok);border-radius:var(--radius-full);background:var(--color-surface);color:var(--color-ok);font:var(--font-weight-semibold) 11px / 1.4 var(--font-code);letter-spacing:0;align-items:center;gap:6px;padding:2px 10px;display:inline-flex}.badge:before{content:"";border-radius:var(--radius-full);background:var(--color-ok);width:7px;height:7px}.project-logo{object-fit:contain;width:auto;max-width:9rem;height:2.75rem}.psec{gap:var(--spacing-4);padding-block:var(--spacing-8);border-top:1px solid var(--color-line);scroll-margin-top:6.5rem;display:grid}.psec>h2{align-items:baseline;gap:var(--spacing-3);scroll-margin-top:calc(var(--spacing-title) + var(--spacing-tabs) + var(--spacing-crumbs) + var(--spacing-6));padding-right:4.5rem;display:flex}.num{border:1px solid var(--color-line);border-radius:var(--radius-md);background:var(--color-chrome);font:var(--font-weight-normal) 12px / 1.4 var(--font-code);color:var(--color-ink-3);letter-spacing:0;flex:none;padding:1px 6px}.sub{gap:var(--spacing-3);max-width:var(--container-measure);display:grid}.ruled{border-top:1px solid var(--color-line);max-width:var(--container-measure);list-style:none}.ruled>li{padding-block:var(--spacing-2);border-bottom:1px solid var(--color-line);color:var(--color-ink-2)}.ruled.is-ui>li{color:var(--color-ink)}.project .prose,.psec>p{max-width:var(--container-measure);color:var(--color-ink-2)}.diagram{gap:var(--spacing-3);display:grid}.diagram-frame{padding:var(--spacing-4);border:1px solid var(--color-line);border-radius:var(--radius-control);background:var(--color-surface);overflow-x:auto}.diagram-frame svg{min-width:40rem;height:auto;margin-inline:auto;display:block}.diagram figcaption{max-width:var(--container-measure);font:var(--text-small) / 1.45 var(--font-display);color:var(--color-ink-3)}.ph-top{align-items:center;gap:var(--spacing-5);display:flex}@media (max-width:39.99rem){.ph-top{align-items:flex-start;gap:var(--spacing-3);flex-direction:column}.ph-logo{border-radius:12px;width:3.5rem;height:3.5rem}.ph-logo img{width:34px;height:34px}}.ph-logo{border:1px solid var(--color-line);background:var(--color-surface);border-radius:16px;flex:none;place-items:center;width:4.5rem;height:4.5rem;display:grid}.ph-logo img{object-fit:contain;width:44px;height:44px}.ph-logo.is-text{font:var(--font-weight-bold) 1.25rem / 1 var(--font-code);letter-spacing:.04em;color:var(--color-primary)}.ph-title{gap:var(--spacing-2);min-width:0;display:grid}.ph-badges{flex-wrap:wrap;gap:6px;list-style:none;display:flex}.ph-badges .badge{margin:0}.pill{border:1px solid var(--color-line);border-radius:var(--radius-full);background:var(--color-surface);color:var(--color-ink-2);font:var(--font-weight-semibold) 11.5px / 1.4 var(--font-code);align-items:center;padding:2px 10px;display:inline-flex}.fact-tiles{gap:var(--spacing-3);grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));display:grid}.fact-tiles>div{padding:var(--spacing-3);border:1px solid var(--color-line);background:var(--color-surface);border-radius:10px;align-content:start;gap:2px;display:grid}.fact-tiles dt{font:11px / 1.3 var(--font-code);color:var(--color-ink-3);text-transform:lowercase}.fact-tiles dd{font:var(--font-weight-semibold) var(--text-small) / 1.45 var(--font-display);color:var(--color-ink);margin:0}.stat-tiles{gap:var(--spacing-3);grid-template-columns:repeat(4,minmax(0,1fr));display:grid;container-type:inline-size}.stat-tiles>div{justify-content:flex-end;gap:var(--spacing-1);padding:14px var(--spacing-4);border-radius:var(--radius-card);background:var(--color-primary);flex-direction:column-reverse;grid-column:span 2;display:flex}@container (min-width:42rem){.stat-tiles>div{grid-column:auto}}.stat-tiles dd{font:var(--font-weight-bold) 1.875rem / 1.1 var(--font-display);letter-spacing:-.02em;color:var(--color-on-primary);margin:0}.stat-tiles dt{font:12px / 1.3 var(--font-code);color:var(--color-mark)}.stat-tiles dd.is-word{font-size:1.375rem;line-height:1.25}.stat-note{margin-top:var(--spacing-2);font:var(--text-meta) / 1.5 var(--font-display);color:var(--color-ink-3)}.key-idea{margin-block:var(--spacing-4) var(--spacing-8);padding:14px var(--spacing-4);border:1px solid var(--color-alert-line);border-radius:var(--radius-card);background:var(--color-alert-later);grid-template-columns:auto minmax(0,1fr);gap:14px;display:grid}.key-icon{border-radius:var(--radius-full);background:var(--color-ok);width:2.25rem;height:2.25rem;color:var(--color-surface);place-items:center;display:grid}.key-icon svg{width:20px;height:20px}.key-title{font:var(--font-weight-bold) 1rem / 1.35 var(--font-display);color:var(--color-alert-title);margin-bottom:3px}.key-idea p:last-child{color:var(--color-ink-2)}.feature-cards{gap:var(--spacing-3);grid-template-columns:repeat(auto-fill,minmax(14.5rem,1fr));list-style:none;display:grid}.feature-cards li{padding:var(--spacing-3) 14px;border:1px solid var(--color-line);border-radius:var(--radius-card);background:var(--color-surface);align-content:start;gap:6px;display:grid}.fc-icon{background:var(--color-chrome);width:2.125rem;height:2.125rem;color:var(--color-primary);border-radius:9px;place-items:center;display:grid}.fc-icon svg{width:18px;height:18px}.feature-cards h3{font:var(--font-weight-bold) .9375rem / 1.3 var(--font-display)}.feature-cards p{font:.9375rem / 1.55 var(--font-body);color:var(--color-ink-2)}.how-steps{gap:var(--spacing-2);list-style:none;display:grid}.how-steps>li{grid-template-columns:var(--spacing-8) minmax(0, 1fr);column-gap:var(--spacing-3);row-gap:var(--spacing-1);padding:var(--spacing-3) var(--spacing-4);border-radius:var(--radius-card);background:var(--color-chrome);align-items:start;display:grid}.how-n{width:var(--spacing-8);height:var(--spacing-8);border-radius:var(--radius-full);background:var(--color-primary);color:var(--color-on-primary);font:var(--font-weight-bold) var(--text-chrome) / 1 var(--font-code);grid-area:1/1/span 2;place-items:center;display:grid}.how-steps strong{font:var(--font-weight-bold) var(--text-small) / 1.35 var(--font-display);color:var(--color-ink);grid-column:2}.how-steps p{font:.9375rem / 1.55 var(--font-body);color:var(--color-ink-2);grid-column:2;margin:0}.tradeoffs{gap:var(--spacing-3);grid-template-columns:repeat(auto-fill,minmax(20rem,1fr));display:grid}.tradeoff{border:1px solid var(--color-line);border-radius:var(--radius-card);background:var(--color-surface)}.tradeoff h3{border-bottom:1px solid var(--color-line);border-radius:calc(var(--radius-card) - 1px) calc(var(--radius-card) - 1px) 0 0;background:var(--color-chrome);font:var(--font-weight-bold) .9375rem / 1.35 var(--font-display);padding:10px 14px}.tradeoff dl>div{padding:var(--spacing-2) 14px;grid-template-columns:3.5rem minmax(0,1fr);gap:10px;display:grid}.tradeoff dl>div+div{border-top:1px dashed var(--color-line)}.tradeoff dt{font:var(--font-weight-bold) 11px / 1.3 var(--font-code);text-transform:uppercase;color:var(--color-ok);padding-top:4px}.tradeoff .cost dt{color:var(--color-number)}.tradeoff dd{font:.9375rem / 1.55 var(--font-body);color:var(--color-ink-2);margin:0}.stack-groups{border-top:1px solid var(--color-line);display:grid}.stack-groups>div{gap:var(--spacing-2) var(--spacing-5);border-bottom:1px solid var(--color-line);padding-block:10px;display:grid}.stack-groups dt{font:var(--font-weight-semibold) var(--text-small) / 1.4 var(--font-display);color:var(--color-ink-2);padding-top:5px}.stack-groups dd{margin:0}.logo-chips{flex-wrap:wrap;gap:6px;list-style:none;display:flex}.logo-chips li{border:1px solid var(--color-line);border-radius:var(--radius-control);background:var(--color-surface);font:var(--font-weight-semibold) 13px / 1.35 var(--font-display);color:var(--color-ink);align-items:center;gap:7px;padding:4px 10px;display:inline-flex}.logo-chips img{flex:none;width:16px;height:16px}@media (min-width:40rem){.stack-groups>div{grid-template-columns:11rem minmax(0,1fr)}}.timeline{padding-bottom:var(--spacing-2);grid-auto-columns:minmax(9rem,1fr);grid-auto-flow:column;list-style:none;display:grid;overflow-x:auto}.timeline li{padding:26px var(--spacing-4) 0 0;align-content:start;gap:3px;display:grid;position:relative}.timeline li:before{content:"";background:var(--color-primary);height:2px;position:absolute;top:7px;left:0;right:0}.timeline li:last-child:before{width:16px;right:auto}.timeline li:after{content:"";box-sizing:border-box;border:2px solid var(--color-primary);border-radius:var(--radius-full);background:var(--color-page);width:14px;height:14px;position:absolute;top:1px;left:0}.timeline li.is-last:after{background:var(--color-primary);box-shadow:0 0 0 3px var(--color-mark)}.tl-date{font:12px / 1.3 var(--font-code);color:var(--color-ink-3)}.timeline strong{font:var(--font-weight-bold) var(--text-small) / 1.35 var(--font-display);color:var(--color-ink)}.timeline p{font:var(--text-small) / 1.5 var(--font-body);color:var(--color-ink-2)}.gloss{border-bottom:1.5px dotted var(--color-primary);cursor:help;position:relative}.gloss:focus-visible{outline-offset:2px}.peek{left:var(--peek-x,0px);z-index:25;width:min(18rem,80vw);padding:10px var(--spacing-3);border:1px solid var(--color-line);background:var(--color-surface);font:13.5px / 1.5 var(--font-display);color:var(--color-ink-2);white-space:normal;text-align:left;border-radius:10px;display:none;position:absolute;top:calc(100% + 6px);box-shadow:0 10px 24px #21284229}.peek b{font:var(--font-weight-bold) 11px / 1.3 var(--font-code);color:var(--color-markdown);margin-bottom:4px;display:block}.gloss:hover .peek,.gloss:focus .peek,.gloss:focus-within .peek{display:block}.source{font:12.5px / 1.9 var(--font-code);color:var(--color-ink);margin:0;padding:0;list-style:none}.source li{grid-template-columns:3.25rem minmax(0,1fr);display:grid}.source li:before{content:attr(data-line);padding-right:var(--spacing-3);border-right:1px solid var(--color-line);color:var(--color-gutter);text-align:right;-webkit-user-select:none;user-select:none}.source li>span{padding-left:var(--spacing-4);white-space:pre-wrap;overflow-wrap:anywhere}.source .md{color:var(--color-markdown)}.source .hd{font-weight:var(--font-weight-bold)}.source .n{color:var(--color-number)}.source .lk{color:var(--color-link);text-decoration:underline}.source .cd{color:var(--color-ok)}.source .st{font-weight:var(--font-weight-bold)}@media (max-width:37.5rem){.source li{grid-template-columns:0 minmax(0,1fr)}.source li:before{visibility:hidden;border:0;padding:0}.source li>span{padding-left:var(--spacing-4)}}.sections-dock{top:calc(var(--spacing-title) + var(--spacing-tabs) + var(--spacing-crumbs));z-index:20;height:0;position:sticky}.sections{top:var(--spacing-3);right:var(--spacing-4);border:1px solid var(--color-line);border-radius:var(--radius-card);background:var(--color-surface);font:11.5px / 1 var(--font-code);padding:6px;display:grid;position:absolute;box-shadow:0 6px 18px #2128421a}.sections-title{border-bottom:1px solid var(--color-line);font-weight:var(--font-weight-bold);color:var(--color-ink);margin-bottom:3px;padding:3px 8px 6px;font-size:10.5px}.sections ol{gap:2px;list-style:none;display:grid}.sections a{height:var(--spacing-row);padding-inline:var(--spacing-2);border-radius:var(--radius-control);color:var(--color-ink-2);transition:grid-template-columns .24s cubic-bezier(.4, 0, .2, 1), background-color .16s var(--ease-out), color .16s var(--ease-out);grid-template-columns:22px 0fr;align-items:center;text-decoration:none;display:grid}.sections a .t{white-space:nowrap;opacity:0;padding-left:6px;transition:opacity .12s ease-in,transform .2s cubic-bezier(.4,0,.2,1);overflow:hidden;transform:translate(-6px)}.sections:hover a,.sections:focus-within a,.sections.is-open a{transition:grid-template-columns .36s cubic-bezier(.22, 1, .36, 1), background-color .16s var(--ease-out), color .16s var(--ease-out);grid-template-columns:22px 1fr}.sections:hover a .t,.sections:focus-within a .t,.sections.is-open a .t{opacity:1;transition:opacity .24s var(--ease-out) 80ms, transform .36s cubic-bezier(.22, 1, .36, 1) 40ms;transform:none}.sections a:hover{background:var(--color-chrome);color:var(--color-ink)}.sections a[aria-current=true]{background:var(--color-primary);color:var(--color-on-primary)}@media (pointer:coarse){.sections a{height:var(--spacing-tap)}}@media (prefers-reduced-motion:reduce){.sections a,.sections a .t{transition:none}}@media (max-width:51.99rem){.ide,.ide.no-side{grid-template-columns:minmax(0,1fr)}.ide-title .dots{display:none}.ide-title .menu{width:var(--spacing-tap);height:var(--spacing-title);margin-left:calc(var(--spacing-3) * -1);color:var(--color-ink);cursor:pointer;background:0 0;border:0;place-items:center;display:grid}.ide-title .menu svg{width:20px;height:20px}.ide-nav{top:var(--spacing-title);bottom:var(--spacing-status);z-index:55;grid-template-columns:var(--spacing-rail) min(var(--spacing-side), calc(100vw - 6rem));grid-template-rows:minmax(0,1fr);display:none;position:fixed;left:0;box-shadow:8px 0 24px #21284233}.ide.is-drawer .ide-nav{display:grid}.ide-rail,.ide-side{grid-row:1;align-self:stretch;height:auto;position:static}.ide.no-side .ide-side{visibility:visible}.ide-main{grid-column:1}.view{padding:var(--spacing-6) var(--spacing-4) var(--spacing-16)}.ide-status .opt{display:none}.crumbs ol{scrollbar-width:none;white-space:nowrap;flex-wrap:nowrap;overflow-x:auto}.crumbs ol::-webkit-scrollbar{display:none}.ext{grid-template-columns:repeat(2,minmax(0,1fr))}.ext li{grid-template-columns:var(--spacing-8) minmax(0, 1fr);gap:var(--spacing-2)}.ext-logo{width:var(--spacing-8);height:var(--spacing-8)}.ext-logo img{width:18px;height:18px}.sections,[data-tip]:hover:after,[data-tip]:focus-visible:after{display:none}}}@layer utilities{.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.fixed{position:fixed}.relative{position:relative}.static{position:static}.mt-2{margin-top:var(--spacing-2)}.block{display:block}.grid{display:grid}.hidden{display:none}.inline{display:inline}.grow{flex-grow:1}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.content-start{align-content:flex-start}.gap-4{gap:var(--spacing-4)}.whitespace-nowrap{white-space:nowrap}.underline{text-decoration-line:underline}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media (hover:hover){.hover\:bg-secondary:hover{background-color:var(--color-secondary)}}.focus\:not-sr-only:focus{clip-path:none;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.focus\:fixed:focus{position:fixed}.focus\:top-2:focus{top:var(--spacing-2)}.focus\:left-2:focus{left:var(--spacing-2)}.focus\:z-50:focus{z-index:50}.focus\:bg-surface:focus{background-color:var(--color-surface)}.focus\:px-4:focus{padding-inline:var(--spacing-4)}.focus\:py-3:focus{padding-block:var(--spacing-3)}@media (prefers-reduced-motion:reduce){.motion-reduce\:transition-none{transition-property:none}}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}
