System
Label Value Edit
Version 2.7.6
Language English (English)
Support Discord | Github | Blog
Donate Paypal
Appearance
Label Value Edit
Background Image View
Trianglify No
Trianglify Random Seed heimdall
Treat Tags As: Tags
Miscellaneous
Label Value Edit
Homepage Search No
Default Search Provider Google
Link opens in Open in the same tab
Advanced
Label Value Edit
Custom CSS
/**
 * ============================================================================
 * HEIMDALL OBSIDIAN GLASS THEME
 * ============================================================================
 * A premium, modern, and dark "Glassmorphism" theme designed for Heimdall.
 * Features ultra-smooth blur effects, meticulous typographies, a redesigned
 * search bar, and distinct dynamic styling for application vs. category cards.
 * 
 * Target: Heimdall Application Dashboard
 * Font: 'Outfit' (Google Fonts)
 * ============================================================================
 */

@import url("https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600&display=swap");

/* ============================================================================
 * 01. GLOBAL CONFIGURATION & LAYOUT
 * ============================================================================ */
#app { 
  background-position: center !important; 
  background-size: cover !important;
}

#app #sortable, #app main { 
  padding: 40px !important; 
  display: flex !important;
  flex-wrap: wrap !important;
  justify-content: center !important;
  gap: 25px !important; 
}


/* ============================================================================
 * 02. SEARCH BAR COMPONENT
 * ============================================================================ */
/* Base Container (Clears native artifacts) */
.searchform {
  margin: 40px auto 60px auto !important;
  padding: 0 !important;
  max-width: 650px !important;
  width: 90% !important;
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  display: flex !important;
  height: 56px !important;
}

/* Glass Pill Structure */
.searchform .input-container {
  display: flex !important;
  flex: 1 !important;
  height: 100% !important;
  align-items: center !important;
  border-radius: 100px !important; 
  background: rgba(15, 15, 15, 0.65) !important;
  border: 1px solid rgba(255, 255, 255, 0.12) !important;
  border-top: 1px solid rgba(255, 255, 255, 0.25) !important;
  box-shadow: 0 10px 40px 0 rgba(0, 0, 0, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.1) !important;
  backdrop-filter: blur(28px) saturate(150%) !important;
  -webkit-backdrop-filter: blur(28px) saturate(150%) !important;
  transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1) !important;
}

.searchform .input-container:hover, 
.searchform .input-container:focus-within {
  background: rgba(25, 25, 25, 0.8) !important;
  border-color: rgba(230, 70, 50, 0.3) !important; 
  box-shadow: 0 15px 45px 0 rgba(0, 0, 0, 0.6), inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 0 20px rgba(230, 70, 50, 0.15) !important;
  transform: translateY(-2px) !important;
}

/* Engine Selector (e.g. Google) */
.searchform select {
  background: rgba(255, 255, 255, 0.05) !important;
  border: none !important;
  border-right: 1px solid rgba(255, 255, 255, 0.1) !important;
  border-radius: 100px 0 0 100px !important; 
  color: #ffffff !important;
  font-family: 'Outfit', sans-serif !important;
  font-size: 14px !important;
  font-weight: 500 !important;
  padding: 0 20px 0 25px !important;
  height: 100% !important;
  outline: none !important;
  appearance: none !important;
  -webkit-appearance: none !important;
  cursor: pointer !important;
  transition: background 0.2s !important;
}

