:root{--haven-v-primary:#ab560c;--haven-v-footer-text:#acb8b9;--haven-v-muted:#747555;--haven-v-header-bg:#0c1a1f;--haven-v-heading:#182013;--haven-v-link-hover:#d07a09;--haven-v-primary-contrast:#f6ffff;--haven-v-primary-hover:#d07a09;--haven-v-accent:#057793;--haven-v-bg:#f3fbee;--haven-v-header-text:#e5f3f6;--haven-v-footer-bg:#0c1a1f;--haven-v-link:#ab560c;--haven-v-border:#dfe2bb;--haven-v-surface:#f6fffd;--haven-v-text:#313623;--haven-radius:4px;--haven-font-heading:'Tomorrow',system-ui,-apple-system,sans-serif;--haven-fs-base:16px;--haven-font-body:'DM Sans',system-ui,-apple-system,sans-serif;--haven-lh:1.6;--haven-container:1320px}html{box-sizing:border-box;-webkit-text-size-adjust:100%}*,*::before,*::after{box-sizing:inherit}body.haven-shell{margin:0;background:var(--haven-v-bg);color:var(--haven-v-text);font-family:var(--haven-font-body);font-size:var(--haven-fs-base);line-height:var(--haven-lh);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body.haven-shell img{max-width:100%;height:auto}body.haven-shell a{color:var(--haven-v-link);text-decoration:underline;text-underline-offset:.15em;transition:color .15s ease}body.haven-shell a:hover,body.haven-shell a:focus{color:var(--haven-v-link-hover)}body.haven-shell :focus-visible{outline:2px solid var(--haven-v-primary);outline-offset:2px}body.haven-shell #page,body.haven-shell .site-content,body.haven-shell .ast-container,body.haven-shell #primary,body.haven-shell .content-area,body.haven-shell .entry-content{max-width:none;padding:0;margin:0;background:transparent !important;box-shadow:none}body.haven-shell #ast-scroll-top,body.haven-shell .ast-scroll-top-icon{display:none}body.haven-shell button.haven-menu-toggle,body.haven-shell button.haven-to-the-top,body.haven-shell button.haven-btn{box-shadow:none;text-shadow:none;-webkit-appearance:none;appearance:none}body.haven-shell .haven-pocket{width:100%;max-width:var(--haven-container);margin:0 auto;padding:0 1.25rem}body.haven-shell .haven-a11y-bypass{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}body.haven-shell .haven-a11y-bypass:focus{left:1rem;top:1rem;width:auto;height:auto;padding:.5rem 1rem;background:var(--haven-v-primary);color:var(--haven-v-primary-contrast);z-index:9999}body.haven-shell .haven-error-404{padding:4rem 0;text-align:center}body.haven-shell .haven-error-inner{max-width:600px}body.haven-shell .haven-error-code{font-family:var(--haven-font-heading);font-size:clamp(5rem,4rem+8vw,9rem);font-weight:800;line-height:1;color:var(--haven-v-primary);margin-bottom:1rem;letter-spacing:-.04em}body.haven-shell .haven-error-title{font-family:var(--haven-font-heading);font-size:1.75rem;margin:0 0 .75rem;color:var(--haven-v-heading)}body.haven-shell .haven-error-text{color:var(--haven-v-muted);margin:0 0 2rem}body.haven-shell .haven-doc-head{margin-bottom:32px !important}body.haven-shell .haven-doc-head>*{margin:0 !important}body.haven-shell .haven-doc-head>*+*{margin-top:12px !important}body.haven-shell .haven-doc-head>h1+*{margin-top:32px !important}body.haven-shell .haven-byline-top{gap:12px !important}body.haven-shell .haven-stamp-pill-wrap{text-align:center !important}body.haven-shell .haven-rich-text{padding-top:0 !important;margin-top:0 !important}body.haven-shell .haven-rich-text>*:first-child,body.haven-shell .haven-rich-text>*:first-child>*:first-child,body.haven-shell .haven-rich-text>*:first-child>*:first-child>*:first-child{margin-top:0 !important;padding-top:0 !important}body.haven-shell .haven-stamp-pill{display:inline-flex;align-items:center;gap:8px;padding:7px 14px;border-radius:4px;background:var(--haven-v-surface);color:var(--haven-v-text);font-size:.875rem;line-height:1.2;border:1px solid var(--haven-v-border);vertical-align:middle}body.haven-shell .haven-stamp-pill-icon{flex:0 0 16px;width:16px;height:16px;color:var(--haven-v-primary)}body.haven-shell .haven-stamp-pill-label{font-weight:600}body.haven-shell .haven-stamp-pill-date{font-weight:400;color:var(--haven-v-muted)}body.haven-shell .haven-main-nav .haven-menu-list{list-style:none;margin:0;padding:0;display:flex;gap:1.5rem;align-items:center}body.haven-shell .haven-main-nav .haven-menu-list a{color:var(--haven-v-header-text);text-decoration:none;font-size:.95rem;transition:color .15s ease,background-color .2s ease,border-color .15s ease}body.haven-shell .haven-main-nav .haven-menu-list a{font-weight:600;padding:.25rem 0;transition:text-shadow .2s ease,color .2s ease}body.haven-shell .haven-main-nav .haven-menu-list a:hover,body.haven-shell .haven-main-nav .haven-menu-list .current-menu-item>a{color:var(--haven-v-primary);text-shadow:0 0 12px var(--haven-v-primary)}body.haven-shell .haven-menu-toggle{display:none;background:transparent;border:1px solid var(--haven-v-border);color:var(--haven-v-header-text);padding:0;width:44px;height:44px;border-radius:var(--haven-radius);cursor:pointer;align-items:center;justify-content:center}body.haven-shell .haven-menu-toggle__icon{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;line-height:0}body.haven-shell .haven-menu-toggle__icon svg{display:block;width:100%;height:100%}body.haven-shell .haven-menu-toggle__icon--close{display:none}body.haven-shell .haven-menu-toggle[aria-expanded="true"] .haven-menu-toggle__icon--open{display:none}body.haven-shell .haven-menu-toggle[aria-expanded="true"] .haven-menu-toggle__icon--close{display:inline-flex}@media(max-width:900px){body.haven-shell .haven-menu-toggle{display:inline-flex}body.haven-shell .haven-main-nav{display:none;position:absolute;left:0;right:0;top:100%;background:var(--haven-v-header-bg);border-top:1px solid var(--haven-v-border);padding:1rem 1.25rem}body.haven-shell .haven-page-header{position:relative}body.haven-shell .haven-main-nav.is-open{display:block}body.haven-shell .haven-main-nav .haven-menu-list{flex-direction:column;align-items:flex-start;gap:.25rem}body.haven-shell .haven-main-nav .haven-menu-list li::before,body.haven-shell .haven-main-nav .haven-menu-list li::after,body.haven-shell .haven-main-nav .haven-menu-list a::after{content:none !important;display:none !important;background:none !important}body.haven-shell .haven-main-nav .haven-menu-list a{display:flex !important;align-items:center;gap:.75rem;padding:.65rem 0 !important;background:transparent !important;border:0 !important;border-radius:0 !important;text-transform:none !important;font-variant:normal !important;font-style:normal !important;letter-spacing:0 !important;font-weight:500 !important;font-size:1rem !important;line-height:1.4 !important;text-shadow:none !important;color:var(--haven-v-header-text)}body.haven-shell .haven-main-nav .haven-menu-list a:hover,body.haven-shell .haven-main-nav .haven-menu-list .current-menu-item>a{color:var(--haven-v-primary) !important;background:transparent !important}body.haven-shell .haven-main-nav .haven-menu-list a::before{content:'»' !important;flex:0 0 auto;display:inline-flex !important;align-items:center;justify-content:center;min-width:1em;line-height:1;color:var(--haven-v-primary);font-weight:600;opacity:.85;background:none !important;position:static !important;transform:none !important}body.haven-shell .haven-logo-frame .custom-logo{max-height:36px;max-width:calc(100vw - 120px)}body.haven-shell .haven-brand-title{font-size:1.05rem}}body.haven-shell .haven-page-header{background:var(--haven-v-header-bg);color:var(--haven-v-header-text);border-bottom:1px solid var(--haven-v-border)}body.haven-shell .haven-page-header.is-sticky{position:sticky;top:0;z-index:100;backdrop-filter:blur(8px)}body.haven-shell .haven-header-grid{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;padding:1.38rem 0}@media(min-width:901px){body.haven-shell .haven-h-v7 .haven-header-grid{justify-content:space-between}body.haven-shell .haven-h-v7 .haven-h-v7-trigger{display:inline-flex !important;align-items:center;gap:.55rem;background:transparent;border:1px solid var(--haven-v-border);color:var(--haven-v-header-text);padding:.45rem .9rem;border-radius:var(--haven-radius);cursor:pointer;height:auto;width:auto}body.haven-shell .haven-h-v7 .haven-h-v7-label{font-weight:600;font-size:.85rem;letter-spacing:.08em}body.haven-shell .haven-h-v7 .haven-h-v7-drawer{display:none;position:absolute;left:0;right:0;top:100%;background:var(--haven-v-header-bg);border-top:1px solid var(--haven-v-border);padding:1.25rem 0;z-index:50}body.haven-shell .haven-h-v7 .haven-h-v7-drawer.is-open{display:block}body.haven-shell .haven-h-v7 .haven-h-v7-drawer .haven-menu-list{max-width:var(--haven-container);margin:0 auto;padding:0 1.25rem;flex-direction:column;align-items:flex-start;gap:.5rem}body.haven-shell .haven-h-v7{position:relative}body.haven-shell .haven-h-v7 .haven-h-v7-drawer .haven-menu-list li::before,body.haven-shell .haven-h-v7 .haven-h-v7-drawer .haven-menu-list li::after,body.haven-shell .haven-h-v7 .haven-h-v7-drawer .haven-menu-list a::after{content:none !important;display:none !important;background:none !important}body.haven-shell .haven-h-v7 .haven-h-v7-drawer .haven-menu-list a{display:flex !important;align-items:center;gap:.75rem;padding:.55rem 0 !important;background:transparent !important;border:0 !important;border-radius:0 !important;text-transform:none !important;font-variant:normal !important;font-style:normal !important;letter-spacing:0 !important;font-weight:500 !important;text-shadow:none !important;color:var(--haven-v-header-text)}body.haven-shell .haven-h-v7 .haven-h-v7-drawer .haven-menu-list a:hover,body.haven-shell .haven-h-v7 .haven-h-v7-drawer .haven-menu-list .current-menu-item>a{color:var(--haven-v-primary) !important;background:transparent !important}body.haven-shell .haven-h-v7 .haven-h-v7-drawer .haven-menu-list a::before{content:'»' !important;flex:0 0 auto;display:inline-flex !important;align-items:center;justify-content:center;min-width:1em;line-height:1;color:var(--haven-v-primary);font-weight:600;opacity:.85;background:none !important;position:static !important;transform:none !important}}@media(max-width:900px){body.haven-shell .haven-page-header{position:relative}body.haven-shell .haven-header-grid{flex-direction:row !important;align-items:center !important;justify-content:space-between !important;gap:1rem}body.haven-shell .haven-menu-toggle{position:absolute;right:1.25rem;top:50%;transform:translateY(-50%)}body.haven-shell .haven-h-v5 .haven-h-band--bottom{display:none}body.haven-shell .haven-h-v6 .haven-h-nav-left,body.haven-shell .haven-h-v6 .haven-h-nav-right{display:none}body.haven-shell .haven-h-v6 .haven-header-grid{display:flex !important}body.haven-shell .haven-h-v4 .haven-h-divider{display:none}body.haven-shell .haven-h-v7 .haven-h-v7-label{display:none}}body.haven-shell .haven-logo-frame .custom-logo-link{display:inline-block;max-width:100%}body.haven-shell .haven-logo-frame .custom-logo{max-height:48px;width:auto;height:auto;max-width:100%}body.haven-shell .haven-brand-title{font-family:var(--haven-font-heading);font-size:1.25rem;font-weight:700;color:var(--haven-v-header-text);text-decoration:none;letter-spacing:-.01em}body.haven-shell .haven-brand-title:hover{color:var(--haven-v-primary)}body.haven-shell .haven-byline-top{display:flex;flex-direction:column;align-items:center;gap:8px;margin:14px 0 6px;text-align:center}body.haven-shell .haven-byline-top-avatar{width:64px;height:64px;border-radius:50%;background-size:cover;background-position:center;background-color:var(--haven-v-surface);border:1px solid var(--haven-v-border);flex:0 0 64px}body.haven-shell .haven-byline-top-name{font-size:1rem;font-weight:600;color:var(--haven-v-text);line-height:1.3}body.haven-shell .haven-bio-panel-title+.haven-bio-panel{margin-top:14px}body.haven-shell .haven-bio-panel{margin:32px 0 0;padding:22px 24px;background:var(--haven-v-surface);border:1px solid var(--haven-v-border);border-radius:8px;color:var(--haven-v-text)}body.haven-shell .haven-bio-panel-head{display:flex;align-items:center;gap:14px;margin-bottom:14px}body.haven-shell .haven-bio-panel-avatar{width:64px;height:64px;border-radius:50%;background-size:cover;background-position:center;background-color:var(--haven-v-bg);flex:0 0 64px}body.haven-shell .haven-bio-panel-meta{display:flex;flex-direction:column;gap:2px;min-width:0}body.haven-shell .haven-bio-panel-name{font-size:1.125rem;font-weight:700;color:var(--haven-v-heading);line-height:1.25}body.haven-shell .haven-bio-panel-role{font-size:.875rem;color:var(--haven-v-primary);line-height:1.3}body.haven-shell .haven-bio-panel-bio{font-size:.95rem;line-height:1.6;color:var(--haven-v-text)}body.haven-shell .haven-bio-panel-bio p{margin:0 0 .6em}body.haven-shell .haven-bio-panel-bio p:last-child{margin-bottom:0}body.haven-shell .haven-bio-panel-links{display:flex;align-items:center;gap:10px;margin-top:14px}body.haven-shell .haven-bio-panel-link{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;background:var(--haven-v-bg);color:var(--haven-v-text);text-decoration:none;transition:background .15s ease,color .15s ease}body.haven-shell .haven-bio-panel-link:hover,body.haven-shell .haven-bio-panel-link:focus{background:var(--haven-v-primary);color:var(--haven-v-primary-contrast)}body.haven-shell .haven-page-footer{background:var(--haven-v-footer-bg);color:var(--haven-v-footer-text);padding:2.5rem 0 2rem;margin-top:0;border-top:1px solid var(--haven-v-border)}body.haven-shell .haven-foot-grid{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:1.5rem;text-align:center}body.haven-shell .haven-footer-byline{font-size:.9rem;color:var(--haven-v-footer-text);text-align:center}body.haven-shell .haven-footer-byline a{color:var(--haven-v-footer-text)}body.haven-shell button.haven-to-the-top{position:fixed;right:1.25rem;bottom:1.25rem;width:44px;height:44px;min-width:0;padding:0;margin:0;border:0;border-radius:var(--haven-radius);background:var(--haven-v-primary);color:var(--haven-v-primary-contrast);box-shadow:0 6px 24px rgba(0,0,0,.18);display:none;align-items:center;justify-content:center;cursor:pointer;line-height:0;z-index:50;transition:transform .2s ease,background .2s ease}body.haven-shell button.haven-to-the-top.is-visible{display:inline-flex}body.haven-shell button.haven-to-the-top:hover{background:var(--haven-v-primary-hover);transform:translateY(-2px)}body.haven-shell button.haven-to-the-top svg{width:20px;height:20px;color:var(--haven-v-primary-contrast)}body.haven-shell .haven-main-region{min-height:60vh;padding:2.5rem 0;color:var(--haven-v-text);background:transparent !important}body.haven-shell .haven-viewport-wrap{padding:0}body.haven-shell .haven-writeup{max-width:1280px;margin:0 auto}body.haven-shell .haven-doc-head{margin-bottom:2rem}body.haven-shell .haven-title-bar{font-family:var(--haven-font-heading);font-size:clamp(1.75rem,1rem+2.5vw,2.75rem);line-height:1.15;color:var(--haven-v-heading);margin:0 0 .5rem;letter-spacing:-.02em;text-align:left}body.haven-shell .haven-rich-text{color:var(--haven-v-text)}body.haven-shell .haven-rich-text h1,body.haven-shell .haven-rich-text h2,body.haven-shell .haven-rich-text h3,body.haven-shell .haven-rich-text h4,body.haven-shell .haven-rich-text h5,body.haven-shell .haven-rich-text h6{font-family:var(--haven-font-heading);color:var(--haven-v-heading);line-height:1.25;margin:2.5rem 0 1rem;letter-spacing:-.01em}body.haven-shell .haven-rich-text h1,body.haven-shell .haven-rich-text h2{text-align:left}body.haven-shell .haven-rich-text h3,body.haven-shell .haven-rich-text h4,body.haven-shell .haven-rich-text h5,body.haven-shell .haven-rich-text h6{text-align:left}body.haven-shell .haven-rich-text h2{font-size:1.875rem}body.haven-shell .haven-rich-text h3{font-size:1.375rem}body.haven-shell .haven-rich-text h4{font-size:1.125rem}body.haven-shell .haven-rich-text p{margin:0 0 1.25rem;text-align:left}body.haven-shell .haven-rich-text ul,body.haven-shell .haven-rich-text ol{margin:0 0 1.5rem;padding-left:1.5rem}body.haven-shell .haven-rich-text li{margin-bottom:.5rem}body.haven-shell .haven-rich-text strong{color:var(--haven-v-heading)}body.haven-shell .haven-rich-text blockquote{margin:2rem 0;padding:1.25rem 1.5rem;border-left:3px solid var(--haven-v-primary);background:var(--haven-v-surface,#f6fffd);color:var(--haven-v-muted);font-style:italic;border-radius:0 var(--haven-radius) var(--haven-radius) 0}body.haven-shell .haven-rich-text img{border-radius:12px;margin:.5rem auto;display:block;max-width:100%;height:auto}body.haven-shell .haven-rich-text p:has(>img:only-child){margin:0}body.haven-shell .haven-rich-text table{width:100%;border-collapse:collapse;margin:2rem 0;background:var(--haven-v-surface,#f6fffd);color:var(--haven-v-text);border-radius:var(--haven-radius);overflow:hidden;border-top:1px solid var(--haven-v-border);border-right:1px solid var(--haven-v-border);border-bottom:1px solid var(--haven-v-border);border-left:1px solid var(--haven-v-border)}body.haven-shell .haven-rich-text table th,body.haven-shell .haven-rich-text table td{padding:.9rem 1rem;text-align:left;color:var(--haven-v-text);background:transparent;border-top:0;border-right:0;border-left:0;border-bottom:1px solid var(--haven-v-border)}body.haven-shell .haven-rich-text table th{background:var(--haven-v-surface);color:var(--haven-v-heading);font-family:var(--haven-font-heading);font-weight:700}body.haven-shell .haven-rich-text table tr:last-child td{border-bottom:0}body.haven-shell .haven-table-scroll{width:100%;margin:2rem 0;overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:var(--haven-radius)}body.haven-shell .haven-table-scroll>table{margin:0;border-radius:0}@media(max-width:700px){body.haven-shell .haven-table-scroll>table{min-width:560px}body.haven-shell .haven-table-scroll{background:linear-gradient(to right,var(--haven-v-surface,#f6fffd) 30%,transparent),linear-gradient(to right,transparent,var(--haven-v-surface,#f6fffd) 70%) 100% 0,radial-gradient(farthest-side at 0 50%,rgba(0,0,0,.15),transparent),radial-gradient(farthest-side at 100% 50%,rgba(0,0,0,.15),transparent) 100% 0;background-repeat:no-repeat;background-size:40px 100%,40px 100%,14px 100%,14px 100%;background-attachment:local,local,scroll,scroll}}body.haven-shell .haven-rich-text details{background:var(--haven-v-surface,#f6fffd);border:1px solid var(--haven-v-border);border-radius:var(--haven-radius);margin-bottom:.75rem;overflow:hidden}body.haven-shell .haven-rich-text details>summary{cursor:pointer;padding:1rem 1.25rem;font-family:var(--haven-font-heading);font-weight:600;color:var(--haven-v-heading);list-style:none;position:relative;padding-right:2.5rem}body.haven-shell .haven-rich-text details>summary::-webkit-details-marker{display:none}body.haven-shell .haven-rich-text details>summary::after{content:'+';position:absolute;right:1.25rem;top:50%;transform:translateY(-50%);font-size:1.25rem;color:var(--haven-v-primary);transition:transform .15s ease}body.haven-shell .haven-rich-text details[open]>summary::after{content:'−'}body.haven-shell .haven-rich-text details>*:not(summary){padding:0 1.25rem 1.25rem}body.haven-shell .haven-btn,body.haven-shell button.haven-btn,body.haven-shell a.haven-btn{display:inline-flex;align-items:center;gap:.5rem;padding:.8rem 1.5rem;border-radius:var(--haven-radius);text-decoration:none;font-weight:600;border:0;cursor:pointer;background:transparent;color:inherit;transition:background .15s ease,transform .1s ease}body.haven-shell .haven-btn--primary,body.haven-shell button.haven-btn--primary,body.haven-shell a.haven-btn--primary{background:var(--haven-v-primary);color:var(--haven-v-primary-contrast)}body.haven-shell .haven-btn--primary:hover,body.haven-shell button.haven-btn--primary:hover,body.haven-shell a.haven-btn--primary:hover{background:var(--haven-v-primary-hover);color:var(--haven-v-primary-contrast);transform:translateY(-1px)}