/* Self-hosted fonts (SIL Open Font License 1.1): IBM Plex Sans, IBM Plex Mono — Kosterski Engineering brand type */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/IBMPlexMono-normal-400-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, 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/fonts/IBMPlexMono-normal-400-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, 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/fonts/IBMPlexMono-normal-500-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, 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/fonts/IBMPlexMono-normal-500-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, 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: 600;
  font-display: swap;
  src: url(/assets/fonts/IBMPlexMono-normal-600-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, 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: 600;
  font-display: swap;
  src: url(/assets/fonts/IBMPlexMono-normal-600-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, 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: italic;
  font-weight: 400;
  font-stretch: 100%;
  font-display: swap;
  src: url(/assets/fonts/IBMPlexSans-italic-400-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, 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: italic;
  font-weight: 400;
  font-stretch: 100%;
  font-display: swap;
  src: url(/assets/fonts/IBMPlexSans-italic-400-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, 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: 400;
  font-stretch: 100%;
  font-display: swap;
  src: url(/assets/fonts/IBMPlexSans-normal-400-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, 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-stretch: 100%;
  font-display: swap;
  src: url(/assets/fonts/IBMPlexSans-normal-400-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, 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-stretch: 100%;
  font-display: swap;
  src: url(/assets/fonts/IBMPlexSans-normal-500-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, 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-stretch: 100%;
  font-display: swap;
  src: url(/assets/fonts/IBMPlexSans-normal-500-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, 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-stretch: 100%;
  font-display: swap;
  src: url(/assets/fonts/IBMPlexSans-normal-600-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, 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-stretch: 100%;
  font-display: swap;
  src: url(/assets/fonts/IBMPlexSans-normal-600-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* Kosterski Engineering brand tokens (brand pack 2026-10-14, 07_web/tokens.css).
   Orange marks always mean "waiting for your decision". Derived neutrals for dark mode are marked "derived". */
:root{
  --ke-ink:#0B0D10; --ke-white:#FFFFFF; --ke-orange:#FF5A1F; --ke-orange-deep:#C2410C; --ke-orange-tint:#FFE8DE;
  --ke-graphite:#2A2F36; --ke-steel:#6B7480; --ke-silver:#AEB5BE; --ke-mist:#E6E9ED; --ke-paper:#F7F8FA;
  --bg:var(--ke-white); --surface:var(--ke-paper); --surface-2:var(--ke-mist);
  --ink:var(--ke-ink); --ink-2:var(--ke-steel); --border:var(--ke-mist); --rule:var(--ke-ink);
  --mark:var(--ke-orange-tint); --mark-ink:var(--ke-ink);
  --mark-strong:var(--ke-orange); --mark-strong-ink:var(--ke-ink);
  --link:var(--ke-orange-deep);
  --ok:#1E7A4C; --ok-bg:#E2F2E9;
  --accent:var(--ke-orange); --accent-ink:var(--ke-ink);
  --motif:var(--ke-mist);
  --shadow:none;
  --font-display:'IBM Plex Sans',Arial,Helvetica,sans-serif;
  --font-body:'IBM Plex Sans',Arial,Helvetica,sans-serif;
  --font-mono:'IBM Plex Mono',Consolas,Menlo,monospace;
  --r-sm:3px; --r-md:6px;
  --gutter:24px;
  padding-top:env(safe-area-inset-top,0px); padding-bottom:env(safe-area-inset-bottom,0px);
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    color-scheme:dark;
    --bg:var(--ke-ink); --surface:#15181C /* derived */; --surface-2:var(--ke-graphite);
    --ink:var(--ke-white); --ink-2:var(--ke-silver); --border:#2F353D /* derived */; --rule:var(--ke-silver);
    --mark:#4A2214 /* derived: orange on ink */; --mark-ink:var(--ke-white);
    --link:var(--ke-orange);
    --ok:#63C98F; --ok-bg:#15301F;
    --motif:var(--ke-graphite);
  }
}
:root[data-theme="dark"]{
  color-scheme:dark;
  --bg:var(--ke-ink); --surface:#15181C /* derived */; --surface-2:var(--ke-graphite);
  --ink:var(--ke-white); --ink-2:var(--ke-silver); --border:#2F353D /* derived */; --rule:var(--ke-silver);
  --mark:#4A2214 /* derived: orange on ink */; --mark-ink:var(--ke-white);
  --link:var(--ke-orange);
  --ok:#63C98F; --ok-bg:#15301F;
  --motif:var(--ke-graphite);
}
@media (max-width:480px){ :root{ --gutter:16px; } }

*{box-sizing:border-box;}
html{scroll-padding-top:env(safe-area-inset-top,0px);}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-body);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;}
a{color:inherit;}
img,svg{max-width:100%;}
.wrap{max-width:1120px;margin:0 auto;padding-inline:var(--gutter);}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}

/* marks & chips — yellow always means "waiting for your decision" */
mark{background:var(--mark);color:var(--mark-ink);padding:.04em .16em;border-radius:2px;-webkit-box-decoration-break:clone;box-decoration-break:clone;}
ins{text-decoration:none;background:var(--ok-bg);color:var(--ok);padding:0 .16em;border-radius:2px;font-weight:500;}
.chip{display:inline-flex;align-items:center;font-family:var(--font-mono);font-size:12px;font-weight:500;line-height:1.4;padding:3px 8px;border-radius:var(--r-sm);white-space:nowrap;}
.chip-mark{background:var(--mark);color:var(--mark-ink);}
.chip-ok{background:var(--ok-bg);color:var(--ok);}
.chip-muted{background:var(--surface-2);color:var(--ink-2);}
.fnum{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:var(--mark-strong);color:var(--mark-strong-ink);font-family:var(--font-mono);font-size:11px;font-weight:600;margin-top:2px;}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:46px;padding:10px 20px;border-radius:var(--r-sm);font-family:var(--font-body);font-weight:600;font-size:15px;line-height:1.2;text-decoration:none;border:1.5px solid transparent;transition:transform .15s ease;}
.btn:focus-visible{outline:2px solid var(--ink);outline-offset:3px;}
@media (prefers-reduced-motion:no-preference){ .btn:hover{transform:translateY(-1px);} }
.btn-primary{background:var(--accent);color:var(--accent-ink);}
.btn-ghost{border-color:var(--ink);color:var(--ink);}
.btn-small{min-height:38px;padding:7px 14px;font-size:14px;}

/* top bar */
.topbar{border-bottom:1px solid var(--border);}
.nav{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-block:16px;}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;min-width:0;}
.brand:focus-visible{outline:2px solid var(--ink);outline-offset:4px;border-radius:var(--r-sm);}
.k-symbol{display:block;width:auto;height:32px;flex-shrink:0;}
.brand-name{font-family:var(--font-display);font-weight:600;font-size:20px;}
.brand-by{font-family:var(--font-mono);font-size:11.5px;color:var(--ink-2);white-space:nowrap;}
@media (max-width:560px){ .brand-by{display:none;} }

/* hero */
.hero{position:relative;overflow:hidden;padding-block:64px 80px;}
.hero > .wrap{position:relative;}
/* brand line motif ("Accent corner", brand book p. 12): 4 lines at 52deg running "\\" across the top-right corner, stroke = gap, never behind text */
.motif{position:absolute;top:0;right:0;width:200px;height:200px;pointer-events:none;}
.motif line{stroke:var(--motif);stroke-width:10;}
@media (max-width:1279px){ .motif{display:none;} }
.hero-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:56px;align-items:center;}
@media (max-width:920px){ .hero-grid{grid-template-columns:minmax(0,1fr);gap:44px;} .hero{padding-block:44px 64px;} }
.eyebrow{font-family:var(--font-mono);font-size:12.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);margin:0 0 18px;}
h1{font-family:var(--font-display);font-weight:600;font-size:clamp(36px,4.6vw,48px);line-height:1.17;letter-spacing:-0.01em;margin:0 0 24px;text-wrap:balance;}
.hl{color:var(--mark-ink);background:linear-gradient(var(--mark),var(--mark)) 0 62%/100% 80% no-repeat;padding:0 .08em;-webkit-box-decoration-break:clone;box-decoration-break:clone;}
.lede{font-size:clamp(17px,1.5vw,19px);color:var(--ink-2);max-width:54ch;margin:0 0 30px;}
.actions{display:flex;flex-wrap:wrap;gap:12px;margin:0 0 24px;}
.works{margin:0;font-size:14px;color:var(--ink-2);}
.works strong{color:var(--ink);font-weight:600;}

/* ALM item mock */
.alm{margin:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow);overflow:hidden;}
.alm-head{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:13px 18px;background:var(--bg);border-bottom:1px solid var(--border);}
.alm-id{font-family:var(--font-mono);font-size:13px;color:var(--ink-2);}
.alm-body{padding:18px;}
.req{margin:0 0 16px;font-size:17px;line-height:1.75;}
.req sup{font-family:var(--font-mono);font-size:10.5px;font-weight:600;margin-left:1px;}
.findings{list-style:none;margin:0;padding:0;border-top:1px solid var(--border);}
.finding{display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:12px;align-items:start;padding:12px 0;border-bottom:1px solid var(--border);}
.finding p{margin:0;font-size:14.5px;line-height:1.5;}
.finding .meta{margin-top:4px;font-family:var(--font-mono);font-size:11.5px;color:var(--ink-2);}
.qa{display:flex;gap:6px;}
.qbtn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:var(--r-sm);border:1.5px solid var(--border);background:var(--bg);color:var(--ink-2);font-size:14px;line-height:1;}
.qbtn.ok{border-color:var(--ink);color:var(--ink);}
.alm-note{margin:14px 0 0;font-size:13.5px;color:var(--ink-2);}

