@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/ibm-plex-sans-latin-ext-400-normal-C5H60-Va.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-display:swap;src:url(/assets/ibm-plex-sans-latin-ext-500-normal-DakdToA3.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-display:swap;src:url(/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-display:swap;src:url(/assets/ibm-plex-sans-latin-ext-600-normal-DOrvGEcy.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-display:swap;src:url(/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/ibm-plex-mono-latin-ext-400-normal-DxDDqVQb.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/ibm-plex-mono-latin-400-normal-Dm_PoFIZ.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/assets/ibm-plex-mono-latin-ext-500-normal-Dn-cqWhb.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/assets/ibm-plex-mono-latin-500-normal-C_OblDzq.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--hx-bg:#f4f5f3;--hx-surface:#fff;--hx-sunk:#e7eae6;--hx-ink:#16201c;--hx-muted:#58635e;--hx-line:#dadfda;--hx-field:#b9c1bc;--hx-accent:#0e6e6b;--hx-on-accent:#fff;--hx-accent-soft:#e1efed;--hx-ok:#276b45;--hx-warn:#8a5100;--hx-danger:#a63a26;--hx-chart-allow:#8fb8a9;--hx-chart-step:#d9a55b;--hx-chart-block:#b4452f;--hx-focus:0 0 0 3px color-mix(in srgb, var(--hx-accent) 35%, transparent);--hx-font:"IBM Plex Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--hx-mono:"IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--hx-text:15px;--hx-radius:6px;--hx-space:8px}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--hx-bg:#0f1412;--hx-surface:#1a211e;--hx-sunk:#232b27;--hx-ink:#e6ece8;--hx-muted:#9aa69f;--hx-line:#28312c;--hx-field:#3c4842;--hx-accent:#5cc3b7;--hx-on-accent:#0b1513;--hx-accent-soft:#17302c;--hx-ok:#6cc293;--hx-warn:#e0a64b;--hx-danger:#e58a73;--hx-chart-allow:#4e8676;--hx-chart-step:#c9964f;--hx-chart-block:#d9705a}}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--hx-bg:#0f1412;--hx-surface:#1a211e;--hx-sunk:#232b27;--hx-ink:#e6ece8;--hx-muted:#9aa69f;--hx-line:#28312c;--hx-field:#3c4842;--hx-accent:#5cc3b7;--hx-on-accent:#0b1513;--hx-accent-soft:#17302c;--hx-ok:#6cc293;--hx-warn:#e0a64b;--hx-danger:#e58a73;--hx-chart-allow:#4e8676;--hx-chart-step:#c9964f;--hx-chart-block:#d9705a}.hx-env-banner{background:var(--hx-sunk);color:var(--hx-warn);border-bottom:1px solid var(--hx-line);font:500 13px/1.4 var(--hx-font);text-align:center;margin:0;padding:4px 16px;display:block}.hx-env-banner strong{font-weight:600}.hx-env-banner .hx-env-host{font-family:var(--hx-mono);overflow-wrap:anywhere;font-size:12.5px}@media (max-width:640px){.hx-env-banner .hx-env-note{display:none}}.hx-env-error{border:2px solid var(--hx-danger);background:var(--hx-surface);max-width:46rem;color:var(--hx-ink);font:400 15px/1.5 var(--hx-font);border-radius:8px;margin:48px auto;padding:20px 24px}.hx-env-error h1{color:var(--hx-danger);margin:0 0 8px;font-size:20px;font-weight:600}.hx-env-error p{margin:8px 0}.hx-env-error dl{grid-template-columns:max-content 1fr;gap:4px 16px;margin:12px 0;display:grid}.hx-env-error dt{font-weight:600}.hx-env-error-row{display:contents}.hx-env-error dd{font-family:var(--hx-mono);overflow-wrap:anywhere;margin:0;font-size:14px}@media (max-width:640px){.hx-env-error{margin:16px;padding:16px}.hx-env-error dl{grid-template-columns:1fr}.hx-env-error dd{margin-bottom:6px}}:root{--header-h:56px;--sidebar-w:280px;--measure:70ch;--panel-radius:8px}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:calc(var(--header-h) + 16px)}body{background:var(--hx-bg);color:var(--hx-ink);font:16px/1.65 var(--hx-font);-webkit-font-smoothing:antialiased;margin:0}a{color:var(--hx-accent);text-underline-offset:3px;text-decoration-thickness:1px}a:hover{text-decoration-thickness:2px}:focus-visible{outline:2px solid var(--hx-accent);outline-offset:2px;border-radius:4px}main:focus-visible{outline:none}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip{z-index:100;background:var(--hx-accent);color:var(--hx-on-accent);border-radius:var(--hx-radius);padding:8px 14px;position:absolute;top:-60px;left:8px}.skip:focus{top:8px}.topbar{z-index:30;height:calc(var(--header-h) + env(safe-area-inset-top));padding:env(safe-area-inset-top) max(12px, env(safe-area-inset-right)) 0 max(8px, env(safe-area-inset-left));background:color-mix(in srgb, var(--hx-bg) 92%, transparent);-webkit-backdrop-filter:saturate(1.4)blur(10px);backdrop-filter:saturate(1.4)blur(10px);border-bottom:1px solid var(--hx-line);align-items:center;gap:8px;display:flex;position:sticky;top:0}.brand{color:var(--hx-ink);letter-spacing:-.01em;white-space:nowrap;align-items:center;gap:8px;min-width:0;font-size:16px;font-weight:600;text-decoration:none;display:flex}.brand:hover{color:var(--hx-ink)}@media (max-width:340px){.brand-sub{display:none}}.brand-sub{color:var(--hx-muted);font-weight:400}.logo{flex:none;width:22px;height:22px}.logo path{fill:none;stroke:var(--hx-accent);stroke-width:2px;stroke-linejoin:round}.logo circle{fill:var(--hx-accent)}.top-links{align-items:center;gap:2px;margin-left:auto;display:none}.top-links a{border-radius:var(--hx-radius);height:36px;color:var(--hx-muted);white-space:nowrap;align-items:center;padding:0 10px;font-size:14px;font-weight:500;text-decoration:none;display:inline-flex}.top-links a:hover{color:var(--hx-ink)}.top-links a.primary{background:var(--hx-accent);color:var(--hx-on-accent);margin-left:6px;padding:0 14px}.top-links a.primary:hover{background:color-mix(in srgb, var(--hx-accent) 88%, var(--hx-ink));color:var(--hx-on-accent)}.drawer-links{border-top:1px solid var(--hx-line);flex-direction:column;margin-top:24px;padding-top:12px;display:flex}.drawer-links a{color:var(--hx-accent);padding:10px 12px;font-size:15px;font-weight:500;text-decoration:none;display:block}.drawer-links a:hover{text-decoration:underline}.top-actions{align-items:center;gap:4px;margin-left:auto;display:flex}.top-links+.top-actions{margin-left:4px}.icon-btn{border-radius:var(--hx-radius);width:44px;height:44px;color:var(--hx-muted);cursor:pointer;background:0 0;border:0;place-items:center;display:inline-grid}.icon-btn:hover{color:var(--hx-ink);background:var(--hx-sunk)}.icon-btn svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;width:20px;height:20px}.lang-switch,.theme-switch{align-items:center;gap:2px;display:flex}.lang-switch button,.theme-switch button{border-radius:var(--hx-radius);min-width:36px;height:36px;color:var(--hx-muted);font:500 13.5px var(--hx-font);cursor:pointer;background:0 0;border:0;padding:0 8px}.lang-switch button:hover,.theme-switch button:hover{color:var(--hx-ink)}.lang-switch button[aria-pressed=true],.theme-switch button[aria-pressed=true]{color:var(--hx-ink);box-shadow:inset 0 -2px 0 var(--hx-accent);border-radius:0;font-weight:600}.lang-switch{border-left:1px solid var(--hx-line);margin-left:2px;padding-left:6px}.layout{display:block}.sidebar{z-index:40;width:min(86vw,320px);padding:calc(env(safe-area-inset-top) + 14px) 14px calc(env(safe-area-inset-bottom) + 24px) max(14px, env(safe-area-inset-left));overscroll-behavior:contain;background:var(--hx-bg);border-right:1px solid var(--hx-line);visibility:hidden;transition:transform .22s;position:fixed;top:0;bottom:0;left:0;overflow-y:auto;transform:translate(-105%)}.drawer-open .sidebar{visibility:visible;transform:none}.backdrop{z-index:35;background:#00000073;position:fixed;inset:0}.drawer-open{overflow:hidden}main{max-width:800px;padding:24px max(16px, env(safe-area-inset-right)) calc(40px + env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));outline:none;margin:0 auto}@media (min-width:900px){.menu-btn,.backdrop{display:none}.top-links{display:flex}.drawer-links{display:none}.topbar{padding-left:max(20px, env(safe-area-inset-left));padding-right:max(16px, env(safe-area-inset-right))}.layout{grid-template-columns:var(--sidebar-w) minmax(0, 1fr);display:grid}.sidebar{top:var(--header-h);height:calc(100vh - var(--header-h));visibility:visible;z-index:1;background:0 0;width:auto;padding:20px 16px 32px 20px;position:sticky;transform:none}.drawer-open{overflow:auto}main{margin:0;padding:40px 48px 64px}}@media (min-width:1240px){main{margin:0 auto 0 4vw}}.search-box input{border:1px solid var(--hx-field);border-radius:var(--hx-radius);background:var(--hx-surface);width:100%;height:40px;color:var(--hx-ink);font:16px var(--hx-font);padding:0 12px}.search-box input::placeholder{color:var(--hx-muted);opacity:1}.search-box input:focus-visible{border-color:var(--hx-accent);box-shadow:var(--hx-focus);outline:none}#nav section{margin-top:24px}#nav h2{letter-spacing:.08em;text-transform:uppercase;color:var(--hx-muted);margin:0 0 6px;padding:0 12px;font-size:12px;font-weight:500}#nav ul,.search-results ul{margin:0;padding:0;list-style:none}#nav a{color:var(--hx-muted);border-radius:0;padding:6px 12px;font-size:14.5px;line-height:1.4;text-decoration:none;display:block;box-shadow:inset 2px 0 #0000}#nav a:hover{color:var(--hx-ink);box-shadow:inset 2px 0 0 var(--hx-line)}#nav a[aria-current=page]{color:var(--hx-ink);box-shadow:inset 2px 0 0 var(--hx-accent);font-weight:600}@media (max-width:899px){#nav a{padding:9px 12px}}.search-results .count{color:var(--hx-muted);margin:16px 12px 6px;font-size:13px}.search-results li+li{border-top:1px solid var(--hx-line)}.search-results a{color:var(--hx-ink);padding:10px 12px;text-decoration:none;display:block}.search-results a:hover{background:var(--hx-sunk)}.search-results strong{color:var(--hx-accent);font-size:14px;font-weight:600;line-height:1.4;display:block}.search-results span{color:var(--hx-muted);margin-top:2px;font-size:13.5px;line-height:1.5;display:block}mark{background:var(--hx-accent-soft);color:var(--hx-ink);border-radius:2px;padding:0 1px}.prose{overflow-wrap:break-word}.prose h1{letter-spacing:-.02em;margin:0 0 12px;font-size:clamp(28px,6vw,34px);font-weight:600;line-height:1.2}.prose h2{letter-spacing:-.01em;border-top:1px solid var(--hx-line);margin:48px 0 12px;padding-top:24px;font-size:22px;font-weight:600;line-height:1.3}.prose h3{margin:32px 0 8px;font-size:17.5px;font-weight:600;line-height:1.35}.prose h4{margin:24px 0 6px;font-size:15.5px;font-weight:600}.prose .lead{color:var(--hx-muted);max-width:var(--measure);margin-top:0;font-size:clamp(16.5px,4.4vw,18px);line-height:1.55}.prose p,.prose li,.prose dd,.prose figcaption{max-width:var(--measure)}.prose p{margin:12px 0}.prose ul,.prose ol{padding-left:1.3em}.prose li{margin:6px 0}.prose li::marker{color:var(--hx-muted)}.prose li>ul,.prose li>ol{margin:4px 0}.prose hr{border:0;border-top:1px solid var(--hx-line);margin:32px 0}.prose strong{font-weight:600}.prose .hint{color:var(--hx-muted);font-size:15px}.anchor{color:var(--hx-muted);opacity:0;margin-left:8px;font-weight:400;text-decoration:none}h2:hover .anchor,h3:hover .anchor,.anchor:focus{opacity:1}code{font-family:var(--hx-mono);background:var(--hx-sunk);overflow-wrap:anywhere;border-radius:4px;padding:.1em .35em;font-size:.875em}.code{margin:16px 0;position:relative}pre{-webkit-overflow-scrolling:touch;background:var(--hx-sunk);border-radius:var(--panel-radius);font:13.5px/1.6 var(--hx-mono);tab-size:2;color:var(--hx-ink);border:0;margin:0;padding:14px 16px;overflow-x:auto}.code-lang+.copy+pre,.code-lang~pre{padding-top:34px}pre code{font-size:inherit;overflow-wrap:normal;background:0 0;padding:0}.code-lang{font:500 11.5px var(--hx-mono);letter-spacing:.04em;text-transform:lowercase;color:var(--hx-muted);position:absolute;top:9px;left:16px}.copy{border:1px solid var(--hx-field);border-radius:var(--hx-radius);background:var(--hx-surface);height:28px;color:var(--hx-muted);font:500 12.5px var(--hx-font);cursor:pointer;padding:0 10px;position:absolute;top:6px;right:6px}.copy:hover{color:var(--hx-ink)}.table-wrap{-webkit-overflow-scrolling:touch;border-radius:var(--panel-radius);margin:16px 0;overflow-x:auto}table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:14.5px;line-height:1.5}th,td{text-align:left;vertical-align:top;border-bottom:1px solid var(--hx-line);padding:9px 12px}th{background:var(--hx-sunk);white-space:nowrap;font-size:13.5px;font-weight:600}tr:last-child td{border-bottom:0}td code{white-space:nowrap}div.note,div.tip,div.warn,div.danger{border-radius:0 var(--hx-radius) var(--hx-radius) 0;max-width:calc(var(--measure) + 32px);border-left:3px solid;margin:20px 0;padding:12px 16px}div.note{background:var(--hx-accent-soft);border-color:var(--hx-accent)}div.tip{background:color-mix(in srgb, var(--hx-ok) 10%, var(--hx-bg));border-color:var(--hx-ok)}div.warn{background:color-mix(in srgb, var(--hx-warn) 10%, var(--hx-bg));border-color:var(--hx-warn)}div.danger{background:color-mix(in srgb, var(--hx-danger) 10%, var(--hx-bg));border-color:var(--hx-danger)}:is(div.note,div.tip,div.warn,div.danger)>:first-child{margin-top:0}:is(div.note,div.tip,div.warn,div.danger)>:last-child{margin-bottom:0}:is(div.note,div.tip,div.warn,div.danger) code{background:color-mix(in srgb, var(--hx-ink) 7%, transparent)}.toc{border-left:2px solid var(--hx-line);margin:20px 0 8px;padding:2px 0 2px 16px}.toc summary{cursor:pointer;letter-spacing:.06em;text-transform:uppercase;color:var(--hx-muted);align-items:center;min-height:36px;font-size:13px;font-weight:500;display:flex}.toc summary:hover{color:var(--hx-ink)}.toc summary::-webkit-details-marker{display:none}.toc summary{gap:8px;list-style:none}.toc summary:before{content:"▸";font-size:11px;transition:transform .15s}.toc[open] summary:before{transform:rotate(90deg)}.toc ol{margin:0;padding:0 0 6px 20px;font-size:15px}.toc li{margin:3px 0}.toc a{text-decoration:none}.toc a:hover{text-decoration:underline}.prose details.item{border-bottom:1px solid var(--hx-line);margin:0}.prose :not(details.item)+details.item,.prose details.item:first-child{border-top:1px solid var(--hx-line);margin-top:16px}.prose details.item>summary{cursor:pointer;flex-wrap:wrap;align-items:center;gap:4px 12px;min-height:48px;padding:12px 4px;list-style:none;display:flex}.prose details.item>summary::-webkit-details-marker{display:none}.prose details.item>summary:after{content:"▸";color:var(--hx-muted);margin-left:auto;transition:transform .15s}.prose details.item[open]>summary:after{transform:rotate(90deg)}.prose details.item>summary:hover strong{color:var(--hx-accent)}.prose details.item>summary strong{font-size:15.5px;font-weight:600}.prose details.endpoint>summary strong{font:500 14.5px/1.4 var(--hx-mono)}.prose details.item>.body{padding:0 4px 16px}.badge{--badge:var(--hx-muted);font:500 12.5px/1.6 var(--hx-font);color:var(--badge);white-space:nowrap;padding:0;display:inline-block}.badge.ok{--badge:var(--hx-ok)}.badge.warn{--badge:var(--hx-warn)}.badge.bad{--badge:var(--hx-danger)}.badge.info{--badge:var(--hx-accent)}.badge.ok:before,.badge.warn:before,.badge.bad:before,.badge.info:before{content:"";background:var(--badge);vertical-align:.12em;border-radius:50%;width:6px;height:6px;margin-right:6px;display:inline-block}:is(div.note,div.tip,div.warn,div.danger) .badge{color:var(--hx-ink)}ol.steps{counter-reset:step;margin:20px 0;padding:0;list-style:none}ol.steps>li{counter-increment:step;max-width:none;margin:0;padding:2px 0 16px 44px;position:relative}ol.steps>li:before{content:counter(step);background:var(--hx-bg);width:28px;height:28px;color:var(--hx-accent);border:1.5px solid var(--hx-accent);font:600 13px var(--hx-font);font-variant-numeric:tabular-nums;border-radius:50%;place-items:center;display:grid;position:absolute;top:1px;left:0}ol.steps>li:not(:last-child):after{content:"";background:var(--hx-line);width:1px;position:absolute;top:34px;bottom:4px;left:13.5px}.cards{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:4px 32px;margin:24px 0;display:grid}.cards>a,.cards>div{border-top:1px solid var(--hx-line);color:var(--hx-ink);padding:14px 0 12px;text-decoration:none;display:block}.cards>a:hover{border-top-color:var(--hx-accent)}.cards>a:hover strong{text-decoration:underline}.cards strong{color:var(--hx-accent);margin-bottom:2px;font-weight:600;display:block}.cards span{color:var(--hx-muted);font-size:14.5px;line-height:1.5;display:block}.scale{border-radius:var(--hx-radius);height:36px;font:600 12.5px/1.2 var(--hx-font);margin:16px 0 4px;display:flex;overflow:hidden}.scale>div{text-align:center;color:var(--hx-on-accent);place-items:center;padding:0 4px;display:grid}.scale .s-allow{background:var(--hx-ok);flex:30}.scale .s-pow{background:var(--hx-accent);flex:30}.scale .s-step{background:var(--hx-warn);flex:25}.scale .s-block{background:var(--hx-danger);flex:15}.scale-axis{color:var(--hx-muted);font-variant-numeric:tabular-nums;justify-content:space-between;font-size:12px;display:flex}.diagram{border-radius:var(--panel-radius);background:var(--hx-surface);border:1px solid var(--hx-line);margin:20px 0;padding:16px;overflow-x:auto}.diagram svg{width:100%;min-width:520px;height:auto;display:block}.diagram text{fill:var(--hx-ink);font:13px var(--hx-font)}.diagram .muted{fill:var(--hx-muted);font-size:11.5px}.diagram .box{fill:var(--hx-sunk);stroke:var(--hx-line)}.diagram .line{stroke:var(--hx-muted);stroke-width:1.5px;fill:none}.diagram .arrow{fill:var(--hx-muted)}.diagram .accent{fill:var(--hx-accent-soft);stroke:var(--hx-accent)}figcaption{color:var(--hx-muted);margin-top:8px;font-size:13.5px}dl.glossary{margin:16px 0}dl.glossary dt{margin-top:16px;font-weight:600}dl.glossary dd{border-left:2px solid var(--hx-line);color:var(--hx-ink);margin:2px 0 0;padding-left:14px}kbd{font:12.5px var(--hx-mono);border:1px solid var(--hx-field);background:var(--hx-surface);border-bottom-width:2px;border-radius:4px;padding:1px 6px}.pager{border-top:1px solid var(--hx-line);grid-template-columns:1fr 1fr;gap:16px;margin-top:56px;padding-top:16px;display:grid}.pager a{padding:8px 0;text-decoration:none;display:block}.pager a:hover span{text-decoration:underline}.pager small{color:var(--hx-muted);font-size:13px;display:block}.pager span{font-weight:600}.pager .next{text-align:right;grid-column:2}.foot{border-top:1px solid var(--hx-line);color:var(--hx-muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 24px;margin-top:40px;padding-top:16px;font-size:13.5px;display:flex}.foot p{max-width:var(--measure);flex:280px;margin:0}.theme-switch button{height:32px;font-size:13px}.to-top{right:max(16px, env(safe-area-inset-right));bottom:calc(16px + env(safe-area-inset-bottom));z-index:20;border:1px solid var(--hx-line);background:var(--hx-surface);width:44px;height:44px;color:var(--hx-ink);cursor:pointer;border-radius:50%;font-size:18px;position:fixed;box-shadow:0 2px 10px #0000001f}.to-top:hover{border-color:var(--hx-field)}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}@media (forced-colors:active){.lang-switch button[aria-pressed=true],.theme-switch button[aria-pressed=true],#nav a[aria-current=page]{outline:2px solid}.top-links a.primary,.scale>div{border:1px solid}.logo path{stroke:canvastext}.logo circle{fill:canvastext}}


/*
 * Harisecurity brand (HEXA_BRAND=harisecurity): the --hx-* tokens take the brand charter's colours. Appended after
 * packages/design-tokens/tokens.css in the built stylesheets by brand-vite.ts (same selectors, so it wins by order);
 * never part of a Harisecurity build. Charter → token: ground → bg, surface, ink, muted, border → line,
 * border-strong → field, orange-strong → accent (text-safe orange; the flat orange #f28c28 never carries text),
 * orange-tint → accent-soft, grenat → danger. sunk and the chart colours are derived (same hue family).
 * Contrast (WCAG 2.2): every text colour ≥ 4.5:1 on bg, surface, sunk and accent-soft, field ≥ 3:1, in both themes
 * (light: muted 5.6–6.6, accent 4.5–5.4, danger 6.3–7.5, on-accent 5.4; dark: muted 5.9–7.9, accent 7.1–9.4,
 * danger 5.1–6.8, field 3.8).
 */
:root {
  --hx-bg: #FAF7F0;
  --hx-surface: #FFFFFF;
  --hx-sunk: #F1EBDD;
  --hx-ink: #102A43;
  --hx-muted: #625C52;
  --hx-line: #E0DACB;
  --hx-field: #857D6F;
  --hx-accent: #A45607;
  --hx-on-accent: #FFFFFF;
  --hx-accent-soft: #FDEBD6;
  --hx-ok: #276B45;
  --hx-warn: #8A5100;
  --hx-danger: #9E2A2B;
  --hx-chart-allow: #8FAFC9;
  --hx-chart-step: #F28C28;
  --hx-chart-block: #9E2A2B;
  --hx-font: 'IBM Plex Sans', 'Noto Sans Arabic', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --hx-bg: #0B1C2E;
    --hx-surface: #12283F;
    --hx-sunk: #1A3350;
    --hx-ink: #F3EFE6;
    --hx-muted: #A3B1C2;
    --hx-line: #213A55;
    --hx-field: #6F8399;
    --hx-accent: #F7B267;
    --hx-on-accent: #0B1C2E;
    --hx-accent-soft: #3A2A14;
    --hx-ok: #6CC293;
    --hx-warn: #E0A64B;
    --hx-danger: #E58A84;
    --hx-chart-allow: #4E6F91;
    --hx-chart-step: #D9893A;
    --hx-chart-block: #E58A84;
  }
}

:root[data-theme="dark"] {
  --hx-bg: #0B1C2E;
  --hx-surface: #12283F;
  --hx-sunk: #1A3350;
  --hx-ink: #F3EFE6;
  --hx-muted: #A3B1C2;
  --hx-line: #213A55;
  --hx-field: #6F8399;
  --hx-accent: #F7B267;
  --hx-on-accent: #0B1C2E;
  --hx-accent-soft: #3A2A14;
  --hx-ok: #6CC293;
  --hx-warn: #E0A64B;
  --hx-danger: #E58A84;
  --hx-chart-allow: #4E6F91;
  --hx-chart-step: #D9893A;
  --hx-chart-block: #E58A84;
}

/* Logo: the cartouche (logo.svg) on light, the inverse mark (mark-inverse.svg) on dark, where the navy cartouche would
   disappear. Both are inlined by brand-vite.ts / BrandLogo, unchanged; the door never mirrors (dir="rtl" included). */
.hx-brand-logo { display: inline-flex; flex: none; width: 28px; height: 28px; direction: ltr; }
.hx-brand-logo svg { width: 100%; height: 100%; display: block; }
.hx-brand-logo .hx-logo-dark { display: none; }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .hx-brand-logo .hx-logo-light { display: none; }
  :root:not([data-theme="light"]) .hx-brand-logo .hx-logo-dark { display: block; }
}
:root[data-theme="dark"] .hx-brand-logo .hx-logo-light { display: none; }
:root[data-theme="dark"] .hx-brand-logo .hx-logo-dark { display: block; }
@media (forced-colors: active) { .hx-brand-logo { forced-color-adjust: none; } }

/* Wordmark: one word, "Haris" in ink + "ecurity" in the text-safe orange (charter: logotype rule) */
.hx-wordmark { white-space: nowrap; }
.hx-wordmark .hx-wm-ink { color: var(--hx-ink); }
.hx-wordmark .hx-wm-accent { color: var(--hx-accent); }
