@charset "UTF-8";
/* =====================================================
   EDV-Janssen • Icon Set (Data-URI SVG) — v2 (case-insensitive)
   - Für Apache AutoIndex (#autoindex a) und Demo/Legende (.demo a)
   - Dateiendungen matchen per [ i ] unabhängig von Groß/Kleinschreibung
   ===================================================== */

/* Basis: Links mit Icon-Einzug links */
#autoindex a, .demo a{
  position:relative; padding-left:26px; display:inline-block;
  color:#0b4a8b; text-decoration:none; font-weight:600;
}
#autoindex a:hover, .demo a:hover{ text-decoration:underline; }
#autoindex a::before, .demo a::before{
  content:""; position:absolute; left:0; top:50%;
  width:18px; height:18px; transform:translateY(-50%);
  background-size:18px 18px; background-repeat:no-repeat; opacity:.95;
}

/* ===== SVG-Variablen (Data-URI) =================================== */
:root{
  /* Ordner */
  --ico-folder:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='%23E7A73A' d='M10 4H4a2 2 0 0 0-2 2v2h20V8a2 2 0 0 0-2-2h-8l-2-2Z'/><path fill='%23F2C16A' d='M22 9H2v9a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9Z'/><path fill='none' stroke='%230B3A77' stroke-width='1' d='M2 8h9l2-2h7a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2z'/></svg>");
  /* Generische Datei */
  --ico-file:  url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='%23ffffff' stroke='%230B3A77' stroke-width='1' d='M6 2h8l4 4v16H6z'/><path fill='%23D8E6F8' d='M14 2v4h4z'/></svg>");
  /* Archiv */
  --ico-arc:   url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><rect x='4' y='2' width='16' height='20' rx='2' ry='2' fill='%23fff' stroke='%230B3A77' stroke-width='1'/><path fill='%23E28C2D' d='M10 4h4v2h-4V4zm0 4h4v2h-4V8zm0 4h4v2h-4v-2zm0 4h4v2h-4v-2z'/></svg>");
  /* HTML */
  --ico-html:  url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='%23fff' stroke='%230B3A77' stroke-width='1' d='M6 2h8l4 4v16H6z'/><path fill='%231F64B5' d='M8.5 13 6 12l2.5-1 .5 1-.5 1zm7 0 2.5-1L15.5 11l-.5 1 .5 1zM10 15.5h4V17h-4z'/><path fill='%23D8E6F8' d='M14 2v4h4z'/></svg>");
  /* PDF */
  --ico-pdf:   url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='%23fff' stroke='%230B3A77' stroke-width='1' d='M6 2h8l4 4v16H6z'/><path fill='%23C62828' d='M9 16h6v2H9zm0-6h3a2 2 0 0 1 0 4H9v-4zm6 0h1v6h-1z'/><path fill='%23D8E6F8' d='M14 2v4h4z'/></svg>");
  /* Bild */
  --ico-img:   url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><rect x='3' y='4' width='18' height='14' rx='2' ry='2' fill='%23ffffff' stroke='%230B3A77' stroke-width='1'/><circle cx='9' cy='10' r='2' fill='%231F64B5'/><path fill='%238DB3E2' d='M5 16l4-4 3 3 2-2 5 5H5z'/></svg>");
  /* Audio */
  --ico-aud:   url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='%23fff' stroke='%230B3A77' stroke-width='1' d='M6 3h8l4 4v14H6z'/><path fill='%231F64B5' d='M13 8v6.2a2.5 2.5 0 1 1-1-2V9h3V8h-2z'/><path fill='%23D8E6F8' d='M14 3v4h4z'/></svg>");
  /* Video */
  --ico-vid:   url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><rect x='3' y='5' width='18' height='12' rx='2' ry='2' fill='%23fff' stroke='%230B3A77' stroke-width='1'/><path d='M10 9l5 3-5 3z' fill='%231F64B5'/></svg>");
  /* Executable/Installer */
  --ico-exe:   url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='%23fff' stroke='%230B3A77' stroke-width='1' d='M6 2h8l4 4v16H6z'/><path fill='%23F2C16A' d='M8 15h8v2H8zM8 12h8v2H8z'/><path fill='%23D8E6F8' d='M14 2v4h4z'/></svg>");
  /* Text/Log */
  --ico-txt:   url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='%23ffffff' stroke='%230B3A77' stroke-width='1' d='M6 2h8l4 4v16H6z'/><path fill='%238DB3E2' d='M8 10h8v1H8zm0 3h8v1H8zm0 3h6v1H8z'/><path fill='%23D8E6F8' d='M14 2v4h4z'/></svg>");
  /* ISO/IMG/Disc */
  --ico-iso:   url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><circle cx='12' cy='12' r='9' fill='%23ffffff' stroke='%230B3A77' stroke-width='1'/><circle cx='12' cy='12' r='3' fill='%238DB3E2'/></svg>");
  /* Code/Config */
  --ico-code:  url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='%23fff' stroke='%230B3A77' stroke-width='1' d='M6 2h8l4 4v16H6z'/><path fill='%231F64B5' d='M8 12l3-2v1l-2 1 2 1v1l-3-2zm8 0l-3 2v-1l2-1-2-1v-1l3 2z'/><path fill='%23D8E6F8' d='M14 2v4h4z'/></svg>");
  /* Tabellen */
  --ico-xls:   url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='%23fff' stroke='%230B3A77' stroke-width='1' d='M6 2h8l4 4v16H6z'/><path fill='%233BA776' d='M8 10h8v1H8zm0 3h8v1H8zm0 3h8v1H8z'/><path fill='%23D8E6F8' d='M14 2v4h4z'/></svg>");
  /* Präsentation */
  --ico-ppt:   url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='%23fff' stroke='%230B3A77' stroke-width='1' d='M6 2h8l4 4v16H6z'/><circle cx='12' cy='13' r='3' fill='%23E28C2D'/><path fill='%23D8E6F8' d='M14 2v4h4z'/></svg>");
  /* Zertifikat */
  --ico-cert:  url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M5 3h14v14H5z' fill='%23fff' stroke='%230B3A77' stroke-width='1'/><path d='M8 7h8v2H8zM8 10h5v2H8z' fill='%231F64B5'/><circle cx='14.5' cy='13.5' r='2' fill='%23E28C2D'/></svg>");
  /* Fonts */
  --ico-font:  url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='%23fff' stroke='%230B3A77' stroke-width='1' d='M4 3h16v18H4z'/><path d='M8 16h2l1-3h4l1 3h2L14 6h-4l-2 10zm4-8 1.6 5H10.4L12 8z' fill='%231F64B5'/></svg>");
  /* Torrent */
  --ico-tor:   url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><circle cx='12' cy='12' r='9' fill='%23fff' stroke='%230B3A77' stroke-width='1'/><path d='M12 7v10M7 12h10' stroke='%231F64B5' stroke-width='2'/></svg>");
}