/* sections */
.section{padding-block:80px;border-top:1px solid var(--border);}
@media (max-width:700px){ .section{padding-block:56px;} }
.section-head{max-width:760px;margin:0 0 40px;}
h2{font-family:var(--font-display);font-weight:600;font-size:clamp(26px,3vw,36px);line-height:1.22;letter-spacing:-0.005em;margin:0 0 14px;text-wrap:balance;}
.lead{margin:0;font-size:18px;color:var(--ink-2);max-width:62ch;}

/* Tuesday */
.days{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border:1px solid var(--border);border-radius:var(--r-md);overflow:hidden;}
.day{padding:26px 28px 14px;}
.day + .day{border-left:1px solid var(--border);}
.day-before{background:var(--surface);}
@media (max-width:760px){
  .days{grid-template-columns:minmax(0,1fr);}
  .day + .day{border-left:0;border-top:1px solid var(--border);}
  .day{padding:22px 20px 10px;}
}
.day h3{font-family:var(--font-display);font-size:20px;font-weight:600;margin:0 0 12px;}
.day ol{list-style:none;margin:0;padding:0;}
.day li{display:grid;grid-template-columns:52px minmax(0,1fr);gap:12px;padding:12px 0;border-top:1px solid var(--border);font-size:15.5px;}
.day time{font-family:var(--font-mono);font-size:13px;color:var(--ink-2);padding-top:2px;font-variant-numeric:tabular-nums;}
.day-before li span{color:var(--ink-2);}
.yours{display:grid;grid-template-columns:auto minmax(0,1fr);gap:12px 32px;align-items:baseline;margin-top:32px;}
.yours h3{margin:0;font-family:var(--font-mono);font-size:12.5px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);}
.yours ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 32px;}
.yours li{position:relative;padding-left:24px;font-size:15.5px;}
.yours li::before{content:"";position:absolute;left:4px;top:.3em;width:6px;height:11px;border:solid var(--ink);border-width:0 2px 2px 0;transform:rotate(45deg);}
@media (max-width:760px){ .yours{grid-template-columns:minmax(0,1fr);} .yours ul{grid-template-columns:minmax(0,1fr);} }

