/* IBM Plex – SIL Open Font License, siehe LICENSE-IBM-Plex-OFL.txt */
@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:400;font-display:swap;src:url(fonts/ibm-plex-sans-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"IBM Plex Sans";font-style:italic;font-weight:400;font-display:swap;src:url(fonts/ibm-plex-sans-latin-400-italic.woff2) format("woff2")}
@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:500;font-display:swap;src:url(fonts/ibm-plex-sans-latin-500-normal.woff2) format("woff2")}
@font-face{font-family:"IBM Plex Sans Condensed";font-style:normal;font-weight:500;font-display:swap;src:url(fonts/ibm-plex-sans-condensed-latin-500-normal.woff2) format("woff2")}
@font-face{font-family:"IBM Plex Sans Condensed";font-style:normal;font-weight:600;font-display:swap;src:url(fonts/ibm-plex-sans-condensed-latin-600-normal.woff2) format("woff2")}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:400;font-display:swap;src:url(fonts/ibm-plex-mono-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:500;font-display:swap;src:url(fonts/ibm-plex-mono-latin-500-normal.woff2) format("woff2")}

:root{
  --bg:#f7f8fa; --paper:#ffffff; --ink:#1c2230; --ink2:#4d5563; --ink3:#7b8494;
  --line:#d9dee6; --line2:#e9edf2;
  --acc:#2f63a8; --acc-soft:#e3ecf8;
  --warm:#b7791f; --warm-soft:#fbf1dc;
  --bad:#a63d3d; --bad-soft:#f8e4e4;
  --folder:#5a8fd6;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#15181e; --paper:#1d2129; --ink:#e8ebf0; --ink2:#b3bac6; --ink3:#7f8899;
    --line:#333a46; --line2:#282e39;
    --acc:#7fa9e6; --acc-soft:#22314a;
    --warm:#e0b05a; --warm-soft:#3a2f18;
    --bad:#e08a8a; --bad-soft:#3d2424;
    --folder:#6f9fdf;
  }
}
:root[data-theme="dark"]{
  --bg:#15181e; --paper:#1d2129; --ink:#e8ebf0; --ink2:#b3bac6; --ink3:#7f8899;
  --line:#333a46; --line2:#282e39;
  --acc:#7fa9e6; --acc-soft:#22314a;
  --warm:#e0b05a; --warm-soft:#3a2f18;
  --bad:#e08a8a; --bad-soft:#3d2424;
  --folder:#6f9fdf;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.55 "IBM Plex Sans",system-ui,-apple-system,"Helvetica Neue",Arial,sans-serif;-webkit-font-smoothing:antialiased}
main{max-width:1040px;margin:0 auto;padding:48px 28px 80px}
h1,h2,h3{font-family:"IBM Plex Sans Condensed","Arial Narrow",system-ui,sans-serif;font-weight:600;line-height:1.15;text-wrap:balance;margin:0}
h1{font-size:40px;letter-spacing:-.01em}
h2{font-size:26px;margin:0 0 6px}
h3{font-size:18px}
p{margin:0 0 12px;max-width:68ch}
.eyebrow{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink3);font-weight:500;margin-bottom:10px}
.lead{font-size:18px;color:var(--ink2);max-width:62ch;margin-top:14px}
section{margin-top:56px}
.sub{color:var(--ink2);margin-bottom:22px;max-width:68ch}
code,.path{font-family:"IBM Plex Mono",ui-monospace,Menlo,monospace;font-size:.92em}
code{background:var(--line2);padding:1px 5px;border-radius:3px}