/* ===== Defaults =================================================== */
#autoindex a::before, .demo a.file::before{ background-image:var(--ico-file); }
/* Ordner (Links, die auf / enden) */
#autoindex a[href$='/' i]::before, .demo a.folder::before{ background-image:var(--ico-folder); }

/* ===== Archive ==================================================== */
#autoindex a[href$=".zip" i]::before,
#autoindex a[href$=".rar" i]::before,
#autoindex a[href$=".7z" i]::before,
#autoindex a[href$=".tar" i]::before,
#autoindex a[href$=".tgz" i]::before,
#autoindex a[href$=".tbz" i]::before,
#autoindex a[href$=".txz" i]::before,
#autoindex a[href$=".lzma" i]::before,
#autoindex a[href$=".cab" i]::before{ background-image:var(--ico-arc); }
.demo a.arc::before{ background-image:var(--ico-arc); }

/* ===== Disk Images / VM =========================================== */
#autoindex a[href$=".iso" i]::before,
#autoindex a[href$=".img" i]::before,
#autoindex a[href$=".vdi" i]::before,
#autoindex a[href$=".vmdk" i]::before,
#autoindex a[href$=".vhd" i]::before,
#autoindex a[href$=".vhdx" i]::before,
#autoindex a[href$=".qcow2" i]::before,
#autoindex a[href$=".ova" i]::before,
#autoindex a[href$=".ovf" i]::before{ background-image:var(--ico-iso); }
.demo a.iso::before{ background-image:var(--ico-iso); }

