/* Brand webfonts — both faces self-hosted from fonts/ (trial cuts, user-supplied). */

@font-face{font-family:"Suisse Intl Mono Trial";src:url("../fonts/27a33846-52d5-4360-8aae-5c391926aabf.woff2") format("woff2");font-weight:200;font-style:normal;font-display:swap}
@font-face{font-family:"Suisse Intl Mono Trial";src:url("../fonts/2faca4c5-ab73-400c-a0be-50c4bbc5f57b.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Suisse Intl Mono Trial";src:url("../fonts/2faca4c5-ab73-400c-a0be-50c4bbc5f57b.woff2") format("woff2");font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"Suisse Intl Mono Trial";src:url("../fonts/017b4bcc-6b54-4c08-82f4-1e4571921a5e.woff2") format("woff2");font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:"Suisse Int'l Mono";src:url("../fonts/2faca4c5-ab73-400c-a0be-50c4bbc5f57b.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Suisse Int'l Mono";src:url("../fonts/2faca4c5-ab73-400c-a0be-50c4bbc5f57b.woff2") format("woff2");font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"Suisse Int'l Mono";src:url("../fonts/017b4bcc-6b54-4c08-82f4-1e4571921a5e.woff2") format("woff2");font-weight:700;font-style:normal;font-display:swap}

@font-face{font-family:"Suisse Intl Trial";src:url("../fonts/ba64f74d-e005-4152-bbe8-36014d7db1f4.woff2") format("woff2");font-weight:100;font-style:normal;font-display:swap}
@font-face{font-family:"Suisse Intl Trial";src:url("../fonts/c69d35bb-246e-4f56-ae28-52227178b887.woff2") format("woff2");font-weight:100;font-style:italic;font-display:swap}
@font-face{font-family:"Suisse Intl Trial";src:url("../fonts/6b972cb9-60df-425b-9cb1-9ab9c1343629.woff2") format("woff2");font-weight:200;font-style:normal;font-display:swap}
@font-face{font-family:"Suisse Intl Trial";src:url("../fonts/21d4e3c8-a20c-40f7-a551-baf40880c40d.woff2") format("woff2");font-weight:200;font-style:italic;font-display:swap}
@font-face{font-family:"Suisse Intl Trial";src:url("../fonts/2563273a-7588-4578-9714-51eb29203673.woff2") format("woff2");font-weight:300;font-style:normal;font-display:swap}
@font-face{font-family:"Suisse Intl Trial";src:url("../fonts/e229ca30-ef10-4936-ac83-fad8b780c7a7.woff2") format("woff2");font-weight:300;font-style:italic;font-display:swap}
@font-face{font-family:"Suisse Intl Trial";src:url("../fonts/2e0995e6-fbb4-4241-9fb5-a992c0d31bb8.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Suisse Intl Trial";src:url("../fonts/6fd0d83b-f01d-4031-9074-87e7e1d557a4.woff2") format("woff2");font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:"Suisse Intl Trial";src:url("../fonts/fc8abd2f-7938-4c6c-a307-14707300a3aa.woff2") format("woff2");font-weight:450;font-style:normal;font-display:swap}
@font-face{font-family:"Suisse Intl Trial";src:url("../fonts/02a8a879-22e8-4c2e-8deb-5dcae0971370.woff2") format("woff2");font-weight:450;font-style:italic;font-display:swap}
@font-face{font-family:"Suisse Intl Trial";src:url("../fonts/78bb577f-efdf-4340-950f-730c5ef3c396.woff2") format("woff2");font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"Suisse Intl Trial";src:url("../fonts/12ff59a6-c479-4b1a-87ed-7cac812b9610.woff2") format("woff2");font-weight:500;font-style:italic;font-display:swap}
@font-face{font-family:"Suisse Intl Trial";src:url("../fonts/81242f16-3ac3-426a-9d65-48bbd5684ac6.woff2") format("woff2");font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:"Suisse Intl Trial";src:url("../fonts/b463d05e-62eb-4fea-a777-721f7878385d.woff2") format("woff2");font-weight:600;font-style:italic;font-display:swap}
@font-face{font-family:"Suisse Intl Trial";src:url("../fonts/51ab23d0-11f1-4226-8b98-ff87236c2675.woff2") format("woff2");font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:"Suisse Intl Trial";src:url("../fonts/ee076d59-47f4-437c-9358-c8f4ebed68d9.woff2") format("woff2");font-weight:700;font-style:italic;font-display:swap}
@font-face{font-family:"Suisse Intl Trial";src:url("../fonts/94605845-6d1f-40b7-8bf3-84ff7f8121e0.woff2") format("woff2");font-weight:900;font-style:normal;font-display:swap}
@font-face{font-family:"Suisse Intl Trial";src:url("../fonts/4a7772fc-0551-4c33-80f9-b835f860e867.woff2") format("woff2");font-weight:900;font-style:italic;font-display:swap}

/* Alias so stacks leading with the production family name resolve to the trial cut. */
@font-face{font-family:"Suisse Int'l";src:url("../fonts/2e0995e6-fbb4-4241-9fb5-a992c0d31bb8.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Suisse Int'l";src:url("../fonts/6fd0d83b-f01d-4031-9074-87e7e1d557a4.woff2") format("woff2");font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:"Suisse Int'l";src:url("../fonts/fc8abd2f-7938-4c6c-a307-14707300a3aa.woff2") format("woff2");font-weight:450;font-style:normal;font-display:swap}
@font-face{font-family:"Suisse Int'l";src:url("../fonts/02a8a879-22e8-4c2e-8deb-5dcae0971370.woff2") format("woff2");font-weight:450;font-style:italic;font-display:swap}
@font-face{font-family:"Suisse Int'l";src:url("../fonts/78bb577f-efdf-4340-950f-730c5ef3c396.woff2") format("woff2");font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"Suisse Int'l";src:url("../fonts/12ff59a6-c479-4b1a-87ed-7cac812b9610.woff2") format("woff2");font-weight:500;font-style:italic;font-display:swap}
@font-face{font-family:"Suisse Int'l";src:url("../fonts/81242f16-3ac3-426a-9d65-48bbd5684ac6.woff2") format("woff2");font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:"Suisse Int'l";src:url("../fonts/51ab23d0-11f1-4226-8b98-ff87236c2675.woff2") format("woff2");font-weight:700;font-style:normal;font-display:swap}

/* Colors — values transcribed verbatim from Kaizen Labs Brand Guidelines.fig
   (pages 2.1 Primary Colors, 2.2 Secondary Colors, 2.2 Color Balance) */
:root{
  /* ---- Primary ---- */
  --kz-white:#FFFFFF;
  --kz-bone:#DBDBD9;              /* primary neutral */
  --kz-bone-textured:#DCDCDA;     /* use when brand texture is applied */
  --kz-graphite:#202020;          /* primary dark */
  --kz-ink:#161616;               /* UI hairlines, UI text */
  --kz-black:#000000;
  --kz-panel-dark:#1E1E1E;

  /* ---- Secondary ---- */
  --kz-coral:#FC766B;
  --kz-blue:#3055A9;

  /* ---- Accent · coral ramp (no texture) ---- */
  --kz-coral-900:#FB4938;
  --kz-coral-700:#FC786D;
  --kz-coral-500:#FC8A81;
  --kz-coral-300:#FD9D95;
  --kz-coral-100:#FEBDB8;

  /* ---- Accent · coral ramp (texture applied) ---- */
  --kz-coral-t-900:#FC6242;
  --kz-coral-t-700:#FD968E;
  --kz-coral-t-500:#FDA199;
  --kz-coral-t-300:#FEB6B0;
  --kz-coral-t-100:#FECBC7;
  --kz-coral-t-050:#FEE0DD;

  /* ---- Accent · blue ramp (no texture) ---- */
  --kz-blue-900:#183E71;
  --kz-blue-700:#325AAC;
  --kz-blue-500:#4984FF;
  --kz-blue-300:#75ABFF;
  --kz-blue-200:#9EC1FB;
  --kz-blue-100:#D0E8FE;

  /* ---- Accent · blue ramp (texture applied) ---- */
  --kz-blue-t-900:#064B90;
  --kz-blue-t-700:#3479BD;
  --kz-blue-t-500:#5F9FFF;
  --kz-blue-t-300:#94BEFF;
  --kz-blue-t-200:#B6D3FF;
  --kz-blue-t-100:#DAEDFE;

  /* ---- Neutral scale (as measured in the file) ---- */
  --kz-grey-050:#F6F7F7;
  --kz-grey-075:#F5F5F5;
  --kz-grey-100:#F4F4F4;
  --kz-grey-150:#EFEFEF;
  --kz-grey-200:#ECECEC;
  --kz-grey-250:#EAEAEA;
  --kz-grey-300:#D9D9D9;
  --kz-grey-400:#B7B7B7;
  --kz-grey-500:#ACACAC;
  --kz-grey-600:#7C7878;
  --kz-grey-700:#646464;
  --kz-grey-750:#4E4E4E;
  --kz-grey-800:#4B4B4B;
  --kz-grey-850:#484848;

  /* ---- Semantic aliases ---- */
  --surface-page:var(--kz-white);
  --surface-page-inverse:var(--kz-graphite);
  --surface-panel:var(--kz-white);
  --surface-panel-inverse:var(--kz-ink);
  --surface-muted:var(--kz-grey-100);
  --surface-brand-book:var(--kz-grey-400);   /* the B7B7B7 chapter grounds */

  --text-primary:var(--kz-ink);
  --text-secondary:var(--kz-grey-850);
  --text-muted:var(--kz-grey-700);
  --text-inverse:var(--kz-white);
  --text-accent:var(--kz-coral-900);
  --text-link:var(--kz-coral-900);

  --border-hairline:var(--kz-ink);
  --border-subtle:var(--kz-grey-200);
  --border-quiet:var(--kz-grey-400);

  --accent-primary:var(--kz-blue-t-700);   /* blues carry the weight */
  --accent-sharp:var(--kz-coral-t-900);    /* coral is the sharper accent */
}

/* Typography — sizes, leading and tracking transcribed from the .fig.
   Brand faces: Suisse Int'l (headlines + body) and Suisse Int'l Mono (eyebrows,
   labels, subheads, buttons, technical detail) — both self-hosted, see
   tokens/fonts.css. */
:root{
  --font-sans:"Suisse Int'l","Suisse Intl Trial",Inter,"Helvetica Neue",Helvetica,Arial,sans-serif;
  --font-mono:"Suisse Int'l Mono","Suisse Intl Mono Trial","IBM Plex Mono",ui-monospace,"SF Mono",Menlo,Consolas,monospace;

  /* Editorial scale (brand-book 1920×1080 artboards, 1:1) */
  --text-cover:249.35px;
  --text-specimen:168px;
  --text-display:120px;
  --text-page-title:50px;
  --text-section-title:40px;
  --text-body-lg:22px;
  --text-body:20px;
  --text-body-sm:18px;
  --text-label:15px;
  --text-eyebrow:12px;

  /* Interface scale (graphic-system pages, unscaled) */
  --text-ui-heading:22px;
  --text-ui-body-lg:18px;
  --text-ui-body:15px;
  --text-ui-label:14px;
  --text-ui-mono:13px;
  --text-ui-badge:10px;

  /* Leading */
  --leading-tight:1;
  --leading-title:1.1;
  --leading-snug:1.2;
  --leading-ui:1.45;
  --leading-body:1.4;
  --leading-loose:1.5;

  /* Tracking */
  --tracking-cover:-0.06em;
  --tracking-display:-0.04em;
  --tracking-headline:-0.03em;
  --tracking-body:-0.02em;
  --tracking-none:0;
  --tracking-nav:0.03em;
  --tracking-badge:0.04em;

  /* Weights in use */
  --weight-regular:400;
  --weight-book:450;
  --weight-medium:500;
}

/* Named text styles */
.kz-cover{font:var(--weight-regular) var(--text-cover)/192px var(--font-sans);letter-spacing:var(--tracking-cover)}
.kz-display{font:var(--weight-medium) var(--text-display)/var(--leading-tight) var(--font-sans);letter-spacing:var(--tracking-display)}
.kz-page-title{font:var(--weight-book) var(--text-page-title)/var(--leading-title) var(--font-sans)}
.kz-section-title{font:var(--weight-book) var(--text-section-title)/var(--leading-title) var(--font-sans);letter-spacing:var(--tracking-display)}
.kz-body-lg{font:var(--weight-book) var(--text-body-lg)/var(--leading-snug) var(--font-sans)}
.kz-body{font:var(--weight-book) var(--text-body)/var(--leading-snug) var(--font-sans)}
.kz-body-sm{font:var(--weight-book) var(--text-body-sm)/var(--leading-body) var(--font-sans)}
.kz-eyebrow{font:var(--weight-medium) var(--text-eyebrow)/var(--leading-tight) var(--font-mono);letter-spacing:var(--tracking-none);text-transform:uppercase}
.kz-label{font:var(--weight-regular) var(--text-label)/var(--leading-tight) var(--font-mono);text-transform:uppercase}
.kz-ui-heading{font:var(--weight-regular) var(--text-ui-heading)/var(--leading-ui) var(--font-sans)}
.kz-ui-body{font:var(--weight-regular) var(--text-ui-body)/var(--leading-ui) var(--font-sans)}
.kz-ui-mono{font:var(--weight-regular) var(--text-ui-mono)/var(--leading-ui) var(--font-mono);text-transform:uppercase}
.kz-subhead{font:var(--weight-medium) var(--text-ui-label)/var(--leading-snug) var(--font-mono);text-transform:uppercase}

/* Spacing + layout — measured off the 1920×1080 brand-book grid and the
   graphic-system pages. Values are literal, not snapped to a 4/8 grid. */
:root{
  --space-1:4px;
  --space-2:8px;
  --space-2-5:10px;
  --space-3:12px;
  --space-4:16px;
  --space-5:20px;
  --space-6:24px;
  --space-7:28px;
  --space-8:30px;
  --space-9:37px;
  --space-10:40px;
  --space-12:80px;
  --space-14:100px;

  /* Brand-book page grid */
  --page-width:1920px;
  --page-height:1080px;
  --page-margin:40px;
  --page-header-top:41px;
  --page-footer-top:1014px;
  --page-body-top:100px;
  --sidebar-width:385px;
  --sidebar-gutter:80px;
  --content-left:505px;
  --content-width:1375px;
  --content-height:880px;
  --stack-gap-section:100px;
  --stack-gap-block:40px;

  /* Interface geometry */
  --radius-card:14px;
  --radius-panel:2px;
  --radius-none:0px;
  --border-width:1px;
  --hairline:0.5px;
  --panel-padding:24px;
  --button-padding-y:16px;
  --button-padding-x:16px;
  --button-gap:10px;
  --button-height:43.48px;
  --button-width:210px;
  --icon-size:16px;
  --badge-size:26px;
  --logo-clearspace:1em; /* clearspace = height of the logomark on all sides */
}

/* Effects — texture, glow and the one shadow the file uses. */
:root{
  --shadow-soft:0 0 0 rgba(0,0,0,0.1);
  --shadow-drop:0 2px 8px rgba(0,0,0,0.1);
  --inset-hairline:inset 0 0 0 1px var(--border-hairline);
  --inset-subtle:inset 0 0 0 1px var(--border-subtle);

  --texture-noise:url("../images/5bf973a1-c011-444c-bce0-0d2b0ef334d6.webp"); /* @kind other */
  --texture-tile:400px;
  --texture-base-tint:rgba(246,247,247,0.02);
  --texture-base-opacity:0.3; /* @kind other */
  --texture-base-blur:14px;

  --glow-blur:120px;
  --glow-tint:rgba(254,224,221,0.55);

  --motion-fast:160ms; /* @kind other */
  --motion-base:240ms; /* @kind other */
  --motion-slow:420ms; /* @kind other */
  --ease-standard:cubic-bezier(0.2,0,0,1); /* @kind other */
}

/* Brand texture stack: noise on overlay + a blurred base tint at 30%.
   Apply to a full-bleed layer above artwork AND typography. */
.kz-texture{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.kz-texture::before{content:"";position:absolute;inset:0;background:var(--texture-noise) top left/var(--texture-tile) var(--texture-tile) repeat;mix-blend-mode:overlay}
.kz-texture::after{content:"";position:absolute;inset:0;background:var(--texture-base-tint);opacity:var(--texture-base-opacity);backdrop-filter:blur(var(--texture-base-blur))}

.kz-glow{position:absolute;pointer-events:none;background:radial-gradient(circle,var(--glow-tint) 0%,rgba(254,224,221,0) 70%);filter:blur(40px)}

/* Minimal element defaults so consumers get brand type and link colors free. */
:root{color-scheme:light}
body{margin:0;background:var(--surface-page);color:var(--text-primary);font-family:var(--font-sans);font-weight:var(--weight-book);-webkit-font-smoothing:antialiased;text-wrap:pretty}
a{color:var(--text-link);text-decoration:none;border-bottom:1px solid currentColor;transition:opacity var(--motion-fast) var(--ease-standard)}
a:hover{opacity:0.7}
::selection{background:var(--kz-coral-100);color:var(--kz-ink)}

/* Brand webfonts — both faces self-hosted from fonts/ (trial cuts, user-supplied). */

@font-face{font-family:"Suisse Intl Mono Trial";src:url("../fonts/27a33846-52d5-4360-8aae-5c391926aabf.woff2") format("woff2");font-weight:200;font-style:normal;font-display:swap}
@font-face{font-family:"Suisse Intl Mono Trial";src:url("../fonts/2faca4c5-ab73-400c-a0be-50c4bbc5f57b.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Suisse Intl Mono Trial";src:url("../fonts/2faca4c5-ab73-400c-a0be-50c4bbc5f57b.woff2") format("woff2");font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"Suisse Intl Mono Trial";src:url("../fonts/017b4bcc-6b54-4c08-82f4-1e4571921a5e.woff2") format("woff2");font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:"Suisse Int'l Mono";src:url("../fonts/2faca4c5-ab73-400c-a0be-50c4bbc5f57b.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Suisse Int'l Mono";src:url("../fonts/2faca4c5-ab73-400c-a0be-50c4bbc5f57b.woff2") format("woff2");font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"Suisse Int'l Mono";src:url("../fonts/017b4bcc-6b54-4c08-82f4-1e4571921a5e.woff2") format("woff2");font-weight:700;font-style:normal;font-display:swap}

@font-face{font-family:"Suisse Intl Trial";src:url("../fonts/ba64f74d-e005-4152-bbe8-36014d7db1f4.woff2") format("woff2");font-weight:100;font-style:normal;font-display:swap}
@font-face{font-family:"Suisse Intl Trial";src:url("../fonts/c69d35bb-246e-4f56-ae28-52227178b887.woff2") format("woff2");font-weight:100;font-style:italic;font-display:swap}
@font-face{font-family:"Suisse Intl Trial";src:url("../fonts/6b972cb9-60df-425b-9cb1-9ab9c1343629.woff2") format("woff2");font-weight:200;font-style:normal;font-display:swap}
@font-face{font-family:"Suisse Intl Trial";src:url("../fonts/21d4e3c8-a20c-40f7-a551-baf40880c40d.woff2") format("woff2");font-weight:200;font-style:italic;font-display:swap}
@font-face{font-family:"Suisse Intl Trial";src:url("../fonts/2563273a-7588-4578-9714-51eb29203673.woff2") format("woff2");font-weight:300;font-style:normal;font-display:swap}
@font-face{font-family:"Suisse Intl Trial";src:url("../fonts/e229ca30-ef10-4936-ac83-fad8b780c7a7.woff2") format("woff2");font-weight:300;font-style:italic;font-display:swap}
@font-face{font-family:"Suisse Intl Trial";src:url("../fonts/2e0995e6-fbb4-4241-9fb5-a992c0d31bb8.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Suisse Intl Trial";src:url("../fonts/6fd0d83b-f01d-4031-9074-87e7e1d557a4.woff2") format("woff2");font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:"Suisse Intl Trial";src:url("../fonts/fc8abd2f-7938-4c6c-a307-14707300a3aa.woff2") format("woff2");font-weight:450;font-style:normal;font-display:swap}
@font-face{font-family:"Suisse Intl Trial";src:url("../fonts/02a8a879-22e8-4c2e-8deb-5dcae0971370.woff2") format("woff2");font-weight:450;font-style:italic;font-display:swap}
@font-face{font-family:"Suisse Intl Trial";src:url("../fonts/78bb577f-efdf-4340-950f-730c5ef3c396.woff2") format("woff2");font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"Suisse Intl Trial";src:url("../fonts/12ff59a6-c479-4b1a-87ed-7cac812b9610.woff2") format("woff2");font-weight:500;font-style:italic;font-display:swap}
@font-face{font-family:"Suisse Intl Trial";src:url("../fonts/81242f16-3ac3-426a-9d65-48bbd5684ac6.woff2") format("woff2");font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:"Suisse Intl Trial";src:url("../fonts/b463d05e-62eb-4fea-a777-721f7878385d.woff2") format("woff2");font-weight:600;font-style:italic;font-display:swap}
@font-face{font-family:"Suisse Intl Trial";src:url("../fonts/51ab23d0-11f1-4226-8b98-ff87236c2675.woff2") format("woff2");font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:"Suisse Intl Trial";src:url("../fonts/ee076d59-47f4-437c-9358-c8f4ebed68d9.woff2") format("woff2");font-weight:700;font-style:italic;font-display:swap}
@font-face{font-family:"Suisse Intl Trial";src:url("../fonts/94605845-6d1f-40b7-8bf3-84ff7f8121e0.woff2") format("woff2");font-weight:900;font-style:normal;font-display:swap}
@font-face{font-family:"Suisse Intl Trial";src:url("../fonts/4a7772fc-0551-4c33-80f9-b835f860e867.woff2") format("woff2");font-weight:900;font-style:italic;font-display:swap}

/* Alias so stacks leading with the production family name resolve to the trial cut. */
@font-face{font-family:"Suisse Int'l";src:url("../fonts/2e0995e6-fbb4-4241-9fb5-a992c0d31bb8.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Suisse Int'l";src:url("../fonts/6fd0d83b-f01d-4031-9074-87e7e1d557a4.woff2") format("woff2");font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:"Suisse Int'l";src:url("../fonts/fc8abd2f-7938-4c6c-a307-14707300a3aa.woff2") format("woff2");font-weight:450;font-style:normal;font-display:swap}
@font-face{font-family:"Suisse Int'l";src:url("../fonts/02a8a879-22e8-4c2e-8deb-5dcae0971370.woff2") format("woff2");font-weight:450;font-style:italic;font-display:swap}
@font-face{font-family:"Suisse Int'l";src:url("../fonts/78bb577f-efdf-4340-950f-730c5ef3c396.woff2") format("woff2");font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"Suisse Int'l";src:url("../fonts/12ff59a6-c479-4b1a-87ed-7cac812b9610.woff2") format("woff2");font-weight:500;font-style:italic;font-display:swap}
@font-face{font-family:"Suisse Int'l";src:url("../fonts/81242f16-3ac3-426a-9d65-48bbd5684ac6.woff2") format("woff2");font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:"Suisse Int'l";src:url("../fonts/51ab23d0-11f1-4226-8b98-ff87236c2675.woff2") format("woff2");font-weight:700;font-style:normal;font-display:swap}

/* Colors — values transcribed verbatim from Kaizen Labs Brand Guidelines.fig
   (pages 2.1 Primary Colors, 2.2 Secondary Colors, 2.2 Color Balance) */
:root{
  /* ---- Primary ---- */
  --kz-white:#FFFFFF;
  --kz-bone:#DBDBD9;              /* primary neutral */
  --kz-bone-textured:#DCDCDA;     /* use when brand texture is applied */
  --kz-graphite:#202020;          /* primary dark */
  --kz-ink:#161616;               /* UI hairlines, UI text */
  --kz-black:#000000;
  --kz-panel-dark:#1E1E1E;

  /* ---- Secondary ---- */
  --kz-coral:#FC766B;
  --kz-blue:#3055A9;

  /* ---- Accent · coral ramp (no texture) ---- */
  --kz-coral-900:#FB4938;
  --kz-coral-700:#FC786D;
  --kz-coral-500:#FC8A81;
  --kz-coral-300:#FD9D95;
  --kz-coral-100:#FEBDB8;

  /* ---- Accent · coral ramp (texture applied) ---- */
  --kz-coral-t-900:#FC6242;
  --kz-coral-t-700:#FD968E;
  --kz-coral-t-500:#FDA199;
  --kz-coral-t-300:#FEB6B0;
  --kz-coral-t-100:#FECBC7;
  --kz-coral-t-050:#FEE0DD;

  /* ---- Accent · blue ramp (no texture) ---- */
  --kz-blue-900:#183E71;
  --kz-blue-700:#325AAC;
  --kz-blue-500:#4984FF;
  --kz-blue-300:#75ABFF;
  --kz-blue-200:#9EC1FB;
  --kz-blue-100:#D0E8FE;

  /* ---- Accent · blue ramp (texture applied) ---- */
  --kz-blue-t-900:#064B90;
  --kz-blue-t-700:#3479BD;
  --kz-blue-t-500:#5F9FFF;
  --kz-blue-t-300:#94BEFF;
  --kz-blue-t-200:#B6D3FF;
  --kz-blue-t-100:#DAEDFE;

  /* ---- Neutral scale (as measured in the file) ---- */
  --kz-grey-050:#F6F7F7;
  --kz-grey-075:#F5F5F5;
  --kz-grey-100:#F4F4F4;
  --kz-grey-150:#EFEFEF;
  --kz-grey-200:#ECECEC;
  --kz-grey-250:#EAEAEA;
  --kz-grey-300:#D9D9D9;
  --kz-grey-400:#B7B7B7;
  --kz-grey-500:#ACACAC;
  --kz-grey-600:#7C7878;
  --kz-grey-700:#646464;
  --kz-grey-750:#4E4E4E;
  --kz-grey-800:#4B4B4B;
  --kz-grey-850:#484848;

  /* ---- Semantic aliases ---- */
  --surface-page:var(--kz-white);
  --surface-page-inverse:var(--kz-graphite);
  --surface-panel:var(--kz-white);
  --surface-panel-inverse:var(--kz-ink);
  --surface-muted:var(--kz-grey-100);
  --surface-brand-book:var(--kz-grey-400);   /* the B7B7B7 chapter grounds */

  --text-primary:var(--kz-ink);
  --text-secondary:var(--kz-grey-850);
  --text-muted:var(--kz-grey-700);
  --text-inverse:var(--kz-white);
  --text-accent:var(--kz-coral-900);
  --text-link:var(--kz-coral-900);

  --border-hairline:var(--kz-ink);
  --border-subtle:var(--kz-grey-200);
  --border-quiet:var(--kz-grey-400);

  --accent-primary:var(--kz-blue-t-700);   /* blues carry the weight */
  --accent-sharp:var(--kz-coral-t-900);    /* coral is the sharper accent */
}

/* Typography — sizes, leading and tracking transcribed from the .fig.
   Brand faces: Suisse Int'l (headlines + body) and Suisse Int'l Mono (eyebrows,
   labels, subheads, buttons, technical detail) — both self-hosted, see
   tokens/fonts.css. */
:root{
  --font-sans:"Suisse Int'l","Suisse Intl Trial",Inter,"Helvetica Neue",Helvetica,Arial,sans-serif;
  --font-mono:"Suisse Int'l Mono","Suisse Intl Mono Trial","IBM Plex Mono",ui-monospace,"SF Mono",Menlo,Consolas,monospace;

  /* Editorial scale (brand-book 1920×1080 artboards, 1:1) */
  --text-cover:249.35px;
  --text-specimen:168px;
  --text-display:120px;
  --text-page-title:50px;
  --text-section-title:40px;
  --text-body-lg:22px;
  --text-body:20px;
  --text-body-sm:18px;
  --text-label:15px;
  --text-eyebrow:12px;

  /* Interface scale (graphic-system pages, unscaled) */
  --text-ui-heading:22px;
  --text-ui-body-lg:18px;
  --text-ui-body:15px;
  --text-ui-label:14px;
  --text-ui-mono:13px;
  --text-ui-badge:10px;

  /* Leading */
  --leading-tight:1;
  --leading-title:1.1;
  --leading-snug:1.2;
  --leading-ui:1.45;
  --leading-body:1.4;
  --leading-loose:1.5;

  /* Tracking */
  --tracking-cover:-0.06em;
  --tracking-display:-0.04em;
  --tracking-headline:-0.03em;
  --tracking-body:-0.02em;
  --tracking-none:0;
  --tracking-nav:0.03em;
  --tracking-badge:0.04em;

  /* Weights in use */
  --weight-regular:400;
  --weight-book:450;
  --weight-medium:500;
}

/* Named text styles */
.kz-cover{font:var(--weight-regular) var(--text-cover)/192px var(--font-sans);letter-spacing:var(--tracking-cover)}
.kz-display{font:var(--weight-medium) var(--text-display)/var(--leading-tight) var(--font-sans);letter-spacing:var(--tracking-display)}
.kz-page-title{font:var(--weight-book) var(--text-page-title)/var(--leading-title) var(--font-sans)}
.kz-section-title{font:var(--weight-book) var(--text-section-title)/var(--leading-title) var(--font-sans);letter-spacing:var(--tracking-display)}
.kz-body-lg{font:var(--weight-book) var(--text-body-lg)/var(--leading-snug) var(--font-sans)}
.kz-body{font:var(--weight-book) var(--text-body)/var(--leading-snug) var(--font-sans)}
.kz-body-sm{font:var(--weight-book) var(--text-body-sm)/var(--leading-body) var(--font-sans)}
.kz-eyebrow{font:var(--weight-medium) var(--text-eyebrow)/var(--leading-tight) var(--font-mono);letter-spacing:var(--tracking-none);text-transform:uppercase}
.kz-label{font:var(--weight-regular) var(--text-label)/var(--leading-tight) var(--font-mono);text-transform:uppercase}
.kz-ui-heading{font:var(--weight-regular) var(--text-ui-heading)/var(--leading-ui) var(--font-sans)}
.kz-ui-body{font:var(--weight-regular) var(--text-ui-body)/var(--leading-ui) var(--font-sans)}
.kz-ui-mono{font:var(--weight-regular) var(--text-ui-mono)/var(--leading-ui) var(--font-mono);text-transform:uppercase}
.kz-subhead{font:var(--weight-medium) var(--text-ui-label)/var(--leading-snug) var(--font-mono);text-transform:uppercase}

/* Spacing + layout — measured off the 1920×1080 brand-book grid and the
   graphic-system pages. Values are literal, not snapped to a 4/8 grid. */
:root{
  --space-1:4px;
  --space-2:8px;
  --space-2-5:10px;
  --space-3:12px;
  --space-4:16px;
  --space-5:20px;
  --space-6:24px;
  --space-7:28px;
  --space-8:30px;
  --space-9:37px;
  --space-10:40px;
  --space-12:80px;
  --space-14:100px;

  /* Brand-book page grid */
  --page-width:1920px;
  --page-height:1080px;
  --page-margin:40px;
  --page-header-top:41px;
  --page-footer-top:1014px;
  --page-body-top:100px;
  --sidebar-width:385px;
  --sidebar-gutter:80px;
  --content-left:505px;
  --content-width:1375px;
  --content-height:880px;
  --stack-gap-section:100px;
  --stack-gap-block:40px;

  /* Interface geometry */
  --radius-card:14px;
  --radius-panel:2px;
  --radius-none:0px;
  --border-width:1px;
  --hairline:0.5px;
  --panel-padding:24px;
  --button-padding-y:16px;
  --button-padding-x:16px;
  --button-gap:10px;
  --button-height:43.48px;
  --button-width:210px;
  --icon-size:16px;
  --badge-size:26px;
  --logo-clearspace:1em; /* clearspace = height of the logomark on all sides */
}

/* Effects — texture, glow and the one shadow the file uses. */
:root{
  --shadow-soft:0 0 0 rgba(0,0,0,0.1);
  --shadow-drop:0 2px 8px rgba(0,0,0,0.1);
  --inset-hairline:inset 0 0 0 1px var(--border-hairline);
  --inset-subtle:inset 0 0 0 1px var(--border-subtle);

  --texture-noise:url("../images/5bf973a1-c011-444c-bce0-0d2b0ef334d6.webp"); /* @kind other */
  --texture-tile:400px;
  --texture-base-tint:rgba(246,247,247,0.02);
  --texture-base-opacity:0.3; /* @kind other */
  --texture-base-blur:14px;

  --glow-blur:120px;
  --glow-tint:rgba(254,224,221,0.55);

  --motion-fast:160ms; /* @kind other */
  --motion-base:240ms; /* @kind other */
  --motion-slow:420ms; /* @kind other */
  --ease-standard:cubic-bezier(0.2,0,0,1); /* @kind other */
}

/* Brand texture stack: noise on overlay + a blurred base tint at 30%.
   Apply to a full-bleed layer above artwork AND typography. */
.kz-texture{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.kz-texture::before{content:"";position:absolute;inset:0;background:var(--texture-noise) top left/var(--texture-tile) var(--texture-tile) repeat;mix-blend-mode:overlay}
.kz-texture::after{content:"";position:absolute;inset:0;background:var(--texture-base-tint);opacity:var(--texture-base-opacity);backdrop-filter:blur(var(--texture-base-blur))}

.kz-glow{position:absolute;pointer-events:none;background:radial-gradient(circle,var(--glow-tint) 0%,rgba(254,224,221,0) 70%);filter:blur(40px)}

/* Document / print system — letter-size one-pagers, briefs, packets and
   pamphlets. Derived from the Kaizen federal reference documents; the same
   ratios carry to slides when the page box changes. Sizes are px at 96dpi
   (816×1056 = US Letter). See guidelines/document-system.card.html and
   templates/print-document/. */
:root{
  /* Page box + margins */
  --doc-page-w:816px;
  --doc-page-h:1056px;
  --doc-margin-x:52px;
  --doc-margin-top:46px;
  --doc-margin-bottom:34px;

  /* Rail: mono label column that opens every band */
  --doc-rail-w:132px;
  --doc-rail-gap:24px;

  /* Vertical rhythm */
  --doc-band-gap:16px;          /* space above a band's hairline */
  --doc-band-pad:14px;          /* space below the hairline */
  --doc-card-gap:10px;

  /* Hairlines + borders (on the dark ground) */
  --doc-surface:var(--kz-panel-dark);
  --doc-rule:rgba(255,255,255,.16);
  --doc-card-border:rgba(255,255,255,.18);
  --doc-chip-border:rgba(255,255,255,.4);

  /* Ink */
  --doc-text:var(--kz-white);
  --doc-text-secondary:#BDBDBD;
  --doc-text-muted:#8C8C8C;
  --doc-label:#9C9C9C;
  --doc-eyebrow:var(--kz-coral-t-900);   /* FC6242 */
  --doc-band:var(--kz-blue-t-700);       /* 3479BD */
  --doc-label-support:#8FB6DD;

  /* Type scale (document, not screen) */
  --doc-title:36px;
  --doc-lead:19px;
  --doc-card-title:13px;
  --doc-body:12px;
  --doc-body-sm:11px;
  --doc-eyebrow-size:11px;
  --doc-rail-size:10px;
  --doc-micro:9px;
  --doc-tracking-mono:.12em;
}

/* Minimal element defaults so consumers get brand type and link colors free. */
:root{color-scheme:light}
body{margin:0;background:var(--surface-page);color:var(--text-primary);font-family:var(--font-sans);font-weight:var(--weight-book);-webkit-font-smoothing:antialiased;text-wrap:pretty}
a{color:var(--text-link);text-decoration:none;border-bottom:1px solid currentColor;transition:opacity var(--motion-fast) var(--ease-standard)}
a:hover{opacity:0.7}
::selection{background:var(--kz-coral-100);color:var(--kz-ink)}

html { scroll-behavior: smooth; }
  body { margin: 0; background: #FFFFFF; }
  a { color: inherit; border-bottom: none; }
  a:hover { opacity: 0.7; }
  html { scroll-behavior: smooth; }
  @media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
  ::selection { background: #FC6242; color: #161616; }
  @keyframes kz-marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
  @keyframes kz-cue { 0% { transform: translateY(-10px); opacity: 0; } 25% { opacity: 1; } 75% { opacity: 1; } 100% { transform: translateY(10px); opacity: 0; } }
  @media (prefers-reduced-motion: reduce) {
    * { animation: none !important; transition: none !important; }
    [data-reveal], [data-rule] { opacity: 1 !important; transform: none !important; }
  }