/* V-model */
.v-figure{margin:0 0 48px;}
.v-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;}
.v-svg{display:block;width:100%;max-width:900px;height:auto;}
@media (max-width:700px){ .v-svg{min-width:640px;} }
.v-figure figcaption{margin-top:14px;font-size:14.5px;color:var(--ink-2);max-width:72ch;}
.v-hint{display:none;margin-top:8px;font-family:var(--font-mono);font-size:12px;color:var(--ink-2);}
@media (max-width:700px){ .v-hint{display:block;} }
.vm-arm-o{fill:none;stroke:var(--ink-2);stroke-width:11;}
.vm-arm-i{fill:none;stroke:var(--bg);stroke-width:4.5;}
.vm-node{fill:var(--mark-strong);}
.vm-code{font-family:var(--font-mono);font-size:15px;font-weight:600;fill:var(--mark-strong-ink);}
.vm-name{font-family:var(--font-body);font-size:12.5px;fill:var(--mark-strong-ink);}
.vm-out{fill:var(--surface);stroke:var(--border);stroke-width:1.5;}
.vm-out-t{font-family:var(--font-mono);font-size:13px;fill:var(--ink-2);}
.vm-out-s{font-family:var(--font-body);font-size:12px;fill:var(--ink-2);}
.vm-arrow{fill:none;stroke:var(--ink);stroke-width:1.75;}
.vm-head{fill:var(--ink);}
.vm-gate{fill:var(--bg);stroke:var(--ink);stroke-width:1.75;}
.vm-check{fill:none;stroke:var(--ink);stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
.vm-lbl{font-family:var(--font-body);font-size:12.5px;font-weight:600;fill:var(--ink);}
.vm-sub{font-family:var(--font-body);font-size:12px;fill:var(--ink-2);}
.cover{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:28px;}
@media (max-width:980px){ .cover{grid-template-columns:repeat(2,minmax(0,1fr));} }
@media (max-width:560px){ .cover{grid-template-columns:minmax(0,1fr);} }
.cover-item{border-top:2px solid var(--rule);padding-top:16px;}
.cover-code{display:inline-block;font-family:var(--font-mono);font-size:12.5px;font-weight:600;letter-spacing:.03em;padding:2px 7px;border-radius:var(--r-sm);background:var(--mark-strong);color:var(--mark-strong-ink);}
.cover-item h3{font-family:var(--font-display);font-size:19px;font-weight:600;line-height:1.25;margin:12px 0 8px;}
.cover-item p{margin:0;font-size:15px;color:var(--ink-2);}

/* one requirement, step by step */
.steps{list-style:none;margin:0;padding:0;}
.step{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:48px;align-items:start;padding-block:36px;border-top:1px solid var(--border);}
.step:first-child{border-top:0;padding-top:0;}
.step:last-child{padding-bottom:0;}
@media (max-width:900px){ .step{grid-template-columns:minmax(0,1fr);gap:20px;} }
.step-num{margin:0 0 10px;font-family:var(--font-mono);font-size:12.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2);}
.step-text h3{font-family:var(--font-display);font-size:24px;font-weight:600;line-height:1.33;margin:0 0 10px;}
.step-text p:last-child{margin:0;color:var(--ink-2);max-width:52ch;}
.panel{margin:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:16px 20px 18px;}
.panel-head{display:flex;justify-content:space-between;align-items:center;gap:12px;padding-bottom:12px;border-bottom:1px solid var(--border);font-family:var(--font-mono);font-size:12.5px;color:var(--ink-2);}
.dec, .thread, .tcs{list-style:none;margin:0;padding:0;}
.dec li{display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:12px;align-items:start;padding:12px 0;border-bottom:1px solid var(--border);font-size:15px;}
.dec .why{display:block;margin-top:4px;font-size:13.5px;color:var(--ink-2);}
@media (max-width:520px){ .dec li{grid-template-columns:22px minmax(0,1fr);gap:6px 12px;} .dec .chip{grid-column:2;justify-self:start;} }
.val{font-family:var(--font-mono);font-size:13.5px;font-weight:600;padding:0 6px;border:1.5px solid var(--ink);border-radius:var(--r-sm);background:var(--bg);}
.result{margin:14px 0 0;padding:12px 14px;background:var(--bg);border:1px dashed var(--border);border-radius:var(--r-md);font-size:15px;}
.result .lbl{display:block;margin-bottom:4px;font-family:var(--font-mono);font-size:11.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-2);}
.thread li{display:grid;grid-template-columns:auto minmax(0,1fr);gap:2px 12px;align-items:baseline;padding:12px 0;border-bottom:1px solid var(--border);}
.thread li:last-child{border-bottom:0;padding-bottom:0;}
.who{font-family:var(--font-mono);font-size:12.5px;font-weight:600;}
.who-you{padding:0 6px;border:1.5px solid var(--ink);border-radius:var(--r-sm);}
.when{font-family:var(--font-mono);font-size:12px;color:var(--ink-2);font-variant-numeric:tabular-nums;}
.thread p{grid-column:1 / -1;margin:4px 0 0;font-size:14.5px;}
.tcs li{display:grid;grid-template-columns:96px minmax(0,1fr) auto;gap:12px;align-items:start;padding:12px 0;border-bottom:1px solid var(--border);font-size:15px;}
.tc-id{padding-top:2px;font-family:var(--font-mono);font-size:12.5px;color:var(--ink-2);}
@media (max-width:480px){ .tcs li{grid-template-columns:minmax(0,1fr) auto;gap:4px 12px;} .tc-id{grid-column:1 / -1;} }
.panel-foot{margin:12px 0 0;font-size:13.5px;color:var(--ink-2);}