.searchform select:hover { background: rgba(255, 255, 255, 0.1) !important; }
.searchform select option { color: #000 !important; background: #fff !important; }

/* Text Input Field */
.searchform input[type="text"],
.searchform input[type="search"] {
  flex: 1 !important;
  height: 100% !important; 
  background: rgba(255, 255, 255, 0.28) !important; /* Lighter white background */
  border: none !important;
  outline: none !important;
  color: #ffffff !important;
  font-family: 'Outfit', sans-serif !important;
  font-size: 16px !important;
  font-weight: 500 !important;
  padding: 0 24px !important;
}

.searchform input::placeholder {
  color: rgba(255, 255, 255, 0.8) !important;
  font-weight: 300 !important;
}

/* Submit Button */
.searchform button {
  background: rgba(230, 70, 50, 0.75) !important; /* Premium Vermilion */
  border: none !important;
  border-left: 1px solid rgba(255, 255, 255, 0.2) !important;
  border-radius: 0 100px 100px 0 !important; 
  color: #ffffff !important;
  font-family: 'Outfit', sans-serif !important;
  font-size: 14px !important;
  font-weight: 600 !important;
  letter-spacing: 0.05em !important;
  text-transform: uppercase !important;
  padding: 0 30px !important;
  height: 100% !important;
  cursor: pointer !important;
  transition: all 0.3s ease !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
}

.searchform button:hover {
  background: rgba(240, 85, 65, 0.95) !important;
  box-shadow: -4px 0 20px rgba(230, 70, 50, 0.4) !important;
}


/* ============================================================================
 * 03. APPLICATIONS CARDS (OBSIDIAN GLASS)
 * ============================================================================ */
.item {
  height: 95px !important;
  width: 270px !important;
  margin: 10px !important; 
  padding: 0 46px 0 15px !important;
  border-radius: 20px !important;
  border: 1px solid rgba(255, 255, 255, 0.12) !important;
  border-top: 1px solid rgba(255, 255, 255, 0.25) !important;
  outline: none !important;
  
  /* Base Glass Geometry */
  background: rgba(10, 10, 10, 0.65) !important; 
  background-image: linear-gradient(135deg, rgba(255, 255, 255, 0.05) 0%, rgba(255, 255, 255, 0) 100%) !important;
  backdrop-filter: blur(32px) saturate(180%) !important;
  -webkit-backdrop-filter: blur(32px) saturate(180%) !important;
  box-shadow: 0 10px 30px 0 rgba(0, 0, 0, 0.4) !important;
  
  position: relative !important;
  transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275) !important;
  overflow: hidden !important; 
}

.item:hover {
  background: rgba(20, 20, 20, 0.75) !important;
  border-color: rgba(255, 255, 255, 0.4) !important;
  transform: translateY(-6px) scale(1.02) !important; 
  box-shadow: 0 15px 35px 0 rgba(0, 0, 0, 0.5) !important;
}

/* App Title */
.item .title, .item .black, .black, .item strong { 
  color: #ffffff !important; 
  font-family: 'Outfit', sans-serif !important;
  font-size: 16px !important;
  font-weight: 500 !important;
  text-shadow: 0 2px 6px rgba(0, 0, 0, 0.8) !important;
  letter-spacing: 0.02em !important;
}

/* Live Stats & Info */
.item .info,
.item .stats,
.item .tags,
.item p,
.item span:not(.title):not(.sv) {
  color: rgba(255, 255, 255, 0.65) !important;
  font-family: 'Outfit', sans-serif !important;
  font-size: 10px !important; 
  font-weight: 300 !important;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.8) !important;
  line-height: 1.2 !important;
  letter-spacing: 0.05em !important;
}

.item .info > *,
.item .livestats > *,
.item .stats > *,
.item ul.livestats li {
  display: inline-block !important;
  margin-right: 18px !important;
  vertical-align: top !important;
}

.item table th,
.item table td {
  padding-right: 15px !important;
  font-weight: 300 !important;
}

.item strong,
.item b,
.item .value {
  font-size: 12px !important;
  font-weight: 600 !important;
  color: #ffffff !important;
  display: block; 
  margin-top: 3px !important;
}

/* App Icon Container */
.item .app-icon-container {
  width: 52px !important;
  height: 52px !important;
  border-radius: 14px !important;
  background: rgba(255, 255, 255, 0.08) !important;
  padding: 8px !important;
  border: 1px solid rgba(255, 255, 255, 0.15) !important;
  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2) !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  transition: transform 0.3s ease !important;
}

.item .app-icon-container img {
  width: 100% !important;
  height: 100% !important;
  object-fit: contain !important;
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  padding: 0 !important;
  margin: 0 !important;
  border-radius: 0 !important;
}

.item:hover .app-icon-container {
  transform: scale(1.1) !important; 
}

/* Hide native faux icons */
.item .svg-inline--fa {
  position: absolute !important;
  right: 20px !important;
  top: 50% !important;
  transform: translateY(-50%) translateX(-10px) !important;
  font-size: 16px !important;
  color: rgba(255, 255, 255, 0.5) !important;
  transition: all 0.3s ease !important;
  opacity: 0 !important; 
}

.item:hover .svg-inline--fa {
  color: #ffffff !important;
  opacity: 1 !important; 
  transform: translateY(-50%) translateX(0) !important;
}


/* ============================================================================
 * 04. CATEGORIES & TAGS (VERMILION ACCENT)
 * ============================================================================ */
