  :root{
    --paper:#1A1A1A;
    --card:#252525;
    --ink:#E0E0E0;
    --ink-soft:#A0A0A0;
    --accent-red:#FF6B6B;
    --accent-gold:#D4A017;
    --line:#404040;
    --text:#F0F0F0;
    --text-muted:#B0B0B0;
    --ok:#66BB6A;
  }
  *{box-sizing:border-box;}
  html,body{margin:0;padding:0;}
  body{
    background:var(--paper);
    color:var(--text);
    font-family:'IBM Plex Sans', sans-serif;
    line-height:1.6;
    padding:0 0 80px;
  }
  a{
    color:var(--accent-gold);
    text-decoration:none;
    transition:color 0.2s;
  }
  a:hover{
    color:var(--ink);
    text-decoration:underline;
  }

  header.top{
    max-width:800px;
    margin:0 auto;
    padding:56px 24px 28px;
  }
  .top-nav {
    display: flex;
    justify-content: flex-end;
    gap: 16px;
    margin-bottom: 20px;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
  }
  .top-nav a {
    color: var(--text-muted);
    text-decoration: none;
    transition: color 0.2s;
  }
  .top-nav a:hover {
    color: var(--accent-gold);
  }
  .eyebrow{
    font-family:'IBM Plex Mono', monospace;
    text-transform:uppercase;
    letter-spacing:.12em;
    font-size:.72rem;
    color:var(--accent-gold);
    margin:0 0 10px;
  }
  h1{
    font-family:'Fraunces', serif;
    font-weight:600;
    font-size:2.5rem;
    margin:0 0 10px;
    color:var(--ink);
    letter-spacing:-.01em;
  }
  h2{
    font-family:'Fraunces', serif;
    font-size:1.6rem;
    font-weight:500;
    color:var(--ink);
    margin:40px 0 16px;
    border-bottom:1px solid var(--line);
    padding-bottom:8px;
  }
  h3{
    font-family:'IBM Plex Sans', sans-serif;
    font-size:1.15rem;
    font-weight:600;
    color:var(--accent-gold);
    margin:24px 0 12px;
  }

  main.content{
    max-width:800px;
    margin:0 auto;
    padding:0 24px;
  }

  p{
    color:var(--text);
    margin:0 0 16px;
  }

  ul, ol{
    margin:0 0 24px;
    padding-left:24px;
    color:var(--text);
  }
  li{
    margin-bottom:8px;
  }

  blockquote {
    border-left:3px solid var(--accent-gold);
    background:var(--card);
    margin:24px 0;
    padding:16px 20px;
    font-style:italic;
    color:var(--text-muted);
    border-radius:2px;
  }

  td.code {
    font-family:'IBM Plex Mono', monospace;
    color:var(--accent-red);
  }

  .btn-back {
    display:inline-block;
    font-family:'IBM Plex Sans', sans-serif;
    background:var(--card);
    border:1px solid var(--line);
    color:var(--ink);
    padding:10px 20px;
    border-radius:3px;
    font-size:.88rem;
    font-weight:500;
    margin-bottom:20px;
  }
  .btn-back:hover {
    background:rgba(255,255,255,0.05);
    border-color:var(--ink-soft);
  }
  .thema-search{
    width:100%;
    background:var(--card);
    border:1px solid var(--line);
    color:var(--text);
    font-family:'IBM Plex Sans', sans-serif;
    font-size:1rem;
    padding:12px 16px;
    border-radius:4px;
    margin:8px 0 28px;
  }
  .thema-search::placeholder{ color:var(--ink-soft); }
  .thema-search:focus{
    outline:2px solid var(--accent-gold);
    outline-offset:1px;
    border-color:var(--accent-gold);
  }
  .thema-empty{
    display:none;
    color:var(--text-muted);
    font-style:italic;
    margin:12px 0 24px;
  }
  .thema-tree{
    border:1px solid var(--line);
    border-radius:6px;
    overflow:hidden;
    margin:0 0 32px;
  }
  details.cat{
    border-bottom:1px solid var(--line);
    background:var(--card);
  }
  details.cat:last-child{ border-bottom:none; }
  details.cat[open] > summary{
    background:rgba(212,160,23,0.08);
  }
  details.cat > summary{
    list-style:none;
    cursor:pointer;
    padding:14px 18px;
    display:flex;
    align-items:baseline;
    gap:12px;
    font-weight:500;
    color:var(--ink);
  }
  details.cat > summary::-webkit-details-marker{ display:none; }
  details.cat > summary::before{
    content:"▸";
    color:var(--accent-gold);
    font-size:.8rem;
    transition:transform 0.15s;
    flex-shrink:0;
    width:10px;
  }
  details.cat[open] > summary::before{
    transform:rotate(90deg);
  }
  .cat-code{
    font-family:'IBM Plex Mono', monospace;
    color:var(--accent-red);
    font-size:.85rem;
    flex-shrink:0;
  }
  .cat-heading{ flex:1; }
  .cat-note{
    font-size:.78rem;
    color:var(--text-muted);
    font-weight:400;
  }
  .cat-body{
    padding:4px 18px 18px 44px;
  }
  .cat-desc{
    color:var(--text-muted);
    font-size:.9rem;
    margin:0 0 14px;
  }
  .subcat-list{
    list-style:none;
    margin:0;
    padding:0;
  }
  .subcat-list li{
    display:flex;
    gap:12px;
    align-items:baseline;
    padding:7px 0;
    border-top:1px dashed var(--line);
    margin:0;
  }
  .subcat-list li:first-child{ border-top:none; }
  .subcat-code{
    font-family:'IBM Plex Mono', monospace;
    color:var(--accent-red);
    font-size:.82rem;
    min-width:52px;
    flex-shrink:0;
  }
  .subcat-label{
    color:var(--text);
    font-size:.92rem;
  }
  .used-tag{
    display:inline-block;
    font-family:'IBM Plex Mono', monospace;
    font-size:.65rem;
    text-transform:uppercase;
    letter-spacing:.05em;
    color:var(--ok);
    border:1px solid var(--ok);
    border-radius:3px;
    padding:1px 6px;
    margin-left:8px;
  }
  .more-link{
    display:block;
    margin-top:12px;
    font-size:.85rem;
  }

  .source-note{
    background:var(--card);
    border:1px solid var(--line);
    border-radius:4px;
    padding:16px 20px;
    font-size:.85rem;
    color:var(--text-muted);
    margin:32px 0;
  }
  .source-note strong{ color:var(--ink); }

footer.note {
    max-width: 800px;
    margin: 64px auto 0;
    padding: 24px;
    border-top: 1px solid var(--line);
    text-align: center;
    font-size: 0.85rem;
    color: var(--text-muted);
  }
  footer.note div {
    margin-bottom: 8px;
  }
  footer.note div:last-of-type {
    margin-bottom: 0;
  }
  footer.note .footer-links {
    margin-top: 12px;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.8rem;
  }
  footer.note .footer-links a {
    color: var(--text-muted);
    text-decoration: none;
    transition: color 0.2s;
  }
  footer.note .footer-links a:hover {
    color: var(--accent-gold);
  }