/* Base element styles + layout/type utilities. */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{margin:0;background:var(--bg-page);color:var(--text-primary);font-family:var(--font-sans);font-size:var(--fs-body);line-height:var(--lh-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}
h1,h2,h3,h4,h5,h6{margin:0;font-weight:var(--fw-bold);text-wrap:balance}
p{margin:0;text-wrap:pretty}
a{color:var(--text-link);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em;transition:color var(--dur-fast) var(--ease-standard)}
a:hover{color:var(--text-link-hover)}
:focus-visible{outline:none;box-shadow:var(--focus-ring);border-radius:var(--radius-xs)}
::selection{background:var(--red-100);color:var(--neutral-950)}
img,svg,video{display:block;max-width:100%}
/* Layout */
.zs-container{width:100%;max-width:calc(var(--container-max) + var(--grid-margin)*2);margin-inline:auto;padding-inline:var(--grid-margin)}
.zs-grid{display:grid;grid-template-columns:repeat(var(--grid-columns),minmax(0,1fr));column-gap:var(--grid-gutter)}
.zs-section{padding-block:var(--section-y)}
/* Type utilities */
.zs-display-xl{font-size:var(--fs-display-xl);line-height:var(--lh-display);letter-spacing:var(--ls-display);font-weight:var(--fw-display)}
.zs-display-l{font-size:var(--fs-display-l);line-height:var(--lh-display);letter-spacing:var(--ls-display);font-weight:var(--fw-display)}
.zs-h1{font-size:var(--fs-h1);line-height:var(--lh-heading);letter-spacing:var(--ls-heading);font-weight:var(--fw-bold)}
.zs-h2{font-size:var(--fs-h2);line-height:var(--lh-heading);letter-spacing:var(--ls-heading);font-weight:var(--fw-bold)}
.zs-h3{font-size:var(--fs-h3);line-height:var(--lh-tight);letter-spacing:var(--ls-heading);font-weight:var(--fw-semibold)}
.zs-h4{font-size:var(--fs-h4);line-height:var(--lh-snug);font-weight:var(--fw-semibold)}
.zs-h5{font-size:var(--fs-h5);line-height:var(--lh-snug);font-weight:var(--fw-semibold)}
.zs-body-l{font-size:var(--fs-body-l);line-height:var(--lh-body)}
.zs-body{font-size:var(--fs-body);line-height:var(--lh-body)}
.zs-body-s{font-size:var(--fs-body-s);line-height:1.55}
.zs-caption{font-size:var(--fs-caption);line-height:1.45;color:var(--text-tertiary)}
.zs-overline{font-family:var(--font-mono);font-size:var(--fs-overline);font-weight:500;letter-spacing:var(--ls-overline);text-transform:uppercase;line-height:1.3}
[lang="ar"] .zs-overline{font-family:var(--font-sans);text-transform:none;font-size:.8125rem}
.zs-mono{font-family:var(--font-mono)}
.zs-secondary{color:var(--text-secondary)}
/* Technical motif — blueprint grid. Use behind diagrams/technical content only, never as general decoration. */
.zs-blueprint{background-image:linear-gradient(var(--blueprint-line) 1px,transparent 1px),linear-gradient(90deg,var(--blueprint-line) 1px,transparent 1px);background-size:32px 32px;background-position:-1px -1px}
.zs-visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}

[dir="rtl"] .zs-flip-rtl{transform:scaleX(-1)}