/* decomposition SYS.1 -> SYS.2 */
.decomp{display:grid;grid-template-columns:minmax(0,.9fr) auto minmax(0,1.5fr);gap:20px;align-items:center;}
.src-text{margin:14px 0 0;font-size:16.5px;line-height:1.6;}
.flow{display:flex;flex-direction:column;align-items:center;gap:6px;max-width:110px;font-family:var(--font-mono);font-size:12px;line-height:1.4;color:var(--ink-2);text-align:center;}
.flow-arrow::before{content:"→";font-family:var(--font-body);font-size:26px;line-height:1;color:var(--ink);}
@media (max-width:900px){
  .decomp{grid-template-columns:minmax(0,1fr);gap:12px;}
  .flow{flex-direction:row;max-width:none;padding-left:12px;text-align:left;}
  .flow-arrow::before{content:"↓";}
}
.ph{font-family:var(--font-mono);font-size:.9em;font-weight:600;padding:0 .25em;border-radius:3px;background:var(--mark);color:var(--mark-ink);white-space:nowrap;}
.reqs li{grid-template-columns:108px minmax(0,1fr) auto;}
@media (max-width:480px){ .reqs li{grid-template-columns:minmax(0,1fr) auto;} }

/* for managers */
.mgr{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.4fr);gap:48px;align-items:start;}
@media (max-width:900px){ .mgr{grid-template-columns:minmax(0,1fr);gap:32px;} }
.targets{display:grid;gap:16px;}
.target{padding:20px 22px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);}
.target .tag{display:inline-block;padding:2px 7px;border:1.5px solid var(--ink);border-radius:var(--r-sm);font-family:var(--font-mono);font-size:11.5px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--ink);}
.target p{margin:0;font-size:15px;color:var(--ink-2);}
.target .num{margin:12px 0 6px;font-family:var(--font-display);font-weight:600;font-size:clamp(40px,5vw,48px);line-height:1.1;color:var(--ink);font-variant-numeric:tabular-nums;}
.levers{list-style:none;margin:0;padding:0;}
.levers li{padding:16px 0;border-top:1px solid var(--border);}
.levers li:first-child{padding-top:0;border-top:0;}
.levers h3{margin:0 0 4px;font-family:var(--font-body);font-size:17px;font-weight:600;line-height:1.35;}
.levers p{margin:0;font-size:15.5px;color:var(--ink-2);}
.measure{margin:36px 0 0;padding:16px 20px;border:1px dashed var(--border);border-radius:var(--r-md);font-size:15px;color:var(--ink-2);}
.measure strong{color:var(--ink);}