/* model grid */
.models{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
@media(max-width:820px){.models{grid-template-columns:1fr}}
.model{background:var(--paper);border:1px solid var(--line);border-radius:6px;padding:20px 20px 18px;display:flex;flex-direction:column;gap:14px;position:relative}
.model.rec{border-color:var(--acc);box-shadow:0 0 0 3px var(--acc-soft)}
.tag{position:absolute;top:-11px;left:16px;background:var(--acc);color:#fff;font-size:11px;letter-spacing:.1em;text-transform:uppercase;font-weight:500;padding:3px 9px;border-radius:3px}
.model h3{display:flex;align-items:baseline;gap:8px}
.model .letter{font-family:"IBM Plex Mono",monospace;color:var(--ink3);font-size:14px}
.model .fit{font-size:13px;color:var(--ink2)}
.pro,.con{font-size:14px;margin:0;padding-left:0;list-style:none}
.pro li,.con li{padding-left:18px;position:relative;margin-bottom:4px}
.pro li::before{content:"+";position:absolute;left:2px;color:var(--acc);font-weight:600}
.con li::before{content:"–";position:absolute;left:2px;color:var(--bad);font-weight:600}
.lbl{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink3);margin-bottom:4px;font-weight:500}

/* tree */
.tree{font-family:"IBM Plex Mono",ui-monospace,Menlo,monospace;font-size:13px;line-height:1.7;list-style:none;margin:0;padding:0}
.tree ul{list-style:none;margin:0;padding-left:18px;border-left:1px solid var(--line);margin-left:7px}
.tree li{position:relative;white-space:nowrap}
.tree li.f::before{content:"";display:inline-block;width:13px;height:10px;background:var(--folder);border-radius:2px 2px 1px 1px;margin-right:7px;vertical-align:-1px;opacity:.85}
.tree li.d::before{content:"";display:inline-block;width:10px;height:12px;border:1.5px solid var(--ink3);border-radius:1px;margin-right:9px;margin-left:1px;vertical-align:-2px;opacity:.8}
.tree .n{color:var(--ink3)}
.tree .hl{background:var(--acc-soft);border-radius:3px;padding:0 4px}
.tree .warm{color:var(--warm)}
.tree .cm{color:var(--ink3);font-family:"IBM Plex Sans",sans-serif;font-size:12px;margin-left:12px;white-space:normal}
.small-tree{background:var(--bg);border-radius:4px;padding:10px 12px;overflow-x:auto}

/* full tree layout */
.full{background:var(--paper);border:1px solid var(--line);border-radius:6px;padding:26px 28px;overflow-x:auto}
.full .tree{font-size:13.5px}
.levels{display:grid;grid-template-columns:repeat(4,1fr);gap:0;margin:18px 0 26px;border:1px solid var(--line);border-radius:6px;overflow:hidden}
.levels div{padding:12px 14px;border-right:1px solid var(--line);background:var(--paper)}
.levels div:last-child{border-right:0}
.levels b{display:block;font-family:"IBM Plex Sans Condensed",sans-serif;font-size:15px;font-weight:600}
.levels span{font-size:13px;color:var(--ink2)}
.levels em{font-style:normal;font-family:"IBM Plex Mono",monospace;font-size:12px;color:var(--acc);display:block;margin-top:4px}
@media(max-width:820px){.levels{grid-template-columns:1fr 1fr}.levels div{border-bottom:1px solid var(--line)}}

/* rules table */
table{border-collapse:collapse;width:100%;font-size:14.5px;background:var(--paper);border:1px solid var(--line);border-radius:6px;overflow:hidden}
th,td{text-align:left;padding:10px 14px;border-bottom:1px solid var(--line2);vertical-align:top}
th{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink3);font-weight:500;background:var(--bg)}
tr:last-child td{border-bottom:0}
td .path{font-size:13px}
.no{color:var(--bad);text-decoration:line-through;text-decoration-thickness:1px}
.yes{color:var(--acc)}
.twrap{overflow-x:auto}

/* callouts */
.gaps{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:820px){.gaps{grid-template-columns:1fr}}
.gap{border-left:3px solid var(--warm);padding:4px 0 4px 16px}
.gap h3{font-size:16px;margin-bottom:4px}
.gap p{font-size:14.5px;color:var(--ink2);margin:0}
.foot{margin-top:56px;padding-top:18px;border-top:1px solid var(--line);font-size:13px;color:var(--ink3)}