/* ===== Bilder ===================================================== */
#autoindex a[href$=".png" i]::before,
#autoindex a[href$=".jpg" i]::before,
#autoindex a[href$=".jpeg" i]::before,
#autoindex a[href$=".webp" i]::before,
#autoindex a[href$=".gif" i]::before,
#autoindex a[href$=".bmp" i]::before,
#autoindex a[href$=".tif" i]::before,
#autoindex a[href$=".tiff" i]::before,
#autoindex a[href$=".svg" i]::before,
#autoindex a[href$=".ico" i]::before{ background-image:var(--ico-img); }
.demo a.img::before{ background-image:var(--ico-img); }

/* ===== Audio ====================================================== */
#autoindex a[href$=".mp3" i]::before,
#autoindex a[href$=".flac" i]::before,
#autoindex a[href$=".wav" i]::before,
#autoindex a[href$=".ogg" i]::before,
#autoindex a[href$=".m4a" i]::before,
#autoindex a[href$=".aac" i]::before,
#autoindex a[href$=".mid" i]::before,
#autoindex a[href$=".mod" i]::before,
#autoindex a[href$=".xm" i]::before{ background-image:var(--ico-aud); }
.demo a.audio::before{ background-image:var(--ico-aud); }

/* ===== Video ====================================================== */
#autoindex a[href$=".mp4" i]::before,
#autoindex a[href$=".mkv" i]::before,
#autoindex a[href$=".webm" i]::before,
#autoindex a[href$=".avi" i]::before,
#autoindex a[href$=".mov" i]::before,
#autoindex a[href$=".wmv" i]::before,
#autoindex a[href$=".mpg" i]::before,
#autoindex a[href$=".mpeg" i]::before,
#autoindex a[href$=".m4v" i]::before,
#autoindex a[href$=".flv" i]::before{ background-image:var(--ico-vid); }

/* ===== Dokumente ================================================== */
#autoindex a[href$=".pdf" i]::before{ background-image:var(--ico-pdf); }
.demo a.pdf::before{ background-image:var(--ico-pdf); }

#autoindex a[href$=".doc" i]::before,
#autoindex a[href$=".docx" i]::before,
#autoindex a[href$=".rtf" i]::before,
#autoindex a[href$=".odt" i]::before{ background-image:var(--ico-file); }

#autoindex a[href$=".xls" i]::before,
#autoindex a[href$=".xlsx" i]::before,
#autoindex a[href$=".ods" i]::before,
#autoindex a[href$=".csv" i]::before{ background-image:var(--ico-xls); }

#autoindex a[href$=".ppt" i]::before,
#autoindex a[href$=".pptx" i]::before,
#autoindex a[href$=".odp" i]::before{ background-image:var(--ico-ppt); }

#autoindex a[href$=".txt" i]::before,
#autoindex a[href$=".log" i]::before,
#autoindex a[href$=".md" i]::before,
#autoindex a[href$=".rst" i]::before{ background-image:var(--ico-txt); }
.demo a.txt::before{ background-image:var(--ico-txt); }

#autoindex a[href$=".html" i]::before,
#autoindex a[href$=".htm" i]::before{ background-image:var(--ico-html); }
.demo a.html::before{ background-image:var(--ico-html); }