/* first week */
.week{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px;}
@media (max-width:800px){ .week{grid-template-columns:minmax(0,1fr);gap:24px;} }
.wk{border-top:2px solid var(--rule);padding-top:14px;}
.wk-when{margin:0 0 8px;font-family:var(--font-mono);font-size:13px;font-weight:600;letter-spacing:.04em;}
.wk-what{margin:0;font-size:15.5px;color:var(--ink-2);}

/* FAQ */
.faq{max-width:840px;border-top:1px solid var(--border);}
.faq details{border-bottom:1px solid var(--border);}
.faq summary{display:flex;justify-content:space-between;align-items:baseline;gap:20px;padding:18px 0;cursor:pointer;list-style:none;font-weight:600;font-size:17px;}
.faq summary::-webkit-details-marker{display:none;}
.faq summary::after{content:"+";flex-shrink:0;font-family:var(--font-mono);font-size:20px;line-height:1;color:var(--ink-2);}
.faq details[open] summary::after{content:"−";}
.faq summary:focus-visible{outline:2px solid var(--ink);outline-offset:4px;border-radius:2px;}
.faq details p{margin:0 0 20px;color:var(--ink-2);max-width:68ch;}

/* footer */
.footer{border-top:1px solid var(--border);padding-block:72px 44px;}
.footer-cta{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:28px 48px;align-items:end;padding-bottom:44px;border-bottom:1px solid var(--border);}
@media (max-width:760px){ .footer-cta{grid-template-columns:minmax(0,1fr);} }
.footer-cta p{margin:0;color:var(--ink-2);max-width:56ch;}
.footer-actions{display:grid;gap:10px;justify-items:start;}
.footer-actions .mail{margin:0;font-family:var(--font-mono);font-size:13px;color:var(--ink-2);user-select:all;}
.company{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:20px 40px;align-items:start;padding-top:28px;font-size:13px;color:var(--ink-2);}
@media (max-width:860px){ .company{grid-template-columns:minmax(0,1fr);} }
.company p{margin:0 0 4px;}
.company a{color:var(--ink-2);}
.k-lockup{display:inline-block;padding:9px 0;}
.ke-logo{display:block;width:176px;height:auto;}
.ke-logo-dark{display:none;}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]) .ke-logo-light{display:none;} :root:not([data-theme="light"]) .ke-logo-dark{display:block;} }
:root[data-theme="dark"] .ke-logo-light{display:none;} :root[data-theme="dark"] .ke-logo-dark{display:block;}

