Dash
Items
Custom CSS
Save
Cancel
/** * ============================================================================ * 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; }
Home dashboard
Users
Application list
Tags list
Settings