#autoindex a[href$=".xml" i]::before,
#autoindex a[href$=".json" i]::before,
#autoindex a[href$=".yml" i]::before,
#autoindex a[href$=".yaml" i]::before,
#autoindex a[href$=".ini" i]::before,
#autoindex a[href$=".cfg" i]::before,
#autoindex a[href$=".conf" i]::before,
#autoindex a[href$=".properties" i]::before{ background-image:var(--ico-code); }

/* ===== Code / Skripte ============================================= */
#autoindex a[href$=".js" i]::before,
#autoindex a[href$=".ts" i]::before,
#autoindex a[href$=".css" i]::before,
#autoindex a[href$=".scss" i]::before,
#autoindex a[href$=".less" i]::before,
#autoindex a[href$=".py" i]::before,
#autoindex a[href$=".rb" i]::before,
#autoindex a[href$=".php" i]::before,
#autoindex a[href$=".go" i]::before,
#autoindex a[href$=".rs" i]::before,
#autoindex a[href$=".java" i]::before,
#autoindex a[href$=".class" i]::before,
#autoindex a[href$=".c" i]::before,
#autoindex a[href$=".cpp" i]::before,
#autoindex a[href$=".h" i]::before,
#autoindex a[href$=".hpp" i]::before,
#autoindex a[href$=".cs" i]::before,
#autoindex a[href$=".lua" i]::before,
#autoindex a[href$=".sql" i]::before{ background-image:var(--ico-code); }
.demo a.xml::before, .demo a.json::before{ background-image:var(--ico-code); }

/* ===== Exe / Installer / System =================================== */
#autoindex a[href$=".exe" i]::before,
#autoindex a[href$=".msi" i]::before,
#autoindex a[href$=".bat" i]::before,
#autoindex a[href$=".cmd" i]::before,
#autoindex a[href$=".ps1" i]::before,
#autoindex a[href$=".sh" i]::before,
#autoindex a[href$=".dmg" i]::before,
#autoindex a[href$=".pkg" i]::before,
#autoindex a[href$=".deb" i]::before,
#autoindex a[href$=".rpm" i]::before,
#autoindex a[href$=".AppImage" i]::before,
#autoindex a[href$=".inf" i]::before,
#autoindex a[href$=".sys" i]::before,
#autoindex a[href$=".cat" i]::before{ background-image:var(--ico-exe); }
.demo a.exec::before{ background-image:var(--ico-exe); }

/* ===== E-Books / Comics =========================================== */
#autoindex a[href$=".epub" i]::before,
#autoindex a[href$=".mobi" i]::before,
#autoindex a[href$=".azw3" i]::before,
#autoindex a[href$=".djvu" i]::before,
#autoindex a[href$=".cbz" i]::before,
#autoindex a[href$=".cbr" i]::before{ background-image:var(--ico-file); }

/* ===== Playlists / Subs / Checksummen ============================= */
#autoindex a[href$=".m3u" i]::before,
#autoindex a[href$=".m3u8" i]::before,
#autoindex a[href$=".pls" i]::before,
#autoindex a[href$=".srt" i]::before,
#autoindex a[href$=".ass" i]::before,
#autoindex a[href$=".vtt" i]::before,
#autoindex a[href$=".sfv" i]::before,
#autoindex a[href$=".md5" i]::before,
#autoindex a[href$=".sha1" i]::before,
#autoindex a[href$=".sha256" i]::before,
#autoindex a[href$=".sha512" i]::before{ background-image:var(--ico-txt); }

/* ===== Zertifikate / Keys ========================================= */
#autoindex a[href$=".crt" i]::before,
#autoindex a[href$=".cer" i]::before,
#autoindex a[href$=".der" i]::before,
#autoindex a[href$=".pem" i]::before,
#autoindex a[href$=".key" i]::before,
#autoindex a[href$=".csr" i]::before,
#autoindex a[href$=".pfx" i]::before,
#autoindex a[href$=".p12" i]::before{ background-image:var(--ico-cert); }