/* site additions */
.nav-right{display:flex;align-items:center;gap:14px;}
.lang{font-family:var(--font-mono);font-size:13px;font-weight:600;color:var(--ink-2);text-decoration:none;padding:6px 4px;}
.lang:hover{color:var(--ink);}
.lang:focus-visible{outline:2px solid var(--ink);outline-offset:3px;border-radius:2px;}
.legal-links{margin-top:10px !important;}
.legal-links a,.linklike{color:var(--ink-2);}
.legal a,.company a:hover,.cc p a{color:var(--link);}
.linklike{font:inherit;background:none;border:0;padding:0;text-decoration:underline;cursor:pointer;}
/* legal pages */
.legal{max-width:760px;padding-block:48px 72px;}
.legal h1{font-size:clamp(30px,4vw,42px);margin-bottom:8px;}
.legal h2{font-size:22px;margin:36px 0 10px;}
.legal p,.legal li{color:var(--ink-2);}
.legal .updated{font-family:var(--font-mono);font-size:12.5px;color:var(--ink-2);}
/* cookie banner */
.cc{position:fixed;left:16px;right:16px;bottom:calc(16px + env(safe-area-inset-bottom,0px));z-index:50;max-width:560px;margin-inline:auto;background:var(--bg);color:var(--ink);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow);padding:18px 20px;}
.cc p{margin:0 0 14px;font-size:14.5px;color:var(--ink-2);}
.cc p a{color:var(--ink);}
.cc-actions{display:flex;flex-wrap:wrap;gap:10px;}
button.btn-ghost{background:transparent;cursor:pointer;} button.btn-primary{cursor:pointer;}