/* Targets any card linking to /tag/, plus specific fallback */
.item:has(a[href*="/tag/"]),
[data-name="Administration du NAS"] .item {
  border-left: 14px solid rgba(230, 70, 50, 0.95) !important;
  border-radius: 20px 100px 100px 20px !important; /* Match left radius to basic cards, full pill right */
  background: rgba(30, 10, 5, 0.65) !important; 
  background-image: linear-gradient(135deg, rgba(230, 70, 50, 0.25) 0%, rgba(20, 5, 5, 0.8) 100%) !important; 
  border-top: 1px solid rgba(230, 70, 50, 0.4) !important;
  border-right: 1px solid rgba(230, 70, 50, 0.25) !important;
  border-bottom: 1px solid rgba(230, 70, 50, 0.25) !important;
  box-shadow: 0 10px 30px 0 rgba(0, 0, 0, 0.5) !important; 
}

/* Vermilion styling for native Heimdall right-edge half circle */
.item:has(a[href*="/tag/"])::before,
.item:has(a[href*="/tag/"])::after,
[data-name="Administration du NAS"] .item::before,
[data-name="Administration du NAS"] .item::after {
  background: rgba(230, 70, 50, 0.6) !important; 
  border-left: 1px solid rgba(255, 255, 255, 0.1) !important; 
}

/* Tag Hover States */
.item:has(a[href*="/tag/"]):hover,
[data-name="Administration du NAS"] .item:hover {
  border-left: 18px solid rgba(240, 85, 65, 1) !important; 
  background: rgba(45, 10, 5, 0.75) !important;
  background-image: linear-gradient(135deg, rgba(250, 80, 50, 0.4) 0%, rgba(30, 10, 5, 0.9) 100%) !important;
  border-color: rgba(230, 70, 50, 0.5) !important;
  box-shadow: 0 15px 35px 0 rgba(0, 0, 0, 0.6), 0 5px 25px rgba(230, 70, 50, 0.25) !important; 
}

/* Tag Custom Icon Styling */
.item:has(a[href*="/tag/"]) .app-icon-container,
[data-name="Administration du NAS"] .item .app-icon-container {
  background: rgba(230, 70, 50, 0.1) !important;
  border: 1px solid rgba(230, 70, 50, 0.25) !important;
  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.3) !important;
}

/* Tag Typography (Dynamic Tech Style) */
.item:has(a[href*="/tag/"]) .title,
[data-name="Administration du NAS"] .item .title {
  font-weight: normal !important;
  font-style: italic !important;
  color: #fff2ef !important; 
  text-shadow: 0 3px 15px rgba(230, 70, 50, 0.5), 0 1px 3px rgba(0,0,0,0.8) !important;
}


/* ============================================================================
 * 05. SIDE CONFIGURATION MENU
 * ============================================================================ */
#config-buttons {
  position: fixed !important; 
  right: 0 !important;
  bottom: 50% !important;
  transform: translateY(50%) !important;
  border-radius: 20px 0 0 20px !important;
  background: rgba(10, 10, 10, 0.65) !important; 
  background-image: linear-gradient(135deg, rgba(255, 255, 255, 0.08) 0%, rgba(255, 255, 255, 0) 100%) !important;
  border: 1px solid rgba(255, 255, 255, 0.15) !important;
  border-top: 1px solid rgba(255, 255, 255, 0.3) !important;
  border-right: none !important;
  backdrop-filter: blur(30px) saturate(180%) !important;
  -webkit-backdrop-filter: blur(30px) saturate(180%) !important;
  box-shadow: -5px 0 30px rgba(0, 0, 0, 0.3) !important;
  padding: 15px 10px !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 12px !important;
  z-index: 100 !important;
}

#config-buttons a {
  background: rgba(255, 255, 255, 0.05) !important;
  border-radius: 12px !important;
  width: 44px !important;
  height: 44px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  transition: all 0.3s ease !important;
  border: 1px solid rgba(255, 255, 255, 0.1) !important;
}

#config-buttons a svg {
  color: rgba(255, 255, 255, 0.6) !important;
  width: 20px !important;
  height: 20px !important;
  transition: all 0.3s ease !important;
}

#config-buttons a:hover {
  background: rgba(255, 255, 255, 0.15) !important;
  border-color: rgba(255, 255, 255, 0.4) !important;
  transform: translateX(-4px) !important;
  box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2) !important;
}

#config-buttons a:hover svg {
  color: #ffffff !important;
  transform: scale(1.15) !important;
}
Custom JavaScript