/* ===== Fonts ====================================================== */
#autoindex a[href$=".ttf" i]::before,
#autoindex a[href$=".otf" i]::before,
#autoindex a[href$=".woff" i]::before,
#autoindex a[href$=".woff2" i]::before{ background-image:var(--ico-font); }

/* ===== Torrents =================================================== */
#autoindex a[href$=".torrent" i]::before{ background-image:var(--ico-tor); }
.demo a.torrent::before{ background-image:var(--ico-tor); }

/* ===== Archive (Extra) ============================================ */
#autoindex a[href$=".xz" i]::before,
#autoindex a[href$=".zst" i]::before,
#autoindex a[href$=".bz2" i]::before,
#autoindex a[href$=".lha" i]::before,
#autoindex a[href$=".arj" i]::before,
#autoindex a[href$=".z" i]::before,
#autoindex a[href$=".cpio" i]::before { background-image: var(--ico-arc); }

/* ===== Images (Extra) ============================================= */
#autoindex a[href$=".avif" i]::before,
#autoindex a[href$=".heic" i]::before,
#autoindex a[href$=".heif" i]::before,
#autoindex a[href$=".tga" i]::before,
#autoindex a[href$=".jp2" i]::before { background-image: var(--ico-img); }

/* ===== Audio (Extra) ============================================== */
#autoindex a[href$=".opus" i]::before,
#autoindex a[href$=".ape" i]::before,
#autoindex a[href$=".aiff" i]::before,
#autoindex a[href$=".mka" i]::before,
#autoindex a[href$=".midi" i]::before { background-image: var(--ico-aud); }

/* ===== Video (Extra) ============================================== */
#autoindex a[href$=".ts" i]::before,
#autoindex a[href$=".m2ts" i]::before,
#autoindex a[href$=".ogv" i]::before,
#autoindex a[href$=".3gp" i]::before,
#autoindex a[href$=".m4p" i]::before { background-image: var(--ico-vid); }

/* ===== Dokumente (Extra) ========================================== */
#autoindex a[href$=".docm" i]::before,
#autoindex a[href$=".dotx" i]::before { background-image: var(--ico-file); }

#autoindex a[href$=".xlsm" i]::before,
#autoindex a[href$=".xlsb" i]::before { background-image: var(--ico-xls); }

#autoindex a[href$=".rtfd" i]::before { background-image: var(--ico-txt); }

/* ===== Code / Config (Extra) ====================================== */
#autoindex a[href$=".tsx" i]::before,
#autoindex a[href$=".jsx" i]::before,
#autoindex a[href$=".kt" i]::before,
#autoindex a[href$=".scala" i]::before,
#autoindex a[href$=".vue" i]::before,
#autoindex a[href$=".toml" i]::before { background-image: var(--ico-code); }

/* ===== Installer / System (Extra) ================================= */
#autoindex a[href$=".apk" i]::before,
#autoindex a[href$=".aab" i]::before,
#autoindex a[href$=".msix" i]::before,
#autoindex a[href$=".msixbundle" i]::before,
#autoindex a[href$=".crx" i]::before { background-image: var(--ico-exe); }

/* ===== E-Books / Comics (Extra) =================================== */
#autoindex a[href$=".cb7" i]::before,
#autoindex a[href$=".cba" i]::before { background-image: var(--ico-file); }

/* ===== Playlists / Checksummen (Extra) ============================ */
#autoindex a[href$=".cue" i]::before,
#autoindex a[href$=".sha224" i]::before,
#autoindex a[href$=".sha384" i]::before { background-image: var(--ico-txt); }

/* ===== Fonts (Extra) ============================================== */
#autoindex a[href$=".eot" i]::before { background-image: var(--ico-font); }