diff --git a/jey_theme/hooks.py b/jey_theme/hooks.py index 55b62bc..2b09533 100644 --- a/jey_theme/hooks.py +++ b/jey_theme/hooks.py @@ -11,9 +11,7 @@ app_license = "unlicense" # include js, css files in header of desk.html app_include_css = [ - "/assets/jey_theme/css/shared.css", - "/assets/jey_theme/css/theme_chrome.css", - "/assets/jey_theme/css/theme_modern.css", + "jey_theme.bundle.css", ] app_include_js = "/assets/jey_theme/js/jey_theme.js" @@ -55,9 +53,7 @@ after_migrate = [ # include js, css files in header of web template web_include_css = [ - "/assets/jey_theme/css/shared.css", - "/assets/jey_theme/css/theme_chrome.css", - "/assets/jey_theme/css/theme_modern.css", + "jey_theme.bundle.css", ] web_include_js = "/assets/jey_theme/js/jey_theme.js" diff --git a/jey_theme/public/css/shared.css b/jey_theme/public/css/jey_theme.bundle.css similarity index 53% rename from jey_theme/public/css/shared.css rename to jey_theme/public/css/jey_theme.bundle.css index 2fe8c13..8f4eb51 100644 --- a/jey_theme/public/css/shared.css +++ b/jey_theme/public/css/jey_theme.bundle.css @@ -1,3 +1,8 @@ +/* Bundled theme styles (was 3 raw app_include_css/web_include_css entries). + One hashed bundle -> smaller preload header + auto cache-busting. + Order preserved: shared -> theme_chrome -> theme_modern. */ + +/* ===== shared.css ===== */ /* ========================================================================== Jey Theme — Shared Styles (theme-independent) ========================================================================== */ @@ -1407,3 +1412,1085 @@ textarea.form-control:focus, padding-top: 0 !important; margin-top: 0 !important; } + +/* ===== theme_chrome.css ===== */ +/* ========================================================================== + THEME: Chrome [data-jey-theme="chrome"] + Metallic chrome button with conic-gradient rings and rotating glow. + ========================================================================== */ + +@keyframes jey-chrome-rotate-glow { + from { transform: rotate(0deg); } + to { transform: rotate(360deg); } +} + +@keyframes jey-chrome-face-light { + 0% { background: radial-gradient(circle at 25% 20%, rgba(255,255,255,0.5) 0%, transparent 55%); } + 25% { background: radial-gradient(circle at 75% 25%, rgba(255,255,255,0.5) 0%, transparent 55%); } + 50% { background: radial-gradient(circle at 70% 75%, rgba(255,255,255,0.35) 0%, transparent 55%); } + 75% { background: radial-gradient(circle at 25% 70%, rgba(255,255,255,0.35) 0%, transparent 55%); } + 100% { background: radial-gradient(circle at 25% 20%, rgba(255,255,255,0.5) 0%, transparent 55%); } +} + +@keyframes jey-chrome-refl-drift { + 0%, 100% { top: 12%; opacity: 0.7; } + 50% { top: 18%; opacity: 0.5; } +} + +[data-jey-theme="chrome"] .jey-chrome { + width: 72px; height: 72px; border-radius: 50%; position: relative; + background: radial-gradient(ellipse at 35% 20%, rgba(255,255,255,0.7) 0%, transparent 55%), linear-gradient(180deg, #e0e0e0 0%, #b8b8b8 100%); + box-shadow: 0 4px 10px rgba(0,0,0,0.18), 0 1px 3px rgba(0,0,0,0.1), inset 0 1px 1px rgba(255,255,255,0.7); + transition: box-shadow 0.3s ease; +} + +[data-jey-theme="chrome"] .desktop-icon:hover .jey-chrome { + box-shadow: 0 6px 16px rgba(0,0,0,0.22), 0 1px 3px rgba(0,0,0,0.12), 0 0 14px rgba(255,255,255,0.2), inset 0 1px 1px rgba(255,255,255,0.7); +} + +[data-jey-theme="chrome"] .jey-chrome-ring { + position: absolute; inset: 2px; border-radius: 50%; + background: conic-gradient(from 140deg, #a0a0a0 0deg, #f2f2f2 40deg, #777 80deg, #e5e5e5 120deg, #959595 170deg, #ededed 210deg, #808080 260deg, #d8d8d8 310deg, #a0a0a0 360deg); + box-shadow: inset 0 1px 2px rgba(0,0,0,0.2); overflow: hidden; +} + +[data-jey-theme="chrome"] .jey-ring-glow { + position: absolute; inset: -10px; border-radius: 50%; + background: conic-gradient(from 0deg, transparent 0deg, transparent 140deg, rgba(255,255,255,0.55) 165deg, rgba(255,255,255,0.8) 180deg, rgba(255,255,255,0.55) 195deg, transparent 220deg, transparent 360deg); + animation: jey-chrome-rotate-glow 8s linear infinite; pointer-events: none; +} + +[data-jey-theme="chrome"] .jey-chrome-gap { + position: absolute; inset: 5px; border-radius: 50%; + background: linear-gradient(180deg, #888 0%, #aaa 50%, #999 100%); + box-shadow: inset 0 1px 3px rgba(0,0,0,0.35), inset 0 -1px 1px rgba(255,255,255,0.2); +} + +[data-jey-theme="chrome"] .jey-chrome-ring-inner { + position: absolute; inset: 6px; border-radius: 50%; + background: conic-gradient(from 200deg, #b0b0b0 0deg, #eee 30deg, #999 70deg, #ddd 110deg, #aaa 160deg, #f0f0f0 200deg, #909090 250deg, #ccc 300deg, #b0b0b0 360deg); + box-shadow: inset 0 1px 1px rgba(0,0,0,0.15); +} + +[data-jey-theme="chrome"] .jey-chrome-face { + position: absolute; inset: 9px; border-radius: 50%; overflow: hidden; + background: linear-gradient(168deg, #f4f4f4 0%, #e0e0e0 45%, #d4d4d4 100%); + box-shadow: inset 0 3px 7px rgba(255,255,255,0.7), inset 0 -3px 6px rgba(0,0,0,0.06); + display: flex; align-items: center; justify-content: center; +} + +[data-jey-theme="chrome"] .jey-face-glow { + position: absolute; inset: 0; border-radius: 50%; + animation: jey-chrome-face-light 8s ease-in-out infinite; + pointer-events: none; z-index: 1; +} + +[data-jey-theme="chrome"] .jey-face-reflection { + position: absolute; top: 15%; left: 10%; width: 80%; height: 30%; + background: linear-gradient(180deg, rgba(255,255,255,0.6) 0%, rgba(255,255,255,0.15) 60%, transparent 100%); + border-radius: 50%; pointer-events: none; z-index: 1; + animation: jey-chrome-refl-drift 10s ease-in-out infinite; +} + +[data-jey-theme="chrome"] .jey-chrome-face .jey-icon { + width: 24px !important; height: 24px !important; + stroke: #505050 !important; fill: none !important; + stroke-width: 1.8 !important; stroke-linecap: round !important; stroke-linejoin: round !important; + filter: drop-shadow(0 1px 0 rgba(255,255,255,0.5)) !important; + position: relative; z-index: 2; +} + + +/* ========================================================================== + FULL APP CHROME THEME + Real metallic chrome with 45° multi-stop reflective gradients, + brushed metal textures, beveled edges, and conic-gradient accents. + ========================================================================== */ + +/* --- Shine sweep animation for interactive elements --- */ +@keyframes jey-chrome-shine { + 0% { transform: translateX(-100%) skewX(-15deg); } + 100% { transform: translateX(200%) skewX(-15deg); } +} + +/* ========================================================================== + CSS Variable Overrides + ========================================================================== */ + +[data-jey-theme="chrome"] { + /* --- Surfaces --- */ + --bg-color: #d8d8d8; + --fg-color: #e8e8e8; + --card-bg: #e0e0e0; + --subtle-accent: #d4d4d4; + --subtle-fg: #d0d0d0; + --fg-hover-color: #ccc; + --highlight-color: #d4d4d4; + --navbar-bg: #d0d0d0; + --modal-bg: #ddd; + --toast-bg: #ddd; + --popover-bg: #e0e0e0; + --control-bg: #d5d5d5; + --control-bg-on-gray: #ccc; + --awesomebar-focus-bg: #e8e8e8; + --disabled-control-bg: #d0d0d0; + --skeleton-bg: #c8c8c8; + --surface-menu-bar: #d4d4d4; + --surface-white: #e0e0e0; + --surface-gray-1: #d8d8d8; + --surface-gray-2: #d0d0d0; + --surface-gray-3: #c8c8c8; + --surface-gray-4: #bbb; + --surface-modal: #ddd; + --placeholder-color: #ccc; + + /* --- Sidebar --- */ + --sidebar-hover-color: #c8c8c8; + --sidebar-active-color: #d8d8d8; + --sidebar-border-color: #aaa; + --divider-color: #b0b0b0; + + /* --- Text --- */ + --heading-color: #333; + --text-color: #404040; + --text-neutral: #333; + --text-muted: #666; + --text-light: #888; + --text-dark: #f0f0f0; + --disabled-text-color: #888; + --ink-gray-7: #555; + --ink-gray-8: #404040; + --ink-gray-9: #333; + + /* --- Borders --- */ + --border-color: #aaa; + --dark-border-color: #999; + --table-border-color: #aaa; + --btn-group-border-color: #999; + --outline-gray-1: #b0b0b0; + --outline-gray-2: #999; + --outline-gray-modals: #aaa; + + /* --- Primary / Buttons --- */ + --primary: #555; + --brand-color: #555; + --btn-primary: #777; + --btn-default-bg: #ccc; + --btn-default-hover-bg: #bbb; + --btn-ghost-hover-bg: #c0c0c0; + --border-primary: #777; + + /* --- Shadows (beveled metallic) --- */ + --shadow-xs: 1px 1px 2px rgba(0,0,0,0.15), -1px -1px 1px rgba(255,255,255,0.5); + --shadow-sm: 1px 1px 3px rgba(0,0,0,0.18), -1px -1px 2px rgba(255,255,255,0.45); + --shadow-base: 2px 2px 4px rgba(0,0,0,0.15), -1px -1px 2px rgba(255,255,255,0.4); + --shadow-md: 2px 2px 6px rgba(0,0,0,0.18), -1px -1px 3px rgba(255,255,255,0.35); + --shadow-lg: 3px 3px 10px rgba(0,0,0,0.15), -2px -2px 5px rgba(255,255,255,0.3); + --shadow-xl: 4px 4px 16px rgba(0,0,0,0.18), -2px -2px 6px rgba(255,255,255,0.25); + --shadow-2xl: 6px 6px 24px rgba(0,0,0,0.2), -3px -3px 8px rgba(255,255,255,0.2); + --shadow-inset: inset 0px -1px 0px #999; + --btn-shadow: 1px 1px 2px rgba(0,0,0,0.15), -1px -1px 1px rgba(255,255,255,0.4); + --card-shadow: 2px 2px 6px rgba(0,0,0,0.12), -1px -1px 3px rgba(255,255,255,0.4); + --modal-shadow: 6px 6px 30px rgba(0,0,0,0.3), -3px -3px 10px rgba(255,255,255,0.15); + --awesomebar-shadow: 3px 3px 12px rgba(0,0,0,0.15), -2px -2px 6px rgba(255,255,255,0.3); + + /* --- Focus rings --- */ + --focus-default: 0 0 0 2px rgba(150,150,150,0.5); + + /* --- Scrollbar --- */ + --scrollbar-thumb-color: #999; + --scrollbar-track-color: #c8c8c8; + + /* --- Checkbox / Switch --- */ + --switch-bg: #aaa; + --checkbox-color: #555; + --checkbox-gradient: linear-gradient(180deg, #777 0%, #666 100%); + + /* --- Timeline --- */ + --timeline-badge-color: #555; + --timeline-badge-bg: #ccc; + + /* --- Date picker --- */ + --date-active-bg: #777; + --date-active-text: #f0f0f0; + --date-range-bg: #ccc; + + /* --- Progress / Misc --- */ + --progress-bar-bg: #777; + --code-block-bg: #444; + --code-block-text: #ccc; +} + + +/* ========================================================================== + Body — Brushed Metal Background + 3 layered repeating-gradients at different lengths = realistic grain + ========================================================================== */ + +[data-jey-theme="chrome"] body { + background: + radial-gradient(ellipse at 25% 15%, rgba(255,255,255,0.45) 0%, transparent 50%), + radial-gradient(ellipse at 80% 80%, rgba(255,255,255,0.2) 0%, transparent 45%), + radial-gradient(ellipse at 50% 50%, rgba(0,0,0,0.03) 0%, transparent 70%), + linear-gradient(168deg, #d8d8d8 0%, #c4c4c4 40%, #b8b8b8 70%, #c8c8c8 100%) !important; + background-attachment: fixed !important; +} + +[data-jey-theme="chrome"] .page-container { + background: transparent !important; +} + + +/* ========================================================================== + Navbar — Reflective Chrome Bar + 45° multi-stop gradient simulating polished metal reflection + ========================================================================== */ + +[data-jey-theme="chrome"] .navbar { + background: + linear-gradient(45deg, #aaa 2%, #ddd 8%, #bbb 18%, #e8e8e8 30%, #ccc 45%, #eee 55%, #bbb 68%, #ddd 80%, #aaa 95%) !important; + border-bottom: 1px solid #888 !important; + box-shadow: + inset 0 1px 0 rgba(255,255,255,0.7), + inset 0 -1px 0 rgba(0,0,0,0.08), + 0 2px 4px rgba(0,0,0,0.15) !important; +} + +[data-jey-theme="chrome"] .navbar .navbar-nav .nav-link { + color: #444 !important; + text-shadow: 0 1px 0 rgba(255,255,255,0.5); +} + +[data-jey-theme="chrome"] .navbar .navbar-nav .nav-link:hover { + color: #222 !important; + background: linear-gradient(180deg, rgba(255,255,255,0.35) 0%, rgba(255,255,255,0.1) 100%) !important; + border-radius: 6px; +} + + +/* ========================================================================== + Awesomebar — Sunken Metal Slot + ========================================================================== */ + +[data-jey-theme="chrome"] .search-bar input { + background: linear-gradient(180deg, #c0c0c0 0%, #d0d0d0 100%) !important; + border: 1px solid #999 !important; + box-shadow: + inset 0 2px 4px rgba(0,0,0,0.15), + inset 0 0 0 1px rgba(0,0,0,0.05), + 0 1px 0 rgba(255,255,255,0.5) !important; + color: #333 !important; + border-radius: 6px !important; +} + +[data-jey-theme="chrome"] .search-bar input:focus { + background: linear-gradient(180deg, #d5d5d5 0%, #e0e0e0 100%) !important; + border-color: #888 !important; + box-shadow: + inset 0 1px 3px rgba(0,0,0,0.1), + 0 0 0 2px rgba(150,150,150,0.3), + 0 1px 0 rgba(255,255,255,0.4) !important; +} + +[data-jey-theme="chrome"] .search-bar .search-icon { + color: #777 !important; +} + + +/* ========================================================================== + Sidebar — Brushed Metal Panel + ========================================================================== */ + +[data-jey-theme="chrome"] .body-sidebar-container { + background: linear-gradient(160deg, #b8b8b8 0%, #f0f0f0 12%, #c0c0c0 28%, #f4f4f4 42%, #b8b8b8 58%, #ededed 72%, #aaa 88%, #ddd 100%) !important; + border-right: 1px solid #888 !important; + box-shadow: + inset -1px 0 0 rgba(255,255,255,0.6), + inset 0 1px 0 rgba(255,255,255,0.7), + inset 0 -1px 0 rgba(0,0,0,0.1), + 2px 0 8px rgba(0,0,0,0.12) !important; +} + +[data-jey-theme="chrome"] .body-sidebar-container .body-sidebar, +[data-jey-theme="chrome"] .body-sidebar-container .body-sidebar-top, +[data-jey-theme="chrome"] .body-sidebar-container .body-sidebar-bottom, +[data-jey-theme="chrome"] .body-sidebar-container .body-sidebar-cards { + background: transparent !important; +} + +[data-jey-theme="chrome"] .body-sidebar .standard-sidebar-item .item-anchor:hover { + background: linear-gradient(90deg, rgba(255,255,255,0.25) 0%, rgba(255,255,255,0.05) 100%) !important; +} + +[data-jey-theme="chrome"] .body-sidebar .standard-sidebar-item.active-sidebar .item-anchor { + background: linear-gradient(45deg, #bbb 5%, #ddd 30%, #ccc 60%, #ddd 90%) !important; + box-shadow: + inset 0 1px 0 rgba(255,255,255,0.6), + inset 0 -1px 0 rgba(0,0,0,0.08), + 1px 1px 2px rgba(0,0,0,0.1), + -1px -1px 1px rgba(255,255,255,0.3) !important; + border-radius: 8px; +} + +[data-jey-theme="chrome"] .body-sidebar .sidebar-item-icon { + color: #666 !important; + filter: drop-shadow(0 1px 0 rgba(255,255,255,0.5)); +} + + +/* ========================================================================== + Context Menu — Themed icons + ========================================================================== */ + +[data-jey-theme="chrome"] .frappe-menu .menu-item-icon .jey-icon { + width: 20px !important; + height: 20px !important; + stroke: #555 !important; + fill: none !important; + stroke-width: 1.8 !important; + stroke-linecap: round !important; + stroke-linejoin: round !important; + filter: drop-shadow(0 1px 0 rgba(255,255,255,0.4)) !important; +} + + +/* ========================================================================== + Sidebar Header — Themed icon + ========================================================================== */ + +[data-jey-theme="chrome"] .sidebar-header .header-logo .jey-icon { + width: 22px !important; + height: 22px !important; + stroke: #555 !important; + fill: none !important; + stroke-width: 1.8 !important; + stroke-linecap: round !important; + stroke-linejoin: round !important; + filter: drop-shadow(0 1px 0 rgba(255,255,255,0.4)) !important; +} + + +/* ========================================================================== + Primary Buttons — Polished Chrome with Shine + ========================================================================== */ + +[data-jey-theme="chrome"] .btn-primary { + background: linear-gradient(45deg, #666 5%, #aaa 10%, #888 30%, #999 50%, #888 70%, #aaa 85%, #666 95%) !important; + color: #f0f0f0 !important; + border: 1px solid #555 !important; + box-shadow: + 2px 2px 4px rgba(0,0,0,0.2), + -1px -1px 2px rgba(255,255,255,0.15), + inset 0 1px 0 rgba(255,255,255,0.3), + inset 0 -1px 0 rgba(0,0,0,0.15), + inset 2px 2px 5px rgba(0,0,0,0), + inset -1px -1px 2px rgba(255,255,255,0) !important; + text-shadow: 0 -1px 0 rgba(0,0,0,0.25); + position: relative; + overflow: hidden; + transition: + box-shadow 0.25s cubic-bezier(0.22, 1, 0.36, 1), + border-color 0.25s cubic-bezier(0.22, 1, 0.36, 1) !important; +} + +[data-jey-theme="chrome"] .btn-primary::before { + content: ""; + position: absolute; + top: 0; left: -50%; width: 30%; height: 100%; + background: linear-gradient(90deg, transparent, rgba(255,255,255,0.25), transparent); + transform: skewX(-15deg); + transition: left 0.4s ease; + pointer-events: none; +} + +[data-jey-theme="chrome"] .btn-primary:hover::before { + left: 120%; +} + +[data-jey-theme="chrome"] .btn-primary:hover { + background: linear-gradient(45deg, #777 5%, #bbb 10%, #999 30%, #aaa 50%, #999 70%, #bbb 85%, #777 95%) !important; + box-shadow: + 2px 2px 6px rgba(0,0,0,0.25), + -1px -1px 3px rgba(255,255,255,0.2), + inset 0 1px 0 rgba(255,255,255,0.35), + inset 0 -1px 0 rgba(0,0,0,0.15), + inset 2px 2px 5px rgba(0,0,0,0), + inset -1px -1px 2px rgba(255,255,255,0) !important; +} + +[data-jey-theme="chrome"] .btn-primary:active { + background: linear-gradient(45deg, #555 5%, #888 10%, #777 30%, #888 50%, #777 70%, #888 85%, #555 95%) !important; + box-shadow: + 2px 2px 4px rgba(0,0,0,0), + -1px -1px 2px rgba(255,255,255,0), + inset 0 1px 0 rgba(255,255,255,0), + inset 0 -1px 0 rgba(0,0,0,0.05), + inset 3px 3px 7px rgba(0,0,0,0.35), + inset -1px -1px 2px rgba(255,255,255,0.12) !important; + transition: box-shadow 0.08s ease-out !important; +} + + +/* ========================================================================== + Default/Secondary Buttons — Brushed Metal + ========================================================================== */ + +[data-jey-theme="chrome"] .btn-default, +[data-jey-theme="chrome"] .btn-secondary { + background: linear-gradient(45deg, #bbb 5%, #eee 10%, #ccc 30%, #e0e0e0 50%, #ccc 70%, #eee 85%, #bbb 95%) !important; + border: 1px solid #999 !important; + color: #444 !important; + box-shadow: + 1px 1px 3px rgba(0,0,0,0.12), + -1px -1px 2px rgba(255,255,255,0.4), + inset 0 1px 0 rgba(255,255,255,0.6), + inset 0 -1px 0 rgba(0,0,0,0.06), + inset 2px 2px 4px rgba(0,0,0,0), + inset -1px -1px 1px rgba(255,255,255,0) !important; + text-shadow: 0 1px 0 rgba(255,255,255,0.5); + transition: + box-shadow 0.25s cubic-bezier(0.22, 1, 0.36, 1), + border-color 0.25s cubic-bezier(0.22, 1, 0.36, 1) !important; +} + +[data-jey-theme="chrome"] .btn-default:hover, +[data-jey-theme="chrome"] .btn-secondary:hover { + background: linear-gradient(45deg, #c0c0c0 5%, #f2f2f2 10%, #d4d4d4 30%, #e8e8e8 50%, #d4d4d4 70%, #f2f2f2 85%, #c0c0c0 95%) !important; + border-color: #888 !important; + box-shadow: + 2px 2px 4px rgba(0,0,0,0.15), + -1px -1px 2px rgba(255,255,255,0.4), + inset 0 1px 0 rgba(255,255,255,0.7), + inset 0 -1px 0 rgba(0,0,0,0.06), + inset 2px 2px 4px rgba(0,0,0,0), + inset -1px -1px 1px rgba(255,255,255,0) !important; +} + +[data-jey-theme="chrome"] .btn-default:active, +[data-jey-theme="chrome"] .btn-secondary:active { + background: linear-gradient(45deg, #aaa 5%, #d8d8d8 10%, #bbb 30%, #ccc 50%, #bbb 70%, #d8d8d8 85%, #aaa 95%) !important; + box-shadow: + 1px 1px 3px rgba(0,0,0,0), + -1px -1px 2px rgba(255,255,255,0), + inset 0 1px 0 rgba(255,255,255,0), + inset 0 -1px 0 rgba(0,0,0,0.05), + inset 3px 3px 6px rgba(0,0,0,0.3), + inset -1px -1px 1px rgba(255,255,255,0.15) !important; + transition: box-shadow 0.08s ease-out !important; +} + +/* Danger */ +[data-jey-theme="chrome"] .btn-danger { + background: linear-gradient(45deg, #b33 5%, #e88 10%, #c55 30%, #d77 50%, #c55 70%, #e88 85%, #b33 95%) !important; + color: #fff !important; + border: 1px solid #944 !important; + box-shadow: + 2px 2px 4px rgba(0,0,0,0.2), + -1px -1px 2px rgba(255,255,255,0.1), + inset 0 1px 0 rgba(255,255,255,0.25) !important; + text-shadow: 0 -1px 0 rgba(0,0,0,0.2); +} + +[data-jey-theme="chrome"] .btn-danger:hover { + background: linear-gradient(45deg, #c44 5%, #f99 10%, #d66 30%, #e88 50%, #d66 70%, #f99 85%, #c44 95%) !important; +} + +/* Ghost */ +[data-jey-theme="chrome"] .btn-ghost:hover { + background: linear-gradient(180deg, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.05) 100%) !important; +} + + +/* ========================================================================== + Input Fields — Sunken Metal Inset + ========================================================================== */ + +[data-jey-theme="chrome"] input.form-control:not([type="checkbox"]):not([type="radio"]), +[data-jey-theme="chrome"] textarea.form-control { + background: #d0d0d0 !important; + border: 1px solid #999 !important; + color: #333 !important; + box-shadow: + inset 1px 1px 2px rgba(0,0,0,0.10), + inset -1px -1px 1px rgba(255,255,255,0.25), + inset 0 1px 1px rgba(0,0,0,0.04) !important; + transition: + background-color 0.45s cubic-bezier(0.22, 1, 0.36, 1), + border-color 0.45s cubic-bezier(0.22, 1, 0.36, 1), + box-shadow 0.45s cubic-bezier(0.22, 1, 0.36, 1) !important; +} + +[data-jey-theme="chrome"] input.form-control:not([type="checkbox"]):not([type="radio"]):focus, +[data-jey-theme="chrome"] textarea.form-control:focus { + background: #cbcbcb !important; + border-color: #777 !important; + box-shadow: + inset 4px 4px 8px rgba(0,0,0,0.28), + inset -1px -1px 1px rgba(255,255,255,0.15), + inset 0 3px 5px rgba(0,0,0,0.18) !important; +} + +[data-jey-theme="chrome"] .form-control:disabled, +[data-jey-theme="chrome"] .form-control[disabled] { + background: #d8d8d8 !important; + color: #888 !important; + box-shadow: inset 1px 1px 2px rgba(0,0,0,0.06) !important; +} + +[data-jey-theme="chrome"] .frappe-control .control-label, +[data-jey-theme="chrome"] .frappe-control label { + color: #444 !important; + text-shadow: 0 1px 0 rgba(255,255,255,0.5); +} + +[data-jey-theme="chrome"] select.form-control, +[data-jey-theme="chrome"] select.input-with-feedback { + background: #d0d0d0 !important; +} + + +/* ========================================================================== + Forms / Cards — Raised Metal Panels + ========================================================================== */ + +[data-jey-theme="chrome"] .form-page { + background: + linear-gradient(45deg, #ccc 3%, #e8e8e8 10%, #d5d5d5 25%, #eee 45%, #d8d8d8 60%, #e8e8e8 80%, #ccc 97%) !important; + border: 1px solid #aaa !important; + box-shadow: + 3px 3px 8px rgba(0,0,0,0.12), + -2px -2px 4px rgba(255,255,255,0.4), + inset 0 1px 0 rgba(255,255,255,0.7), + inset 0 -1px 0 rgba(0,0,0,0.05) !important; + border-radius: var(--border-radius-lg) !important; +} + +[data-jey-theme="chrome"] .form-section .section-head { + color: #444 !important; + text-shadow: 0 1px 0 rgba(255,255,255,0.5); + border-bottom: 1px solid #b0b0b0 !important; + position: relative; +} + +[data-jey-theme="chrome"] .frappe-card { + background: linear-gradient(45deg, #c8c8c8 3%, #e5e5e5 12%, #d4d4d4 30%, #eaeaea 50%, #d4d4d4 70%, #e5e5e5 88%, #c8c8c8 97%) !important; + border: 1px solid #aaa !important; + box-shadow: + 2px 2px 6px rgba(0,0,0,0.1), + -1px -1px 3px rgba(255,255,255,0.4), + inset 0 1px 0 rgba(255,255,255,0.6) !important; +} + +/* Form sidebar */ +[data-jey-theme="chrome"] .form-sidebar { + border-left: 1px solid #aaa !important; +} + +[data-jey-theme="chrome"] .form-sidebar .sidebar-section { + border-bottom: 1px solid #b0b0b0 !important; +} + + +/* ========================================================================== + Modals / Dialogs — Chrome Frame with Conic-Gradient Border + ========================================================================== */ + +[data-jey-theme="chrome"] .modal-content { + background: linear-gradient(45deg, #ccc 3%, #e8e8e8 12%, #d5d5d5 30%, #eee 50%, #d5d5d5 70%, #e8e8e8 88%, #ccc 97%) !important; + border: 1px solid #999 !important; + box-shadow: + 6px 6px 24px rgba(0,0,0,0.25), + -3px -3px 8px rgba(255,255,255,0.15), + inset 0 1px 0 rgba(255,255,255,0.6), + inset 0 0 0 1px rgba(255,255,255,0.35) !important; +} + +[data-jey-theme="chrome"] .modal-header { + background: linear-gradient(45deg, #b0b0b0 5%, #ddd 12%, #c0c0c0 30%, #e5e5e5 50%, #c0c0c0 70%, #ddd 88%, #b0b0b0 95%) !important; + border-bottom: 1px solid #999 !important; + box-shadow: + inset 0 1px 0 rgba(255,255,255,0.6), + inset 0 -1px 0 rgba(0,0,0,0.06) !important; +} + +[data-jey-theme="chrome"] .modal-header .modal-title { + color: #333 !important; + text-shadow: 0 1px 0 rgba(255,255,255,0.5); +} + +[data-jey-theme="chrome"] .modal-footer { + background: linear-gradient(45deg, #b8b8b8 5%, #d8d8d8 20%, #c0c0c0 50%, #d8d8d8 80%, #b8b8b8 95%) !important; + border-top: 1px solid #999 !important; +} + +[data-jey-theme="chrome"] .modal-backdrop { + background-color: rgba(40,40,40,0.55) !important; +} + + +/* ========================================================================== + Page Head — Chrome Title Bar + ========================================================================== */ + +[data-jey-theme="chrome"] .page-head { + background: linear-gradient(45deg, #b8b8b8 3%, #e0e0e0 10%, #c8c8c8 25%, #eaeaea 45%, #ccc 60%, #e0e0e0 80%, #b8b8b8 97%) !important; + border-bottom: 1px solid #999 !important; + box-shadow: + inset 0 1px 0 rgba(255,255,255,0.6), + inset 0 -1px 0 rgba(0,0,0,0.06), + 0 2px 4px rgba(0,0,0,0.08) !important; +} + +[data-jey-theme="chrome"] .page-head .title-text { + color: #333 !important; + text-shadow: 0 1px 0 rgba(255,255,255,0.5); +} + + +/* ========================================================================== + List View — Metal Table + ========================================================================== */ + +[data-jey-theme="chrome"] .list-row-head { + background: linear-gradient(45deg, #aaa 3%, #d8d8d8 10%, #bbb 25%, #e0e0e0 45%, #bbb 60%, #d8d8d8 80%, #aaa 97%) !important; + box-shadow: + inset 0 1px 0 rgba(255,255,255,0.6), + inset 0 -1px 0 rgba(0,0,0,0.06) !important; +} + +[data-jey-theme="chrome"] .list-row-container .list-row { + border-bottom: 1px solid #b8b8b8 !important; +} + +[data-jey-theme="chrome"] .list-row-container:hover { + background: linear-gradient(90deg, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.05) 100%) !important; +} + +[data-jey-theme="chrome"] .result .list-row-container .level-left .list-row--col .level-left .ellipsis { + color: #404040 !important; +} + +/* Sticky right column: blend with metallic body + visible separator. + Uses a translucent bg so it reads continuous with body gradient while + still covering horizontally-overflowing columns under it. */ +[data-jey-theme="chrome"] .frappe-list .list-row .level-right, +[data-jey-theme="chrome"] .frappe-list .list-row-head .level-right { + background: linear-gradient(90deg, + rgba(216,216,216,0.85) 0%, + rgba(208,208,208,0.88) 100%) !important; + backdrop-filter: blur(3px); + -webkit-backdrop-filter: blur(3px); + border-left: 1px solid #a0a0a0 !important; + box-shadow: inset 1px 0 0 rgba(255,255,255,0.5) !important; +} + +[data-jey-theme="chrome"] .frappe-list .list-row-container:hover .level-right { + background: linear-gradient(90deg, + rgba(224,224,224,0.9) 0%, + rgba(216,216,216,0.92) 100%) !important; + box-shadow: + inset 1px 0 0 rgba(255,255,255,0.55), + -6px 0 10px rgba(0,0,0,0.05) !important; +} + +/* List sidebar */ +[data-jey-theme="chrome"] .layout-side-section { + border-right: 1px solid #aaa !important; +} + + +/* ========================================================================== + Tables / Grids — Metallic Header & Rows + ========================================================================== */ + +[data-jey-theme="chrome"] .frappe-control[data-fieldtype="Table"] .form-grid { + border: 1px solid #999 !important; +} + +[data-jey-theme="chrome"] .grid-heading-row { + background: linear-gradient(45deg, #aaa 3%, #d5d5d5 10%, #bbb 30%, #ddd 50%, #bbb 70%, #d5d5d5 90%, #aaa 97%) !important; + box-shadow: + inset 0 1px 0 rgba(255,255,255,0.6), + inset 0 -1px 0 rgba(0,0,0,0.06) !important; +} + +[data-jey-theme="chrome"] .grid-heading-row .static-area { + color: #444 !important; + text-shadow: 0 1px 0 rgba(255,255,255,0.5); +} + +[data-jey-theme="chrome"] .rows .grid-row:hover { + background: linear-gradient(90deg, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.05) 100%) !important; +} + +[data-jey-theme="chrome"] .rows .grid-row { + border-bottom: 1px solid #b8b8b8 !important; +} + +[data-jey-theme="chrome"] .grid-footer { + background: transparent !important; + border-top: 1px solid #999 !important; +} + +/* --- Active (edit-mode) grid cells: identical look to the static row --- */ +/* Keep the row's bottom border visible even when in edit mode */ +[data-jey-theme="chrome"] .rows .grid-row.editable-row, +[data-jey-theme="chrome"] .rows .grid-row:has(.editable-row) { + border-bottom: 1px solid #b8b8b8 !important; +} + +/* Flatten every form control inside a grid row — no bg, no border, no shadow. + Scoped to .data-row so the row-edit modal (`.form-in-grid`, which is a + sibling of .data-row inside .grid-row) keeps its normal field styling. */ +[data-jey-theme="chrome"] .grid-row > .data-row input.form-control:not([type="checkbox"]):not([type="radio"]), +[data-jey-theme="chrome"] .grid-row > .data-row textarea.form-control, +[data-jey-theme="chrome"] .grid-row > .data-row select.form-control, +[data-jey-theme="chrome"] .grid-row > .data-row select.input-with-feedback, +[data-jey-theme="chrome"] .grid-row > .data-row .awesomplete input, +[data-jey-theme="chrome"] .grid-row > .data-row .like-disabled-input { + background: transparent !important; + border: 0 !important; + box-shadow: none !important; + outline: none !important; + color: #333 !important; + transition: + box-shadow 0.45s cubic-bezier(0.22, 1, 0.36, 1), + background 0.45s cubic-bezier(0.22, 1, 0.36, 1) !important; +} + +/* Focused cell: pressed-in look — same shadow pattern as .btn-default:active */ +[data-jey-theme="chrome"] .grid-row > .data-row input.form-control:not([type="checkbox"]):not([type="radio"]):focus, +[data-jey-theme="chrome"] .grid-row > .data-row textarea.form-control:focus, +[data-jey-theme="chrome"] .grid-row > .data-row select.form-control:focus, +[data-jey-theme="chrome"] .grid-row > .data-row select.input-with-feedback:focus, +[data-jey-theme="chrome"] .grid-row > .data-row .awesomplete input:focus { + background: linear-gradient(45deg, #bbb 5%, #d8d8d8 10%, #c4c4c4 30%, #d0d0d0 50%, #c4c4c4 70%, #d8d8d8 85%, #bbb 95%) !important; + border: 0 !important; + outline: none !important; + box-shadow: + inset 0 1px 0 rgba(255,255,255,0), + inset 0 -1px 0 rgba(0,0,0,0.05), + inset 3px 3px 6px rgba(0,0,0,0.3), + inset -1px -1px 1px rgba(255,255,255,0.15) !important; + transition: + box-shadow 0.45s cubic-bezier(0.22, 1, 0.36, 1), + background 0.45s cubic-bezier(0.22, 1, 0.36, 1) !important; +} + +/* Read-only cells — darker grey bg. Specificity matches the "flatten" rule above + (tag.class + two :not()), so it wins over `background: transparent`. Frappe hides + .field-area on inactive rows, so the tint only shows on the currently-active row. */ +[data-jey-theme="chrome"] .grid-row > .data-row input.form-control:not([type="checkbox"]):not([type="radio"]):disabled, +[data-jey-theme="chrome"] .grid-row > .data-row input.form-control:not([type="checkbox"]):not([type="radio"])[disabled], +[data-jey-theme="chrome"] .grid-row > .data-row input.form-control:not([type="checkbox"]):not([type="radio"])[readonly], +[data-jey-theme="chrome"] .grid-row > .data-row textarea.form-control:disabled, +[data-jey-theme="chrome"] .grid-row > .data-row textarea.form-control[readonly], +[data-jey-theme="chrome"] .grid-row > .data-row select.form-control:disabled, +[data-jey-theme="chrome"] .grid-row > .data-row select.input-with-feedback:disabled { + background: #d8d8d8 !important; + box-shadow: none !important; + color: #666 !important; +} + +/* No pressed-in effect on focus for read-only cells */ +[data-jey-theme="chrome"] .grid-row > .data-row input.form-control:not([type="checkbox"]):not([type="radio"]):disabled:focus, +[data-jey-theme="chrome"] .grid-row > .data-row input.form-control:not([type="checkbox"]):not([type="radio"])[disabled]:focus, +[data-jey-theme="chrome"] .grid-row > .data-row input.form-control:not([type="checkbox"]):not([type="radio"])[readonly]:focus, +[data-jey-theme="chrome"] .grid-row > .data-row textarea.form-control:disabled:focus, +[data-jey-theme="chrome"] .grid-row > .data-row textarea.form-control[readonly]:focus, +[data-jey-theme="chrome"] .grid-row > .data-row select.form-control:disabled:focus { + background: #d8d8d8 !important; + box-shadow: none !important; +} + +/* Match static-row cell height: static cells use padding 10px 8px; form-control in + Frappe uses padding-top:10px, padding-bottom: calc(--padding-md - 3px). Equalise so + the active row doesn't grow or shrink compared to an idle row. */ +[data-jey-theme="chrome"] .grid-row .editable-row .form-control { + padding-top: 10px !important; + padding-bottom: 10px !important; + height: auto !important; +} + + +/* ========================================================================== + Tabs — Metallic Tab Strip + ========================================================================== */ + +[data-jey-theme="chrome"] .form-tabs .nav-link { + color: #666 !important; + text-shadow: 0 1px 0 rgba(255,255,255,0.4); +} + +[data-jey-theme="chrome"] .form-tabs .nav-link:hover { + color: #444 !important; + background: linear-gradient(180deg, rgba(255,255,255,0.3) 0%, rgba(255,255,255,0.05) 100%) !important; +} + +[data-jey-theme="chrome"] .form-tabs .nav-link.active { + color: #333 !important; + background: linear-gradient(180deg, rgba(255,255,255,0.2) 0%, transparent 100%) !important; +} + +[data-jey-theme="chrome"] .form-tabs .nav-link::after { + background: #777; +} + + +/* ========================================================================== + Dropdowns — Chrome Panel + ========================================================================== */ + +[data-jey-theme="chrome"] .dropdown-menu { + background: linear-gradient(45deg, #c0c0c0 3%, #e5e5e5 10%, #d0d0d0 30%, #eaeaea 50%, #d0d0d0 70%, #e5e5e5 90%, #c0c0c0 97%) !important; + border: 1px solid #999 !important; + box-shadow: + 4px 4px 12px rgba(0,0,0,0.18), + -2px -2px 4px rgba(255,255,255,0.15), + inset 0 1px 0 rgba(255,255,255,0.6) !important; +} + +[data-jey-theme="chrome"] .dropdown-item { + color: #444 !important; +} + +[data-jey-theme="chrome"] .dropdown-item:hover, +[data-jey-theme="chrome"] .dropdown-item:focus { + background: linear-gradient(90deg, rgba(255,255,255,0.3) 0%, rgba(255,255,255,0.05) 100%) !important; + color: #222 !important; +} + +[data-jey-theme="chrome"] .dropdown-divider { + border-top-color: #aaa !important; +} + + +/* ========================================================================== + Alerts / Toasts + ========================================================================== */ + +[data-jey-theme="chrome"] .desk-alert { + background: linear-gradient(45deg, #c0c0c0 5%, #e5e5e5 15%, #d0d0d0 40%, #e8e8e8 60%, #d0d0d0 85%, #c0c0c0 95%) !important; + border: 1px solid #999 !important; + box-shadow: + 3px 3px 8px rgba(0,0,0,0.12), + -1px -1px 3px rgba(255,255,255,0.3), + inset 0 1px 0 rgba(255,255,255,0.5) !important; +} + + +/* ========================================================================== + Breadcrumbs + ========================================================================== */ + +[data-jey-theme="chrome"] .breadcrumb-container a { + color: #666 !important; + text-shadow: 0 1px 0 rgba(255,255,255,0.4); +} + +[data-jey-theme="chrome"] .breadcrumb-container a:hover { + color: #333 !important; +} + + +/* ========================================================================== + Timeline + ========================================================================== */ + +[data-jey-theme="chrome"] .new-timeline::before { + border-left-color: #aaa !important; +} + +[data-jey-theme="chrome"] .timeline-dot { + background: linear-gradient(45deg, #bbb, #ddd, #bbb) !important; + border: 1px solid #999 !important; + box-shadow: 1px 1px 2px rgba(0,0,0,0.1), -1px -1px 1px rgba(255,255,255,0.3); +} + + +/* ========================================================================== + Badges / Indicators + ========================================================================== */ + +[data-jey-theme="chrome"] .indicator-pill { + box-shadow: + inset 0 1px 0 rgba(255,255,255,0.3), + 1px 1px 1px rgba(0,0,0,0.08); +} + + +/* ========================================================================== + Popovers + ========================================================================== */ + +[data-jey-theme="chrome"] .popover { + background: linear-gradient(45deg, #c0c0c0 3%, #e5e5e5 10%, #d0d0d0 30%, #eaeaea 50%, #d0d0d0 70%, #e5e5e5 90%, #c0c0c0 97%) !important; + border: 1px solid #999 !important; + box-shadow: + 4px 4px 12px rgba(0,0,0,0.15), + -2px -2px 4px rgba(255,255,255,0.2), + inset 0 1px 0 rgba(255,255,255,0.5) !important; +} + +[data-jey-theme="chrome"] .popover .popover-body { + color: #404040 !important; +} + + +/* ========================================================================== + Module Widget Cards — Chrome Panels with Conic Border Accent + ========================================================================== */ + +[data-jey-theme="chrome"] .ce-block .links-widget-box, +[data-jey-theme="chrome"] .ce-block .number-widget-box { + background: linear-gradient(45deg, #c0c0c0 3%, #e5e5e5 12%, #d0d0d0 30%, #eaeaea 50%, #d0d0d0 70%, #e5e5e5 88%, #c0c0c0 97%) !important; + border: 1px solid #aaa !important; + box-shadow: + 2px 2px 6px rgba(0,0,0,0.1), + -1px -1px 3px rgba(255,255,255,0.35), + inset 0 1px 0 rgba(255,255,255,0.6) !important; +} + +[data-jey-theme="chrome"] .ce-block .links-widget-box::after, +[data-jey-theme="chrome"] .ce-block .number-widget-box::after { + background: conic-gradient(from 140deg, #a0a0a0, #e0e0e0, #888, #d0d0d0, #a0a0a0) !important; +} + +[data-jey-theme="chrome"] .ce-block .links-widget-box:hover, +[data-jey-theme="chrome"] .ce-block .number-widget-box:hover { + box-shadow: + 3px 3px 10px rgba(0,0,0,0.14), + -2px -2px 5px rgba(255,255,255,0.3), + inset 0 1px 0 rgba(255,255,255,0.7) !important; +} + + +/* ========================================================================== + Scrollbars — Metal Cylinder + ========================================================================== */ + +[data-jey-theme="chrome"] ::-webkit-scrollbar { + width: 10px; + height: 10px; +} + +[data-jey-theme="chrome"] ::-webkit-scrollbar-track { + background: linear-gradient(90deg, #c0c0c0, #d0d0d0, #c0c0c0); +} + +[data-jey-theme="chrome"] ::-webkit-scrollbar-thumb { + background: linear-gradient(90deg, #888, #bbb, #999, #bbb, #888); + border-radius: 5px; + border: 1px solid #999; +} + +[data-jey-theme="chrome"] ::-webkit-scrollbar-thumb:hover { + background: linear-gradient(90deg, #777, #aaa, #888, #aaa, #777); +} + + +/* ========================================================================== + Link Colors + ========================================================================== */ + +[data-jey-theme="chrome"] a { + color: #555; +} + +[data-jey-theme="chrome"] a:hover { + color: #333; +} + + +/* ========================================================================== + Print — Reset + ========================================================================== */ + +@media print { + [data-jey-theme="chrome"] body, + [data-jey-theme="chrome"] .page-container, + [data-jey-theme="chrome"] .form-page, + [data-jey-theme="chrome"] .frappe-card, + [data-jey-theme="chrome"] .modal-content, + [data-jey-theme="chrome"] .navbar { + background: white !important; + box-shadow: none !important; + border-color: #ddd !important; + text-shadow: none !important; + } + [data-jey-theme="chrome"] .btn-primary { + background: #333 !important; + text-shadow: none !important; + } +} + +/* ===== theme_modern.css ===== */ +/* ========================================================================== + THEME: Modern [data-jey-theme="modern"] + Frosted glass rounded squares with indigo accents. + ========================================================================== */ + +@keyframes jey-modern-glow { + 0%, 100% { opacity: 0.4; } + 50% { opacity: 0.7; } +} + +/* Outer shell — frosted glass rounded square */ +[data-jey-theme="modern"] .jey-chrome { + width: 72px; height: 72px; border-radius: 22px; position: relative; + background: rgba(255, 255, 255, 0.45); + backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); + border: 1px solid rgba(255, 255, 255, 0.6); + box-shadow: 0 4px 16px rgba(0,0,0,0.06), 0 1px 3px rgba(0,0,0,0.04), inset 0 1px 0 rgba(255,255,255,0.8); + transition: all 0.3s ease; +} + +[data-jey-theme="modern"] .desktop-icon:hover .jey-chrome { + box-shadow: 0 8px 24px rgba(0,0,0,0.1), 0 2px 6px rgba(0,0,0,0.06), inset 0 1px 0 rgba(255,255,255,0.9); + transform: translateY(-2px); +} + +/* Hide chrome ring layers */ +[data-jey-theme="modern"] .jey-chrome-ring, +[data-jey-theme="modern"] .jey-chrome-gap, +[data-jey-theme="modern"] .jey-chrome-ring-inner { + display: none; +} + +/* Face fills rounded square */ +[data-jey-theme="modern"] .jey-chrome-face { + position: absolute; inset: 0; border-radius: 22px; overflow: hidden; + background: transparent; box-shadow: none; + display: flex; align-items: center; justify-content: center; +} + +/* Bottom glow accent */ +[data-jey-theme="modern"] .jey-face-glow { + position: absolute; bottom: -4px; left: 16px; right: 16px; height: 20px; + border-radius: 50%; + background: radial-gradient(ellipse, rgba(99, 102, 241, 0.35) 0%, transparent 70%); + animation: jey-modern-glow 4s ease-in-out infinite; + pointer-events: none; z-index: 0; +} + +/* Top glass highlight */ +[data-jey-theme="modern"] .jey-face-reflection { + position: absolute; top: 0; left: 0; right: 0; height: 50%; + border-radius: 22px 22px 0 0; + background: linear-gradient(180deg, rgba(255,255,255,0.5) 0%, transparent 100%); + pointer-events: none; z-index: 1; animation: none; +} + +/* Icon — indigo accent */ +[data-jey-theme="modern"] .jey-chrome-face .jey-icon { + width: 26px !important; height: 26px !important; + stroke: #4f46e5 !important; fill: none !important; + stroke-width: 1.6 !important; stroke-linecap: round !important; stroke-linejoin: round !important; + filter: drop-shadow(0 1px 2px rgba(79, 70, 229, 0.2)) !important; + position: relative; z-index: 2; +} + +/* Rounded square container */ +[data-jey-theme="modern"] .icon-container.jey-chrome-done { + border-radius: 22px !important; +} diff --git a/jey_theme/public/css/theme_chrome.css b/jey_theme/public/css/theme_chrome.css deleted file mode 100644 index d2ccd80..0000000 --- a/jey_theme/public/css/theme_chrome.css +++ /dev/null @@ -1,1009 +0,0 @@ -/* ========================================================================== - THEME: Chrome [data-jey-theme="chrome"] - Metallic chrome button with conic-gradient rings and rotating glow. - ========================================================================== */ - -@keyframes jey-chrome-rotate-glow { - from { transform: rotate(0deg); } - to { transform: rotate(360deg); } -} - -@keyframes jey-chrome-face-light { - 0% { background: radial-gradient(circle at 25% 20%, rgba(255,255,255,0.5) 0%, transparent 55%); } - 25% { background: radial-gradient(circle at 75% 25%, rgba(255,255,255,0.5) 0%, transparent 55%); } - 50% { background: radial-gradient(circle at 70% 75%, rgba(255,255,255,0.35) 0%, transparent 55%); } - 75% { background: radial-gradient(circle at 25% 70%, rgba(255,255,255,0.35) 0%, transparent 55%); } - 100% { background: radial-gradient(circle at 25% 20%, rgba(255,255,255,0.5) 0%, transparent 55%); } -} - -@keyframes jey-chrome-refl-drift { - 0%, 100% { top: 12%; opacity: 0.7; } - 50% { top: 18%; opacity: 0.5; } -} - -[data-jey-theme="chrome"] .jey-chrome { - width: 72px; height: 72px; border-radius: 50%; position: relative; - background: radial-gradient(ellipse at 35% 20%, rgba(255,255,255,0.7) 0%, transparent 55%), linear-gradient(180deg, #e0e0e0 0%, #b8b8b8 100%); - box-shadow: 0 4px 10px rgba(0,0,0,0.18), 0 1px 3px rgba(0,0,0,0.1), inset 0 1px 1px rgba(255,255,255,0.7); - transition: box-shadow 0.3s ease; -} - -[data-jey-theme="chrome"] .desktop-icon:hover .jey-chrome { - box-shadow: 0 6px 16px rgba(0,0,0,0.22), 0 1px 3px rgba(0,0,0,0.12), 0 0 14px rgba(255,255,255,0.2), inset 0 1px 1px rgba(255,255,255,0.7); -} - -[data-jey-theme="chrome"] .jey-chrome-ring { - position: absolute; inset: 2px; border-radius: 50%; - background: conic-gradient(from 140deg, #a0a0a0 0deg, #f2f2f2 40deg, #777 80deg, #e5e5e5 120deg, #959595 170deg, #ededed 210deg, #808080 260deg, #d8d8d8 310deg, #a0a0a0 360deg); - box-shadow: inset 0 1px 2px rgba(0,0,0,0.2); overflow: hidden; -} - -[data-jey-theme="chrome"] .jey-ring-glow { - position: absolute; inset: -10px; border-radius: 50%; - background: conic-gradient(from 0deg, transparent 0deg, transparent 140deg, rgba(255,255,255,0.55) 165deg, rgba(255,255,255,0.8) 180deg, rgba(255,255,255,0.55) 195deg, transparent 220deg, transparent 360deg); - animation: jey-chrome-rotate-glow 8s linear infinite; pointer-events: none; -} - -[data-jey-theme="chrome"] .jey-chrome-gap { - position: absolute; inset: 5px; border-radius: 50%; - background: linear-gradient(180deg, #888 0%, #aaa 50%, #999 100%); - box-shadow: inset 0 1px 3px rgba(0,0,0,0.35), inset 0 -1px 1px rgba(255,255,255,0.2); -} - -[data-jey-theme="chrome"] .jey-chrome-ring-inner { - position: absolute; inset: 6px; border-radius: 50%; - background: conic-gradient(from 200deg, #b0b0b0 0deg, #eee 30deg, #999 70deg, #ddd 110deg, #aaa 160deg, #f0f0f0 200deg, #909090 250deg, #ccc 300deg, #b0b0b0 360deg); - box-shadow: inset 0 1px 1px rgba(0,0,0,0.15); -} - -[data-jey-theme="chrome"] .jey-chrome-face { - position: absolute; inset: 9px; border-radius: 50%; overflow: hidden; - background: linear-gradient(168deg, #f4f4f4 0%, #e0e0e0 45%, #d4d4d4 100%); - box-shadow: inset 0 3px 7px rgba(255,255,255,0.7), inset 0 -3px 6px rgba(0,0,0,0.06); - display: flex; align-items: center; justify-content: center; -} - -[data-jey-theme="chrome"] .jey-face-glow { - position: absolute; inset: 0; border-radius: 50%; - animation: jey-chrome-face-light 8s ease-in-out infinite; - pointer-events: none; z-index: 1; -} - -[data-jey-theme="chrome"] .jey-face-reflection { - position: absolute; top: 15%; left: 10%; width: 80%; height: 30%; - background: linear-gradient(180deg, rgba(255,255,255,0.6) 0%, rgba(255,255,255,0.15) 60%, transparent 100%); - border-radius: 50%; pointer-events: none; z-index: 1; - animation: jey-chrome-refl-drift 10s ease-in-out infinite; -} - -[data-jey-theme="chrome"] .jey-chrome-face .jey-icon { - width: 24px !important; height: 24px !important; - stroke: #505050 !important; fill: none !important; - stroke-width: 1.8 !important; stroke-linecap: round !important; stroke-linejoin: round !important; - filter: drop-shadow(0 1px 0 rgba(255,255,255,0.5)) !important; - position: relative; z-index: 2; -} - - -/* ========================================================================== - FULL APP CHROME THEME - Real metallic chrome with 45° multi-stop reflective gradients, - brushed metal textures, beveled edges, and conic-gradient accents. - ========================================================================== */ - -/* --- Shine sweep animation for interactive elements --- */ -@keyframes jey-chrome-shine { - 0% { transform: translateX(-100%) skewX(-15deg); } - 100% { transform: translateX(200%) skewX(-15deg); } -} - -/* ========================================================================== - CSS Variable Overrides - ========================================================================== */ - -[data-jey-theme="chrome"] { - /* --- Surfaces --- */ - --bg-color: #d8d8d8; - --fg-color: #e8e8e8; - --card-bg: #e0e0e0; - --subtle-accent: #d4d4d4; - --subtle-fg: #d0d0d0; - --fg-hover-color: #ccc; - --highlight-color: #d4d4d4; - --navbar-bg: #d0d0d0; - --modal-bg: #ddd; - --toast-bg: #ddd; - --popover-bg: #e0e0e0; - --control-bg: #d5d5d5; - --control-bg-on-gray: #ccc; - --awesomebar-focus-bg: #e8e8e8; - --disabled-control-bg: #d0d0d0; - --skeleton-bg: #c8c8c8; - --surface-menu-bar: #d4d4d4; - --surface-white: #e0e0e0; - --surface-gray-1: #d8d8d8; - --surface-gray-2: #d0d0d0; - --surface-gray-3: #c8c8c8; - --surface-gray-4: #bbb; - --surface-modal: #ddd; - --placeholder-color: #ccc; - - /* --- Sidebar --- */ - --sidebar-hover-color: #c8c8c8; - --sidebar-active-color: #d8d8d8; - --sidebar-border-color: #aaa; - --divider-color: #b0b0b0; - - /* --- Text --- */ - --heading-color: #333; - --text-color: #404040; - --text-neutral: #333; - --text-muted: #666; - --text-light: #888; - --text-dark: #f0f0f0; - --disabled-text-color: #888; - --ink-gray-7: #555; - --ink-gray-8: #404040; - --ink-gray-9: #333; - - /* --- Borders --- */ - --border-color: #aaa; - --dark-border-color: #999; - --table-border-color: #aaa; - --btn-group-border-color: #999; - --outline-gray-1: #b0b0b0; - --outline-gray-2: #999; - --outline-gray-modals: #aaa; - - /* --- Primary / Buttons --- */ - --primary: #555; - --brand-color: #555; - --btn-primary: #777; - --btn-default-bg: #ccc; - --btn-default-hover-bg: #bbb; - --btn-ghost-hover-bg: #c0c0c0; - --border-primary: #777; - - /* --- Shadows (beveled metallic) --- */ - --shadow-xs: 1px 1px 2px rgba(0,0,0,0.15), -1px -1px 1px rgba(255,255,255,0.5); - --shadow-sm: 1px 1px 3px rgba(0,0,0,0.18), -1px -1px 2px rgba(255,255,255,0.45); - --shadow-base: 2px 2px 4px rgba(0,0,0,0.15), -1px -1px 2px rgba(255,255,255,0.4); - --shadow-md: 2px 2px 6px rgba(0,0,0,0.18), -1px -1px 3px rgba(255,255,255,0.35); - --shadow-lg: 3px 3px 10px rgba(0,0,0,0.15), -2px -2px 5px rgba(255,255,255,0.3); - --shadow-xl: 4px 4px 16px rgba(0,0,0,0.18), -2px -2px 6px rgba(255,255,255,0.25); - --shadow-2xl: 6px 6px 24px rgba(0,0,0,0.2), -3px -3px 8px rgba(255,255,255,0.2); - --shadow-inset: inset 0px -1px 0px #999; - --btn-shadow: 1px 1px 2px rgba(0,0,0,0.15), -1px -1px 1px rgba(255,255,255,0.4); - --card-shadow: 2px 2px 6px rgba(0,0,0,0.12), -1px -1px 3px rgba(255,255,255,0.4); - --modal-shadow: 6px 6px 30px rgba(0,0,0,0.3), -3px -3px 10px rgba(255,255,255,0.15); - --awesomebar-shadow: 3px 3px 12px rgba(0,0,0,0.15), -2px -2px 6px rgba(255,255,255,0.3); - - /* --- Focus rings --- */ - --focus-default: 0 0 0 2px rgba(150,150,150,0.5); - - /* --- Scrollbar --- */ - --scrollbar-thumb-color: #999; - --scrollbar-track-color: #c8c8c8; - - /* --- Checkbox / Switch --- */ - --switch-bg: #aaa; - --checkbox-color: #555; - --checkbox-gradient: linear-gradient(180deg, #777 0%, #666 100%); - - /* --- Timeline --- */ - --timeline-badge-color: #555; - --timeline-badge-bg: #ccc; - - /* --- Date picker --- */ - --date-active-bg: #777; - --date-active-text: #f0f0f0; - --date-range-bg: #ccc; - - /* --- Progress / Misc --- */ - --progress-bar-bg: #777; - --code-block-bg: #444; - --code-block-text: #ccc; -} - - -/* ========================================================================== - Body — Brushed Metal Background - 3 layered repeating-gradients at different lengths = realistic grain - ========================================================================== */ - -[data-jey-theme="chrome"] body { - background: - radial-gradient(ellipse at 25% 15%, rgba(255,255,255,0.45) 0%, transparent 50%), - radial-gradient(ellipse at 80% 80%, rgba(255,255,255,0.2) 0%, transparent 45%), - radial-gradient(ellipse at 50% 50%, rgba(0,0,0,0.03) 0%, transparent 70%), - linear-gradient(168deg, #d8d8d8 0%, #c4c4c4 40%, #b8b8b8 70%, #c8c8c8 100%) !important; - background-attachment: fixed !important; -} - -[data-jey-theme="chrome"] .page-container { - background: transparent !important; -} - - -/* ========================================================================== - Navbar — Reflective Chrome Bar - 45° multi-stop gradient simulating polished metal reflection - ========================================================================== */ - -[data-jey-theme="chrome"] .navbar { - background: - linear-gradient(45deg, #aaa 2%, #ddd 8%, #bbb 18%, #e8e8e8 30%, #ccc 45%, #eee 55%, #bbb 68%, #ddd 80%, #aaa 95%) !important; - border-bottom: 1px solid #888 !important; - box-shadow: - inset 0 1px 0 rgba(255,255,255,0.7), - inset 0 -1px 0 rgba(0,0,0,0.08), - 0 2px 4px rgba(0,0,0,0.15) !important; -} - -[data-jey-theme="chrome"] .navbar .navbar-nav .nav-link { - color: #444 !important; - text-shadow: 0 1px 0 rgba(255,255,255,0.5); -} - -[data-jey-theme="chrome"] .navbar .navbar-nav .nav-link:hover { - color: #222 !important; - background: linear-gradient(180deg, rgba(255,255,255,0.35) 0%, rgba(255,255,255,0.1) 100%) !important; - border-radius: 6px; -} - - -/* ========================================================================== - Awesomebar — Sunken Metal Slot - ========================================================================== */ - -[data-jey-theme="chrome"] .search-bar input { - background: linear-gradient(180deg, #c0c0c0 0%, #d0d0d0 100%) !important; - border: 1px solid #999 !important; - box-shadow: - inset 0 2px 4px rgba(0,0,0,0.15), - inset 0 0 0 1px rgba(0,0,0,0.05), - 0 1px 0 rgba(255,255,255,0.5) !important; - color: #333 !important; - border-radius: 6px !important; -} - -[data-jey-theme="chrome"] .search-bar input:focus { - background: linear-gradient(180deg, #d5d5d5 0%, #e0e0e0 100%) !important; - border-color: #888 !important; - box-shadow: - inset 0 1px 3px rgba(0,0,0,0.1), - 0 0 0 2px rgba(150,150,150,0.3), - 0 1px 0 rgba(255,255,255,0.4) !important; -} - -[data-jey-theme="chrome"] .search-bar .search-icon { - color: #777 !important; -} - - -/* ========================================================================== - Sidebar — Brushed Metal Panel - ========================================================================== */ - -[data-jey-theme="chrome"] .body-sidebar-container { - background: linear-gradient(160deg, #b8b8b8 0%, #f0f0f0 12%, #c0c0c0 28%, #f4f4f4 42%, #b8b8b8 58%, #ededed 72%, #aaa 88%, #ddd 100%) !important; - border-right: 1px solid #888 !important; - box-shadow: - inset -1px 0 0 rgba(255,255,255,0.6), - inset 0 1px 0 rgba(255,255,255,0.7), - inset 0 -1px 0 rgba(0,0,0,0.1), - 2px 0 8px rgba(0,0,0,0.12) !important; -} - -[data-jey-theme="chrome"] .body-sidebar-container .body-sidebar, -[data-jey-theme="chrome"] .body-sidebar-container .body-sidebar-top, -[data-jey-theme="chrome"] .body-sidebar-container .body-sidebar-bottom, -[data-jey-theme="chrome"] .body-sidebar-container .body-sidebar-cards { - background: transparent !important; -} - -[data-jey-theme="chrome"] .body-sidebar .standard-sidebar-item .item-anchor:hover { - background: linear-gradient(90deg, rgba(255,255,255,0.25) 0%, rgba(255,255,255,0.05) 100%) !important; -} - -[data-jey-theme="chrome"] .body-sidebar .standard-sidebar-item.active-sidebar .item-anchor { - background: linear-gradient(45deg, #bbb 5%, #ddd 30%, #ccc 60%, #ddd 90%) !important; - box-shadow: - inset 0 1px 0 rgba(255,255,255,0.6), - inset 0 -1px 0 rgba(0,0,0,0.08), - 1px 1px 2px rgba(0,0,0,0.1), - -1px -1px 1px rgba(255,255,255,0.3) !important; - border-radius: 8px; -} - -[data-jey-theme="chrome"] .body-sidebar .sidebar-item-icon { - color: #666 !important; - filter: drop-shadow(0 1px 0 rgba(255,255,255,0.5)); -} - - -/* ========================================================================== - Context Menu — Themed icons - ========================================================================== */ - -[data-jey-theme="chrome"] .frappe-menu .menu-item-icon .jey-icon { - width: 20px !important; - height: 20px !important; - stroke: #555 !important; - fill: none !important; - stroke-width: 1.8 !important; - stroke-linecap: round !important; - stroke-linejoin: round !important; - filter: drop-shadow(0 1px 0 rgba(255,255,255,0.4)) !important; -} - - -/* ========================================================================== - Sidebar Header — Themed icon - ========================================================================== */ - -[data-jey-theme="chrome"] .sidebar-header .header-logo .jey-icon { - width: 22px !important; - height: 22px !important; - stroke: #555 !important; - fill: none !important; - stroke-width: 1.8 !important; - stroke-linecap: round !important; - stroke-linejoin: round !important; - filter: drop-shadow(0 1px 0 rgba(255,255,255,0.4)) !important; -} - - -/* ========================================================================== - Primary Buttons — Polished Chrome with Shine - ========================================================================== */ - -[data-jey-theme="chrome"] .btn-primary { - background: linear-gradient(45deg, #666 5%, #aaa 10%, #888 30%, #999 50%, #888 70%, #aaa 85%, #666 95%) !important; - color: #f0f0f0 !important; - border: 1px solid #555 !important; - box-shadow: - 2px 2px 4px rgba(0,0,0,0.2), - -1px -1px 2px rgba(255,255,255,0.15), - inset 0 1px 0 rgba(255,255,255,0.3), - inset 0 -1px 0 rgba(0,0,0,0.15), - inset 2px 2px 5px rgba(0,0,0,0), - inset -1px -1px 2px rgba(255,255,255,0) !important; - text-shadow: 0 -1px 0 rgba(0,0,0,0.25); - position: relative; - overflow: hidden; - transition: - box-shadow 0.25s cubic-bezier(0.22, 1, 0.36, 1), - border-color 0.25s cubic-bezier(0.22, 1, 0.36, 1) !important; -} - -[data-jey-theme="chrome"] .btn-primary::before { - content: ""; - position: absolute; - top: 0; left: -50%; width: 30%; height: 100%; - background: linear-gradient(90deg, transparent, rgba(255,255,255,0.25), transparent); - transform: skewX(-15deg); - transition: left 0.4s ease; - pointer-events: none; -} - -[data-jey-theme="chrome"] .btn-primary:hover::before { - left: 120%; -} - -[data-jey-theme="chrome"] .btn-primary:hover { - background: linear-gradient(45deg, #777 5%, #bbb 10%, #999 30%, #aaa 50%, #999 70%, #bbb 85%, #777 95%) !important; - box-shadow: - 2px 2px 6px rgba(0,0,0,0.25), - -1px -1px 3px rgba(255,255,255,0.2), - inset 0 1px 0 rgba(255,255,255,0.35), - inset 0 -1px 0 rgba(0,0,0,0.15), - inset 2px 2px 5px rgba(0,0,0,0), - inset -1px -1px 2px rgba(255,255,255,0) !important; -} - -[data-jey-theme="chrome"] .btn-primary:active { - background: linear-gradient(45deg, #555 5%, #888 10%, #777 30%, #888 50%, #777 70%, #888 85%, #555 95%) !important; - box-shadow: - 2px 2px 4px rgba(0,0,0,0), - -1px -1px 2px rgba(255,255,255,0), - inset 0 1px 0 rgba(255,255,255,0), - inset 0 -1px 0 rgba(0,0,0,0.05), - inset 3px 3px 7px rgba(0,0,0,0.35), - inset -1px -1px 2px rgba(255,255,255,0.12) !important; - transition: box-shadow 0.08s ease-out !important; -} - - -/* ========================================================================== - Default/Secondary Buttons — Brushed Metal - ========================================================================== */ - -[data-jey-theme="chrome"] .btn-default, -[data-jey-theme="chrome"] .btn-secondary { - background: linear-gradient(45deg, #bbb 5%, #eee 10%, #ccc 30%, #e0e0e0 50%, #ccc 70%, #eee 85%, #bbb 95%) !important; - border: 1px solid #999 !important; - color: #444 !important; - box-shadow: - 1px 1px 3px rgba(0,0,0,0.12), - -1px -1px 2px rgba(255,255,255,0.4), - inset 0 1px 0 rgba(255,255,255,0.6), - inset 0 -1px 0 rgba(0,0,0,0.06), - inset 2px 2px 4px rgba(0,0,0,0), - inset -1px -1px 1px rgba(255,255,255,0) !important; - text-shadow: 0 1px 0 rgba(255,255,255,0.5); - transition: - box-shadow 0.25s cubic-bezier(0.22, 1, 0.36, 1), - border-color 0.25s cubic-bezier(0.22, 1, 0.36, 1) !important; -} - -[data-jey-theme="chrome"] .btn-default:hover, -[data-jey-theme="chrome"] .btn-secondary:hover { - background: linear-gradient(45deg, #c0c0c0 5%, #f2f2f2 10%, #d4d4d4 30%, #e8e8e8 50%, #d4d4d4 70%, #f2f2f2 85%, #c0c0c0 95%) !important; - border-color: #888 !important; - box-shadow: - 2px 2px 4px rgba(0,0,0,0.15), - -1px -1px 2px rgba(255,255,255,0.4), - inset 0 1px 0 rgba(255,255,255,0.7), - inset 0 -1px 0 rgba(0,0,0,0.06), - inset 2px 2px 4px rgba(0,0,0,0), - inset -1px -1px 1px rgba(255,255,255,0) !important; -} - -[data-jey-theme="chrome"] .btn-default:active, -[data-jey-theme="chrome"] .btn-secondary:active { - background: linear-gradient(45deg, #aaa 5%, #d8d8d8 10%, #bbb 30%, #ccc 50%, #bbb 70%, #d8d8d8 85%, #aaa 95%) !important; - box-shadow: - 1px 1px 3px rgba(0,0,0,0), - -1px -1px 2px rgba(255,255,255,0), - inset 0 1px 0 rgba(255,255,255,0), - inset 0 -1px 0 rgba(0,0,0,0.05), - inset 3px 3px 6px rgba(0,0,0,0.3), - inset -1px -1px 1px rgba(255,255,255,0.15) !important; - transition: box-shadow 0.08s ease-out !important; -} - -/* Danger */ -[data-jey-theme="chrome"] .btn-danger { - background: linear-gradient(45deg, #b33 5%, #e88 10%, #c55 30%, #d77 50%, #c55 70%, #e88 85%, #b33 95%) !important; - color: #fff !important; - border: 1px solid #944 !important; - box-shadow: - 2px 2px 4px rgba(0,0,0,0.2), - -1px -1px 2px rgba(255,255,255,0.1), - inset 0 1px 0 rgba(255,255,255,0.25) !important; - text-shadow: 0 -1px 0 rgba(0,0,0,0.2); -} - -[data-jey-theme="chrome"] .btn-danger:hover { - background: linear-gradient(45deg, #c44 5%, #f99 10%, #d66 30%, #e88 50%, #d66 70%, #f99 85%, #c44 95%) !important; -} - -/* Ghost */ -[data-jey-theme="chrome"] .btn-ghost:hover { - background: linear-gradient(180deg, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.05) 100%) !important; -} - - -/* ========================================================================== - Input Fields — Sunken Metal Inset - ========================================================================== */ - -[data-jey-theme="chrome"] input.form-control:not([type="checkbox"]):not([type="radio"]), -[data-jey-theme="chrome"] textarea.form-control { - background: #d0d0d0 !important; - border: 1px solid #999 !important; - color: #333 !important; - box-shadow: - inset 1px 1px 2px rgba(0,0,0,0.10), - inset -1px -1px 1px rgba(255,255,255,0.25), - inset 0 1px 1px rgba(0,0,0,0.04) !important; - transition: - background-color 0.45s cubic-bezier(0.22, 1, 0.36, 1), - border-color 0.45s cubic-bezier(0.22, 1, 0.36, 1), - box-shadow 0.45s cubic-bezier(0.22, 1, 0.36, 1) !important; -} - -[data-jey-theme="chrome"] input.form-control:not([type="checkbox"]):not([type="radio"]):focus, -[data-jey-theme="chrome"] textarea.form-control:focus { - background: #cbcbcb !important; - border-color: #777 !important; - box-shadow: - inset 4px 4px 8px rgba(0,0,0,0.28), - inset -1px -1px 1px rgba(255,255,255,0.15), - inset 0 3px 5px rgba(0,0,0,0.18) !important; -} - -[data-jey-theme="chrome"] .form-control:disabled, -[data-jey-theme="chrome"] .form-control[disabled] { - background: #d8d8d8 !important; - color: #888 !important; - box-shadow: inset 1px 1px 2px rgba(0,0,0,0.06) !important; -} - -[data-jey-theme="chrome"] .frappe-control .control-label, -[data-jey-theme="chrome"] .frappe-control label { - color: #444 !important; - text-shadow: 0 1px 0 rgba(255,255,255,0.5); -} - -[data-jey-theme="chrome"] select.form-control, -[data-jey-theme="chrome"] select.input-with-feedback { - background: #d0d0d0 !important; -} - - -/* ========================================================================== - Forms / Cards — Raised Metal Panels - ========================================================================== */ - -[data-jey-theme="chrome"] .form-page { - background: - linear-gradient(45deg, #ccc 3%, #e8e8e8 10%, #d5d5d5 25%, #eee 45%, #d8d8d8 60%, #e8e8e8 80%, #ccc 97%) !important; - border: 1px solid #aaa !important; - box-shadow: - 3px 3px 8px rgba(0,0,0,0.12), - -2px -2px 4px rgba(255,255,255,0.4), - inset 0 1px 0 rgba(255,255,255,0.7), - inset 0 -1px 0 rgba(0,0,0,0.05) !important; - border-radius: var(--border-radius-lg) !important; -} - -[data-jey-theme="chrome"] .form-section .section-head { - color: #444 !important; - text-shadow: 0 1px 0 rgba(255,255,255,0.5); - border-bottom: 1px solid #b0b0b0 !important; - position: relative; -} - -[data-jey-theme="chrome"] .frappe-card { - background: linear-gradient(45deg, #c8c8c8 3%, #e5e5e5 12%, #d4d4d4 30%, #eaeaea 50%, #d4d4d4 70%, #e5e5e5 88%, #c8c8c8 97%) !important; - border: 1px solid #aaa !important; - box-shadow: - 2px 2px 6px rgba(0,0,0,0.1), - -1px -1px 3px rgba(255,255,255,0.4), - inset 0 1px 0 rgba(255,255,255,0.6) !important; -} - -/* Form sidebar */ -[data-jey-theme="chrome"] .form-sidebar { - border-left: 1px solid #aaa !important; -} - -[data-jey-theme="chrome"] .form-sidebar .sidebar-section { - border-bottom: 1px solid #b0b0b0 !important; -} - - -/* ========================================================================== - Modals / Dialogs — Chrome Frame with Conic-Gradient Border - ========================================================================== */ - -[data-jey-theme="chrome"] .modal-content { - background: linear-gradient(45deg, #ccc 3%, #e8e8e8 12%, #d5d5d5 30%, #eee 50%, #d5d5d5 70%, #e8e8e8 88%, #ccc 97%) !important; - border: 1px solid #999 !important; - box-shadow: - 6px 6px 24px rgba(0,0,0,0.25), - -3px -3px 8px rgba(255,255,255,0.15), - inset 0 1px 0 rgba(255,255,255,0.6), - inset 0 0 0 1px rgba(255,255,255,0.35) !important; -} - -[data-jey-theme="chrome"] .modal-header { - background: linear-gradient(45deg, #b0b0b0 5%, #ddd 12%, #c0c0c0 30%, #e5e5e5 50%, #c0c0c0 70%, #ddd 88%, #b0b0b0 95%) !important; - border-bottom: 1px solid #999 !important; - box-shadow: - inset 0 1px 0 rgba(255,255,255,0.6), - inset 0 -1px 0 rgba(0,0,0,0.06) !important; -} - -[data-jey-theme="chrome"] .modal-header .modal-title { - color: #333 !important; - text-shadow: 0 1px 0 rgba(255,255,255,0.5); -} - -[data-jey-theme="chrome"] .modal-footer { - background: linear-gradient(45deg, #b8b8b8 5%, #d8d8d8 20%, #c0c0c0 50%, #d8d8d8 80%, #b8b8b8 95%) !important; - border-top: 1px solid #999 !important; -} - -[data-jey-theme="chrome"] .modal-backdrop { - background-color: rgba(40,40,40,0.55) !important; -} - - -/* ========================================================================== - Page Head — Chrome Title Bar - ========================================================================== */ - -[data-jey-theme="chrome"] .page-head { - background: linear-gradient(45deg, #b8b8b8 3%, #e0e0e0 10%, #c8c8c8 25%, #eaeaea 45%, #ccc 60%, #e0e0e0 80%, #b8b8b8 97%) !important; - border-bottom: 1px solid #999 !important; - box-shadow: - inset 0 1px 0 rgba(255,255,255,0.6), - inset 0 -1px 0 rgba(0,0,0,0.06), - 0 2px 4px rgba(0,0,0,0.08) !important; -} - -[data-jey-theme="chrome"] .page-head .title-text { - color: #333 !important; - text-shadow: 0 1px 0 rgba(255,255,255,0.5); -} - - -/* ========================================================================== - List View — Metal Table - ========================================================================== */ - -[data-jey-theme="chrome"] .list-row-head { - background: linear-gradient(45deg, #aaa 3%, #d8d8d8 10%, #bbb 25%, #e0e0e0 45%, #bbb 60%, #d8d8d8 80%, #aaa 97%) !important; - box-shadow: - inset 0 1px 0 rgba(255,255,255,0.6), - inset 0 -1px 0 rgba(0,0,0,0.06) !important; -} - -[data-jey-theme="chrome"] .list-row-container .list-row { - border-bottom: 1px solid #b8b8b8 !important; -} - -[data-jey-theme="chrome"] .list-row-container:hover { - background: linear-gradient(90deg, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.05) 100%) !important; -} - -[data-jey-theme="chrome"] .result .list-row-container .level-left .list-row--col .level-left .ellipsis { - color: #404040 !important; -} - -/* Sticky right column: blend with metallic body + visible separator. - Uses a translucent bg so it reads continuous with body gradient while - still covering horizontally-overflowing columns under it. */ -[data-jey-theme="chrome"] .frappe-list .list-row .level-right, -[data-jey-theme="chrome"] .frappe-list .list-row-head .level-right { - background: linear-gradient(90deg, - rgba(216,216,216,0.85) 0%, - rgba(208,208,208,0.88) 100%) !important; - backdrop-filter: blur(3px); - -webkit-backdrop-filter: blur(3px); - border-left: 1px solid #a0a0a0 !important; - box-shadow: inset 1px 0 0 rgba(255,255,255,0.5) !important; -} - -[data-jey-theme="chrome"] .frappe-list .list-row-container:hover .level-right { - background: linear-gradient(90deg, - rgba(224,224,224,0.9) 0%, - rgba(216,216,216,0.92) 100%) !important; - box-shadow: - inset 1px 0 0 rgba(255,255,255,0.55), - -6px 0 10px rgba(0,0,0,0.05) !important; -} - -/* List sidebar */ -[data-jey-theme="chrome"] .layout-side-section { - border-right: 1px solid #aaa !important; -} - - -/* ========================================================================== - Tables / Grids — Metallic Header & Rows - ========================================================================== */ - -[data-jey-theme="chrome"] .frappe-control[data-fieldtype="Table"] .form-grid { - border: 1px solid #999 !important; -} - -[data-jey-theme="chrome"] .grid-heading-row { - background: linear-gradient(45deg, #aaa 3%, #d5d5d5 10%, #bbb 30%, #ddd 50%, #bbb 70%, #d5d5d5 90%, #aaa 97%) !important; - box-shadow: - inset 0 1px 0 rgba(255,255,255,0.6), - inset 0 -1px 0 rgba(0,0,0,0.06) !important; -} - -[data-jey-theme="chrome"] .grid-heading-row .static-area { - color: #444 !important; - text-shadow: 0 1px 0 rgba(255,255,255,0.5); -} - -[data-jey-theme="chrome"] .rows .grid-row:hover { - background: linear-gradient(90deg, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.05) 100%) !important; -} - -[data-jey-theme="chrome"] .rows .grid-row { - border-bottom: 1px solid #b8b8b8 !important; -} - -[data-jey-theme="chrome"] .grid-footer { - background: transparent !important; - border-top: 1px solid #999 !important; -} - -/* --- Active (edit-mode) grid cells: identical look to the static row --- */ -/* Keep the row's bottom border visible even when in edit mode */ -[data-jey-theme="chrome"] .rows .grid-row.editable-row, -[data-jey-theme="chrome"] .rows .grid-row:has(.editable-row) { - border-bottom: 1px solid #b8b8b8 !important; -} - -/* Flatten every form control inside a grid row — no bg, no border, no shadow. - Scoped to .data-row so the row-edit modal (`.form-in-grid`, which is a - sibling of .data-row inside .grid-row) keeps its normal field styling. */ -[data-jey-theme="chrome"] .grid-row > .data-row input.form-control:not([type="checkbox"]):not([type="radio"]), -[data-jey-theme="chrome"] .grid-row > .data-row textarea.form-control, -[data-jey-theme="chrome"] .grid-row > .data-row select.form-control, -[data-jey-theme="chrome"] .grid-row > .data-row select.input-with-feedback, -[data-jey-theme="chrome"] .grid-row > .data-row .awesomplete input, -[data-jey-theme="chrome"] .grid-row > .data-row .like-disabled-input { - background: transparent !important; - border: 0 !important; - box-shadow: none !important; - outline: none !important; - color: #333 !important; - transition: - box-shadow 0.45s cubic-bezier(0.22, 1, 0.36, 1), - background 0.45s cubic-bezier(0.22, 1, 0.36, 1) !important; -} - -/* Focused cell: pressed-in look — same shadow pattern as .btn-default:active */ -[data-jey-theme="chrome"] .grid-row > .data-row input.form-control:not([type="checkbox"]):not([type="radio"]):focus, -[data-jey-theme="chrome"] .grid-row > .data-row textarea.form-control:focus, -[data-jey-theme="chrome"] .grid-row > .data-row select.form-control:focus, -[data-jey-theme="chrome"] .grid-row > .data-row select.input-with-feedback:focus, -[data-jey-theme="chrome"] .grid-row > .data-row .awesomplete input:focus { - background: linear-gradient(45deg, #bbb 5%, #d8d8d8 10%, #c4c4c4 30%, #d0d0d0 50%, #c4c4c4 70%, #d8d8d8 85%, #bbb 95%) !important; - border: 0 !important; - outline: none !important; - box-shadow: - inset 0 1px 0 rgba(255,255,255,0), - inset 0 -1px 0 rgba(0,0,0,0.05), - inset 3px 3px 6px rgba(0,0,0,0.3), - inset -1px -1px 1px rgba(255,255,255,0.15) !important; - transition: - box-shadow 0.45s cubic-bezier(0.22, 1, 0.36, 1), - background 0.45s cubic-bezier(0.22, 1, 0.36, 1) !important; -} - -/* Read-only cells — darker grey bg. Specificity matches the "flatten" rule above - (tag.class + two :not()), so it wins over `background: transparent`. Frappe hides - .field-area on inactive rows, so the tint only shows on the currently-active row. */ -[data-jey-theme="chrome"] .grid-row > .data-row input.form-control:not([type="checkbox"]):not([type="radio"]):disabled, -[data-jey-theme="chrome"] .grid-row > .data-row input.form-control:not([type="checkbox"]):not([type="radio"])[disabled], -[data-jey-theme="chrome"] .grid-row > .data-row input.form-control:not([type="checkbox"]):not([type="radio"])[readonly], -[data-jey-theme="chrome"] .grid-row > .data-row textarea.form-control:disabled, -[data-jey-theme="chrome"] .grid-row > .data-row textarea.form-control[readonly], -[data-jey-theme="chrome"] .grid-row > .data-row select.form-control:disabled, -[data-jey-theme="chrome"] .grid-row > .data-row select.input-with-feedback:disabled { - background: #d8d8d8 !important; - box-shadow: none !important; - color: #666 !important; -} - -/* No pressed-in effect on focus for read-only cells */ -[data-jey-theme="chrome"] .grid-row > .data-row input.form-control:not([type="checkbox"]):not([type="radio"]):disabled:focus, -[data-jey-theme="chrome"] .grid-row > .data-row input.form-control:not([type="checkbox"]):not([type="radio"])[disabled]:focus, -[data-jey-theme="chrome"] .grid-row > .data-row input.form-control:not([type="checkbox"]):not([type="radio"])[readonly]:focus, -[data-jey-theme="chrome"] .grid-row > .data-row textarea.form-control:disabled:focus, -[data-jey-theme="chrome"] .grid-row > .data-row textarea.form-control[readonly]:focus, -[data-jey-theme="chrome"] .grid-row > .data-row select.form-control:disabled:focus { - background: #d8d8d8 !important; - box-shadow: none !important; -} - -/* Match static-row cell height: static cells use padding 10px 8px; form-control in - Frappe uses padding-top:10px, padding-bottom: calc(--padding-md - 3px). Equalise so - the active row doesn't grow or shrink compared to an idle row. */ -[data-jey-theme="chrome"] .grid-row .editable-row .form-control { - padding-top: 10px !important; - padding-bottom: 10px !important; - height: auto !important; -} - - -/* ========================================================================== - Tabs — Metallic Tab Strip - ========================================================================== */ - -[data-jey-theme="chrome"] .form-tabs .nav-link { - color: #666 !important; - text-shadow: 0 1px 0 rgba(255,255,255,0.4); -} - -[data-jey-theme="chrome"] .form-tabs .nav-link:hover { - color: #444 !important; - background: linear-gradient(180deg, rgba(255,255,255,0.3) 0%, rgba(255,255,255,0.05) 100%) !important; -} - -[data-jey-theme="chrome"] .form-tabs .nav-link.active { - color: #333 !important; - background: linear-gradient(180deg, rgba(255,255,255,0.2) 0%, transparent 100%) !important; -} - -[data-jey-theme="chrome"] .form-tabs .nav-link::after { - background: #777; -} - - -/* ========================================================================== - Dropdowns — Chrome Panel - ========================================================================== */ - -[data-jey-theme="chrome"] .dropdown-menu { - background: linear-gradient(45deg, #c0c0c0 3%, #e5e5e5 10%, #d0d0d0 30%, #eaeaea 50%, #d0d0d0 70%, #e5e5e5 90%, #c0c0c0 97%) !important; - border: 1px solid #999 !important; - box-shadow: - 4px 4px 12px rgba(0,0,0,0.18), - -2px -2px 4px rgba(255,255,255,0.15), - inset 0 1px 0 rgba(255,255,255,0.6) !important; -} - -[data-jey-theme="chrome"] .dropdown-item { - color: #444 !important; -} - -[data-jey-theme="chrome"] .dropdown-item:hover, -[data-jey-theme="chrome"] .dropdown-item:focus { - background: linear-gradient(90deg, rgba(255,255,255,0.3) 0%, rgba(255,255,255,0.05) 100%) !important; - color: #222 !important; -} - -[data-jey-theme="chrome"] .dropdown-divider { - border-top-color: #aaa !important; -} - - -/* ========================================================================== - Alerts / Toasts - ========================================================================== */ - -[data-jey-theme="chrome"] .desk-alert { - background: linear-gradient(45deg, #c0c0c0 5%, #e5e5e5 15%, #d0d0d0 40%, #e8e8e8 60%, #d0d0d0 85%, #c0c0c0 95%) !important; - border: 1px solid #999 !important; - box-shadow: - 3px 3px 8px rgba(0,0,0,0.12), - -1px -1px 3px rgba(255,255,255,0.3), - inset 0 1px 0 rgba(255,255,255,0.5) !important; -} - - -/* ========================================================================== - Breadcrumbs - ========================================================================== */ - -[data-jey-theme="chrome"] .breadcrumb-container a { - color: #666 !important; - text-shadow: 0 1px 0 rgba(255,255,255,0.4); -} - -[data-jey-theme="chrome"] .breadcrumb-container a:hover { - color: #333 !important; -} - - -/* ========================================================================== - Timeline - ========================================================================== */ - -[data-jey-theme="chrome"] .new-timeline::before { - border-left-color: #aaa !important; -} - -[data-jey-theme="chrome"] .timeline-dot { - background: linear-gradient(45deg, #bbb, #ddd, #bbb) !important; - border: 1px solid #999 !important; - box-shadow: 1px 1px 2px rgba(0,0,0,0.1), -1px -1px 1px rgba(255,255,255,0.3); -} - - -/* ========================================================================== - Badges / Indicators - ========================================================================== */ - -[data-jey-theme="chrome"] .indicator-pill { - box-shadow: - inset 0 1px 0 rgba(255,255,255,0.3), - 1px 1px 1px rgba(0,0,0,0.08); -} - - -/* ========================================================================== - Popovers - ========================================================================== */ - -[data-jey-theme="chrome"] .popover { - background: linear-gradient(45deg, #c0c0c0 3%, #e5e5e5 10%, #d0d0d0 30%, #eaeaea 50%, #d0d0d0 70%, #e5e5e5 90%, #c0c0c0 97%) !important; - border: 1px solid #999 !important; - box-shadow: - 4px 4px 12px rgba(0,0,0,0.15), - -2px -2px 4px rgba(255,255,255,0.2), - inset 0 1px 0 rgba(255,255,255,0.5) !important; -} - -[data-jey-theme="chrome"] .popover .popover-body { - color: #404040 !important; -} - - -/* ========================================================================== - Module Widget Cards — Chrome Panels with Conic Border Accent - ========================================================================== */ - -[data-jey-theme="chrome"] .ce-block .links-widget-box, -[data-jey-theme="chrome"] .ce-block .number-widget-box { - background: linear-gradient(45deg, #c0c0c0 3%, #e5e5e5 12%, #d0d0d0 30%, #eaeaea 50%, #d0d0d0 70%, #e5e5e5 88%, #c0c0c0 97%) !important; - border: 1px solid #aaa !important; - box-shadow: - 2px 2px 6px rgba(0,0,0,0.1), - -1px -1px 3px rgba(255,255,255,0.35), - inset 0 1px 0 rgba(255,255,255,0.6) !important; -} - -[data-jey-theme="chrome"] .ce-block .links-widget-box::after, -[data-jey-theme="chrome"] .ce-block .number-widget-box::after { - background: conic-gradient(from 140deg, #a0a0a0, #e0e0e0, #888, #d0d0d0, #a0a0a0) !important; -} - -[data-jey-theme="chrome"] .ce-block .links-widget-box:hover, -[data-jey-theme="chrome"] .ce-block .number-widget-box:hover { - box-shadow: - 3px 3px 10px rgba(0,0,0,0.14), - -2px -2px 5px rgba(255,255,255,0.3), - inset 0 1px 0 rgba(255,255,255,0.7) !important; -} - - -/* ========================================================================== - Scrollbars — Metal Cylinder - ========================================================================== */ - -[data-jey-theme="chrome"] ::-webkit-scrollbar { - width: 10px; - height: 10px; -} - -[data-jey-theme="chrome"] ::-webkit-scrollbar-track { - background: linear-gradient(90deg, #c0c0c0, #d0d0d0, #c0c0c0); -} - -[data-jey-theme="chrome"] ::-webkit-scrollbar-thumb { - background: linear-gradient(90deg, #888, #bbb, #999, #bbb, #888); - border-radius: 5px; - border: 1px solid #999; -} - -[data-jey-theme="chrome"] ::-webkit-scrollbar-thumb:hover { - background: linear-gradient(90deg, #777, #aaa, #888, #aaa, #777); -} - - -/* ========================================================================== - Link Colors - ========================================================================== */ - -[data-jey-theme="chrome"] a { - color: #555; -} - -[data-jey-theme="chrome"] a:hover { - color: #333; -} - - -/* ========================================================================== - Print — Reset - ========================================================================== */ - -@media print { - [data-jey-theme="chrome"] body, - [data-jey-theme="chrome"] .page-container, - [data-jey-theme="chrome"] .form-page, - [data-jey-theme="chrome"] .frappe-card, - [data-jey-theme="chrome"] .modal-content, - [data-jey-theme="chrome"] .navbar { - background: white !important; - box-shadow: none !important; - border-color: #ddd !important; - text-shadow: none !important; - } - [data-jey-theme="chrome"] .btn-primary { - background: #333 !important; - text-shadow: none !important; - } -} diff --git a/jey_theme/public/css/theme_modern.css b/jey_theme/public/css/theme_modern.css deleted file mode 100644 index c4d1855..0000000 --- a/jey_theme/public/css/theme_modern.css +++ /dev/null @@ -1,69 +0,0 @@ -/* ========================================================================== - THEME: Modern [data-jey-theme="modern"] - Frosted glass rounded squares with indigo accents. - ========================================================================== */ - -@keyframes jey-modern-glow { - 0%, 100% { opacity: 0.4; } - 50% { opacity: 0.7; } -} - -/* Outer shell — frosted glass rounded square */ -[data-jey-theme="modern"] .jey-chrome { - width: 72px; height: 72px; border-radius: 22px; position: relative; - background: rgba(255, 255, 255, 0.45); - backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); - border: 1px solid rgba(255, 255, 255, 0.6); - box-shadow: 0 4px 16px rgba(0,0,0,0.06), 0 1px 3px rgba(0,0,0,0.04), inset 0 1px 0 rgba(255,255,255,0.8); - transition: all 0.3s ease; -} - -[data-jey-theme="modern"] .desktop-icon:hover .jey-chrome { - box-shadow: 0 8px 24px rgba(0,0,0,0.1), 0 2px 6px rgba(0,0,0,0.06), inset 0 1px 0 rgba(255,255,255,0.9); - transform: translateY(-2px); -} - -/* Hide chrome ring layers */ -[data-jey-theme="modern"] .jey-chrome-ring, -[data-jey-theme="modern"] .jey-chrome-gap, -[data-jey-theme="modern"] .jey-chrome-ring-inner { - display: none; -} - -/* Face fills rounded square */ -[data-jey-theme="modern"] .jey-chrome-face { - position: absolute; inset: 0; border-radius: 22px; overflow: hidden; - background: transparent; box-shadow: none; - display: flex; align-items: center; justify-content: center; -} - -/* Bottom glow accent */ -[data-jey-theme="modern"] .jey-face-glow { - position: absolute; bottom: -4px; left: 16px; right: 16px; height: 20px; - border-radius: 50%; - background: radial-gradient(ellipse, rgba(99, 102, 241, 0.35) 0%, transparent 70%); - animation: jey-modern-glow 4s ease-in-out infinite; - pointer-events: none; z-index: 0; -} - -/* Top glass highlight */ -[data-jey-theme="modern"] .jey-face-reflection { - position: absolute; top: 0; left: 0; right: 0; height: 50%; - border-radius: 22px 22px 0 0; - background: linear-gradient(180deg, rgba(255,255,255,0.5) 0%, transparent 100%); - pointer-events: none; z-index: 1; animation: none; -} - -/* Icon — indigo accent */ -[data-jey-theme="modern"] .jey-chrome-face .jey-icon { - width: 26px !important; height: 26px !important; - stroke: #4f46e5 !important; fill: none !important; - stroke-width: 1.6 !important; stroke-linecap: round !important; stroke-linejoin: round !important; - filter: drop-shadow(0 1px 2px rgba(79, 70, 229, 0.2)) !important; - position: relative; z-index: 2; -} - -/* Rounded square container */ -[data-jey-theme="modern"] .icon-container.jey-chrome-done { - border-radius: 22px !important; -} diff --git a/jey_theme/public/dist/css-rtl/jey_theme.bundle.4LQK3EX2.css b/jey_theme/public/dist/css-rtl/jey_theme.bundle.4LQK3EX2.css new file mode 100644 index 0000000..a72a963 --- /dev/null +++ b/jey_theme/public/dist/css-rtl/jey_theme.bundle.4LQK3EX2.css @@ -0,0 +1,2180 @@ +/* ../../../../../tmp/tmp-16010-XQ467tJ01y5r/jey_theme/jey_theme/public/css/jey_theme.bundle.css */ +.splash img { + content: url(/assets/jey_theme/images/preloader.png); + max-width: 64px !important; + width: 64px !important; + height: auto; +} +.desktop-icon[data-id=Organization], +.desktop-icon[data-id=ERPNext] { + display: none !important; +} +.desktop-icon[data-id=Quality], +.desktop-icon[data-id="Quality Management"], +.desktop-icon[data-id=Subcontracting] { + display: none !important; +} +input[type=checkbox] { + -webkit-appearance: none !important; + -moz-appearance: none !important; + appearance: none !important; + width: 28px !important; + min-width: 28px !important; + height: 16px !important; + background-color: var(--gray-400, #c0c6cc) !important; + background-image: none !important; + border-radius: 999px !important; + border: none !important; + position: relative !important; + cursor: pointer !important; + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.12) !important; + transition: background-color 0.25s ease !important; + vertical-align: middle !important; + margin: 0 !important; + margin-left: 8px !important; + outline: none !important; +} +input[type=checkbox]::after { + content: "" !important; + width: 12px !important; + height: 12px !important; + background-color: #fff !important; + border-radius: 50% !important; + position: absolute !important; + top: 2px !important; + right: 2px !important; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25) !important; + transition: transform 0.25s ease !important; + border: none !important; +} +input[type=checkbox]:checked, +input[type=checkbox].disabled-selected { + background-color: #2da44e !important; + background-image: none !important; + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.08) !important; +} +input[type=checkbox]:checked::after, +input[type=checkbox].disabled-selected::after { + transform: translateX(-12px) !important; +} +input[type=checkbox]:focus { + outline: none !important; + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.12), 0 0 0 2px rgba(45, 164, 78, 0.25) !important; +} +input[type=checkbox]:disabled { + opacity: 0.5 !important; + cursor: not-allowed !important; + background-image: none !important; +} +input[type=checkbox].disabled-selected { + opacity: 0.7 !important; + cursor: not-allowed !important; +} +.row-check input[type=checkbox], +.grid-row-check { + width: var(--checkbox-size, 14px) !important; + min-width: var(--checkbox-size, 14px) !important; + height: var(--checkbox-size, 14px) !important; + border-radius: 4px !important; + border: 1px solid var(--gray-500) !important; + background-color: transparent !important; + background-image: none !important; + box-shadow: none !important; + margin-left: 0 !important; + transition: none !important; +} +.row-check input[type=checkbox]::after, +.grid-row-check::after { + content: "" !important; + width: auto !important; + height: auto !important; + background: none !important; + border-radius: 0 !important; + position: absolute !important; + top: auto !important; + right: auto !important; + box-shadow: none !important; + transition: none !important; + transform: none !important; + inset: -8px !important; + opacity: 0 !important; +} +.row-check input[type=checkbox]:checked, +.grid-row-check:checked { + background-color: var(--primary) !important; + background-image: url("data:image/svg+xml, "), var(--checkbox-gradient) !important; + background-size: 57%, 100% !important; + background-repeat: no-repeat !important; + background-position: center !important; + border: none !important; + box-shadow: none !important; +} +.row-check input[type=checkbox]:checked::after, +.grid-row-check:checked::after { + transform: none !important; +} +.datatable input[type=checkbox] { + -webkit-appearance: none !important; + -moz-appearance: none !important; + appearance: none !important; + width: var(--checkbox-size, 14px) !important; + min-width: var(--checkbox-size, 14px) !important; + height: var(--checkbox-size, 14px) !important; + margin: 0 !important; + padding: 0 !important; + border: 1px solid var(--gray-500) !important; + border-radius: 4px !important; + background-color: transparent !important; + background-image: none !important; + box-shadow: none !important; + cursor: pointer !important; + vertical-align: middle !important; + transition: none !important; +} +.datatable input[type=checkbox]::after { + content: none !important; + display: none !important; +} +.datatable input[type=checkbox]:checked { + background-color: var(--primary) !important; + background-image: url("data:image/svg+xml, ") !important; + background-size: 57% !important; + background-repeat: no-repeat !important; + background-position: center !important; + border: none !important; +} +.datatable input[type=checkbox]:disabled { + opacity: 0.5 !important; + cursor: not-allowed !important; +} +.datatable .dt-cell__content:has(> input[type="checkbox"]:only-child) { + display: flex !important; + align-items: center !important; + justify-content: flex-start !important; +} +.datatable .dt-row-filter .dt-cell__content { + display: flex !important; + align-items: center !important; + gap: 2px; +} +.datatable .dt-row-filter .dt-filter.dt-input { + flex: 1 1 0 !important; + min-width: 0 !important; +} +.datatable .dt-row-filter .comparison-help-icon { + flex: 0 0 auto; +} +input.list-row-checkbox::after, +input.list-header-checkbox::after { + inset: auto !important; + width: 12px !important; + height: 12px !important; + background-color: #fff !important; + border-radius: 50% !important; + position: absolute !important; + top: 2px !important; + right: 2px !important; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25) !important; + transition: transform 0.25s ease !important; + opacity: 1 !important; +} +input.list-row-checkbox:checked::after, +input.list-header-checkbox:checked::after { + transform: translateX(-12px) !important; +} +.frappe-control[data-fieldtype=Check] .checkbox label { + align-items: center !important; +} +.frappe-control[data-fieldtype=Check] .checkbox .input-area:not(.hide) { + padding-top: 0 !important; + display: flex !important; + align-items: center !important; +} +.filter-section { + display: flex !important; +} +.filter-section .sort-selector { + order: -1 !important; + margin-left: 8px !important; +} +.form-grid { + overflow-x: scroll !important; + padding-bottom: 12px !important; + scrollbar-width: auto !important; +} +.form-grid::-webkit-scrollbar { + height: 10px !important; +} +.form-grid::-webkit-scrollbar-track { + background: var(--gray-100, #f5f5f5) !important; +} +.form-grid::-webkit-scrollbar-thumb { + background: var(--gray-400, #c0c6cc) !important; + border-radius: 5px !important; + border: 2px solid var(--gray-100, #f5f5f5) !important; +} +.form-grid::-webkit-scrollbar-thumb:hover { + background: var(--gray-500, #98a2ab) !important; +} +.jey-col-resize { + position: absolute; + top: 0; + left: -2px; + width: 5px; + height: 100%; + cursor: col-resize; + z-index: 2; + background: transparent; + transition: background 0.15s; +} +.jey-col-resize:hover, +.jey-col-resize:active { + background: var(--primary, #2490ef); + opacity: 0.5; +} +.grid-heading-row .grid-static-col[data-jey-draggable] { + cursor: grab; +} +.grid-heading-row .grid-static-col.jey-drop-target.jey-drop-left { + box-shadow: inset -3px 0 0 var(--primary, #2490ef); + background: rgba(36, 144, 239, 0.05); +} +.grid-heading-row .grid-static-col.jey-drop-target.jey-drop-right { + box-shadow: inset 3px 0 0 var(--primary, #2490ef); + background: rgba(36, 144, 239, 0.05); +} +.list-row-head .list-row-col { + position: relative; +} +.list-row-head .list-row-col:not(:last-child) { + border-left: 1px solid var(--border-color, #e2e6e9); +} +.list-row-head .jey-col-resize { + position: absolute; + top: 0; + left: -2px; + width: 5px; + height: 100%; + cursor: col-resize; + z-index: 3; + background: transparent; + transition: background 0.15s; +} +.list-row-head .jey-col-resize:hover, +.list-row-head .jey-col-resize:active { + background: var(--primary, #2490ef); + opacity: 0.5; +} +.list-row-head .list-row-col[data-jey-draggable]:not(.list-subject) { + cursor: grab; +} +.list-row-head .list-row-col.jey-drop-target.jey-drop-left { + box-shadow: inset -3px 0 0 var(--primary, #2490ef); + background: rgba(36, 144, 239, 0.05); +} +.list-row-head .list-row-col.jey-drop-target.jey-drop-right { + box-shadow: inset 3px 0 0 var(--primary, #2490ef); + background: rgba(36, 144, 239, 0.05); +} +.body-sidebar .body-sidebar-bottom { + min-width: 0; +} +.jey-fullwidth-link, +.jey-theme-switch-link, +.jey-collapse-link { + text-decoration: none; + font-size: var(--text-sm); + display: flex; + align-items: center; + cursor: pointer; + margin-bottom: 8px; + width: 100%; + overflow: hidden; +} +.jey-fullwidth-link svg, +.jey-theme-switch-link svg, +.jey-collapse-link svg { + margin: 0; + flex: 0 0 auto; +} +.jey-fullwidth-link span, +.jey-theme-switch-link span, +.jey-collapse-link span { + margin-right: 10px; + max-width: 200px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + transition: max-width 0.3s cubic-bezier(0.4, 0, 0.2, 1), margin-right 0.3s cubic-bezier(0.4, 0, 0.2, 1); +} +.body-sidebar-container:not(.expanded) .jey-fullwidth-link span, +.body-sidebar-container:not(.expanded) .jey-theme-switch-link span, +.body-sidebar-container:not(.expanded) .jey-collapse-link span { + max-width: 0; + margin-right: 0; +} +.body-sidebar .sidebar-bottom-actions { + display: none !important; +} +.body-sidebar .nav-item { + transition: padding 0.3s cubic-bezier(0.4, 0, 0.2, 1); +} +.modal.fade .modal-dialog { + transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.5s cubic-bezier(0.22, 1, 0.36, 1) !important; + transform: translateY(-24px) scale(0.97); + opacity: 0; +} +.modal.show .modal-dialog { + transform: none; + opacity: 1; +} +@keyframes jey-section-in { + from { + top: -12px; + } + to { + top: 0; + } +} +.form-layout .form-section .section-head, +.form-layout .form-section .section-body { + position: relative; + animation: jey-section-in 0.7s cubic-bezier(0.22, 1, 0.36, 1) both; +} +.form-layout .form-section:nth-child(1) .section-head, +.form-layout .form-section:nth-child(1) .section-body { + animation-delay: 0.04s; +} +.form-layout .form-section:nth-child(2) .section-head, +.form-layout .form-section:nth-child(2) .section-body { + animation-delay: 0.10s; +} +.form-layout .form-section:nth-child(3) .section-head, +.form-layout .form-section:nth-child(3) .section-body { + animation-delay: 0.16s; +} +.form-layout .form-section:nth-child(4) .section-head, +.form-layout .form-section:nth-child(4) .section-body { + animation-delay: 0.22s; +} +.form-layout .form-section:nth-child(5) .section-head, +.form-layout .form-section:nth-child(5) .section-body { + animation-delay: 0.28s; +} +.form-layout .form-section:nth-child(6) .section-head, +.form-layout .form-section:nth-child(6) .section-body { + animation-delay: 0.34s; +} +.form-layout .form-section:nth-child(7) .section-head, +.form-layout .form-section:nth-child(7) .section-body { + animation-delay: 0.40s; +} +.form-layout .form-section:nth-child(8) .section-head, +.form-layout .form-section:nth-child(8) .section-body { + animation-delay: 0.46s; +} +.form-layout .form-section:nth-child(9) .section-head, +.form-layout .form-section:nth-child(9) .section-body { + animation-delay: 0.52s; +} +.form-layout .form-section:nth-child(10) .section-head, +.form-layout .form-section:nth-child(10) .section-body { + animation-delay: 0.58s; +} +.form-layout .form-section:nth-child(11) .section-head, +.form-layout .form-section:nth-child(11) .section-body { + animation-delay: 0.64s; +} +.form-layout .form-section:nth-child(12) .section-head, +.form-layout .form-section:nth-child(12) .section-body { + animation-delay: 0.70s; +} +.form-tabs .nav-link { + position: relative; + border-bottom: none !important; + transition: color 0.3s ease; +} +.form-tabs .nav-link::after { + content: ""; + position: absolute; + bottom: 0; + right: 0; + left: 0; + height: 2px; + background: var(--text-color); + transform: scaleX(0); + transform-origin: center; + transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1); +} +.form-tabs .nav-link.active::after { + transform: scaleX(1); +} +.dropdown-menu { + display: block !important; + visibility: hidden; + opacity: 0; + pointer-events: none; +} +.dropdown-menu.show { + visibility: visible; + opacity: 1; + pointer-events: auto; + animation: jey-dropdown-in 0.2s ease; +} +.dropdown-menu.jey-dropdown-hiding { + visibility: visible !important; + pointer-events: none; + animation: jey-dropdown-out 0.2s ease forwards; +} +@keyframes jey-dropdown-in { + from { + opacity: 0; + } + to { + opacity: 1; + } +} +@keyframes jey-dropdown-out { + from { + opacity: 1; + } + to { + opacity: 0; + } +} +@media (min-width: 576px) { + .body-sidebar-container { + width: 50px; + transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1); + } + .body-sidebar-container.expanded { + width: var(--sidebar-width); + } +} +.body-sidebar .sidebar-header { + padding-right: 0 !important; + padding-left: 0 !important; +} +.body-sidebar-container.expanded .sidebar-user-button { + padding: 0 !important; +} +.body-sidebar .standard-sidebar-item .item-anchor { + transition: padding-right 0.4s cubic-bezier(0.22, 1, 0.36, 1), background 0.4s ease; +} +.body-sidebar .standard-sidebar-item .item-anchor:hover { + padding-right: calc(var(--padding-xs, 8px) + 4px); +} +.body-sidebar .standard-sidebar-item .sidebar-item-icon { + transition: transform 0.45s cubic-bezier(0.22, 1, 0.36, 1); +} +.body-sidebar .standard-sidebar-item .item-anchor:hover .sidebar-item-icon { + transform: scale(1.15); +} +.body-sidebar .standard-sidebar-item.active-sidebar .item-anchor { + position: relative; +} +.body-sidebar .standard-sidebar-item.active-sidebar .item-anchor::before { + content: ""; + position: absolute; + right: 0; + top: 20%; + bottom: 20%; + width: 3px; + border-radius: 3px 0 0 3px; + background: var(--primary, #2490ef); + opacity: 0.8; +} +@keyframes jey-list-row-in { + from { + opacity: 0; + transform: translateX(16px); + } + to { + opacity: 1; + transform: translateX(0); + } +} +.frappe-list .result .list-row-container:not(:first-child) { + animation: jey-list-row-in 0.4s cubic-bezier(0.22, 1, 0.36, 1) both; +} +.frappe-list .result .list-row-container:nth-child(2) { + animation-delay: 0.03s; +} +.frappe-list .result .list-row-container:nth-child(3) { + animation-delay: 0.05s; +} +.frappe-list .result .list-row-container:nth-child(4) { + animation-delay: 0.07s; +} +.frappe-list .result .list-row-container:nth-child(5) { + animation-delay: 0.09s; +} +.frappe-list .result .list-row-container:nth-child(6) { + animation-delay: 0.11s; +} +.frappe-list .result .list-row-container:nth-child(7) { + animation-delay: 0.13s; +} +.frappe-list .result .list-row-container:nth-child(8) { + animation-delay: 0.15s; +} +.frappe-list .result .list-row-container:nth-child(9) { + animation-delay: 0.17s; +} +.frappe-list .result .list-row-container:nth-child(10) { + animation-delay: 0.19s; +} +.frappe-list .result .list-row-container:nth-child(11) { + animation-delay: 0.21s; +} +.frappe-list .result .list-row-container:nth-child(12) { + animation-delay: 0.23s; +} +.frappe-list .result .list-row-container:nth-child(13) { + animation-delay: 0.25s; +} +.frappe-list .result .list-row-container:nth-child(14) { + animation-delay: 0.27s; +} +.frappe-list .result .list-row-container:nth-child(15) { + animation-delay: 0.29s; +} +.frappe-list .result .list-row-container:nth-child(16) { + animation-delay: 0.31s; +} +.frappe-list .result .list-row-container:nth-child(17) { + animation-delay: 0.33s; +} +.frappe-list .result .list-row-container:nth-child(18) { + animation-delay: 0.35s; +} +.frappe-list .result .list-row-container:nth-child(19) { + animation-delay: 0.37s; +} +.frappe-list .result .list-row-container:nth-child(20) { + animation-delay: 0.39s; +} +.frappe-list .result .list-row-container:nth-child(21) { + animation-delay: 0.41s; +} +.modal:has(.cool-awesomebar-modal-footer) { + display: block !important; + visibility: hidden; + opacity: 0; + pointer-events: none; + transition: opacity 0.5s cubic-bezier(0.22, 1, 0.36, 1), visibility 0.5s; +} +.modal:has(.cool-awesomebar-modal-footer) .modal-dialog { + transform: translateY(-30px); + transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1); +} +.modal.show:has(.cool-awesomebar-modal-footer) { + visibility: visible; + opacity: 1; + pointer-events: auto; +} +.modal.show:has(.cool-awesomebar-modal-footer) .modal-dialog { + transform: none; +} +@keyframes jey-summary-in { + from { + opacity: 0; + transform: translateY(10px); + } + to { + opacity: 1; + transform: translateY(0); + } +} +.report-summary .summary-item { + animation: jey-summary-in 0.7s cubic-bezier(0.22, 1, 0.36, 1) both; +} +.report-summary .summary-item:nth-child(1) { + animation-delay: 0.05s; +} +.report-summary .summary-item:nth-child(2) { + animation-delay: 0.10s; +} +.report-summary .summary-item:nth-child(3) { + animation-delay: 0.15s; +} +.report-summary .summary-item:nth-child(4) { + animation-delay: 0.20s; +} +.report-summary .summary-item:nth-child(5) { + animation-delay: 0.25s; +} +.report-summary .summary-item:nth-child(6) { + animation-delay: 0.30s; +} +.form-section .collapse-indicator { + transition: transform 0.45s cubic-bezier(0.22, 1, 0.36, 1); + display: inline-block; +} +.form-section .section-head.collapsed .collapse-indicator { + transform: rotate(90deg); +} +.form-section .section-head.collapsible + .section-body { + display: flex !important; + flex-wrap: wrap; + transition: max-height 0.5s ease-in-out, padding 0.5s ease-in-out; +} +.form-section .section-head.collapsed + .section-body { + max-height: 0 !important; + padding-top: 0 !important; + padding-bottom: 0 !important; + overflow: hidden; + transition: max-height 0.5s ease-in-out, padding 0.5s ease-in-out; +} +.awesomplete > [role=listbox] { + animation: jey-awesomplete-in 0.4s cubic-bezier(0.22, 1, 0.36, 1) both; +} +.awesomplete > [role=listbox].jey-awesomplete-hiding { + display: block !important; + pointer-events: none; + animation: jey-awesomplete-out 0.2s ease forwards; +} +@keyframes jey-awesomplete-in { + from { + opacity: 0; + } + to { + opacity: 1; + } +} +@keyframes jey-awesomplete-out { + from { + opacity: 1; + } + to { + opacity: 0; + } +} +.awesomplete > ul[role=listbox]:not([hidden]) { + z-index: 10; +} +input.form-control:not([type="checkbox"]):not([type="radio"]), +textarea.form-control, +.frappe-control input:not([type="checkbox"]):not([type="radio"]), +.frappe-control textarea { + transition: background-color 0.45s cubic-bezier(0.22, 1, 0.36, 1), border-color 0.45s cubic-bezier(0.22, 1, 0.36, 1); +} +input.form-control:not([type="checkbox"]):not([type="radio"]):focus, +textarea.form-control:focus, +.frappe-control input:not([type="checkbox"]):not([type="radio"]):focus, +.frappe-control textarea:focus { + border-color: var(--gray-500, #a8b0b8) !important; + outline: none; +} +.btn { + position: relative; + overflow: hidden; + transition: + box-shadow 0.4s ease, + background-color 0.3s ease, + color 0.3s ease; +} +.btn::after { + content: ""; + position: absolute; + inset: 0; + background: linear-gradient(-105deg, transparent 35%, rgba(255, 255, 255, 0.25) 45%, rgba(255, 255, 255, 0.25) 55%, transparent 65%); + transform: translateX(110%); + transition: transform 0.6s cubic-bezier(0.22, 1, 0.36, 1); + pointer-events: none; +} +.btn:hover::after { + transform: translateX(-110%); +} +.btn:active { + box-shadow: inset 0 2px 6px rgba(0, 0, 0, 0.2) !important; +} +.dropdown-menu-item[onclick*=toggle_full_width], +.dropdown-menu-item[onclick*=clear_cache], +.dropdown-menu-item[onclick*=ThemeSwitcher], +.dropdown-menu-item[data-name=website], +.dropdown-menu-item.jey-hidden-item { + display: none !important; +} +.desktop-icon:hover { + transform: translateY(-2px) !important; +} +.desktop-icon:active { + transform: scale(0.97) !important; +} +.icon-container.jey-chrome-done { + width: 72px !important; + height: 72px !important; + padding: 0 !important; + border-radius: 50% !important; + background: none !important; + overflow: visible !important; + position: relative !important; +} +.icon-container.jey-chrome-done:hover { + transform: none !important; +} +.icon-container.folder-icon.jey-chrome-done { + box-shadow: none !important; +} +#desktop-modal .icons-container .icons { + gap: 12px 8px !important; + padding: 12px 0 !important; +} +#desktop-modal .desktop-icon { + min-width: 0 !important; + display: flex !important; + flex-direction: column !important; + align-items: center !important; + text-align: center !important; +} +#desktop-modal .desktop-icon .icon-caption { + width: 100% !important; + max-width: 100% !important; + padding: 0 4px !important; + margin-top: 14px !important; +} +#desktop-modal .desktop-icon .icon-title { + width: 100% !important; + max-width: 100% !important; + display: -webkit-box !important; + -webkit-line-clamp: 2; + line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden !important; + text-overflow: ellipsis !important; + overflow-wrap: anywhere !important; + word-break: break-word !important; + line-height: 1.25 !important; + white-space: normal !important; +} +#desktop-modal .modal-header.desktop-modal-heading { + background: transparent !important; + border-bottom: 0 !important; + box-shadow: none !important; +} +#desktop-modal .modal-header.desktop-modal-heading .modal-title, +#desktop-modal .modal-header.desktop-modal-heading .title-input-label span { + background: transparent !important; + box-shadow: none !important; + text-shadow: none !important; +} +#desktop-modal .icon-title, +#desktop-modal .icon-caption { + text-shadow: none !important; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +#desktop-modal .modal-body.desktop-modal-body { + overflow: visible !important; + max-height: none !important; +} +#desktop-modal .icons-container { + overflow: visible !important; + max-height: none !important; +} +.ico-framework { + animation: ico-float 5s ease-in-out infinite; + transform-origin: center; +} +@keyframes ico-float { + 0%, 100% { + transform: translateY(0) rotate(0deg); + opacity: 0.85; + } + 30% { + transform: translateY(-2px) rotate(-0.8deg); + opacity: 1; + } + 70% { + transform: translateY(0.5px) rotate(0.4deg); + opacity: 0.9; + } +} +.ico-org { + animation: ico-org 6s ease-in-out infinite; + transform-origin: center bottom; +} +@keyframes ico-org { + 0%, 100% { + transform: scaleY(1) scaleX(1); + } + 25% { + transform: scaleY(1.03) scaleX(0.99); + } + 50% { + transform: scaleY(1.05) scaleX(0.98); + } + 75% { + transform: scaleY(1.02) scaleX(1); + } +} +.ico-acc .acc-btn { + animation: ico-press 3s ease-in-out infinite; +} +@keyframes ico-press { + 0%, 25%, 100% { + opacity: 0.5; + stroke-width: 2.5; + } + 12% { + opacity: 1; + stroke-width: 3.2; + } +} +.ico-assets { + animation: ico-safe 6s ease-in-out infinite; + transform-origin: center; +} +.ico-assets .lock-dot { + animation: ico-blink 5s ease-in-out infinite; +} +@keyframes ico-safe { + 0%, 100% { + transform: translateY(0); + } + 40% { + transform: translateY(-0.6px); + } + 60% { + transform: translateY(0.3px); + } +} +@keyframes ico-blink { + 0%, 35%, 65%, 100% { + opacity: 1; + } + 50% { + opacity: 0.15; + } +} +.ico-buying { + animation: ico-cart 6s ease-in-out infinite; + transform-origin: 12px 21px; +} +@keyframes ico-cart { + 0%, 100% { + transform: translateX(0) rotate(0deg); + } + 20% { + transform: translateX(-1.5px) rotate(-0.8deg); + } + 50% { + transform: translateX(0.5px) rotate(0.3deg); + } + 80% { + transform: translateX(-0.8px) rotate(-0.4deg); + } +} +.ico-mfg .gear1 { + animation: ico-spin 9s linear infinite; + transform-origin: 9px 12px; +} +.ico-mfg .gear2 { + animation: ico-spin-r 7s linear infinite; + transform-origin: 17px 8px; +} +@keyframes ico-spin { + to { + transform: rotate(-360deg); + } +} +@keyframes ico-spin-r { + to { + transform: rotate(360deg); + } +} +.ico-proj .col1 { + animation: ico-g1 5s ease-in-out infinite; + transform-origin: 5.5px 21px; +} +.ico-proj .col2 { + animation: ico-g2 5s ease-in-out infinite 0.5s; + transform-origin: 12.5px 15px; +} +.ico-proj .col3 { + animation: ico-g3 5s ease-in-out infinite 1s; + transform-origin: 19.5px 18px; +} +@keyframes ico-g1 { + 0%, 100% { + transform: scaleY(1); + opacity: 0.75; + } + 50% { + transform: scaleY(0.85); + opacity: 1; + } +} +@keyframes ico-g2 { + 0%, 100% { + transform: scaleY(1); + opacity: 0.75; + } + 50% { + transform: scaleY(1.15); + opacity: 1; + } +} +@keyframes ico-g3 { + 0%, 100% { + transform: scaleY(1); + opacity: 0.75; + } + 50% { + transform: scaleY(0.88); + opacity: 1; + } +} +.ico-quality { + animation: ico-shield 6s ease-in-out infinite; + transform-origin: 12px 14px; +} +@keyframes ico-shield { + 0%, 100% { + transform: rotate(0deg) scale(1); + } + 15% { + transform: rotate(-1.5deg) scale(1.03); + } + 35% { + transform: rotate(0.5deg) scale(1.01); + } + 55% { + transform: rotate(1.5deg) scale(1.03); + } + 75% { + transform: rotate(-0.5deg) scale(1.01); + } +} +.ico-selling { + animation: ico-sell 4s ease-in-out infinite; + transform-origin: center; +} +.ico-selling .arrow-head { + animation: ico-up 4s ease-in-out infinite; +} +@keyframes ico-sell { + 0%, 100% { + opacity: 0.8; + } + 50% { + opacity: 1; + } +} +@keyframes ico-up { + 0%, 100% { + transform: translate(0, 0); + } + 30% { + transform: translate(-1px, -1.5px); + } + 60% { + transform: translate(-2px, -2.5px); + } +} +.ico-stock { + animation: ico-bob 5s ease-in-out infinite; + transform-origin: center; +} +@keyframes ico-bob { + 0%, 100% { + transform: rotate(0deg) translateY(0); + } + 20% { + transform: rotate(-2deg) translateY(-0.7px); + } + 50% { + transform: rotate(1deg) translateY(0.3px); + } + 80% { + transform: rotate(-1.5deg) translateY(-0.4px); + } +} +.ico-sub .person-l { + animation: ico-rl 6s ease-in-out infinite; + transform-origin: 8px 12px; +} +.ico-sub .person-r { + animation: ico-rr 6s ease-in-out infinite; + transform-origin: 16px 12px; +} +@keyframes ico-rl { + 0%, 100% { + transform: translateX(0) rotate(0deg); + } + 30% { + transform: translateX(-1px) rotate(-1deg); + } + 60% { + transform: translateX(-1.5px) rotate(-0.5deg); + } +} +@keyframes ico-rr { + 0%, 100% { + transform: translateX(0) rotate(0deg); + } + 30% { + transform: translateX(1px) rotate(1deg); + } + 60% { + transform: translateX(1.5px) rotate(0.5deg); + } +} +.ico-settings { + animation: ico-gear-main 12s linear infinite; + transform-origin: center; +} +@keyframes ico-gear-main { + to { + transform: rotate(-360deg); + } +} +.ico-hr .plus-v { + animation: ico-pv 4s ease-in-out infinite; + transform-origin: center; +} +.ico-hr .plus-h { + animation: ico-ph 4s ease-in-out infinite 0.3s; + transform-origin: center; +} +@keyframes ico-pv { + 0%, 100% { + opacity: 0.4; + stroke-width: 1.8; + } + 50% { + opacity: 1; + stroke-width: 2.4; + } +} +@keyframes ico-ph { + 0%, 100% { + opacity: 0.4; + stroke-width: 1.8; + } + 50% { + opacity: 1; + stroke-width: 2.4; + } +} +.jey-theme-grid { + display: flex; + gap: 20px; + padding: 20px; + justify-content: center; +} +.jey-theme-card { + cursor: pointer; + text-align: center; + padding: 16px; + border-radius: 12px; + border: 2px solid transparent; + transition: border-color 0.2s, background 0.2s; + min-width: 140px; +} +.jey-theme-card:hover { + background: var(--subtle-fg, #f5f5f5); +} +.jey-theme-card.selected { + border-color: var(--primary, #2490ef); + background: var(--subtle-fg, #f5f5f5); +} +.jey-theme-preview { + width: 72px; + height: 72px; + border-radius: 50%; + margin: 0 auto 12px; + position: relative; + overflow: hidden; +} +.jey-theme-preview--chrome { + background: conic-gradient(from -140deg, #a0a0a0 0deg, #f2f2f2 40deg, #777 80deg, #e5e5e5 120deg, #959595 170deg, #ededed 210deg, #808080 260deg, #d8d8d8 310deg, #a0a0a0 360deg); + box-shadow: 0 3px 8px rgba(0, 0, 0, 0.15), inset 0 1px 1px rgba(255, 255, 255, 0.5); +} +.jey-theme-preview--chrome .jey-theme-preview-icon { + position: absolute; + inset: 9px; + border-radius: 50%; + background: linear-gradient(-168deg, #f4f4f4 0%, #e0e0e0 45%, #d4d4d4 100%); +} +.jey-theme-preview--modern { + border-radius: 16px; + background: rgba(255, 255, 255, 0.4); + -webkit-backdrop-filter: blur(6px); + backdrop-filter: blur(6px); + border: 1px solid rgba(255, 255, 255, 0.5); + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06); +} +.jey-theme-preview--modern .jey-theme-preview-icon { + position: absolute; + inset: 22px; + border-radius: 6px; + background: #4f46e5; + opacity: 0.25; +} +.jey-theme-label { + font-weight: 600; + font-size: var(--text-base); + margin-bottom: 2px; +} +.jey-theme-info { + font-size: var(--text-sm); + color: var(--text-muted); +} +.ce-block .links-widget-box, +.ce-block .number-widget-box { + opacity: 0; + transform: translateY(24px) scale(0.97); + animation: jey-card-in 0.7s cubic-bezier(0.22, 1, 0.36, 1) forwards; + border-radius: var(--border-radius-lg, 12px); + transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1), box-shadow 0.35s ease; + position: relative; +} +@keyframes jey-number-in { + from { + opacity: 0; + transform: translateY(6px); + } + to { + opacity: 1; + transform: translateY(0); + } +} +.number-widget-box .widget-content .number { + animation: jey-number-in 0.5s cubic-bezier(0.22, 1, 0.36, 1) 0.3s both; +} +.ce-block .links-widget-box .widget-control .dropdown-menu, +.ce-block .number-widget-box .widget-control .dropdown-menu { + z-index: 1050; +} +.ce-block:nth-child(1) .links-widget-box, +.ce-block:nth-child(1) .number-widget-box { + animation-delay: 0.00s; +} +.ce-block:nth-child(2) .links-widget-box, +.ce-block:nth-child(2) .number-widget-box { + animation-delay: 0.06s; +} +.ce-block:nth-child(3) .links-widget-box, +.ce-block:nth-child(3) .number-widget-box { + animation-delay: 0.12s; +} +.ce-block:nth-child(4) .links-widget-box, +.ce-block:nth-child(4) .number-widget-box { + animation-delay: 0.18s; +} +.ce-block:nth-child(5) .links-widget-box, +.ce-block:nth-child(5) .number-widget-box { + animation-delay: 0.24s; +} +.ce-block:nth-child(6) .links-widget-box, +.ce-block:nth-child(6) .number-widget-box { + animation-delay: 0.30s; +} +.ce-block:nth-child(7) .links-widget-box, +.ce-block:nth-child(7) .number-widget-box { + animation-delay: 0.36s; +} +.ce-block:nth-child(8) .links-widget-box, +.ce-block:nth-child(8) .number-widget-box { + animation-delay: 0.42s; +} +.ce-block:nth-child(9) .links-widget-box, +.ce-block:nth-child(9) .number-widget-box { + animation-delay: 0.48s; +} +.ce-block:nth-child(10) .links-widget-box, +.ce-block:nth-child(10) .number-widget-box { + animation-delay: 0.54s; +} +.ce-block:nth-child(11) .links-widget-box, +.ce-block:nth-child(11) .number-widget-box { + animation-delay: 0.60s; +} +.ce-block:nth-child(12) .links-widget-box, +.ce-block:nth-child(12) .number-widget-box { + animation-delay: 0.66s; +} +@keyframes jey-card-in { + from { + opacity: 0; + transform: translateY(24px) scale(0.97); + } + to { + opacity: 1; + transform: none; + } +} +.ce-block .links-widget-box::after, +.ce-block .number-widget-box::after { + content: ""; + position: absolute; + bottom: 0; + right: 10%; + left: 10%; + height: 2.5px; + border-radius: 2px 2px 0 0; + background: var(--primary, #2490ef); + transform: scaleX(0); + transition: transform 0.35s cubic-bezier(0.22, 1, 0.36, 1); + transform-origin: center; +} +.ce-block .links-widget-box:hover::after, +.ce-block .number-widget-box:hover::after { + transform: scaleX(1); +} +.ce-block .links-widget-box:hover, +.ce-block .number-widget-box:hover { + transform: translateY(-3px); + box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08), 0 2px 6px rgba(0, 0, 0, 0.04); +} +.ce-block .links-widget-box:hover, +.ce-block .number-widget-box:hover, +.ce-block .links-widget-box:focus-within, +.ce-block .number-widget-box:focus-within { + z-index: 100; +} +.ce-block .links-widget-box:has(.dropdown-menu.show), +.ce-block .number-widget-box:has(.dropdown-menu.show) { + z-index: 200; +} +.links-widget-box .link-item { + position: relative; + transition: background 0.25s ease, transform 0.25s ease; + border-radius: var(--border-radius, 8px); + overflow: hidden; +} +.links-widget-box .link-item:hover { + transform: translateX(-6px); + background: var(--subtle-fg, rgba(0, 0, 0, 0.02)); +} +.links-widget-box .link-item .es-icon { + display: none !important; +} +.select-icon svg { + display: none !important; +} +.select-icon { + top: 0 !important; + bottom: 0 !important; + display: flex !important; + align-items: center !important; +} +.select-icon::after { + content: "" !important; + display: block; + width: 12px; + height: 12px; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23636e72' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); + background-size: contain; + background-repeat: no-repeat; + background-position: center; +} +.msg-box .icon-xl { + display: none !important; +} +.msg-box .mb-4 { + display: flex; + justify-content: center; +} +.msg-box .mb-4::after { + content: "" !important; + display: block; + width: 48px; + height: 48px; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23b0b8c0' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='22 12 16 12 14 15 10 15 8 12 2 12'/%3E%3Cpath d='M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z'/%3E%3C/svg%3E"); + background-size: contain; + background-repeat: no-repeat; + background-position: center; +} +.user-onboarding { + display: none !important; +} +.comment-count svg { + fill: none !important; + stroke: currentColor !important; + stroke-width: 1.5 !important; + stroke-linecap: round; + stroke-linejoin: round; +} +.new-timeline .activity-title, +.new-timeline .timeline-actions, +.comment-box, +.comment-input-wrapper, +.comment-input-wrapper .ql-container, +.comment-input-wrapper .frappe-control .ql-editor { + background: transparent !important; + border-color: transparent !important; + box-shadow: none !important; +} +.standard-filter-section .frappe-control.jey-period-filter { + flex: 0 0 auto; + min-width: 200px; +} +.standard-filter-section .frappe-control.jey-period-filter input { + min-width: 200px; +} +.control-input.fields_order { + height: auto !important; + min-height: 32px; + display: flex; + align-items: center; +} +.control-input.fields_order > .row { + width: 100%; + align-items: center; + margin: 0; +} +.control-input.fields_order > .row > [class*=col-] { + padding-top: 0 !important; + margin-top: 0 !important; +} +@keyframes jey-chrome-rotate-glow { + from { + transform: rotate(0deg); + } + to { + transform: rotate(-360deg); + } +} +@keyframes jey-chrome-face-light { + 0% { + background: radial-gradient(circle at 25% 20%, rgba(255, 255, 255, 0.5) 0%, transparent 55%); + } + 25% { + background: radial-gradient(circle at 75% 25%, rgba(255, 255, 255, 0.5) 0%, transparent 55%); + } + 50% { + background: radial-gradient(circle at 70% 75%, rgba(255, 255, 255, 0.35) 0%, transparent 55%); + } + 75% { + background: radial-gradient(circle at 25% 70%, rgba(255, 255, 255, 0.35) 0%, transparent 55%); + } + 100% { + background: radial-gradient(circle at 25% 20%, rgba(255, 255, 255, 0.5) 0%, transparent 55%); + } +} +@keyframes jey-chrome-refl-drift { + 0%, 100% { + top: 12%; + opacity: 0.7; + } + 50% { + top: 18%; + opacity: 0.5; + } +} +[data-jey-theme=chrome] .jey-chrome { + width: 72px; + height: 72px; + border-radius: 50%; + position: relative; + background: radial-gradient(ellipse at 35% 20%, rgba(255, 255, 255, 0.7) 0%, transparent 55%), linear-gradient(-180deg, #e0e0e0 0%, #b8b8b8 100%); + box-shadow: + 0 4px 10px rgba(0, 0, 0, 0.18), + 0 1px 3px rgba(0, 0, 0, 0.1), + inset 0 1px 1px rgba(255, 255, 255, 0.7); + transition: box-shadow 0.3s ease; +} +[data-jey-theme=chrome] .desktop-icon:hover .jey-chrome { + box-shadow: + 0 6px 16px rgba(0, 0, 0, 0.22), + 0 1px 3px rgba(0, 0, 0, 0.12), + 0 0 14px rgba(255, 255, 255, 0.2), + inset 0 1px 1px rgba(255, 255, 255, 0.7); +} +[data-jey-theme=chrome] .jey-chrome-ring { + position: absolute; + inset: 2px; + border-radius: 50%; + background: conic-gradient(from -140deg, #a0a0a0 0deg, #f2f2f2 40deg, #777 80deg, #e5e5e5 120deg, #959595 170deg, #ededed 210deg, #808080 260deg, #d8d8d8 310deg, #a0a0a0 360deg); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.2); + overflow: hidden; +} +[data-jey-theme=chrome] .jey-ring-glow { + position: absolute; + inset: -10px; + border-radius: 50%; + background: conic-gradient(from 0deg, transparent 0deg, transparent 140deg, rgba(255, 255, 255, 0.55) 165deg, rgba(255, 255, 255, 0.8) 180deg, rgba(255, 255, 255, 0.55) 195deg, transparent 220deg, transparent 360deg); + animation: jey-chrome-rotate-glow 8s linear infinite; + pointer-events: none; +} +[data-jey-theme=chrome] .jey-chrome-gap { + position: absolute; + inset: 5px; + border-radius: 50%; + background: linear-gradient(-180deg, #888 0%, #aaa 50%, #999 100%); + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.35), inset 0 -1px 1px rgba(255, 255, 255, 0.2); +} +[data-jey-theme=chrome] .jey-chrome-ring-inner { + position: absolute; + inset: 6px; + border-radius: 50%; + background: conic-gradient(from -200deg, #b0b0b0 0deg, #eee 30deg, #999 70deg, #ddd 110deg, #aaa 160deg, #f0f0f0 200deg, #909090 250deg, #ccc 300deg, #b0b0b0 360deg); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.15); +} +[data-jey-theme=chrome] .jey-chrome-face { + position: absolute; + inset: 9px; + border-radius: 50%; + overflow: hidden; + background: linear-gradient(-168deg, #f4f4f4 0%, #e0e0e0 45%, #d4d4d4 100%); + box-shadow: inset 0 3px 7px rgba(255, 255, 255, 0.7), inset 0 -3px 6px rgba(0, 0, 0, 0.06); + display: flex; + align-items: center; + justify-content: center; +} +[data-jey-theme=chrome] .jey-face-glow { + position: absolute; + inset: 0; + border-radius: 50%; + animation: jey-chrome-face-light 8s ease-in-out infinite; + pointer-events: none; + z-index: 1; +} +[data-jey-theme=chrome] .jey-face-reflection { + position: absolute; + top: 15%; + right: 10%; + width: 80%; + height: 30%; + background: linear-gradient(-180deg, rgba(255, 255, 255, 0.6) 0%, rgba(255, 255, 255, 0.15) 60%, transparent 100%); + border-radius: 50%; + pointer-events: none; + z-index: 1; + animation: jey-chrome-refl-drift 10s ease-in-out infinite; +} +[data-jey-theme=chrome] .jey-chrome-face .jey-icon { + width: 24px !important; + height: 24px !important; + stroke: #505050 !important; + fill: none !important; + stroke-width: 1.8 !important; + stroke-linecap: round !important; + stroke-linejoin: round !important; + filter: drop-shadow(0 1px 0 rgba(255, 255, 255, 0.5)) !important; + position: relative; + z-index: 2; +} +@keyframes jey-chrome-shine { + 0% { + transform: translateX(100%) skewX(15deg); + } + 100% { + transform: translateX(-200%) skewX(15deg); + } +} +[data-jey-theme=chrome] { + --bg-color: #d8d8d8; + --fg-color: #e8e8e8; + --card-bg: #e0e0e0; + --subtle-accent: #d4d4d4; + --subtle-fg: #d0d0d0; + --fg-hover-color: #ccc; + --highlight-color: #d4d4d4; + --navbar-bg: #d0d0d0; + --modal-bg: #ddd; + --toast-bg: #ddd; + --popover-bg: #e0e0e0; + --control-bg: #d5d5d5; + --control-bg-on-gray: #ccc; + --awesomebar-focus-bg: #e8e8e8; + --disabled-control-bg: #d0d0d0; + --skeleton-bg: #c8c8c8; + --surface-menu-bar: #d4d4d4; + --surface-white: #e0e0e0; + --surface-gray-1: #d8d8d8; + --surface-gray-2: #d0d0d0; + --surface-gray-3: #c8c8c8; + --surface-gray-4: #bbb; + --surface-modal: #ddd; + --placeholder-color: #ccc; + --sidebar-hover-color: #c8c8c8; + --sidebar-active-color: #d8d8d8; + --sidebar-border-color: #aaa; + --divider-color: #b0b0b0; + --heading-color: #333; + --text-color: #404040; + --text-neutral: #333; + --text-muted: #666; + --text-light: #888; + --text-dark: #f0f0f0; + --disabled-text-color: #888; + --ink-gray-7: #555; + --ink-gray-8: #404040; + --ink-gray-9: #333; + --border-color: #aaa; + --dark-border-color: #999; + --table-border-color: #aaa; + --btn-group-border-color: #999; + --outline-gray-1: #b0b0b0; + --outline-gray-2: #999; + --outline-gray-modals: #aaa; + --primary: #555; + --brand-color: #555; + --btn-primary: #777; + --btn-default-bg: #ccc; + --btn-default-hover-bg: #bbb; + --btn-ghost-hover-bg: #c0c0c0; + --border-primary: #777; + --shadow-xs: 1px 1px 2px rgba(0,0,0,0.15), -1px -1px 1px rgba(255,255,255,0.5); + --shadow-sm: 1px 1px 3px rgba(0,0,0,0.18), -1px -1px 2px rgba(255,255,255,0.45); + --shadow-base: 2px 2px 4px rgba(0,0,0,0.15), -1px -1px 2px rgba(255,255,255,0.4); + --shadow-md: 2px 2px 6px rgba(0,0,0,0.18), -1px -1px 3px rgba(255,255,255,0.35); + --shadow-lg: 3px 3px 10px rgba(0,0,0,0.15), -2px -2px 5px rgba(255,255,255,0.3); + --shadow-xl: 4px 4px 16px rgba(0,0,0,0.18), -2px -2px 6px rgba(255,255,255,0.25); + --shadow-2xl: 6px 6px 24px rgba(0,0,0,0.2), -3px -3px 8px rgba(255,255,255,0.2); + --shadow-inset: inset 0px -1px 0px #999; + --btn-shadow: 1px 1px 2px rgba(0,0,0,0.15), -1px -1px 1px rgba(255,255,255,0.4); + --card-shadow: 2px 2px 6px rgba(0,0,0,0.12), -1px -1px 3px rgba(255,255,255,0.4); + --modal-shadow: 6px 6px 30px rgba(0,0,0,0.3), -3px -3px 10px rgba(255,255,255,0.15); + --awesomebar-shadow: 3px 3px 12px rgba(0,0,0,0.15), -2px -2px 6px rgba(255,255,255,0.3); + --focus-default: 0 0 0 2px rgba(150,150,150,0.5); + --scrollbar-thumb-color: #999; + --scrollbar-track-color: #c8c8c8; + --switch-bg: #aaa; + --checkbox-color: #555; + --checkbox-gradient: linear-gradient(180deg, #777 0%, #666 100%); + --timeline-badge-color: #555; + --timeline-badge-bg: #ccc; + --date-active-bg: #777; + --date-active-text: #f0f0f0; + --date-range-bg: #ccc; + --progress-bar-bg: #777; + --code-block-bg: #444; + --code-block-text: #ccc; +} +[data-jey-theme=chrome] body { + background: + radial-gradient(ellipse at 25% 15%, rgba(255, 255, 255, 0.45) 0%, transparent 50%), + radial-gradient(ellipse at 80% 80%, rgba(255, 255, 255, 0.2) 0%, transparent 45%), + radial-gradient(ellipse at 50% 50%, rgba(0, 0, 0, 0.03) 0%, transparent 70%), + linear-gradient(-168deg, #d8d8d8 0%, #c4c4c4 40%, #b8b8b8 70%, #c8c8c8 100%) !important; + background-attachment: fixed !important; +} +[data-jey-theme=chrome] .page-container { + background: transparent !important; +} +[data-jey-theme=chrome] .navbar { + background: linear-gradient(-45deg, #aaa 2%, #ddd 8%, #bbb 18%, #e8e8e8 30%, #ccc 45%, #eee 55%, #bbb 68%, #ddd 80%, #aaa 95%) !important; + border-bottom: 1px solid #888 !important; + box-shadow: + inset 0 1px 0 rgba(255, 255, 255, 0.7), + inset 0 -1px 0 rgba(0, 0, 0, 0.08), + 0 2px 4px rgba(0, 0, 0, 0.15) !important; +} +[data-jey-theme=chrome] .navbar .navbar-nav .nav-link { + color: #444 !important; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} +[data-jey-theme=chrome] .navbar .navbar-nav .nav-link:hover { + color: #222 !important; + background: linear-gradient(-180deg, rgba(255, 255, 255, 0.35) 0%, rgba(255, 255, 255, 0.1) 100%) !important; + border-radius: 6px; +} +[data-jey-theme=chrome] .search-bar input { + background: linear-gradient(-180deg, #c0c0c0 0%, #d0d0d0 100%) !important; + border: 1px solid #999 !important; + box-shadow: + inset 0 2px 4px rgba(0, 0, 0, 0.15), + inset 0 0 0 1px rgba(0, 0, 0, 0.05), + 0 1px 0 rgba(255, 255, 255, 0.5) !important; + color: #333 !important; + border-radius: 6px !important; +} +[data-jey-theme=chrome] .search-bar input:focus { + background: linear-gradient(-180deg, #d5d5d5 0%, #e0e0e0 100%) !important; + border-color: #888 !important; + box-shadow: + inset 0 1px 3px rgba(0, 0, 0, 0.1), + 0 0 0 2px rgba(150, 150, 150, 0.3), + 0 1px 0 rgba(255, 255, 255, 0.4) !important; +} +[data-jey-theme=chrome] .search-bar .search-icon { + color: #777 !important; +} +[data-jey-theme=chrome] .body-sidebar-container { + background: linear-gradient(-160deg, #b8b8b8 0%, #f0f0f0 12%, #c0c0c0 28%, #f4f4f4 42%, #b8b8b8 58%, #ededed 72%, #aaa 88%, #ddd 100%) !important; + border-left: 1px solid #888 !important; + box-shadow: + inset 1px 0 0 rgba(255, 255, 255, 0.6), + inset 0 1px 0 rgba(255, 255, 255, 0.7), + inset 0 -1px 0 rgba(0, 0, 0, 0.1), + -2px 0 8px rgba(0, 0, 0, 0.12) !important; +} +[data-jey-theme=chrome] .body-sidebar-container .body-sidebar, +[data-jey-theme=chrome] .body-sidebar-container .body-sidebar-top, +[data-jey-theme=chrome] .body-sidebar-container .body-sidebar-bottom, +[data-jey-theme=chrome] .body-sidebar-container .body-sidebar-cards { + background: transparent !important; +} +[data-jey-theme=chrome] .body-sidebar .standard-sidebar-item .item-anchor:hover { + background: linear-gradient(-90deg, rgba(255, 255, 255, 0.25) 0%, rgba(255, 255, 255, 0.05) 100%) !important; +} +[data-jey-theme=chrome] .body-sidebar .standard-sidebar-item.active-sidebar .item-anchor { + background: linear-gradient(-45deg, #bbb 5%, #ddd 30%, #ccc 60%, #ddd 90%) !important; + box-shadow: + inset 0 1px 0 rgba(255, 255, 255, 0.6), + inset 0 -1px 0 rgba(0, 0, 0, 0.08), + -1px 1px 2px rgba(0, 0, 0, 0.1), + 1px -1px 1px rgba(255, 255, 255, 0.3) !important; + border-radius: 8px; +} +[data-jey-theme=chrome] .body-sidebar .sidebar-item-icon { + color: #666 !important; + filter: drop-shadow(0 1px 0 rgba(255, 255, 255, 0.5)); +} +[data-jey-theme=chrome] .frappe-menu .menu-item-icon .jey-icon { + width: 20px !important; + height: 20px !important; + stroke: #555 !important; + fill: none !important; + stroke-width: 1.8 !important; + stroke-linecap: round !important; + stroke-linejoin: round !important; + filter: drop-shadow(0 1px 0 rgba(255, 255, 255, 0.4)) !important; +} +[data-jey-theme=chrome] .sidebar-header .header-logo .jey-icon { + width: 22px !important; + height: 22px !important; + stroke: #555 !important; + fill: none !important; + stroke-width: 1.8 !important; + stroke-linecap: round !important; + stroke-linejoin: round !important; + filter: drop-shadow(0 1px 0 rgba(255, 255, 255, 0.4)) !important; +} +[data-jey-theme=chrome] .btn-primary { + background: linear-gradient(-45deg, #666 5%, #aaa 10%, #888 30%, #999 50%, #888 70%, #aaa 85%, #666 95%) !important; + color: #f0f0f0 !important; + border: 1px solid #555 !important; + box-shadow: + -2px 2px 4px rgba(0, 0, 0, 0.2), + 1px -1px 2px rgba(255, 255, 255, 0.15), + inset 0 1px 0 rgba(255, 255, 255, 0.3), + inset 0 -1px 0 rgba(0, 0, 0, 0.15), + inset -2px 2px 5px rgba(0, 0, 0, 0), + inset 1px -1px 2px rgba(255, 255, 255, 0) !important; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + position: relative; + overflow: hidden; + transition: box-shadow 0.25s cubic-bezier(0.22, 1, 0.36, 1), border-color 0.25s cubic-bezier(0.22, 1, 0.36, 1) !important; +} +[data-jey-theme=chrome] .btn-primary::before { + content: ""; + position: absolute; + top: 0; + right: -50%; + width: 30%; + height: 100%; + background: linear-gradient(-90deg, transparent, rgba(255, 255, 255, 0.25), transparent); + transform: skewX(15deg); + transition: right 0.4s ease; + pointer-events: none; +} +[data-jey-theme=chrome] .btn-primary:hover::before { + right: 120%; +} +[data-jey-theme=chrome] .btn-primary:hover { + background: linear-gradient(-45deg, #777 5%, #bbb 10%, #999 30%, #aaa 50%, #999 70%, #bbb 85%, #777 95%) !important; + box-shadow: + -2px 2px 6px rgba(0, 0, 0, 0.25), + 1px -1px 3px rgba(255, 255, 255, 0.2), + inset 0 1px 0 rgba(255, 255, 255, 0.35), + inset 0 -1px 0 rgba(0, 0, 0, 0.15), + inset -2px 2px 5px rgba(0, 0, 0, 0), + inset 1px -1px 2px rgba(255, 255, 255, 0) !important; +} +[data-jey-theme=chrome] .btn-primary:active { + background: linear-gradient(-45deg, #555 5%, #888 10%, #777 30%, #888 50%, #777 70%, #888 85%, #555 95%) !important; + box-shadow: + -2px 2px 4px rgba(0, 0, 0, 0), + 1px -1px 2px rgba(255, 255, 255, 0), + inset 0 1px 0 rgba(255, 255, 255, 0), + inset 0 -1px 0 rgba(0, 0, 0, 0.05), + inset -3px 3px 7px rgba(0, 0, 0, 0.35), + inset 1px -1px 2px rgba(255, 255, 255, 0.12) !important; + transition: box-shadow 0.08s ease-out !important; +} +[data-jey-theme=chrome] .btn-default, +[data-jey-theme=chrome] .btn-secondary { + background: linear-gradient(-45deg, #bbb 5%, #eee 10%, #ccc 30%, #e0e0e0 50%, #ccc 70%, #eee 85%, #bbb 95%) !important; + border: 1px solid #999 !important; + color: #444 !important; + box-shadow: + -1px 1px 3px rgba(0, 0, 0, 0.12), + 1px -1px 2px rgba(255, 255, 255, 0.4), + inset 0 1px 0 rgba(255, 255, 255, 0.6), + inset 0 -1px 0 rgba(0, 0, 0, 0.06), + inset -2px 2px 4px rgba(0, 0, 0, 0), + inset 1px -1px 1px rgba(255, 255, 255, 0) !important; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + transition: box-shadow 0.25s cubic-bezier(0.22, 1, 0.36, 1), border-color 0.25s cubic-bezier(0.22, 1, 0.36, 1) !important; +} +[data-jey-theme=chrome] .btn-default:hover, +[data-jey-theme=chrome] .btn-secondary:hover { + background: linear-gradient(-45deg, #c0c0c0 5%, #f2f2f2 10%, #d4d4d4 30%, #e8e8e8 50%, #d4d4d4 70%, #f2f2f2 85%, #c0c0c0 95%) !important; + border-color: #888 !important; + box-shadow: + -2px 2px 4px rgba(0, 0, 0, 0.15), + 1px -1px 2px rgba(255, 255, 255, 0.4), + inset 0 1px 0 rgba(255, 255, 255, 0.7), + inset 0 -1px 0 rgba(0, 0, 0, 0.06), + inset -2px 2px 4px rgba(0, 0, 0, 0), + inset 1px -1px 1px rgba(255, 255, 255, 0) !important; +} +[data-jey-theme=chrome] .btn-default:active, +[data-jey-theme=chrome] .btn-secondary:active { + background: linear-gradient(-45deg, #aaa 5%, #d8d8d8 10%, #bbb 30%, #ccc 50%, #bbb 70%, #d8d8d8 85%, #aaa 95%) !important; + box-shadow: + -1px 1px 3px rgba(0, 0, 0, 0), + 1px -1px 2px rgba(255, 255, 255, 0), + inset 0 1px 0 rgba(255, 255, 255, 0), + inset 0 -1px 0 rgba(0, 0, 0, 0.05), + inset -3px 3px 6px rgba(0, 0, 0, 0.3), + inset 1px -1px 1px rgba(255, 255, 255, 0.15) !important; + transition: box-shadow 0.08s ease-out !important; +} +[data-jey-theme=chrome] .btn-danger { + background: linear-gradient(-45deg, #b33 5%, #e88 10%, #c55 30%, #d77 50%, #c55 70%, #e88 85%, #b33 95%) !important; + color: #fff !important; + border: 1px solid #944 !important; + box-shadow: + -2px 2px 4px rgba(0, 0, 0, 0.2), + 1px -1px 2px rgba(255, 255, 255, 0.1), + inset 0 1px 0 rgba(255, 255, 255, 0.25) !important; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); +} +[data-jey-theme=chrome] .btn-danger:hover { + background: linear-gradient(-45deg, #c44 5%, #f99 10%, #d66 30%, #e88 50%, #d66 70%, #f99 85%, #c44 95%) !important; +} +[data-jey-theme=chrome] .btn-ghost:hover { + background: linear-gradient(-180deg, rgba(255, 255, 255, 0.2) 0%, rgba(255, 255, 255, 0.05) 100%) !important; +} +[data-jey-theme=chrome] input.form-control:not([type="checkbox"]):not([type="radio"]), +[data-jey-theme=chrome] textarea.form-control { + background: #d0d0d0 !important; + border: 1px solid #999 !important; + color: #333 !important; + box-shadow: + inset -1px 1px 2px rgba(0, 0, 0, 0.10), + inset 1px -1px 1px rgba(255, 255, 255, 0.25), + inset 0 1px 1px rgba(0, 0, 0, 0.04) !important; + transition: + background-color 0.45s cubic-bezier(0.22, 1, 0.36, 1), + border-color 0.45s cubic-bezier(0.22, 1, 0.36, 1), + box-shadow 0.45s cubic-bezier(0.22, 1, 0.36, 1) !important; +} +[data-jey-theme=chrome] input.form-control:not([type="checkbox"]):not([type="radio"]):focus, +[data-jey-theme=chrome] textarea.form-control:focus { + background: #cbcbcb !important; + border-color: #777 !important; + box-shadow: + inset -4px 4px 8px rgba(0, 0, 0, 0.28), + inset 1px -1px 1px rgba(255, 255, 255, 0.15), + inset 0 3px 5px rgba(0, 0, 0, 0.18) !important; +} +[data-jey-theme=chrome] .form-control:disabled, +[data-jey-theme=chrome] .form-control[disabled] { + background: #d8d8d8 !important; + color: #888 !important; + box-shadow: inset -1px 1px 2px rgba(0, 0, 0, 0.06) !important; +} +[data-jey-theme=chrome] .frappe-control .control-label, +[data-jey-theme=chrome] .frappe-control label { + color: #444 !important; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} +[data-jey-theme=chrome] select.form-control, +[data-jey-theme=chrome] select.input-with-feedback { + background: #d0d0d0 !important; +} +[data-jey-theme=chrome] .form-page { + background: linear-gradient(-45deg, #ccc 3%, #e8e8e8 10%, #d5d5d5 25%, #eee 45%, #d8d8d8 60%, #e8e8e8 80%, #ccc 97%) !important; + border: 1px solid #aaa !important; + box-shadow: + -3px 3px 8px rgba(0, 0, 0, 0.12), + 2px -2px 4px rgba(255, 255, 255, 0.4), + inset 0 1px 0 rgba(255, 255, 255, 0.7), + inset 0 -1px 0 rgba(0, 0, 0, 0.05) !important; + border-radius: var(--border-radius-lg) !important; +} +[data-jey-theme=chrome] .form-section .section-head { + color: #444 !important; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + border-bottom: 1px solid #b0b0b0 !important; + position: relative; +} +[data-jey-theme=chrome] .frappe-card { + background: linear-gradient(-45deg, #c8c8c8 3%, #e5e5e5 12%, #d4d4d4 30%, #eaeaea 50%, #d4d4d4 70%, #e5e5e5 88%, #c8c8c8 97%) !important; + border: 1px solid #aaa !important; + box-shadow: + -2px 2px 6px rgba(0, 0, 0, 0.1), + 1px -1px 3px rgba(255, 255, 255, 0.4), + inset 0 1px 0 rgba(255, 255, 255, 0.6) !important; +} +[data-jey-theme=chrome] .form-sidebar { + border-right: 1px solid #aaa !important; +} +[data-jey-theme=chrome] .form-sidebar .sidebar-section { + border-bottom: 1px solid #b0b0b0 !important; +} +[data-jey-theme=chrome] .modal-content { + background: linear-gradient(-45deg, #ccc 3%, #e8e8e8 12%, #d5d5d5 30%, #eee 50%, #d5d5d5 70%, #e8e8e8 88%, #ccc 97%) !important; + border: 1px solid #999 !important; + box-shadow: + -6px 6px 24px rgba(0, 0, 0, 0.25), + 3px -3px 8px rgba(255, 255, 255, 0.15), + inset 0 1px 0 rgba(255, 255, 255, 0.6), + inset 0 0 0 1px rgba(255, 255, 255, 0.35) !important; +} +[data-jey-theme=chrome] .modal-header { + background: linear-gradient(-45deg, #b0b0b0 5%, #ddd 12%, #c0c0c0 30%, #e5e5e5 50%, #c0c0c0 70%, #ddd 88%, #b0b0b0 95%) !important; + border-bottom: 1px solid #999 !important; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.6), inset 0 -1px 0 rgba(0, 0, 0, 0.06) !important; +} +[data-jey-theme=chrome] .modal-header .modal-title { + color: #333 !important; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} +[data-jey-theme=chrome] .modal-footer { + background: linear-gradient(-45deg, #b8b8b8 5%, #d8d8d8 20%, #c0c0c0 50%, #d8d8d8 80%, #b8b8b8 95%) !important; + border-top: 1px solid #999 !important; +} +[data-jey-theme=chrome] .modal-backdrop { + background-color: rgba(40, 40, 40, 0.55) !important; +} +[data-jey-theme=chrome] .page-head { + background: linear-gradient(-45deg, #b8b8b8 3%, #e0e0e0 10%, #c8c8c8 25%, #eaeaea 45%, #ccc 60%, #e0e0e0 80%, #b8b8b8 97%) !important; + border-bottom: 1px solid #999 !important; + box-shadow: + inset 0 1px 0 rgba(255, 255, 255, 0.6), + inset 0 -1px 0 rgba(0, 0, 0, 0.06), + 0 2px 4px rgba(0, 0, 0, 0.08) !important; +} +[data-jey-theme=chrome] .page-head .title-text { + color: #333 !important; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} +[data-jey-theme=chrome] .list-row-head { + background: linear-gradient(-45deg, #aaa 3%, #d8d8d8 10%, #bbb 25%, #e0e0e0 45%, #bbb 60%, #d8d8d8 80%, #aaa 97%) !important; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.6), inset 0 -1px 0 rgba(0, 0, 0, 0.06) !important; +} +[data-jey-theme=chrome] .list-row-container .list-row { + border-bottom: 1px solid #b8b8b8 !important; +} +[data-jey-theme=chrome] .list-row-container:hover { + background: linear-gradient(-90deg, rgba(255, 255, 255, 0.2) 0%, rgba(255, 255, 255, 0.05) 100%) !important; +} +[data-jey-theme=chrome] .result .list-row-container .level-left .list-row--col .level-left .ellipsis { + color: #404040 !important; +} +[data-jey-theme=chrome] .frappe-list .list-row .level-right, +[data-jey-theme=chrome] .frappe-list .list-row-head .level-right { + background: linear-gradient(-90deg, rgba(216, 216, 216, 0.85) 0%, rgba(208, 208, 208, 0.88) 100%) !important; + backdrop-filter: blur(3px); + -webkit-backdrop-filter: blur(3px); + border-right: 1px solid #a0a0a0 !important; + box-shadow: inset -1px 0 0 rgba(255, 255, 255, 0.5) !important; +} +[data-jey-theme=chrome] .frappe-list .list-row-container:hover .level-right { + background: linear-gradient(-90deg, rgba(224, 224, 224, 0.9) 0%, rgba(216, 216, 216, 0.92) 100%) !important; + box-shadow: inset -1px 0 0 rgba(255, 255, 255, 0.55), 6px 0 10px rgba(0, 0, 0, 0.05) !important; +} +[data-jey-theme=chrome] .layout-side-section { + border-left: 1px solid #aaa !important; +} +[data-jey-theme=chrome] .frappe-control[data-fieldtype=Table] .form-grid { + border: 1px solid #999 !important; +} +[data-jey-theme=chrome] .grid-heading-row { + background: linear-gradient(-45deg, #aaa 3%, #d5d5d5 10%, #bbb 30%, #ddd 50%, #bbb 70%, #d5d5d5 90%, #aaa 97%) !important; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.6), inset 0 -1px 0 rgba(0, 0, 0, 0.06) !important; +} +[data-jey-theme=chrome] .grid-heading-row .static-area { + color: #444 !important; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} +[data-jey-theme=chrome] .rows .grid-row:hover { + background: linear-gradient(-90deg, rgba(255, 255, 255, 0.2) 0%, rgba(255, 255, 255, 0.05) 100%) !important; +} +[data-jey-theme=chrome] .rows .grid-row { + border-bottom: 1px solid #b8b8b8 !important; +} +[data-jey-theme=chrome] .grid-footer { + background: transparent !important; + border-top: 1px solid #999 !important; +} +[data-jey-theme=chrome] .rows .grid-row.editable-row, +[data-jey-theme=chrome] .rows .grid-row:has(.editable-row) { + border-bottom: 1px solid #b8b8b8 !important; +} +[data-jey-theme=chrome] .grid-row > .data-row input.form-control:not([type="checkbox"]):not([type="radio"]), +[data-jey-theme=chrome] .grid-row > .data-row textarea.form-control, +[data-jey-theme=chrome] .grid-row > .data-row select.form-control, +[data-jey-theme=chrome] .grid-row > .data-row select.input-with-feedback, +[data-jey-theme=chrome] .grid-row > .data-row .awesomplete input, +[data-jey-theme=chrome] .grid-row > .data-row .like-disabled-input { + background: transparent !important; + border: 0 !important; + box-shadow: none !important; + outline: none !important; + color: #333 !important; + transition: box-shadow 0.45s cubic-bezier(0.22, 1, 0.36, 1), background 0.45s cubic-bezier(0.22, 1, 0.36, 1) !important; +} +[data-jey-theme=chrome] .grid-row > .data-row input.form-control:not([type="checkbox"]):not([type="radio"]):focus, +[data-jey-theme=chrome] .grid-row > .data-row textarea.form-control:focus, +[data-jey-theme=chrome] .grid-row > .data-row select.form-control:focus, +[data-jey-theme=chrome] .grid-row > .data-row select.input-with-feedback:focus, +[data-jey-theme=chrome] .grid-row > .data-row .awesomplete input:focus { + background: linear-gradient(-45deg, #bbb 5%, #d8d8d8 10%, #c4c4c4 30%, #d0d0d0 50%, #c4c4c4 70%, #d8d8d8 85%, #bbb 95%) !important; + border: 0 !important; + outline: none !important; + box-shadow: + inset 0 1px 0 rgba(255, 255, 255, 0), + inset 0 -1px 0 rgba(0, 0, 0, 0.05), + inset -3px 3px 6px rgba(0, 0, 0, 0.3), + inset 1px -1px 1px rgba(255, 255, 255, 0.15) !important; + transition: box-shadow 0.45s cubic-bezier(0.22, 1, 0.36, 1), background 0.45s cubic-bezier(0.22, 1, 0.36, 1) !important; +} +[data-jey-theme=chrome] .grid-row > .data-row input.form-control:not([type="checkbox"]):not([type="radio"]):disabled, +[data-jey-theme=chrome] .grid-row > .data-row input.form-control:not([type="checkbox"]):not([type="radio"])[disabled], +[data-jey-theme=chrome] .grid-row > .data-row input.form-control:not([type="checkbox"]):not([type="radio"])[readonly], +[data-jey-theme=chrome] .grid-row > .data-row textarea.form-control:disabled, +[data-jey-theme=chrome] .grid-row > .data-row textarea.form-control[readonly], +[data-jey-theme=chrome] .grid-row > .data-row select.form-control:disabled, +[data-jey-theme=chrome] .grid-row > .data-row select.input-with-feedback:disabled { + background: #d8d8d8 !important; + box-shadow: none !important; + color: #666 !important; +} +[data-jey-theme=chrome] .grid-row > .data-row input.form-control:not([type="checkbox"]):not([type="radio"]):disabled:focus, +[data-jey-theme=chrome] .grid-row > .data-row input.form-control:not([type="checkbox"]):not([type="radio"])[disabled]:focus, +[data-jey-theme=chrome] .grid-row > .data-row input.form-control:not([type="checkbox"]):not([type="radio"])[readonly]:focus, +[data-jey-theme=chrome] .grid-row > .data-row textarea.form-control:disabled:focus, +[data-jey-theme=chrome] .grid-row > .data-row textarea.form-control[readonly]:focus, +[data-jey-theme=chrome] .grid-row > .data-row select.form-control:disabled:focus { + background: #d8d8d8 !important; + box-shadow: none !important; +} +[data-jey-theme=chrome] .grid-row .editable-row .form-control { + padding-top: 10px !important; + padding-bottom: 10px !important; + height: auto !important; +} +[data-jey-theme=chrome] .form-tabs .nav-link { + color: #666 !important; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4); +} +[data-jey-theme=chrome] .form-tabs .nav-link:hover { + color: #444 !important; + background: linear-gradient(-180deg, rgba(255, 255, 255, 0.3) 0%, rgba(255, 255, 255, 0.05) 100%) !important; +} +[data-jey-theme=chrome] .form-tabs .nav-link.active { + color: #333 !important; + background: linear-gradient(-180deg, rgba(255, 255, 255, 0.2) 0%, transparent 100%) !important; +} +[data-jey-theme=chrome] .form-tabs .nav-link::after { + background: #777; +} +[data-jey-theme=chrome] .dropdown-menu { + background: linear-gradient(-45deg, #c0c0c0 3%, #e5e5e5 10%, #d0d0d0 30%, #eaeaea 50%, #d0d0d0 70%, #e5e5e5 90%, #c0c0c0 97%) !important; + border: 1px solid #999 !important; + box-shadow: + -4px 4px 12px rgba(0, 0, 0, 0.18), + 2px -2px 4px rgba(255, 255, 255, 0.15), + inset 0 1px 0 rgba(255, 255, 255, 0.6) !important; +} +[data-jey-theme=chrome] .dropdown-item { + color: #444 !important; +} +[data-jey-theme=chrome] .dropdown-item:hover, +[data-jey-theme=chrome] .dropdown-item:focus { + background: linear-gradient(-90deg, rgba(255, 255, 255, 0.3) 0%, rgba(255, 255, 255, 0.05) 100%) !important; + color: #222 !important; +} +[data-jey-theme=chrome] .dropdown-divider { + border-top-color: #aaa !important; +} +[data-jey-theme=chrome] .desk-alert { + background: linear-gradient(-45deg, #c0c0c0 5%, #e5e5e5 15%, #d0d0d0 40%, #e8e8e8 60%, #d0d0d0 85%, #c0c0c0 95%) !important; + border: 1px solid #999 !important; + box-shadow: + -3px 3px 8px rgba(0, 0, 0, 0.12), + 1px -1px 3px rgba(255, 255, 255, 0.3), + inset 0 1px 0 rgba(255, 255, 255, 0.5) !important; +} +[data-jey-theme=chrome] .breadcrumb-container a { + color: #666 !important; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4); +} +[data-jey-theme=chrome] .breadcrumb-container a:hover { + color: #333 !important; +} +[data-jey-theme=chrome] .new-timeline::before { + border-right-color: #aaa !important; +} +[data-jey-theme=chrome] .timeline-dot { + background: linear-gradient(-45deg, #bbb, #ddd, #bbb) !important; + border: 1px solid #999 !important; + box-shadow: -1px 1px 2px rgba(0, 0, 0, 0.1), 1px -1px 1px rgba(255, 255, 255, 0.3); +} +[data-jey-theme=chrome] .indicator-pill { + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.3), -1px 1px 1px rgba(0, 0, 0, 0.08); +} +[data-jey-theme=chrome] .popover { + background: linear-gradient(-45deg, #c0c0c0 3%, #e5e5e5 10%, #d0d0d0 30%, #eaeaea 50%, #d0d0d0 70%, #e5e5e5 90%, #c0c0c0 97%) !important; + border: 1px solid #999 !important; + box-shadow: + -4px 4px 12px rgba(0, 0, 0, 0.15), + 2px -2px 4px rgba(255, 255, 255, 0.2), + inset 0 1px 0 rgba(255, 255, 255, 0.5) !important; +} +[data-jey-theme=chrome] .popover .popover-body { + color: #404040 !important; +} +[data-jey-theme=chrome] .ce-block .links-widget-box, +[data-jey-theme=chrome] .ce-block .number-widget-box { + background: linear-gradient(-45deg, #c0c0c0 3%, #e5e5e5 12%, #d0d0d0 30%, #eaeaea 50%, #d0d0d0 70%, #e5e5e5 88%, #c0c0c0 97%) !important; + border: 1px solid #aaa !important; + box-shadow: + -2px 2px 6px rgba(0, 0, 0, 0.1), + 1px -1px 3px rgba(255, 255, 255, 0.35), + inset 0 1px 0 rgba(255, 255, 255, 0.6) !important; +} +[data-jey-theme=chrome] .ce-block .links-widget-box::after, +[data-jey-theme=chrome] .ce-block .number-widget-box::after { + background: conic-gradient(from -140deg, #a0a0a0, #e0e0e0, #888, #d0d0d0, #a0a0a0) !important; +} +[data-jey-theme=chrome] .ce-block .links-widget-box:hover, +[data-jey-theme=chrome] .ce-block .number-widget-box:hover { + box-shadow: + -3px 3px 10px rgba(0, 0, 0, 0.14), + 2px -2px 5px rgba(255, 255, 255, 0.3), + inset 0 1px 0 rgba(255, 255, 255, 0.7) !important; +} +[data-jey-theme=chrome] ::-webkit-scrollbar { + width: 10px; + height: 10px; +} +[data-jey-theme=chrome] ::-webkit-scrollbar-track { + background: linear-gradient(-90deg, #c0c0c0, #d0d0d0, #c0c0c0); +} +[data-jey-theme=chrome] ::-webkit-scrollbar-thumb { + background: linear-gradient(-90deg, #888, #bbb, #999, #bbb, #888); + border-radius: 5px; + border: 1px solid #999; +} +[data-jey-theme=chrome] ::-webkit-scrollbar-thumb:hover { + background: linear-gradient(-90deg, #777, #aaa, #888, #aaa, #777); +} +[data-jey-theme=chrome] a { + color: #555; +} +[data-jey-theme=chrome] a:hover { + color: #333; +} +@media print { + [data-jey-theme=chrome] body, + [data-jey-theme=chrome] .page-container, + [data-jey-theme=chrome] .form-page, + [data-jey-theme=chrome] .frappe-card, + [data-jey-theme=chrome] .modal-content, + [data-jey-theme=chrome] .navbar { + background: white !important; + box-shadow: none !important; + border-color: #ddd !important; + text-shadow: none !important; + } + [data-jey-theme=chrome] .btn-primary { + background: #333 !important; + text-shadow: none !important; + } +} +@keyframes jey-modern-glow { + 0%, 100% { + opacity: 0.4; + } + 50% { + opacity: 0.7; + } +} +[data-jey-theme=modern] .jey-chrome { + width: 72px; + height: 72px; + border-radius: 22px; + position: relative; + background: rgba(255, 255, 255, 0.45); + backdrop-filter: blur(12px); + -webkit-backdrop-filter: blur(12px); + border: 1px solid rgba(255, 255, 255, 0.6); + box-shadow: + 0 4px 16px rgba(0, 0, 0, 0.06), + 0 1px 3px rgba(0, 0, 0, 0.04), + inset 0 1px 0 rgba(255, 255, 255, 0.8); + transition: all 0.3s ease; +} +[data-jey-theme=modern] .desktop-icon:hover .jey-chrome { + box-shadow: + 0 8px 24px rgba(0, 0, 0, 0.1), + 0 2px 6px rgba(0, 0, 0, 0.06), + inset 0 1px 0 rgba(255, 255, 255, 0.9); + transform: translateY(-2px); +} +[data-jey-theme=modern] .jey-chrome-ring, +[data-jey-theme=modern] .jey-chrome-gap, +[data-jey-theme=modern] .jey-chrome-ring-inner { + display: none; +} +[data-jey-theme=modern] .jey-chrome-face { + position: absolute; + inset: 0; + border-radius: 22px; + overflow: hidden; + background: transparent; + box-shadow: none; + display: flex; + align-items: center; + justify-content: center; +} +[data-jey-theme=modern] .jey-face-glow { + position: absolute; + bottom: -4px; + right: 16px; + left: 16px; + height: 20px; + border-radius: 50%; + background: radial-gradient(ellipse, rgba(99, 102, 241, 0.35) 0%, transparent 70%); + animation: jey-modern-glow 4s ease-in-out infinite; + pointer-events: none; + z-index: 0; +} +[data-jey-theme=modern] .jey-face-reflection { + position: absolute; + top: 0; + right: 0; + left: 0; + height: 50%; + border-radius: 22px 22px 0 0; + background: linear-gradient(-180deg, rgba(255, 255, 255, 0.5) 0%, transparent 100%); + pointer-events: none; + z-index: 1; + animation: none; +} +[data-jey-theme=modern] .jey-chrome-face .jey-icon { + width: 26px !important; + height: 26px !important; + stroke: #4f46e5 !important; + fill: none !important; + stroke-width: 1.6 !important; + stroke-linecap: round !important; + stroke-linejoin: round !important; + filter: drop-shadow(0 1px 2px rgba(79, 70, 229, 0.2)) !important; + position: relative; + z-index: 2; +} +[data-jey-theme=modern] .icon-container.jey-chrome-done { + border-radius: 22px !important; +} +/*# sourceMappingURL=jey_theme.bundle.4LQK3EX2.css.map */ diff --git a/jey_theme/public/dist/css-rtl/jey_theme.bundle.4LQK3EX2.css.map b/jey_theme/public/dist/css-rtl/jey_theme.bundle.4LQK3EX2.css.map new file mode 100644 index 0000000..ee7aff7 --- /dev/null +++ b/jey_theme/public/dist/css-rtl/jey_theme.bundle.4LQK3EX2.css.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../../../../../tmp/tmp-16010-XQ467tJ01y5r/jey_theme/jey_theme/public/css/jey_theme.bundle.css"], + "sourcesContent": ["/* Bundled theme styles (was 3 raw app_include_css/web_include_css entries).\n One hashed bundle -> smaller preload header + auto cache-busting.\n Order preserved: shared -> theme_chrome -> theme_modern. */\n\n/* ===== shared.css ===== */\n/* ==========================================================================\n Jey Theme \u2014 Shared Styles (theme-independent)\n ========================================================================== */\n\n/* Override Frappe's default desk splash image (the blue \"E\").\n Splash markup is in templates/includes/splash_screen.html and gets removed\n by Frappe once the desk boots, so this only shows during page load. */\n.splash img {\n\tcontent: url(\"/assets/jey_theme/images/preloader.png\");\n\tmax-width: 64px !important;\n\twidth: 64px !important;\n\theight: auto;\n}\n\n/* Hide Organization desktop icon by default */\n.desktop-icon[data-id=\"Organization\"],\n.desktop-icon[data-id=\"ERPNext\"] {\n\tdisplay: none !important;\n}\n\n/* Fallback hide for blocked modules (main filtering happens in access_control.py).\n Desktop Icon records use label \"Quality\" and \"Subcontracting\" \u2014 match those. */\n.desktop-icon[data-id=\"Quality\"],\n.desktop-icon[data-id=\"Quality Management\"],\n.desktop-icon[data-id=\"Subcontracting\"] {\n\tdisplay: none !important;\n}\n\n/* ==========================================================================\n Toggle Switch Checkboxes\n ========================================================================== */\n\ninput[type=\"checkbox\"] {\n -webkit-appearance: none !important;\n -moz-appearance: none !important;\n appearance: none !important;\n width: 28px !important;\n min-width: 28px !important;\n height: 16px !important;\n background-color: var(--gray-400, #c0c6cc) !important;\n background-image: none !important;\n border-radius: 999px !important;\n border: none !important;\n position: relative !important;\n cursor: pointer !important;\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.12) !important;\n transition: background-color 0.25s ease !important;\n vertical-align: middle !important;\n margin: 0 !important;\n margin-left: 8px !important;\n outline: none !important;\n}\n\ninput[type=\"checkbox\"]::after {\n content: \"\" !important;\n width: 12px !important;\n height: 12px !important;\n background-color: #fff !important;\n border-radius: 50% !important;\n position: absolute !important;\n top: 2px !important;\n right: 2px !important;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25) !important;\n transition: transform 0.25s ease !important;\n border: none !important;\n}\n\ninput[type=\"checkbox\"]:checked,\ninput[type=\"checkbox\"].disabled-selected {\n background-color: #2da44e !important;\n background-image: none !important;\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.08) !important;\n}\n\ninput[type=\"checkbox\"]:checked::after,\ninput[type=\"checkbox\"].disabled-selected::after {\n transform: translateX(-12px) !important;\n}\n\ninput[type=\"checkbox\"]:focus {\n outline: none !important;\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.12), 0 0 0 2px rgba(45, 164, 78, 0.25) !important;\n}\n\ninput[type=\"checkbox\"]:disabled {\n opacity: 0.5 !important;\n cursor: not-allowed !important;\n background-image: none !important;\n}\n\ninput[type=\"checkbox\"].disabled-selected {\n opacity: 0.7 !important;\n cursor: not-allowed !important;\n}\n\n\n/* ==========================================================================\n Table Grid \u2014 restore Frappe default checkboxes\n ========================================================================== */\n\n.row-check input[type=\"checkbox\"],\n.grid-row-check {\n width: var(--checkbox-size, 14px) !important;\n min-width: var(--checkbox-size, 14px) !important;\n height: var(--checkbox-size, 14px) !important;\n border-radius: 4px !important;\n border: 1px solid var(--gray-500) !important;\n background-color: transparent !important;\n background-image: none !important;\n box-shadow: none !important;\n margin-left: 0 !important;\n transition: none !important;\n}\n\n.row-check input[type=\"checkbox\"]::after,\n.grid-row-check::after {\n content: \"\" !important;\n width: auto !important;\n height: auto !important;\n background: none !important;\n border-radius: 0 !important;\n position: absolute !important;\n top: auto !important;\n right: auto !important;\n box-shadow: none !important;\n transition: none !important;\n transform: none !important;\n inset: -8px !important;\n opacity: 0 !important;\n}\n\n.row-check input[type=\"checkbox\"]:checked,\n.grid-row-check:checked {\n background-color: var(--primary) !important;\n background-image: url(\"data:image/svg+xml, \"), var(--checkbox-gradient) !important;\n background-size: 57%, 100% !important;\n background-repeat: no-repeat !important;\n background-position: center !important;\n border: none !important;\n box-shadow: none !important;\n}\n\n.row-check input[type=\"checkbox\"]:checked::after,\n.grid-row-check:checked::after {\n transform: none !important;\n}\n\n/* ==========================================================================\n Report View (frappe-datatable) \u2014 compact themed checkboxes\n The global toggle-switch styling (28\u00D716) doesn't fit the 32px select\n column or the 37px row-number column, so content gets clipped. Use the\n same compact square style as child-table grids (.row-check) \u2014 themed,\n not native.\n ========================================================================== */\n\n.datatable input[type=\"checkbox\"] {\n -webkit-appearance: none !important;\n -moz-appearance: none !important;\n appearance: none !important;\n width: var(--checkbox-size, 14px) !important;\n min-width: var(--checkbox-size, 14px) !important;\n height: var(--checkbox-size, 14px) !important;\n margin: 0 !important;\n padding: 0 !important;\n border: 1px solid var(--gray-500) !important;\n border-radius: 4px !important;\n background-color: transparent !important;\n background-image: none !important;\n box-shadow: none !important;\n cursor: pointer !important;\n vertical-align: middle !important;\n transition: none !important;\n}\n\n.datatable input[type=\"checkbox\"]::after {\n content: none !important;\n display: none !important;\n}\n\n.datatable input[type=\"checkbox\"]:checked {\n background-color: var(--primary) !important;\n background-image: url(\"data:image/svg+xml, \") !important;\n background-size: 57% !important;\n background-repeat: no-repeat !important;\n background-position: center !important;\n border: none !important;\n}\n\n.datatable input[type=\"checkbox\"]:disabled {\n opacity: 0.5 !important;\n cursor: not-allowed !important;\n}\n\n/* Centre the checkbox vertically in its cell \u2014 vertical-align:middle on the\n input alone isn't enough because datatable cells have their own line-box\n rules that anchor the box to the baseline. */\n.datatable .dt-cell__content:has(> input[type=\"checkbox\"]:only-child) {\n display: flex !important;\n align-items: center !important;\n justify-content: flex-start !important;\n}\n\n/* Filter row: input + help-icon squash each other in narrow columns. Let\n the input flex-shrink instead of overflowing its siblings. */\n.datatable .dt-row-filter .dt-cell__content {\n display: flex !important;\n align-items: center !important;\n gap: 2px;\n}\n\n.datatable .dt-row-filter .dt-filter.dt-input {\n flex: 1 1 0 !important;\n min-width: 0 !important;\n}\n\n.datatable .dt-row-filter .comparison-help-icon {\n flex: 0 0 auto;\n}\n\n/* ==========================================================================\n List View \u2014 restore toggle knob\n ========================================================================== */\n\ninput.list-row-checkbox::after,\ninput.list-header-checkbox::after {\n inset: auto !important;\n width: 12px !important;\n height: 12px !important;\n background-color: #fff !important;\n border-radius: 50% !important;\n position: absolute !important;\n top: 2px !important;\n right: 2px !important;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25) !important;\n transition: transform 0.25s ease !important;\n opacity: 1 !important;\n}\n\ninput.list-row-checkbox:checked::after,\ninput.list-header-checkbox:checked::after {\n transform: translateX(-12px) !important;\n}\n\n\n.frappe-control[data-fieldtype=\"Check\"] .checkbox label {\n align-items: center !important;\n}\n\n.frappe-control[data-fieldtype=\"Check\"] .checkbox .input-area:not(.hide) {\n padding-top: 0 !important;\n display: flex !important;\n align-items: center !important;\n}\n\n/* ==========================================================================\n List View \u2014 swap filter and sort order\n ========================================================================== */\n\n.filter-section {\n display: flex !important;\n}\n\n.filter-section .sort-selector {\n order: -1 !important;\n margin-left: 8px !important;\n}\n\n/* ==========================================================================\n Table Horizontal Scrollbar \u2014 thicker & easier to grab\n ========================================================================== */\n\n/* Force scrollbar always visible & push it below table content */\n.form-grid {\n overflow-x: scroll !important;\n padding-bottom: 12px !important;\n scrollbar-width: auto !important;\n}\n\n.form-grid::-webkit-scrollbar {\n height: 10px !important;\n}\n\n.form-grid::-webkit-scrollbar-track {\n background: var(--gray-100, #f5f5f5) !important;\n}\n\n.form-grid::-webkit-scrollbar-thumb {\n background: var(--gray-400, #c0c6cc) !important;\n border-radius: 5px !important;\n border: 2px solid var(--gray-100, #f5f5f5) !important;\n}\n\n.form-grid::-webkit-scrollbar-thumb:hover {\n background: var(--gray-500, #98a2ab) !important;\n}\n\n\n/* ==========================================================================\n Grid Column Resize Handles\n ========================================================================== */\n\n.jey-col-resize {\n position: absolute;\n top: 0;\n left: -2px;\n width: 5px;\n height: 100%;\n cursor: col-resize;\n z-index: 2;\n background: transparent;\n transition: background 0.15s;\n}\n\n.jey-col-resize:hover,\n.jey-col-resize:active {\n background: var(--primary, #2490ef);\n opacity: 0.5;\n}\n\n/* Column drag & drop */\n.grid-heading-row .grid-static-col[data-jey-draggable] {\n cursor: grab;\n}\n\n.grid-heading-row .grid-static-col.jey-drop-target.jey-drop-left {\n box-shadow: inset -3px 0 0 var(--primary, #2490ef);\n background: rgba(36, 144, 239, 0.05);\n}\n\n.grid-heading-row .grid-static-col.jey-drop-target.jey-drop-right {\n box-shadow: inset 3px 0 0 var(--primary, #2490ef);\n background: rgba(36, 144, 239, 0.05);\n}\n\n/* ==========================================================================\n List View Column Resize + Reorder\n ========================================================================== */\n\n.list-row-head .list-row-col {\n position: relative;\n}\n\n/* Column dividers \u2014 hint that headers can be resized / reordered. */\n.list-row-head .list-row-col:not(:last-child) {\n border-left: 1px solid var(--border-color, #e2e6e9);\n}\n\n.list-row-head .jey-col-resize {\n position: absolute;\n top: 0;\n left: -2px;\n width: 5px;\n height: 100%;\n cursor: col-resize;\n z-index: 3;\n background: transparent;\n transition: background 0.15s;\n}\n\n.list-row-head .jey-col-resize:hover,\n.list-row-head .jey-col-resize:active {\n background: var(--primary, #2490ef);\n opacity: 0.5;\n}\n\n.list-row-head .list-row-col[data-jey-draggable]:not(.list-subject) {\n cursor: grab;\n}\n\n.list-row-head .list-row-col.jey-drop-target.jey-drop-left {\n box-shadow: inset -3px 0 0 var(--primary, #2490ef);\n background: rgba(36, 144, 239, 0.05);\n}\n\n.list-row-head .list-row-col.jey-drop-target.jey-drop-right {\n box-shadow: inset 3px 0 0 var(--primary, #2490ef);\n background: rgba(36, 144, 239, 0.05);\n}\n\n/* ==========================================================================\n Sidebar \u2014 Full Width button\n ========================================================================== */\n\n/* .body-sidebar-bottom is a flex item of .body-sidebar (column flex).\n By default min-width:auto resolves to min-content, so it refuses to\n shrink below the natural width of its widest text \u2014 and our buttons'\n labels poke past the collapsed sidebar's right edge. Force min-width:0\n so it can match the cross-axis (50px collapsed) and clip properly. */\n.body-sidebar .body-sidebar-bottom {\n min-width: 0;\n}\n\n.jey-fullwidth-link,\n.jey-theme-switch-link,\n.jey-collapse-link {\n text-decoration: none;\n font-size: var(--text-sm);\n display: flex;\n align-items: center;\n cursor: pointer;\n margin-bottom: 8px;\n width: 100%;\n overflow: hidden;\n}\n\n.jey-fullwidth-link svg,\n.jey-theme-switch-link svg,\n.jey-collapse-link svg {\n margin: 0;\n flex: 0 0 auto;\n}\n\n.jey-fullwidth-link span,\n.jey-theme-switch-link span,\n.jey-collapse-link span {\n margin-right: 10px;\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n transition: max-width 0.3s cubic-bezier(0.4, 0, 0.2, 1),\n margin-right 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n/* When sidebar is collapsed, animate the label to zero width + zero\n margin so it smoothly slides under the icon instead of leaving a\n single ellipsized letter at the edge. */\n.body-sidebar-container:not(.expanded) .jey-fullwidth-link span,\n.body-sidebar-container:not(.expanded) .jey-theme-switch-link span,\n.body-sidebar-container:not(.expanded) .jey-collapse-link span {\n max-width: 0;\n margin-right: 0;\n}\n\n/* Hide the v16.17 native bottom row (about + collapse icon-buttons).\n Our labeled .jey-collapse-link replaces it. */\n.body-sidebar .sidebar-bottom-actions {\n display: none !important;\n}\n\n/* Frappe v16 toggles .nav-item padding 0\u21928px instantly between\n collapsed/expanded, while the sidebar width itself transitions over\n 0.3s \u2014 making the user/account button visibly jump 8px. Animate the\n padding so it stays in sync with the width. */\n.body-sidebar .nav-item {\n transition: padding 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n/* ==========================================================================\n Modal / Dialog \u2014 Smooth Entrance\n ========================================================================== */\n\n.modal.fade .modal-dialog {\n transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1),\n opacity 0.5s cubic-bezier(0.22, 1, 0.36, 1) !important;\n transform: translateY(-24px) scale(0.97);\n opacity: 0;\n}\n\n.modal.show .modal-dialog {\n transform: none;\n opacity: 1;\n}\n\n\n/* ==========================================================================\n Form Sections \u2014 Cascade Entrance\n ========================================================================== */\n\n@keyframes jey-section-in {\n from { top: -12px; }\n to { top: 0; }\n}\n\n/* Slide-only entrance \u2014 animating `opacity` here would create a persistent\n stacking context on .section-body (Firefox keeps the compositing layer\n alive after the animation completes when `fill-mode: both` keeps opacity\n fill-forward, even though opacity reaches 1). That stacking context traps\n Frappe's child-table row form (.form-in-grid, z-index 1021) under the\n freeze backdrop (#freeze.modal-backdrop, z-index 1020): the row form\n visually disappears behind the backdrop, every mouse click is captured by\n #freeze (whose handler closes the row form), and only keyboard nav works.\n Same reason we slide via `top` instead of `transform: translateY()` \u2014\n `transform` would also leave behind a stacking context.\n `position: relative` alone (without z-index) does NOT create one. */\n.form-layout .form-section .section-head,\n.form-layout .form-section .section-body {\n position: relative;\n animation: jey-section-in 0.7s cubic-bezier(0.22, 1, 0.36, 1) both;\n}\n\n.form-layout .form-section:nth-child(1) .section-head,\n.form-layout .form-section:nth-child(1) .section-body { animation-delay: 0.04s; }\n.form-layout .form-section:nth-child(2) .section-head,\n.form-layout .form-section:nth-child(2) .section-body { animation-delay: 0.10s; }\n.form-layout .form-section:nth-child(3) .section-head,\n.form-layout .form-section:nth-child(3) .section-body { animation-delay: 0.16s; }\n.form-layout .form-section:nth-child(4) .section-head,\n.form-layout .form-section:nth-child(4) .section-body { animation-delay: 0.22s; }\n.form-layout .form-section:nth-child(5) .section-head,\n.form-layout .form-section:nth-child(5) .section-body { animation-delay: 0.28s; }\n.form-layout .form-section:nth-child(6) .section-head,\n.form-layout .form-section:nth-child(6) .section-body { animation-delay: 0.34s; }\n.form-layout .form-section:nth-child(7) .section-head,\n.form-layout .form-section:nth-child(7) .section-body { animation-delay: 0.40s; }\n.form-layout .form-section:nth-child(8) .section-head,\n.form-layout .form-section:nth-child(8) .section-body { animation-delay: 0.46s; }\n.form-layout .form-section:nth-child(9) .section-head,\n.form-layout .form-section:nth-child(9) .section-body { animation-delay: 0.52s; }\n.form-layout .form-section:nth-child(10) .section-head,\n.form-layout .form-section:nth-child(10) .section-body { animation-delay: 0.58s; }\n.form-layout .form-section:nth-child(11) .section-head,\n.form-layout .form-section:nth-child(11) .section-body { animation-delay: 0.64s; }\n.form-layout .form-section:nth-child(12) .section-head,\n.form-layout .form-section:nth-child(12) .section-body { animation-delay: 0.70s; }\n\n\n/* ==========================================================================\n Form Tabs \u2014 Sliding Active Indicator\n ========================================================================== */\n\n.form-tabs .nav-link {\n position: relative;\n border-bottom: none !important;\n transition: color 0.3s ease;\n}\n\n.form-tabs .nav-link::after {\n content: \"\";\n position: absolute;\n bottom: 0;\n right: 0;\n left: 0;\n height: 2px;\n background: var(--text-color);\n transform: scaleX(0);\n transform-origin: center;\n transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1);\n}\n\n.form-tabs .nav-link.active::after {\n transform: scaleX(1);\n}\n\n\n/* ==========================================================================\n Dropdown Animations\n ========================================================================== */\n\n.dropdown-menu {\n display: block !important;\n visibility: hidden;\n opacity: 0;\n pointer-events: none;\n}\n\n.dropdown-menu.show {\n visibility: visible;\n opacity: 1;\n pointer-events: auto;\n animation: jey-dropdown-in 0.2s ease;\n}\n\n/* Applied by JS during Bootstrap hide so Popper's transform reset\n doesn't move the menu mid-fade. See \"Dropdown fade-out\" in jey_theme.js. */\n.dropdown-menu.jey-dropdown-hiding {\n visibility: visible !important;\n pointer-events: none;\n animation: jey-dropdown-out 0.2s ease forwards;\n}\n\n@keyframes jey-dropdown-in {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n@keyframes jey-dropdown-out {\n from { opacity: 1; }\n to { opacity: 0; }\n}\n\n/* ==========================================================================\n Sidebar \u2014 Smooth Collapse / Expand\n Frappe toggles .body-sidebar-placeholder between display:none and display:flex,\n so the container's fit-content width snaps on expand (the inner sidebar goes\n position:absolute, placeholder appears at 220px instantly). The collapse path\n keeps the sidebar in flow, so its width transition is already smooth.\n Override the container with an explicit width transition to make expand\n symmetric with collapse.\n ========================================================================== */\n\n@media (min-width: 576px) {\n .body-sidebar-container {\n width: 50px;\n transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .body-sidebar-container.expanded {\n width: var(--sidebar-width);\n }\n}\n\n/* ==========================================================================\n Sidebar \u2014 No Alignment Shift Between States\n Regular items land at 15px from the sidebar's left edge (sidebar padding 8\n + icon padding 7). Two state-dependent paddings break that alignment in\n expanded mode:\n 1. Frappe's sidebar_header.js sets inline padding-left/right: 8px on\n .sidebar-header when expanded, 0 when collapsed \u2014 pushes the logo to\n 23px in expanded. Override inline style with !important.\n 2. SCSS mixin body-sidebar-expanded gives .sidebar-user-button\n padding: var(--padding-sm) only when .expanded \u2014 pushes the avatar\n to 23px and makes the button taller, which shifts the Jey buttons\n above it vertically. Zero out the padding.\n Zeroing both keeps every icon/avatar at 15px and button heights constant\n across expand/collapse, so nothing jumps on toggle.\n ========================================================================== */\n\n.body-sidebar .sidebar-header {\n padding-right: 0 !important;\n padding-left: 0 !important;\n}\n\n.body-sidebar-container.expanded .sidebar-user-button {\n padding: 0 !important;\n}\n\n/* ==========================================================================\n Sidebar \u2014 Hover Effects\n ========================================================================== */\n\n.body-sidebar .standard-sidebar-item .item-anchor {\n transition: padding-right 0.4s cubic-bezier(0.22, 1, 0.36, 1),\n background 0.4s ease;\n}\n\n.body-sidebar .standard-sidebar-item .item-anchor:hover {\n padding-right: calc(var(--padding-xs, 8px) + 4px);\n}\n\n.body-sidebar .standard-sidebar-item .sidebar-item-icon {\n transition: transform 0.45s cubic-bezier(0.22, 1, 0.36, 1);\n}\n\n.body-sidebar .standard-sidebar-item .item-anchor:hover .sidebar-item-icon {\n transform: scale(1.15);\n}\n\n/* Active item \u2014 subtle left accent bar */\n.body-sidebar .standard-sidebar-item.active-sidebar .item-anchor {\n position: relative;\n}\n\n.body-sidebar .standard-sidebar-item.active-sidebar .item-anchor::before {\n content: \"\";\n position: absolute;\n right: 0;\n top: 20%;\n bottom: 20%;\n width: 3px;\n border-radius: 3px 0 0 3px;\n background: var(--primary, #2490ef);\n opacity: 0.8;\n}\n\n\n/* ==========================================================================\n List View \u2014 Row Entrance Animation\n ========================================================================== */\n\n@keyframes jey-list-row-in {\n from {\n opacity: 0;\n transform: translateX(16px);\n }\n to {\n opacity: 1;\n transform: translateX(0);\n }\n}\n\n.frappe-list .result .list-row-container:not(:first-child) {\n animation: jey-list-row-in 0.4s cubic-bezier(0.22, 1, 0.36, 1) both;\n}\n\n.frappe-list .result .list-row-container:nth-child(2) { animation-delay: 0.03s; }\n.frappe-list .result .list-row-container:nth-child(3) { animation-delay: 0.05s; }\n.frappe-list .result .list-row-container:nth-child(4) { animation-delay: 0.07s; }\n.frappe-list .result .list-row-container:nth-child(5) { animation-delay: 0.09s; }\n.frappe-list .result .list-row-container:nth-child(6) { animation-delay: 0.11s; }\n.frappe-list .result .list-row-container:nth-child(7) { animation-delay: 0.13s; }\n.frappe-list .result .list-row-container:nth-child(8) { animation-delay: 0.15s; }\n.frappe-list .result .list-row-container:nth-child(9) { animation-delay: 0.17s; }\n.frappe-list .result .list-row-container:nth-child(10) { animation-delay: 0.19s; }\n.frappe-list .result .list-row-container:nth-child(11) { animation-delay: 0.21s; }\n.frappe-list .result .list-row-container:nth-child(12) { animation-delay: 0.23s; }\n.frappe-list .result .list-row-container:nth-child(13) { animation-delay: 0.25s; }\n.frappe-list .result .list-row-container:nth-child(14) { animation-delay: 0.27s; }\n.frappe-list .result .list-row-container:nth-child(15) { animation-delay: 0.29s; }\n.frappe-list .result .list-row-container:nth-child(16) { animation-delay: 0.31s; }\n.frappe-list .result .list-row-container:nth-child(17) { animation-delay: 0.33s; }\n.frappe-list .result .list-row-container:nth-child(18) { animation-delay: 0.35s; }\n.frappe-list .result .list-row-container:nth-child(19) { animation-delay: 0.37s; }\n.frappe-list .result .list-row-container:nth-child(20) { animation-delay: 0.39s; }\n.frappe-list .result .list-row-container:nth-child(21) { animation-delay: 0.41s; }\n\n\n/* ==========================================================================\n Search Dialog \u2014 Fade In / Out\n ========================================================================== */\n\n.modal:has(.cool-awesomebar-modal-footer) {\n display: block !important;\n visibility: hidden;\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.5s cubic-bezier(0.22, 1, 0.36, 1),\n visibility 0.5s;\n}\n\n.modal:has(.cool-awesomebar-modal-footer) .modal-dialog {\n transform: translateY(-30px);\n transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1);\n}\n\n.modal.show:has(.cool-awesomebar-modal-footer) {\n visibility: visible;\n opacity: 1;\n pointer-events: auto;\n}\n\n.modal.show:has(.cool-awesomebar-modal-footer) .modal-dialog {\n transform: none;\n}\n\n\n/* ==========================================================================\n Report Summary \u2014 Card Cascade\n ========================================================================== */\n\n@keyframes jey-summary-in {\n from {\n opacity: 0;\n transform: translateY(10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.report-summary .summary-item {\n animation: jey-summary-in 0.7s cubic-bezier(0.22, 1, 0.36, 1) both;\n}\n\n.report-summary .summary-item:nth-child(1) { animation-delay: 0.05s; }\n.report-summary .summary-item:nth-child(2) { animation-delay: 0.10s; }\n.report-summary .summary-item:nth-child(3) { animation-delay: 0.15s; }\n.report-summary .summary-item:nth-child(4) { animation-delay: 0.20s; }\n.report-summary .summary-item:nth-child(5) { animation-delay: 0.25s; }\n.report-summary .summary-item:nth-child(6) { animation-delay: 0.30s; }\n\n\n/* ==========================================================================\n Form Section Collapse / Expand \u2014 Smooth\n ========================================================================== */\n\n.form-section .collapse-indicator {\n transition: transform 0.45s cubic-bezier(0.22, 1, 0.36, 1);\n display: inline-block;\n}\n\n.form-section .section-head.collapsed .collapse-indicator {\n transform: rotate(90deg);\n}\n\n/* Expanded section-body has no `overflow: hidden` \u2014 so Link-field autocomplete\n dropdowns (and any other overflow) are not clipped by the section boundary.\n `overflow: hidden` is applied via JS only during the collapse/expand\n transition (see jey_theme.js), then removed once the animation finishes. */\n.form-section .section-head.collapsible + .section-body {\n display: flex !important;\n flex-wrap: wrap;\n transition: max-height 0.5s ease-in-out,\n padding 0.5s ease-in-out;\n}\n\n.form-section .section-head.collapsed + .section-body {\n max-height: 0 !important;\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n overflow: hidden;\n transition: max-height 0.5s ease-in-out,\n padding 0.5s ease-in-out;\n}\n\n\n\n/* ==========================================================================\n Link Field \u2014 Awesomplete Dropdown Fade\n ========================================================================== */\n\n.awesomplete > [role=\"listbox\"] {\n animation: jey-awesomplete-in 0.4s cubic-bezier(0.22, 1, 0.36, 1) both;\n}\n\n/* Applied by JS on awesomplete-close so the listbox fades instead of\n vanishing when [hidden] is set. See \"Awesomplete fade-out\" in jey_theme.js. */\n.awesomplete > [role=\"listbox\"].jey-awesomplete-hiding {\n display: block !important;\n pointer-events: none;\n animation: jey-awesomplete-out 0.2s ease forwards;\n}\n\n@keyframes jey-awesomplete-in {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n@keyframes jey-awesomplete-out {\n from { opacity: 1; }\n to { opacity: 0; }\n}\n\n/* Lift the open autocomplete listbox above its siblings so the dropdown can\n spill past the section boundary without being painted over by later\n sections (which naturally paint above earlier ones in DOM order).\n Lift only the listbox itself, NOT the surrounding .form-section, because a\n z-index on the section creates a stacking context that traps Frappe's\n child-table row form (.form-in-grid, z-index 1021) below the freeze\n backdrop (#freeze.modal-backdrop, z-index 1020), leaving the screen\n unclickable when editing a row. */\n.awesomplete > ul[role=\"listbox\"]:not([hidden]) {\n z-index: 10;\n}\n\n\n/* ==========================================================================\n Input Focus \u2014 Inset Press\n ========================================================================== */\n\ninput.form-control:not([type=\"checkbox\"]):not([type=\"radio\"]),\ntextarea.form-control,\n.frappe-control input:not([type=\"checkbox\"]):not([type=\"radio\"]),\n.frappe-control textarea {\n transition:\n background-color 0.45s cubic-bezier(0.22, 1, 0.36, 1),\n border-color 0.45s cubic-bezier(0.22, 1, 0.36, 1);\n}\n\ninput.form-control:not([type=\"checkbox\"]):not([type=\"radio\"]):focus,\ntextarea.form-control:focus,\n.frappe-control input:not([type=\"checkbox\"]):not([type=\"radio\"]):focus,\n.frappe-control textarea:focus {\n border-color: var(--gray-500, #a8b0b8) !important;\n outline: none;\n}\n\n\n/* ==========================================================================\n Buttons \u2014 Shine on Hover, Press on Click\n ========================================================================== */\n\n.btn {\n position: relative;\n overflow: hidden;\n transition: box-shadow 0.4s ease, background-color 0.3s ease, color 0.3s ease;\n}\n\n.btn::after {\n content: \"\";\n position: absolute;\n inset: 0;\n background: linear-gradient(-105deg,\n transparent 35%,\n rgba(255, 255, 255, 0.25) 45%,\n rgba(255, 255, 255, 0.25) 55%,\n transparent 65%);\n transform: translateX(110%);\n transition: transform 0.6s cubic-bezier(0.22, 1, 0.36, 1);\n pointer-events: none;\n}\n\n.btn:hover::after {\n transform: translateX(-110%);\n}\n\n.btn:active {\n box-shadow: inset 0 2px 6px rgba(0, 0, 0, 0.2) !important;\n}\n\n\n/* Hide dropdown items now surfaced as sidebar buttons */\n.dropdown-menu-item[onclick*=\"toggle_full_width\"],\n.dropdown-menu-item[onclick*=\"clear_cache\"],\n.dropdown-menu-item[onclick*=\"ThemeSwitcher\"],\n.dropdown-menu-item[data-name=\"website\"],\n.dropdown-menu-item.jey-hidden-item {\n display: none !important;\n}\n\n\n/* ==========================================================================\n Desktop Icons \u2014 Shared base (all themes)\n ========================================================================== */\n\n.desktop-icon:hover {\n transform: translateY(-2px) !important;\n}\n\n.desktop-icon:active {\n transform: scale(0.97) !important;\n}\n\n.icon-container.jey-chrome-done {\n width: 72px !important;\n height: 72px !important;\n padding: 0 !important;\n border-radius: 50% !important;\n background: none !important;\n overflow: visible !important;\n position: relative !important;\n}\n\n.icon-container.jey-chrome-done:hover {\n transform: none !important;\n}\n\n.icon-container.folder-icon.jey-chrome-done {\n box-shadow: none !important;\n}\n\n/* ==========================================================================\n Desktop Modal (module icons picker) \u2014 caption overflow + clean heading\n ========================================================================== */\n\n/* Give the 4-col icon grid room between cells so captions don't collide */\n#desktop-modal .icons-container .icons {\n gap: 12px 8px !important;\n padding: 12px 0 !important;\n}\n\n/* Each icon: constrain to its grid track and center contents */\n#desktop-modal .desktop-icon {\n min-width: 0 !important;\n display: flex !important;\n flex-direction: column !important;\n align-items: center !important;\n text-align: center !important;\n}\n\n/* Caption wraps to 2 lines max, truncates with ellipsis, never overflows column */\n#desktop-modal .desktop-icon .icon-caption {\n width: 100% !important;\n max-width: 100% !important;\n padding: 0 4px !important;\n margin-top: 14px !important;\n}\n\n#desktop-modal .desktop-icon .icon-title {\n width: 100% !important;\n max-width: 100% !important;\n display: -webkit-box !important;\n -webkit-line-clamp: 2;\n line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden !important;\n text-overflow: ellipsis !important;\n overflow-wrap: anywhere !important;\n word-break: break-word !important;\n line-height: 1.25 !important;\n white-space: normal !important;\n}\n\n/* Strip the themed gradient/border off the desktop-modal header \u2014 title only, no bar */\n#desktop-modal .modal-header.desktop-modal-heading {\n background: transparent !important;\n border-bottom: 0 !important;\n box-shadow: none !important;\n}\n\n#desktop-modal .modal-header.desktop-modal-heading .modal-title,\n#desktop-modal .modal-header.desktop-modal-heading .title-input-label span {\n background: transparent !important;\n box-shadow: none !important;\n text-shadow: none !important;\n}\n\n/* Everything inside the desktop-modal renders text crisply \u2014 no inherited blur */\n#desktop-modal .icon-title,\n#desktop-modal .icon-caption {\n text-shadow: none !important;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n/* Grow to content: no inner scrollbar when icons fit */\n#desktop-modal .modal-body.desktop-modal-body {\n overflow: visible !important;\n max-height: none !important;\n}\n\n#desktop-modal .icons-container {\n overflow: visible !important;\n max-height: none !important;\n}\n\n/* ==========================================================================\n Icon Animations \u2014 Shared (all themes)\n ========================================================================== */\n\n/* Framework \u2014 gentle float */\n.ico-framework { animation: ico-float 5s ease-in-out infinite; transform-origin: center; }\n@keyframes ico-float {\n 0%,100% { transform: translateY(0) rotate(0deg); opacity: 0.85; }\n 30% { transform: translateY(-2px) rotate(-0.8deg); opacity: 1; }\n 70% { transform: translateY(0.5px) rotate(0.4deg); opacity: 0.9; }\n}\n\n.ico-org { animation: ico-org 6s ease-in-out infinite; transform-origin: center bottom; }\n@keyframes ico-org {\n 0%,100% { transform: scaleY(1) scaleX(1); }\n 25% { transform: scaleY(1.03) scaleX(0.99); }\n 50% { transform: scaleY(1.05) scaleX(0.98); }\n 75% { transform: scaleY(1.02) scaleX(1); }\n}\n\n.ico-acc .acc-btn { animation: ico-press 3s ease-in-out infinite; }\n@keyframes ico-press { 0%,25%,100% { opacity: 0.5; stroke-width: 2.5; } 12% { opacity: 1; stroke-width: 3.2; } }\n\n.ico-assets { animation: ico-safe 6s ease-in-out infinite; transform-origin: center; }\n.ico-assets .lock-dot { animation: ico-blink 5s ease-in-out infinite; }\n@keyframes ico-safe { 0%,100% { transform: translateY(0); } 40% { transform: translateY(-0.6px); } 60% { transform: translateY(0.3px); } }\n@keyframes ico-blink { 0%,35%,65%,100% { opacity: 1; } 50% { opacity: 0.15; } }\n\n.ico-buying { animation: ico-cart 6s ease-in-out infinite; transform-origin: 12px 21px; }\n@keyframes ico-cart { 0%,100% { transform: translateX(0) rotate(0deg); } 20% { transform: translateX(-1.5px) rotate(-0.8deg); } 50% { transform: translateX(0.5px) rotate(0.3deg); } 80% { transform: translateX(-0.8px) rotate(-0.4deg); } }\n\n.ico-mfg .gear1 { animation: ico-spin 9s linear infinite; transform-origin: 9px 12px; }\n.ico-mfg .gear2 { animation: ico-spin-r 7s linear infinite; transform-origin: 17px 8px; }\n@keyframes ico-spin { to { transform: rotate(-360deg); } }\n@keyframes ico-spin-r { to { transform: rotate(360deg); } }\n\n.ico-proj .col1 { animation: ico-g1 5s ease-in-out infinite; transform-origin: 5.5px 21px; }\n.ico-proj .col2 { animation: ico-g2 5s ease-in-out infinite 0.5s; transform-origin: 12.5px 15px; }\n.ico-proj .col3 { animation: ico-g3 5s ease-in-out infinite 1s; transform-origin: 19.5px 18px; }\n@keyframes ico-g1 { 0%,100% { transform: scaleY(1); opacity: 0.75; } 50% { transform: scaleY(0.85); opacity: 1; } }\n@keyframes ico-g2 { 0%,100% { transform: scaleY(1); opacity: 0.75; } 50% { transform: scaleY(1.15); opacity: 1; } }\n@keyframes ico-g3 { 0%,100% { transform: scaleY(1); opacity: 0.75; } 50% { transform: scaleY(0.88); opacity: 1; } }\n\n.ico-quality { animation: ico-shield 6s ease-in-out infinite; transform-origin: 12px 14px; }\n@keyframes ico-shield { 0%,100% { transform: rotate(0deg) scale(1); } 15% { transform: rotate(-1.5deg) scale(1.03); } 35% { transform: rotate(0.5deg) scale(1.01); } 55% { transform: rotate(1.5deg) scale(1.03); } 75% { transform: rotate(-0.5deg) scale(1.01); } }\n\n.ico-selling { animation: ico-sell 4s ease-in-out infinite; transform-origin: center; }\n.ico-selling .arrow-head { animation: ico-up 4s ease-in-out infinite; }\n@keyframes ico-sell { 0%,100% { opacity: 0.8; } 50% { opacity: 1; } }\n@keyframes ico-up { 0%,100% { transform: translate(0,0); } 30% { transform: translate(-1px, -1.5px); } 60% { transform: translate(-2px, -2.5px); } }\n\n.ico-stock { animation: ico-bob 5s ease-in-out infinite; transform-origin: center; }\n@keyframes ico-bob { 0%,100% { transform: rotate(0deg) translateY(0); } 20% { transform: rotate(-2deg) translateY(-0.7px); } 50% { transform: rotate(1deg) translateY(0.3px); } 80% { transform: rotate(-1.5deg) translateY(-0.4px); } }\n\n.ico-sub .person-l { animation: ico-rl 6s ease-in-out infinite; transform-origin: 8px 12px; }\n.ico-sub .person-r { animation: ico-rr 6s ease-in-out infinite; transform-origin: 16px 12px; }\n@keyframes ico-rl { 0%,100% { transform: translateX(0) rotate(0deg); } 30% { transform: translateX(-1px) rotate(-1deg); } 60% { transform: translateX(-1.5px) rotate(-0.5deg); } }\n@keyframes ico-rr { 0%,100% { transform: translateX(0) rotate(0deg); } 30% { transform: translateX(1px) rotate(1deg); } 60% { transform: translateX(1.5px) rotate(0.5deg); } }\n\n.ico-settings { animation: ico-gear-main 12s linear infinite; transform-origin: center; }\n@keyframes ico-gear-main { to { transform: rotate(-360deg); } }\n\n/* HR \u2014 plus sign pulsing */\n.ico-hr .plus-v { animation: ico-pv 4s ease-in-out infinite; transform-origin: center; }\n.ico-hr .plus-h { animation: ico-ph 4s ease-in-out infinite 0.3s; transform-origin: center; }\n@keyframes ico-pv { 0%,100% { opacity: 0.4; stroke-width: 1.8; } 50% { opacity: 1; stroke-width: 2.4; } }\n@keyframes ico-ph { 0%,100% { opacity: 0.4; stroke-width: 1.8; } 50% { opacity: 1; stroke-width: 2.4; } }\n\n/* ==========================================================================\n Theme Switcher Dialog\n ========================================================================== */\n\n.jey-theme-grid {\n display: flex;\n gap: 20px;\n padding: 20px;\n justify-content: center;\n}\n\n.jey-theme-card {\n cursor: pointer;\n text-align: center;\n padding: 16px;\n border-radius: 12px;\n border: 2px solid transparent;\n transition: border-color 0.2s, background 0.2s;\n min-width: 140px;\n}\n\n.jey-theme-card:hover {\n background: var(--subtle-fg, #f5f5f5);\n}\n\n.jey-theme-card.selected {\n border-color: var(--primary, #2490ef);\n background: var(--subtle-fg, #f5f5f5);\n}\n\n.jey-theme-preview {\n width: 72px;\n height: 72px;\n border-radius: 50%;\n margin: 0 auto 12px;\n position: relative;\n overflow: hidden;\n}\n\n.jey-theme-preview--chrome {\n background: conic-gradient(from -140deg, #a0a0a0 0deg, #f2f2f2 40deg, #777 80deg, #e5e5e5 120deg, #959595 170deg, #ededed 210deg, #808080 260deg, #d8d8d8 310deg, #a0a0a0 360deg);\n box-shadow: 0 3px 8px rgba(0,0,0,0.15), inset 0 1px 1px rgba(255,255,255,0.5);\n}\n\n.jey-theme-preview--chrome .jey-theme-preview-icon {\n position: absolute;\n inset: 9px;\n border-radius: 50%;\n background: linear-gradient(-168deg, #f4f4f4 0%, #e0e0e0 45%, #d4d4d4 100%);\n}\n\n.jey-theme-preview--modern {\n border-radius: 16px;\n background: rgba(255, 255, 255, 0.4);\n -webkit-backdrop-filter: blur(6px);\n backdrop-filter: blur(6px);\n border: 1px solid rgba(255, 255, 255, 0.5);\n box-shadow: 0 2px 8px rgba(0,0,0,0.06);\n}\n\n.jey-theme-preview--modern .jey-theme-preview-icon {\n position: absolute;\n inset: 22px;\n border-radius: 6px;\n background: #4f46e5;\n opacity: 0.25;\n}\n\n.jey-theme-label {\n font-weight: 600;\n font-size: var(--text-base);\n margin-bottom: 2px;\n}\n\n.jey-theme-info {\n font-size: var(--text-sm);\n color: var(--text-muted);\n}\n\n/* ==========================================================================\n Module Widget Cards \u2014 Entrance & Hover Animations\n ========================================================================== */\n\n/* --- Animation variant #2 (final): Slide-up entrance + Accent Bar hover --- */\n\n/* Entrance: fade-in slide-up (from variant #1) */\n.ce-block .links-widget-box,\n.ce-block .number-widget-box {\n opacity: 0;\n transform: translateY(24px) scale(0.97);\n animation: jey-card-in 0.7s cubic-bezier(0.22, 1, 0.36, 1) forwards;\n border-radius: var(--border-radius-lg, 12px);\n transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1),\n box-shadow 0.35s ease;\n position: relative;\n}\n\n/* Number card value \u2014 delayed fade-in after card entrance */\n@keyframes jey-number-in {\n from { opacity: 0; transform: translateY(6px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.number-widget-box .widget-content .number {\n animation: jey-number-in 0.5s cubic-bezier(0.22, 1, 0.36, 1) 0.3s both;\n}\n\n/* Allow dropdown menus (card actions) to escape the widget box.\n Without this, .widget-control .dropdown-menu is clipped/hidden behind\n the widget because Popper renders it as a sibling inside the box. */\n.ce-block .links-widget-box .widget-control .dropdown-menu,\n.ce-block .number-widget-box .widget-control .dropdown-menu {\n z-index: 1050;\n}\n\n/* Stagger delays */\n.ce-block:nth-child(1) .links-widget-box,\n.ce-block:nth-child(1) .number-widget-box { animation-delay: 0.00s; }\n.ce-block:nth-child(2) .links-widget-box,\n.ce-block:nth-child(2) .number-widget-box { animation-delay: 0.06s; }\n.ce-block:nth-child(3) .links-widget-box,\n.ce-block:nth-child(3) .number-widget-box { animation-delay: 0.12s; }\n.ce-block:nth-child(4) .links-widget-box,\n.ce-block:nth-child(4) .number-widget-box { animation-delay: 0.18s; }\n.ce-block:nth-child(5) .links-widget-box,\n.ce-block:nth-child(5) .number-widget-box { animation-delay: 0.24s; }\n.ce-block:nth-child(6) .links-widget-box,\n.ce-block:nth-child(6) .number-widget-box { animation-delay: 0.30s; }\n.ce-block:nth-child(7) .links-widget-box,\n.ce-block:nth-child(7) .number-widget-box { animation-delay: 0.36s; }\n.ce-block:nth-child(8) .links-widget-box,\n.ce-block:nth-child(8) .number-widget-box { animation-delay: 0.42s; }\n.ce-block:nth-child(9) .links-widget-box,\n.ce-block:nth-child(9) .number-widget-box { animation-delay: 0.48s; }\n.ce-block:nth-child(10) .links-widget-box,\n.ce-block:nth-child(10) .number-widget-box { animation-delay: 0.54s; }\n.ce-block:nth-child(11) .links-widget-box,\n.ce-block:nth-child(11) .number-widget-box { animation-delay: 0.60s; }\n.ce-block:nth-child(12) .links-widget-box,\n.ce-block:nth-child(12) .number-widget-box { animation-delay: 0.66s; }\n\n@keyframes jey-card-in {\n from {\n opacity: 0;\n transform: translateY(24px) scale(0.97);\n }\n to {\n opacity: 1;\n transform: none;\n }\n}\n\n/* Hover: soft bottom accent line + lift */\n.ce-block .links-widget-box::after,\n.ce-block .number-widget-box::after {\n content: \"\";\n position: absolute;\n bottom: 0;\n right: 10%;\n left: 10%;\n height: 2.5px;\n border-radius: 2px 2px 0 0;\n background: var(--primary, #2490ef);\n transform: scaleX(0);\n transition: transform 0.35s cubic-bezier(0.22, 1, 0.36, 1);\n transform-origin: center;\n}\n\n.ce-block .links-widget-box:hover::after,\n.ce-block .number-widget-box:hover::after {\n transform: scaleX(1);\n}\n\n.ce-block .links-widget-box:hover,\n.ce-block .number-widget-box:hover {\n transform: translateY(-3px);\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08),\n 0 2px 6px rgba(0, 0, 0, 0.04);\n}\n\n/* Lift widget above its siblings while hovered or while its card-actions\n dropdown is open, so the dropdown menu (which lives inside the widget's\n own stacking context due to transform) is not covered by neighbours. */\n.ce-block .links-widget-box:hover,\n.ce-block .number-widget-box:hover,\n.ce-block .links-widget-box:focus-within,\n.ce-block .number-widget-box:focus-within {\n z-index: 100;\n}\n\n.ce-block .links-widget-box:has(.dropdown-menu.show),\n.ce-block .number-widget-box:has(.dropdown-menu.show) {\n z-index: 200;\n}\n\n\n/* Link items: colored left accent bar slides in */\n.links-widget-box .link-item {\n position: relative;\n transition: background 0.25s ease, transform 0.25s ease;\n border-radius: var(--border-radius, 8px);\n overflow: hidden;\n}\n\n.links-widget-box .link-item:hover {\n transform: translateX(-6px);\n background: var(--subtle-fg, rgba(0, 0, 0, 0.02));\n}\n\n.links-widget-box .link-item .es-icon {\n display: none !important;\n}\n\n\n/* ==========================================================================\n Select Field \u2014 Custom chevron icon\n ========================================================================== */\n\n.select-icon svg {\n display: none !important;\n}\n\n.select-icon {\n top: 0 !important;\n bottom: 0 !important;\n display: flex !important;\n align-items: center !important;\n}\n\n.select-icon::after {\n content: \"\" !important;\n display: block;\n width: 12px;\n height: 12px;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23636e72' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E\");\n background-size: contain;\n background-repeat: no-repeat;\n background-position: center;\n}\n\n/* ==========================================================================\n Empty State \u2014 Custom folder icon\n ========================================================================== */\n\n.msg-box .icon-xl {\n display: none !important;\n}\n\n.msg-box .mb-4 {\n display: flex;\n justify-content: center;\n}\n\n.msg-box .mb-4::after {\n content: \"\" !important;\n display: block;\n width: 48px;\n height: 48px;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23b0b8c0' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='22 12 16 12 14 15 10 15 8 12 2 12'/%3E%3Cpath d='M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z'/%3E%3C/svg%3E\");\n background-size: contain;\n background-repeat: no-repeat;\n background-position: center;\n}\n\n/* ==========================================================================\n Hide \"Getting Started\" onboarding panels\n ========================================================================== */\n\n.user-onboarding {\n display: none !important;\n}\n\n/* ==========================================================================\n Comment-count icon override\n jey_theme.js swaps the sprite href from #es-line-chat-alt (filled)\n to a lucide stroke-based icon. The SVG element still carries .es-icon\n (fill: currentColor; stroke-width: 0), which would render the new\n icon as a solid black shape \u2014 force stroke rendering here.\n ========================================================================== */\n.comment-count svg {\n fill: none !important;\n stroke: currentColor !important;\n stroke-width: 1.5 !important;\n stroke-linecap: round;\n stroke-linejoin: round;\n}\n\n/* ==========================================================================\n Activity panel & comment input \u2014 transparent background\n Frappe core paints .activity-title / .timeline-actions with var(--bg-color),\n .frappe-control .ql-editor with var(--control-bg), and the form footer's\n .comment-box wraps the input area; strip them all so the activity panel\n and comment composer blend with the form background.\n ========================================================================== */\n.new-timeline .activity-title,\n.new-timeline .timeline-actions,\n.comment-box,\n.comment-input-wrapper,\n.comment-input-wrapper .ql-container,\n.comment-input-wrapper .frappe-control .ql-editor {\n background: transparent !important;\n border-color: transparent !important;\n box-shadow: none !important;\n}\n\n/* List view \u2014 period (Between) filter sized to fit \"DD/MM/YYYY to DD/MM/YYYY\". */\n.standard-filter-section .frappe-control.jey-period-filter {\n flex: 0 0 auto;\n min-width: 200px;\n}\n.standard-filter-section .frappe-control.jey-period-filter input {\n min-width: 200px;\n}\n\n/* Grid \"Configure Columns\" dialog \u2014 let rows grow when label wraps.\n Frappe hardcodes height:32px inline on each .fields_order row in\n grid_row.js, which clips long translated labels (eg. Azerbaijani\n \"\u018Fsas Tarif (Anbar \u00D6l\u00E7\u00FC Vahidin\u0259 g\u00F6r\u0259)\") so the wrapped portion\n overflows into the next row and into the help text below. Switch\n to flex centering with min-height so rows grow with content. */\n.control-input.fields_order {\n height: auto !important;\n min-height: 32px;\n display: flex;\n align-items: center;\n}\n.control-input.fields_order > .row {\n width: 100%;\n align-items: center;\n margin: 0;\n}\n.control-input.fields_order > .row > [class*=\"col-\"] {\n padding-top: 0 !important;\n margin-top: 0 !important;\n}\n\n/* ===== theme_chrome.css ===== */\n/* ==========================================================================\n THEME: Chrome [data-jey-theme=\"chrome\"]\n Metallic chrome button with conic-gradient rings and rotating glow.\n ========================================================================== */\n\n@keyframes jey-chrome-rotate-glow {\n from { transform: rotate(0deg); }\n to { transform: rotate(-360deg); }\n}\n\n@keyframes jey-chrome-face-light {\n 0% { background: radial-gradient(circle at 25% 20%, rgba(255,255,255,0.5) 0%, transparent 55%); }\n 25% { background: radial-gradient(circle at 75% 25%, rgba(255,255,255,0.5) 0%, transparent 55%); }\n 50% { background: radial-gradient(circle at 70% 75%, rgba(255,255,255,0.35) 0%, transparent 55%); }\n 75% { background: radial-gradient(circle at 25% 70%, rgba(255,255,255,0.35) 0%, transparent 55%); }\n 100% { background: radial-gradient(circle at 25% 20%, rgba(255,255,255,0.5) 0%, transparent 55%); }\n}\n\n@keyframes jey-chrome-refl-drift {\n 0%, 100% { top: 12%; opacity: 0.7; }\n 50% { top: 18%; opacity: 0.5; }\n}\n\n[data-jey-theme=\"chrome\"] .jey-chrome {\n width: 72px; height: 72px; border-radius: 50%; position: relative;\n background: radial-gradient(ellipse at 35% 20%, rgba(255,255,255,0.7) 0%, transparent 55%), linear-gradient(-180deg, #e0e0e0 0%, #b8b8b8 100%);\n box-shadow: 0 4px 10px rgba(0,0,0,0.18), 0 1px 3px rgba(0,0,0,0.1), inset 0 1px 1px rgba(255,255,255,0.7);\n transition: box-shadow 0.3s ease;\n}\n\n[data-jey-theme=\"chrome\"] .desktop-icon:hover .jey-chrome {\n box-shadow: 0 6px 16px rgba(0,0,0,0.22), 0 1px 3px rgba(0,0,0,0.12), 0 0 14px rgba(255,255,255,0.2), inset 0 1px 1px rgba(255,255,255,0.7);\n}\n\n[data-jey-theme=\"chrome\"] .jey-chrome-ring {\n position: absolute; inset: 2px; border-radius: 50%;\n background: conic-gradient(from -140deg, #a0a0a0 0deg, #f2f2f2 40deg, #777 80deg, #e5e5e5 120deg, #959595 170deg, #ededed 210deg, #808080 260deg, #d8d8d8 310deg, #a0a0a0 360deg);\n box-shadow: inset 0 1px 2px rgba(0,0,0,0.2); overflow: hidden;\n}\n\n[data-jey-theme=\"chrome\"] .jey-ring-glow {\n position: absolute; inset: -10px; border-radius: 50%;\n background: conic-gradient(from 0deg, transparent 0deg, transparent 140deg, rgba(255,255,255,0.55) 165deg, rgba(255,255,255,0.8) 180deg, rgba(255,255,255,0.55) 195deg, transparent 220deg, transparent 360deg);\n animation: jey-chrome-rotate-glow 8s linear infinite; pointer-events: none;\n}\n\n[data-jey-theme=\"chrome\"] .jey-chrome-gap {\n position: absolute; inset: 5px; border-radius: 50%;\n background: linear-gradient(-180deg, #888 0%, #aaa 50%, #999 100%);\n box-shadow: inset 0 1px 3px rgba(0,0,0,0.35), inset 0 -1px 1px rgba(255,255,255,0.2);\n}\n\n[data-jey-theme=\"chrome\"] .jey-chrome-ring-inner {\n position: absolute; inset: 6px; border-radius: 50%;\n background: conic-gradient(from -200deg, #b0b0b0 0deg, #eee 30deg, #999 70deg, #ddd 110deg, #aaa 160deg, #f0f0f0 200deg, #909090 250deg, #ccc 300deg, #b0b0b0 360deg);\n box-shadow: inset 0 1px 1px rgba(0,0,0,0.15);\n}\n\n[data-jey-theme=\"chrome\"] .jey-chrome-face {\n position: absolute; inset: 9px; border-radius: 50%; overflow: hidden;\n background: linear-gradient(-168deg, #f4f4f4 0%, #e0e0e0 45%, #d4d4d4 100%);\n box-shadow: inset 0 3px 7px rgba(255,255,255,0.7), inset 0 -3px 6px rgba(0,0,0,0.06);\n display: flex; align-items: center; justify-content: center;\n}\n\n[data-jey-theme=\"chrome\"] .jey-face-glow {\n position: absolute; inset: 0; border-radius: 50%;\n animation: jey-chrome-face-light 8s ease-in-out infinite;\n pointer-events: none; z-index: 1;\n}\n\n[data-jey-theme=\"chrome\"] .jey-face-reflection {\n position: absolute; top: 15%; right: 10%; width: 80%; height: 30%;\n background: linear-gradient(-180deg, rgba(255,255,255,0.6) 0%, rgba(255,255,255,0.15) 60%, transparent 100%);\n border-radius: 50%; pointer-events: none; z-index: 1;\n animation: jey-chrome-refl-drift 10s ease-in-out infinite;\n}\n\n[data-jey-theme=\"chrome\"] .jey-chrome-face .jey-icon {\n width: 24px !important; height: 24px !important;\n stroke: #505050 !important; fill: none !important;\n stroke-width: 1.8 !important; stroke-linecap: round !important; stroke-linejoin: round !important;\n filter: drop-shadow(0 1px 0 rgba(255,255,255,0.5)) !important;\n position: relative; z-index: 2;\n}\n\n\n/* ==========================================================================\n FULL APP CHROME THEME\n Real metallic chrome with 45\u00B0 multi-stop reflective gradients,\n brushed metal textures, beveled edges, and conic-gradient accents.\n ========================================================================== */\n\n/* --- Shine sweep animation for interactive elements --- */\n@keyframes jey-chrome-shine {\n 0% { transform: translateX(100%) skewX(15deg); }\n 100% { transform: translateX(-200%) skewX(15deg); }\n}\n\n/* ==========================================================================\n CSS Variable Overrides\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] {\n /* --- Surfaces --- */\n --bg-color: #d8d8d8;\n --fg-color: #e8e8e8;\n --card-bg: #e0e0e0;\n --subtle-accent: #d4d4d4;\n --subtle-fg: #d0d0d0;\n --fg-hover-color: #ccc;\n --highlight-color: #d4d4d4;\n --navbar-bg: #d0d0d0;\n --modal-bg: #ddd;\n --toast-bg: #ddd;\n --popover-bg: #e0e0e0;\n --control-bg: #d5d5d5;\n --control-bg-on-gray: #ccc;\n --awesomebar-focus-bg: #e8e8e8;\n --disabled-control-bg: #d0d0d0;\n --skeleton-bg: #c8c8c8;\n --surface-menu-bar: #d4d4d4;\n --surface-white: #e0e0e0;\n --surface-gray-1: #d8d8d8;\n --surface-gray-2: #d0d0d0;\n --surface-gray-3: #c8c8c8;\n --surface-gray-4: #bbb;\n --surface-modal: #ddd;\n --placeholder-color: #ccc;\n\n /* --- Sidebar --- */\n --sidebar-hover-color: #c8c8c8;\n --sidebar-active-color: #d8d8d8;\n --sidebar-border-color: #aaa;\n --divider-color: #b0b0b0;\n\n /* --- Text --- */\n --heading-color: #333;\n --text-color: #404040;\n --text-neutral: #333;\n --text-muted: #666;\n --text-light: #888;\n --text-dark: #f0f0f0;\n --disabled-text-color: #888;\n --ink-gray-7: #555;\n --ink-gray-8: #404040;\n --ink-gray-9: #333;\n\n /* --- Borders --- */\n --border-color: #aaa;\n --dark-border-color: #999;\n --table-border-color: #aaa;\n --btn-group-border-color: #999;\n --outline-gray-1: #b0b0b0;\n --outline-gray-2: #999;\n --outline-gray-modals: #aaa;\n\n /* --- Primary / Buttons --- */\n --primary: #555;\n --brand-color: #555;\n --btn-primary: #777;\n --btn-default-bg: #ccc;\n --btn-default-hover-bg: #bbb;\n --btn-ghost-hover-bg: #c0c0c0;\n --border-primary: #777;\n\n /* --- Shadows (beveled metallic) --- */\n --shadow-xs: 1px 1px 2px rgba(0,0,0,0.15), -1px -1px 1px rgba(255,255,255,0.5);\n --shadow-sm: 1px 1px 3px rgba(0,0,0,0.18), -1px -1px 2px rgba(255,255,255,0.45);\n --shadow-base: 2px 2px 4px rgba(0,0,0,0.15), -1px -1px 2px rgba(255,255,255,0.4);\n --shadow-md: 2px 2px 6px rgba(0,0,0,0.18), -1px -1px 3px rgba(255,255,255,0.35);\n --shadow-lg: 3px 3px 10px rgba(0,0,0,0.15), -2px -2px 5px rgba(255,255,255,0.3);\n --shadow-xl: 4px 4px 16px rgba(0,0,0,0.18), -2px -2px 6px rgba(255,255,255,0.25);\n --shadow-2xl: 6px 6px 24px rgba(0,0,0,0.2), -3px -3px 8px rgba(255,255,255,0.2);\n --shadow-inset: inset 0px -1px 0px #999;\n --btn-shadow: 1px 1px 2px rgba(0,0,0,0.15), -1px -1px 1px rgba(255,255,255,0.4);\n --card-shadow: 2px 2px 6px rgba(0,0,0,0.12), -1px -1px 3px rgba(255,255,255,0.4);\n --modal-shadow: 6px 6px 30px rgba(0,0,0,0.3), -3px -3px 10px rgba(255,255,255,0.15);\n --awesomebar-shadow: 3px 3px 12px rgba(0,0,0,0.15), -2px -2px 6px rgba(255,255,255,0.3);\n\n /* --- Focus rings --- */\n --focus-default: 0 0 0 2px rgba(150,150,150,0.5);\n\n /* --- Scrollbar --- */\n --scrollbar-thumb-color: #999;\n --scrollbar-track-color: #c8c8c8;\n\n /* --- Checkbox / Switch --- */\n --switch-bg: #aaa;\n --checkbox-color: #555;\n --checkbox-gradient: linear-gradient(180deg, #777 0%, #666 100%);\n\n /* --- Timeline --- */\n --timeline-badge-color: #555;\n --timeline-badge-bg: #ccc;\n\n /* --- Date picker --- */\n --date-active-bg: #777;\n --date-active-text: #f0f0f0;\n --date-range-bg: #ccc;\n\n /* --- Progress / Misc --- */\n --progress-bar-bg: #777;\n --code-block-bg: #444;\n --code-block-text: #ccc;\n}\n\n\n/* ==========================================================================\n Body \u2014 Brushed Metal Background\n 3 layered repeating-gradients at different lengths = realistic grain\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] body {\n background:\n radial-gradient(ellipse at 25% 15%, rgba(255,255,255,0.45) 0%, transparent 50%),\n radial-gradient(ellipse at 80% 80%, rgba(255,255,255,0.2) 0%, transparent 45%),\n radial-gradient(ellipse at 50% 50%, rgba(0,0,0,0.03) 0%, transparent 70%),\n linear-gradient(-168deg, #d8d8d8 0%, #c4c4c4 40%, #b8b8b8 70%, #c8c8c8 100%) !important;\n background-attachment: fixed !important;\n}\n\n[data-jey-theme=\"chrome\"] .page-container {\n background: transparent !important;\n}\n\n\n/* ==========================================================================\n Navbar \u2014 Reflective Chrome Bar\n 45\u00B0 multi-stop gradient simulating polished metal reflection\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] .navbar {\n background:\n linear-gradient(-45deg, #aaa 2%, #ddd 8%, #bbb 18%, #e8e8e8 30%, #ccc 45%, #eee 55%, #bbb 68%, #ddd 80%, #aaa 95%) !important;\n border-bottom: 1px solid #888 !important;\n box-shadow:\n inset 0 1px 0 rgba(255,255,255,0.7),\n inset 0 -1px 0 rgba(0,0,0,0.08),\n 0 2px 4px rgba(0,0,0,0.15) !important;\n}\n\n[data-jey-theme=\"chrome\"] .navbar .navbar-nav .nav-link {\n color: #444 !important;\n text-shadow: 0 1px 0 rgba(255,255,255,0.5);\n}\n\n[data-jey-theme=\"chrome\"] .navbar .navbar-nav .nav-link:hover {\n color: #222 !important;\n background: linear-gradient(-180deg, rgba(255,255,255,0.35) 0%, rgba(255,255,255,0.1) 100%) !important;\n border-radius: 6px;\n}\n\n\n/* ==========================================================================\n Awesomebar \u2014 Sunken Metal Slot\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] .search-bar input {\n background: linear-gradient(-180deg, #c0c0c0 0%, #d0d0d0 100%) !important;\n border: 1px solid #999 !important;\n box-shadow:\n inset 0 2px 4px rgba(0,0,0,0.15),\n inset 0 0 0 1px rgba(0,0,0,0.05),\n 0 1px 0 rgba(255,255,255,0.5) !important;\n color: #333 !important;\n border-radius: 6px !important;\n}\n\n[data-jey-theme=\"chrome\"] .search-bar input:focus {\n background: linear-gradient(-180deg, #d5d5d5 0%, #e0e0e0 100%) !important;\n border-color: #888 !important;\n box-shadow:\n inset 0 1px 3px rgba(0,0,0,0.1),\n 0 0 0 2px rgba(150,150,150,0.3),\n 0 1px 0 rgba(255,255,255,0.4) !important;\n}\n\n[data-jey-theme=\"chrome\"] .search-bar .search-icon {\n color: #777 !important;\n}\n\n\n/* ==========================================================================\n Sidebar \u2014 Brushed Metal Panel\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] .body-sidebar-container {\n background: linear-gradient(-160deg, #b8b8b8 0%, #f0f0f0 12%, #c0c0c0 28%, #f4f4f4 42%, #b8b8b8 58%, #ededed 72%, #aaa 88%, #ddd 100%) !important;\n border-left: 1px solid #888 !important;\n box-shadow:\n inset 1px 0 0 rgba(255,255,255,0.6),\n inset 0 1px 0 rgba(255,255,255,0.7),\n inset 0 -1px 0 rgba(0,0,0,0.1),\n -2px 0 8px rgba(0,0,0,0.12) !important;\n}\n\n[data-jey-theme=\"chrome\"] .body-sidebar-container .body-sidebar,\n[data-jey-theme=\"chrome\"] .body-sidebar-container .body-sidebar-top,\n[data-jey-theme=\"chrome\"] .body-sidebar-container .body-sidebar-bottom,\n[data-jey-theme=\"chrome\"] .body-sidebar-container .body-sidebar-cards {\n background: transparent !important;\n}\n\n[data-jey-theme=\"chrome\"] .body-sidebar .standard-sidebar-item .item-anchor:hover {\n background: linear-gradient(-90deg, rgba(255,255,255,0.25) 0%, rgba(255,255,255,0.05) 100%) !important;\n}\n\n[data-jey-theme=\"chrome\"] .body-sidebar .standard-sidebar-item.active-sidebar .item-anchor {\n background: linear-gradient(-45deg, #bbb 5%, #ddd 30%, #ccc 60%, #ddd 90%) !important;\n box-shadow:\n inset 0 1px 0 rgba(255,255,255,0.6),\n inset 0 -1px 0 rgba(0,0,0,0.08),\n -1px 1px 2px rgba(0,0,0,0.1),\n 1px -1px 1px rgba(255,255,255,0.3) !important;\n border-radius: 8px;\n}\n\n[data-jey-theme=\"chrome\"] .body-sidebar .sidebar-item-icon {\n color: #666 !important;\n filter: drop-shadow(0 1px 0 rgba(255,255,255,0.5));\n}\n\n\n/* ==========================================================================\n Context Menu \u2014 Themed icons\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] .frappe-menu .menu-item-icon .jey-icon {\n width: 20px !important;\n height: 20px !important;\n stroke: #555 !important;\n fill: none !important;\n stroke-width: 1.8 !important;\n stroke-linecap: round !important;\n stroke-linejoin: round !important;\n filter: drop-shadow(0 1px 0 rgba(255,255,255,0.4)) !important;\n}\n\n\n/* ==========================================================================\n Sidebar Header \u2014 Themed icon\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] .sidebar-header .header-logo .jey-icon {\n width: 22px !important;\n height: 22px !important;\n stroke: #555 !important;\n fill: none !important;\n stroke-width: 1.8 !important;\n stroke-linecap: round !important;\n stroke-linejoin: round !important;\n filter: drop-shadow(0 1px 0 rgba(255,255,255,0.4)) !important;\n}\n\n\n/* ==========================================================================\n Primary Buttons \u2014 Polished Chrome with Shine\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] .btn-primary {\n background: linear-gradient(-45deg, #666 5%, #aaa 10%, #888 30%, #999 50%, #888 70%, #aaa 85%, #666 95%) !important;\n color: #f0f0f0 !important;\n border: 1px solid #555 !important;\n box-shadow:\n -2px 2px 4px rgba(0,0,0,0.2),\n 1px -1px 2px rgba(255,255,255,0.15),\n inset 0 1px 0 rgba(255,255,255,0.3),\n inset 0 -1px 0 rgba(0,0,0,0.15),\n inset -2px 2px 5px rgba(0,0,0,0),\n inset 1px -1px 2px rgba(255,255,255,0) !important;\n text-shadow: 0 -1px 0 rgba(0,0,0,0.25);\n position: relative;\n overflow: hidden;\n transition:\n box-shadow 0.25s cubic-bezier(0.22, 1, 0.36, 1),\n border-color 0.25s cubic-bezier(0.22, 1, 0.36, 1) !important;\n}\n\n[data-jey-theme=\"chrome\"] .btn-primary::before {\n content: \"\";\n position: absolute;\n top: 0; right: -50%; width: 30%; height: 100%;\n background: linear-gradient(-90deg, transparent, rgba(255,255,255,0.25), transparent);\n transform: skewX(15deg);\n transition: right 0.4s ease;\n pointer-events: none;\n}\n\n[data-jey-theme=\"chrome\"] .btn-primary:hover::before {\n right: 120%;\n}\n\n[data-jey-theme=\"chrome\"] .btn-primary:hover {\n background: linear-gradient(-45deg, #777 5%, #bbb 10%, #999 30%, #aaa 50%, #999 70%, #bbb 85%, #777 95%) !important;\n box-shadow:\n -2px 2px 6px rgba(0,0,0,0.25),\n 1px -1px 3px rgba(255,255,255,0.2),\n inset 0 1px 0 rgba(255,255,255,0.35),\n inset 0 -1px 0 rgba(0,0,0,0.15),\n inset -2px 2px 5px rgba(0,0,0,0),\n inset 1px -1px 2px rgba(255,255,255,0) !important;\n}\n\n[data-jey-theme=\"chrome\"] .btn-primary:active {\n background: linear-gradient(-45deg, #555 5%, #888 10%, #777 30%, #888 50%, #777 70%, #888 85%, #555 95%) !important;\n box-shadow:\n -2px 2px 4px rgba(0,0,0,0),\n 1px -1px 2px rgba(255,255,255,0),\n inset 0 1px 0 rgba(255,255,255,0),\n inset 0 -1px 0 rgba(0,0,0,0.05),\n inset -3px 3px 7px rgba(0,0,0,0.35),\n inset 1px -1px 2px rgba(255,255,255,0.12) !important;\n transition: box-shadow 0.08s ease-out !important;\n}\n\n\n/* ==========================================================================\n Default/Secondary Buttons \u2014 Brushed Metal\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] .btn-default,\n[data-jey-theme=\"chrome\"] .btn-secondary {\n background: linear-gradient(-45deg, #bbb 5%, #eee 10%, #ccc 30%, #e0e0e0 50%, #ccc 70%, #eee 85%, #bbb 95%) !important;\n border: 1px solid #999 !important;\n color: #444 !important;\n box-shadow:\n -1px 1px 3px rgba(0,0,0,0.12),\n 1px -1px 2px rgba(255,255,255,0.4),\n inset 0 1px 0 rgba(255,255,255,0.6),\n inset 0 -1px 0 rgba(0,0,0,0.06),\n inset -2px 2px 4px rgba(0,0,0,0),\n inset 1px -1px 1px rgba(255,255,255,0) !important;\n text-shadow: 0 1px 0 rgba(255,255,255,0.5);\n transition:\n box-shadow 0.25s cubic-bezier(0.22, 1, 0.36, 1),\n border-color 0.25s cubic-bezier(0.22, 1, 0.36, 1) !important;\n}\n\n[data-jey-theme=\"chrome\"] .btn-default:hover,\n[data-jey-theme=\"chrome\"] .btn-secondary:hover {\n background: linear-gradient(-45deg, #c0c0c0 5%, #f2f2f2 10%, #d4d4d4 30%, #e8e8e8 50%, #d4d4d4 70%, #f2f2f2 85%, #c0c0c0 95%) !important;\n border-color: #888 !important;\n box-shadow:\n -2px 2px 4px rgba(0,0,0,0.15),\n 1px -1px 2px rgba(255,255,255,0.4),\n inset 0 1px 0 rgba(255,255,255,0.7),\n inset 0 -1px 0 rgba(0,0,0,0.06),\n inset -2px 2px 4px rgba(0,0,0,0),\n inset 1px -1px 1px rgba(255,255,255,0) !important;\n}\n\n[data-jey-theme=\"chrome\"] .btn-default:active,\n[data-jey-theme=\"chrome\"] .btn-secondary:active {\n background: linear-gradient(-45deg, #aaa 5%, #d8d8d8 10%, #bbb 30%, #ccc 50%, #bbb 70%, #d8d8d8 85%, #aaa 95%) !important;\n box-shadow:\n -1px 1px 3px rgba(0,0,0,0),\n 1px -1px 2px rgba(255,255,255,0),\n inset 0 1px 0 rgba(255,255,255,0),\n inset 0 -1px 0 rgba(0,0,0,0.05),\n inset -3px 3px 6px rgba(0,0,0,0.3),\n inset 1px -1px 1px rgba(255,255,255,0.15) !important;\n transition: box-shadow 0.08s ease-out !important;\n}\n\n/* Danger */\n[data-jey-theme=\"chrome\"] .btn-danger {\n background: linear-gradient(-45deg, #b33 5%, #e88 10%, #c55 30%, #d77 50%, #c55 70%, #e88 85%, #b33 95%) !important;\n color: #fff !important;\n border: 1px solid #944 !important;\n box-shadow:\n -2px 2px 4px rgba(0,0,0,0.2),\n 1px -1px 2px rgba(255,255,255,0.1),\n inset 0 1px 0 rgba(255,255,255,0.25) !important;\n text-shadow: 0 -1px 0 rgba(0,0,0,0.2);\n}\n\n[data-jey-theme=\"chrome\"] .btn-danger:hover {\n background: linear-gradient(-45deg, #c44 5%, #f99 10%, #d66 30%, #e88 50%, #d66 70%, #f99 85%, #c44 95%) !important;\n}\n\n/* Ghost */\n[data-jey-theme=\"chrome\"] .btn-ghost:hover {\n background: linear-gradient(-180deg, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.05) 100%) !important;\n}\n\n\n/* ==========================================================================\n Input Fields \u2014 Sunken Metal Inset\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] input.form-control:not([type=\"checkbox\"]):not([type=\"radio\"]),\n[data-jey-theme=\"chrome\"] textarea.form-control {\n background: #d0d0d0 !important;\n border: 1px solid #999 !important;\n color: #333 !important;\n box-shadow:\n inset -1px 1px 2px rgba(0,0,0,0.10),\n inset 1px -1px 1px rgba(255,255,255,0.25),\n inset 0 1px 1px rgba(0,0,0,0.04) !important;\n transition:\n background-color 0.45s cubic-bezier(0.22, 1, 0.36, 1),\n border-color 0.45s cubic-bezier(0.22, 1, 0.36, 1),\n box-shadow 0.45s cubic-bezier(0.22, 1, 0.36, 1) !important;\n}\n\n[data-jey-theme=\"chrome\"] input.form-control:not([type=\"checkbox\"]):not([type=\"radio\"]):focus,\n[data-jey-theme=\"chrome\"] textarea.form-control:focus {\n background: #cbcbcb !important;\n border-color: #777 !important;\n box-shadow:\n inset -4px 4px 8px rgba(0,0,0,0.28),\n inset 1px -1px 1px rgba(255,255,255,0.15),\n inset 0 3px 5px rgba(0,0,0,0.18) !important;\n}\n\n[data-jey-theme=\"chrome\"] .form-control:disabled,\n[data-jey-theme=\"chrome\"] .form-control[disabled] {\n background: #d8d8d8 !important;\n color: #888 !important;\n box-shadow: inset -1px 1px 2px rgba(0,0,0,0.06) !important;\n}\n\n[data-jey-theme=\"chrome\"] .frappe-control .control-label,\n[data-jey-theme=\"chrome\"] .frappe-control label {\n color: #444 !important;\n text-shadow: 0 1px 0 rgba(255,255,255,0.5);\n}\n\n[data-jey-theme=\"chrome\"] select.form-control,\n[data-jey-theme=\"chrome\"] select.input-with-feedback {\n background: #d0d0d0 !important;\n}\n\n\n/* ==========================================================================\n Forms / Cards \u2014 Raised Metal Panels\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] .form-page {\n background:\n linear-gradient(-45deg, #ccc 3%, #e8e8e8 10%, #d5d5d5 25%, #eee 45%, #d8d8d8 60%, #e8e8e8 80%, #ccc 97%) !important;\n border: 1px solid #aaa !important;\n box-shadow:\n -3px 3px 8px rgba(0,0,0,0.12),\n 2px -2px 4px rgba(255,255,255,0.4),\n inset 0 1px 0 rgba(255,255,255,0.7),\n inset 0 -1px 0 rgba(0,0,0,0.05) !important;\n border-radius: var(--border-radius-lg) !important;\n}\n\n[data-jey-theme=\"chrome\"] .form-section .section-head {\n color: #444 !important;\n text-shadow: 0 1px 0 rgba(255,255,255,0.5);\n border-bottom: 1px solid #b0b0b0 !important;\n position: relative;\n}\n\n[data-jey-theme=\"chrome\"] .frappe-card {\n background: linear-gradient(-45deg, #c8c8c8 3%, #e5e5e5 12%, #d4d4d4 30%, #eaeaea 50%, #d4d4d4 70%, #e5e5e5 88%, #c8c8c8 97%) !important;\n border: 1px solid #aaa !important;\n box-shadow:\n -2px 2px 6px rgba(0,0,0,0.1),\n 1px -1px 3px rgba(255,255,255,0.4),\n inset 0 1px 0 rgba(255,255,255,0.6) !important;\n}\n\n/* Form sidebar */\n[data-jey-theme=\"chrome\"] .form-sidebar {\n border-right: 1px solid #aaa !important;\n}\n\n[data-jey-theme=\"chrome\"] .form-sidebar .sidebar-section {\n border-bottom: 1px solid #b0b0b0 !important;\n}\n\n\n/* ==========================================================================\n Modals / Dialogs \u2014 Chrome Frame with Conic-Gradient Border\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] .modal-content {\n background: linear-gradient(-45deg, #ccc 3%, #e8e8e8 12%, #d5d5d5 30%, #eee 50%, #d5d5d5 70%, #e8e8e8 88%, #ccc 97%) !important;\n border: 1px solid #999 !important;\n box-shadow:\n -6px 6px 24px rgba(0,0,0,0.25),\n 3px -3px 8px rgba(255,255,255,0.15),\n inset 0 1px 0 rgba(255,255,255,0.6),\n inset 0 0 0 1px rgba(255,255,255,0.35) !important;\n}\n\n[data-jey-theme=\"chrome\"] .modal-header {\n background: linear-gradient(-45deg, #b0b0b0 5%, #ddd 12%, #c0c0c0 30%, #e5e5e5 50%, #c0c0c0 70%, #ddd 88%, #b0b0b0 95%) !important;\n border-bottom: 1px solid #999 !important;\n box-shadow:\n inset 0 1px 0 rgba(255,255,255,0.6),\n inset 0 -1px 0 rgba(0,0,0,0.06) !important;\n}\n\n[data-jey-theme=\"chrome\"] .modal-header .modal-title {\n color: #333 !important;\n text-shadow: 0 1px 0 rgba(255,255,255,0.5);\n}\n\n[data-jey-theme=\"chrome\"] .modal-footer {\n background: linear-gradient(-45deg, #b8b8b8 5%, #d8d8d8 20%, #c0c0c0 50%, #d8d8d8 80%, #b8b8b8 95%) !important;\n border-top: 1px solid #999 !important;\n}\n\n[data-jey-theme=\"chrome\"] .modal-backdrop {\n background-color: rgba(40,40,40,0.55) !important;\n}\n\n\n/* ==========================================================================\n Page Head \u2014 Chrome Title Bar\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] .page-head {\n background: linear-gradient(-45deg, #b8b8b8 3%, #e0e0e0 10%, #c8c8c8 25%, #eaeaea 45%, #ccc 60%, #e0e0e0 80%, #b8b8b8 97%) !important;\n border-bottom: 1px solid #999 !important;\n box-shadow:\n inset 0 1px 0 rgba(255,255,255,0.6),\n inset 0 -1px 0 rgba(0,0,0,0.06),\n 0 2px 4px rgba(0,0,0,0.08) !important;\n}\n\n[data-jey-theme=\"chrome\"] .page-head .title-text {\n color: #333 !important;\n text-shadow: 0 1px 0 rgba(255,255,255,0.5);\n}\n\n\n/* ==========================================================================\n List View \u2014 Metal Table\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] .list-row-head {\n background: linear-gradient(-45deg, #aaa 3%, #d8d8d8 10%, #bbb 25%, #e0e0e0 45%, #bbb 60%, #d8d8d8 80%, #aaa 97%) !important;\n box-shadow:\n inset 0 1px 0 rgba(255,255,255,0.6),\n inset 0 -1px 0 rgba(0,0,0,0.06) !important;\n}\n\n[data-jey-theme=\"chrome\"] .list-row-container .list-row {\n border-bottom: 1px solid #b8b8b8 !important;\n}\n\n[data-jey-theme=\"chrome\"] .list-row-container:hover {\n background: linear-gradient(-90deg, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.05) 100%) !important;\n}\n\n[data-jey-theme=\"chrome\"] .result .list-row-container .level-left .list-row--col .level-left .ellipsis {\n color: #404040 !important;\n}\n\n/* Sticky right column: blend with metallic body + visible separator.\n Uses a translucent bg so it reads continuous with body gradient while\n still covering horizontally-overflowing columns under it. */\n[data-jey-theme=\"chrome\"] .frappe-list .list-row .level-right,\n[data-jey-theme=\"chrome\"] .frappe-list .list-row-head .level-right {\n background: linear-gradient(-90deg,\n rgba(216,216,216,0.85) 0%,\n rgba(208,208,208,0.88) 100%) !important;\n backdrop-filter: blur(3px);\n -webkit-backdrop-filter: blur(3px);\n border-right: 1px solid #a0a0a0 !important;\n box-shadow: inset -1px 0 0 rgba(255,255,255,0.5) !important;\n}\n\n[data-jey-theme=\"chrome\"] .frappe-list .list-row-container:hover .level-right {\n background: linear-gradient(-90deg,\n rgba(224,224,224,0.9) 0%,\n rgba(216,216,216,0.92) 100%) !important;\n box-shadow:\n inset -1px 0 0 rgba(255,255,255,0.55),\n 6px 0 10px rgba(0,0,0,0.05) !important;\n}\n\n/* List sidebar */\n[data-jey-theme=\"chrome\"] .layout-side-section {\n border-left: 1px solid #aaa !important;\n}\n\n\n/* ==========================================================================\n Tables / Grids \u2014 Metallic Header & Rows\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] .frappe-control[data-fieldtype=\"Table\"] .form-grid {\n border: 1px solid #999 !important;\n}\n\n[data-jey-theme=\"chrome\"] .grid-heading-row {\n background: linear-gradient(-45deg, #aaa 3%, #d5d5d5 10%, #bbb 30%, #ddd 50%, #bbb 70%, #d5d5d5 90%, #aaa 97%) !important;\n box-shadow:\n inset 0 1px 0 rgba(255,255,255,0.6),\n inset 0 -1px 0 rgba(0,0,0,0.06) !important;\n}\n\n[data-jey-theme=\"chrome\"] .grid-heading-row .static-area {\n color: #444 !important;\n text-shadow: 0 1px 0 rgba(255,255,255,0.5);\n}\n\n[data-jey-theme=\"chrome\"] .rows .grid-row:hover {\n background: linear-gradient(-90deg, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.05) 100%) !important;\n}\n\n[data-jey-theme=\"chrome\"] .rows .grid-row {\n border-bottom: 1px solid #b8b8b8 !important;\n}\n\n[data-jey-theme=\"chrome\"] .grid-footer {\n background: transparent !important;\n border-top: 1px solid #999 !important;\n}\n\n/* --- Active (edit-mode) grid cells: identical look to the static row --- */\n/* Keep the row's bottom border visible even when in edit mode */\n[data-jey-theme=\"chrome\"] .rows .grid-row.editable-row,\n[data-jey-theme=\"chrome\"] .rows .grid-row:has(.editable-row) {\n border-bottom: 1px solid #b8b8b8 !important;\n}\n\n/* Flatten every form control inside a grid row \u2014 no bg, no border, no shadow.\n Scoped to .data-row so the row-edit modal (`.form-in-grid`, which is a\n sibling of .data-row inside .grid-row) keeps its normal field styling. */\n[data-jey-theme=\"chrome\"] .grid-row > .data-row input.form-control:not([type=\"checkbox\"]):not([type=\"radio\"]),\n[data-jey-theme=\"chrome\"] .grid-row > .data-row textarea.form-control,\n[data-jey-theme=\"chrome\"] .grid-row > .data-row select.form-control,\n[data-jey-theme=\"chrome\"] .grid-row > .data-row select.input-with-feedback,\n[data-jey-theme=\"chrome\"] .grid-row > .data-row .awesomplete input,\n[data-jey-theme=\"chrome\"] .grid-row > .data-row .like-disabled-input {\n background: transparent !important;\n border: 0 !important;\n box-shadow: none !important;\n outline: none !important;\n color: #333 !important;\n transition:\n box-shadow 0.45s cubic-bezier(0.22, 1, 0.36, 1),\n background 0.45s cubic-bezier(0.22, 1, 0.36, 1) !important;\n}\n\n/* Focused cell: pressed-in look \u2014 same shadow pattern as .btn-default:active */\n[data-jey-theme=\"chrome\"] .grid-row > .data-row input.form-control:not([type=\"checkbox\"]):not([type=\"radio\"]):focus,\n[data-jey-theme=\"chrome\"] .grid-row > .data-row textarea.form-control:focus,\n[data-jey-theme=\"chrome\"] .grid-row > .data-row select.form-control:focus,\n[data-jey-theme=\"chrome\"] .grid-row > .data-row select.input-with-feedback:focus,\n[data-jey-theme=\"chrome\"] .grid-row > .data-row .awesomplete input:focus {\n background: linear-gradient(-45deg, #bbb 5%, #d8d8d8 10%, #c4c4c4 30%, #d0d0d0 50%, #c4c4c4 70%, #d8d8d8 85%, #bbb 95%) !important;\n border: 0 !important;\n outline: none !important;\n box-shadow:\n inset 0 1px 0 rgba(255,255,255,0),\n inset 0 -1px 0 rgba(0,0,0,0.05),\n inset -3px 3px 6px rgba(0,0,0,0.3),\n inset 1px -1px 1px rgba(255,255,255,0.15) !important;\n transition:\n box-shadow 0.45s cubic-bezier(0.22, 1, 0.36, 1),\n background 0.45s cubic-bezier(0.22, 1, 0.36, 1) !important;\n}\n\n/* Read-only cells \u2014 darker grey bg. Specificity matches the \"flatten\" rule above\n (tag.class + two :not()), so it wins over `background: transparent`. Frappe hides\n .field-area on inactive rows, so the tint only shows on the currently-active row. */\n[data-jey-theme=\"chrome\"] .grid-row > .data-row input.form-control:not([type=\"checkbox\"]):not([type=\"radio\"]):disabled,\n[data-jey-theme=\"chrome\"] .grid-row > .data-row input.form-control:not([type=\"checkbox\"]):not([type=\"radio\"])[disabled],\n[data-jey-theme=\"chrome\"] .grid-row > .data-row input.form-control:not([type=\"checkbox\"]):not([type=\"radio\"])[readonly],\n[data-jey-theme=\"chrome\"] .grid-row > .data-row textarea.form-control:disabled,\n[data-jey-theme=\"chrome\"] .grid-row > .data-row textarea.form-control[readonly],\n[data-jey-theme=\"chrome\"] .grid-row > .data-row select.form-control:disabled,\n[data-jey-theme=\"chrome\"] .grid-row > .data-row select.input-with-feedback:disabled {\n background: #d8d8d8 !important;\n box-shadow: none !important;\n color: #666 !important;\n}\n\n/* No pressed-in effect on focus for read-only cells */\n[data-jey-theme=\"chrome\"] .grid-row > .data-row input.form-control:not([type=\"checkbox\"]):not([type=\"radio\"]):disabled:focus,\n[data-jey-theme=\"chrome\"] .grid-row > .data-row input.form-control:not([type=\"checkbox\"]):not([type=\"radio\"])[disabled]:focus,\n[data-jey-theme=\"chrome\"] .grid-row > .data-row input.form-control:not([type=\"checkbox\"]):not([type=\"radio\"])[readonly]:focus,\n[data-jey-theme=\"chrome\"] .grid-row > .data-row textarea.form-control:disabled:focus,\n[data-jey-theme=\"chrome\"] .grid-row > .data-row textarea.form-control[readonly]:focus,\n[data-jey-theme=\"chrome\"] .grid-row > .data-row select.form-control:disabled:focus {\n background: #d8d8d8 !important;\n box-shadow: none !important;\n}\n\n/* Match static-row cell height: static cells use padding 10px 8px; form-control in\n Frappe uses padding-top:10px, padding-bottom: calc(--padding-md - 3px). Equalise so\n the active row doesn't grow or shrink compared to an idle row. */\n[data-jey-theme=\"chrome\"] .grid-row .editable-row .form-control {\n padding-top: 10px !important;\n padding-bottom: 10px !important;\n height: auto !important;\n}\n\n\n/* ==========================================================================\n Tabs \u2014 Metallic Tab Strip\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] .form-tabs .nav-link {\n color: #666 !important;\n text-shadow: 0 1px 0 rgba(255,255,255,0.4);\n}\n\n[data-jey-theme=\"chrome\"] .form-tabs .nav-link:hover {\n color: #444 !important;\n background: linear-gradient(-180deg, rgba(255,255,255,0.3) 0%, rgba(255,255,255,0.05) 100%) !important;\n}\n\n[data-jey-theme=\"chrome\"] .form-tabs .nav-link.active {\n color: #333 !important;\n background: linear-gradient(-180deg, rgba(255,255,255,0.2) 0%, transparent 100%) !important;\n}\n\n[data-jey-theme=\"chrome\"] .form-tabs .nav-link::after {\n background: #777;\n}\n\n\n/* ==========================================================================\n Dropdowns \u2014 Chrome Panel\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] .dropdown-menu {\n background: linear-gradient(-45deg, #c0c0c0 3%, #e5e5e5 10%, #d0d0d0 30%, #eaeaea 50%, #d0d0d0 70%, #e5e5e5 90%, #c0c0c0 97%) !important;\n border: 1px solid #999 !important;\n box-shadow:\n -4px 4px 12px rgba(0,0,0,0.18),\n 2px -2px 4px rgba(255,255,255,0.15),\n inset 0 1px 0 rgba(255,255,255,0.6) !important;\n}\n\n[data-jey-theme=\"chrome\"] .dropdown-item {\n color: #444 !important;\n}\n\n[data-jey-theme=\"chrome\"] .dropdown-item:hover,\n[data-jey-theme=\"chrome\"] .dropdown-item:focus {\n background: linear-gradient(-90deg, rgba(255,255,255,0.3) 0%, rgba(255,255,255,0.05) 100%) !important;\n color: #222 !important;\n}\n\n[data-jey-theme=\"chrome\"] .dropdown-divider {\n border-top-color: #aaa !important;\n}\n\n\n/* ==========================================================================\n Alerts / Toasts\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] .desk-alert {\n background: linear-gradient(-45deg, #c0c0c0 5%, #e5e5e5 15%, #d0d0d0 40%, #e8e8e8 60%, #d0d0d0 85%, #c0c0c0 95%) !important;\n border: 1px solid #999 !important;\n box-shadow:\n -3px 3px 8px rgba(0,0,0,0.12),\n 1px -1px 3px rgba(255,255,255,0.3),\n inset 0 1px 0 rgba(255,255,255,0.5) !important;\n}\n\n\n/* ==========================================================================\n Breadcrumbs\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] .breadcrumb-container a {\n color: #666 !important;\n text-shadow: 0 1px 0 rgba(255,255,255,0.4);\n}\n\n[data-jey-theme=\"chrome\"] .breadcrumb-container a:hover {\n color: #333 !important;\n}\n\n\n/* ==========================================================================\n Timeline\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] .new-timeline::before {\n border-right-color: #aaa !important;\n}\n\n[data-jey-theme=\"chrome\"] .timeline-dot {\n background: linear-gradient(-45deg, #bbb, #ddd, #bbb) !important;\n border: 1px solid #999 !important;\n box-shadow: -1px 1px 2px rgba(0,0,0,0.1), 1px -1px 1px rgba(255,255,255,0.3);\n}\n\n\n/* ==========================================================================\n Badges / Indicators\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] .indicator-pill {\n box-shadow:\n inset 0 1px 0 rgba(255,255,255,0.3),\n -1px 1px 1px rgba(0,0,0,0.08);\n}\n\n\n/* ==========================================================================\n Popovers\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] .popover {\n background: linear-gradient(-45deg, #c0c0c0 3%, #e5e5e5 10%, #d0d0d0 30%, #eaeaea 50%, #d0d0d0 70%, #e5e5e5 90%, #c0c0c0 97%) !important;\n border: 1px solid #999 !important;\n box-shadow:\n -4px 4px 12px rgba(0,0,0,0.15),\n 2px -2px 4px rgba(255,255,255,0.2),\n inset 0 1px 0 rgba(255,255,255,0.5) !important;\n}\n\n[data-jey-theme=\"chrome\"] .popover .popover-body {\n color: #404040 !important;\n}\n\n\n/* ==========================================================================\n Module Widget Cards \u2014 Chrome Panels with Conic Border Accent\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] .ce-block .links-widget-box,\n[data-jey-theme=\"chrome\"] .ce-block .number-widget-box {\n background: linear-gradient(-45deg, #c0c0c0 3%, #e5e5e5 12%, #d0d0d0 30%, #eaeaea 50%, #d0d0d0 70%, #e5e5e5 88%, #c0c0c0 97%) !important;\n border: 1px solid #aaa !important;\n box-shadow:\n -2px 2px 6px rgba(0,0,0,0.1),\n 1px -1px 3px rgba(255,255,255,0.35),\n inset 0 1px 0 rgba(255,255,255,0.6) !important;\n}\n\n[data-jey-theme=\"chrome\"] .ce-block .links-widget-box::after,\n[data-jey-theme=\"chrome\"] .ce-block .number-widget-box::after {\n background: conic-gradient(from -140deg, #a0a0a0, #e0e0e0, #888, #d0d0d0, #a0a0a0) !important;\n}\n\n[data-jey-theme=\"chrome\"] .ce-block .links-widget-box:hover,\n[data-jey-theme=\"chrome\"] .ce-block .number-widget-box:hover {\n box-shadow:\n -3px 3px 10px rgba(0,0,0,0.14),\n 2px -2px 5px rgba(255,255,255,0.3),\n inset 0 1px 0 rgba(255,255,255,0.7) !important;\n}\n\n\n/* ==========================================================================\n Scrollbars \u2014 Metal Cylinder\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] ::-webkit-scrollbar {\n width: 10px;\n height: 10px;\n}\n\n[data-jey-theme=\"chrome\"] ::-webkit-scrollbar-track {\n background: linear-gradient(-90deg, #c0c0c0, #d0d0d0, #c0c0c0);\n}\n\n[data-jey-theme=\"chrome\"] ::-webkit-scrollbar-thumb {\n background: linear-gradient(-90deg, #888, #bbb, #999, #bbb, #888);\n border-radius: 5px;\n border: 1px solid #999;\n}\n\n[data-jey-theme=\"chrome\"] ::-webkit-scrollbar-thumb:hover {\n background: linear-gradient(-90deg, #777, #aaa, #888, #aaa, #777);\n}\n\n\n/* ==========================================================================\n Link Colors\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] a {\n color: #555;\n}\n\n[data-jey-theme=\"chrome\"] a:hover {\n color: #333;\n}\n\n\n/* ==========================================================================\n Print \u2014 Reset\n ========================================================================== */\n\n@media print {\n [data-jey-theme=\"chrome\"] body,\n [data-jey-theme=\"chrome\"] .page-container,\n [data-jey-theme=\"chrome\"] .form-page,\n [data-jey-theme=\"chrome\"] .frappe-card,\n [data-jey-theme=\"chrome\"] .modal-content,\n [data-jey-theme=\"chrome\"] .navbar {\n background: white !important;\n box-shadow: none !important;\n border-color: #ddd !important;\n text-shadow: none !important;\n }\n [data-jey-theme=\"chrome\"] .btn-primary {\n background: #333 !important;\n text-shadow: none !important;\n }\n}\n\n/* ===== theme_modern.css ===== */\n/* ==========================================================================\n THEME: Modern [data-jey-theme=\"modern\"]\n Frosted glass rounded squares with indigo accents.\n ========================================================================== */\n\n@keyframes jey-modern-glow {\n 0%, 100% { opacity: 0.4; }\n 50% { opacity: 0.7; }\n}\n\n/* Outer shell \u2014 frosted glass rounded square */\n[data-jey-theme=\"modern\"] .jey-chrome {\n width: 72px; height: 72px; border-radius: 22px; position: relative;\n background: rgba(255, 255, 255, 0.45);\n backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);\n border: 1px solid rgba(255, 255, 255, 0.6);\n box-shadow: 0 4px 16px rgba(0,0,0,0.06), 0 1px 3px rgba(0,0,0,0.04), inset 0 1px 0 rgba(255,255,255,0.8);\n transition: all 0.3s ease;\n}\n\n[data-jey-theme=\"modern\"] .desktop-icon:hover .jey-chrome {\n box-shadow: 0 8px 24px rgba(0,0,0,0.1), 0 2px 6px rgba(0,0,0,0.06), inset 0 1px 0 rgba(255,255,255,0.9);\n transform: translateY(-2px);\n}\n\n/* Hide chrome ring layers */\n[data-jey-theme=\"modern\"] .jey-chrome-ring,\n[data-jey-theme=\"modern\"] .jey-chrome-gap,\n[data-jey-theme=\"modern\"] .jey-chrome-ring-inner {\n display: none;\n}\n\n/* Face fills rounded square */\n[data-jey-theme=\"modern\"] .jey-chrome-face {\n position: absolute; inset: 0; border-radius: 22px; overflow: hidden;\n background: transparent; box-shadow: none;\n display: flex; align-items: center; justify-content: center;\n}\n\n/* Bottom glow accent */\n[data-jey-theme=\"modern\"] .jey-face-glow {\n position: absolute; bottom: -4px; right: 16px; left: 16px; height: 20px;\n border-radius: 50%;\n background: radial-gradient(ellipse, rgba(99, 102, 241, 0.35) 0%, transparent 70%);\n animation: jey-modern-glow 4s ease-in-out infinite;\n pointer-events: none; z-index: 0;\n}\n\n/* Top glass highlight */\n[data-jey-theme=\"modern\"] .jey-face-reflection {\n position: absolute; top: 0; right: 0; left: 0; height: 50%;\n border-radius: 22px 22px 0 0;\n background: linear-gradient(-180deg, rgba(255,255,255,0.5) 0%, transparent 100%);\n pointer-events: none; z-index: 1; animation: none;\n}\n\n/* Icon \u2014 indigo accent */\n[data-jey-theme=\"modern\"] .jey-chrome-face .jey-icon {\n width: 26px !important; height: 26px !important;\n stroke: #4f46e5 !important; fill: none !important;\n stroke-width: 1.6 !important; stroke-linecap: round !important; stroke-linejoin: round !important;\n filter: drop-shadow(0 1px 2px rgba(79, 70, 229, 0.2)) !important;\n position: relative; z-index: 2;\n}\n\n/* Rounded square container */\n[data-jey-theme=\"modern\"] .icon-container.jey-chrome-done {\n border-radius: 22px !important;\n}\n"], + "mappings": ";AAYA;AACC;AACA;AACA;AACA;AAAA;AAID;AAAA;AAEC;AAAA;AAKD;AAAA;AAAA;AAGC;AAAA;AAOD;AACQ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGR;AACQ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGR;AAAA;AAEQ;AACA;AACA;AAAA;AAGR;AAAA;AAEQ;AAAA;AAGR;AACQ;AACA;AAAA;AAGR;AACQ;AACA;AACA;AAAA;AAGR;AACQ;AACA;AAAA;AAQR;AAAA;AAEQ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGR;AAAA;AAEQ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGR;AAAA;AAEQ;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGR;AAAA;AAEQ;AAAA;AAWR;AACQ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGR;AACQ;AACA;AAAA;AAGR;AACQ;AACA;AACA;AACA;AACA;AACA;AAAA;AAGR;AACQ;AACA;AAAA;AAMR;AACQ;AACA;AACA;AAAA;AAKR;AACQ;AACA;AACA;AAAA;AAGR;AACQ;AACA;AAAA;AAGR;AACQ;AAAA;AAOR;AAAA;AAEQ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGR;AAAA;AAEQ;AAAA;AAIR;AACQ;AAAA;AAGR;AACQ;AACA;AACA;AAAA;AAOR;AACQ;AAAA;AAGR;AACQ;AACA;AAAA;AAQR;AACQ;AACA;AACA;AAAA;AAGR;AACQ;AAAA;AAGR;AACQ;AAAA;AAGR;AACQ;AACA;AACA;AAAA;AAGR;AACQ;AAAA;AAQR;AACQ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGR;AAAA;AAEQ;AACA;AAAA;AAIR;AACQ;AAAA;AAGR;AACQ;AACA;AAAA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", + "names": [] +} diff --git a/jey_theme/public/dist/css/jey_theme.bundle.S6M2WDGN.css b/jey_theme/public/dist/css/jey_theme.bundle.S6M2WDGN.css new file mode 100644 index 0000000..838e340 --- /dev/null +++ b/jey_theme/public/dist/css/jey_theme.bundle.S6M2WDGN.css @@ -0,0 +1,2180 @@ +/* ../../../../../tmp/tmp-16010-GNkNpqu9JQON/jey_theme/jey_theme/public/css/jey_theme.bundle.css */ +.splash img { + content: url(/assets/jey_theme/images/preloader.png); + max-width: 64px !important; + width: 64px !important; + height: auto; +} +.desktop-icon[data-id=Organization], +.desktop-icon[data-id=ERPNext] { + display: none !important; +} +.desktop-icon[data-id=Quality], +.desktop-icon[data-id="Quality Management"], +.desktop-icon[data-id=Subcontracting] { + display: none !important; +} +input[type=checkbox] { + -webkit-appearance: none !important; + -moz-appearance: none !important; + appearance: none !important; + width: 28px !important; + min-width: 28px !important; + height: 16px !important; + background-color: var(--gray-400, #c0c6cc) !important; + background-image: none !important; + border-radius: 999px !important; + border: none !important; + position: relative !important; + cursor: pointer !important; + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.12) !important; + transition: background-color 0.25s ease !important; + vertical-align: middle !important; + margin: 0 !important; + margin-right: 8px !important; + outline: none !important; +} +input[type=checkbox]::after { + content: "" !important; + width: 12px !important; + height: 12px !important; + background-color: #fff !important; + border-radius: 50% !important; + position: absolute !important; + top: 2px !important; + left: 2px !important; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25) !important; + transition: transform 0.25s ease !important; + border: none !important; +} +input[type=checkbox]:checked, +input[type=checkbox].disabled-selected { + background-color: #2da44e !important; + background-image: none !important; + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.08) !important; +} +input[type=checkbox]:checked::after, +input[type=checkbox].disabled-selected::after { + transform: translateX(12px) !important; +} +input[type=checkbox]:focus { + outline: none !important; + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.12), 0 0 0 2px rgba(45, 164, 78, 0.25) !important; +} +input[type=checkbox]:disabled { + opacity: 0.5 !important; + cursor: not-allowed !important; + background-image: none !important; +} +input[type=checkbox].disabled-selected { + opacity: 0.7 !important; + cursor: not-allowed !important; +} +.row-check input[type=checkbox], +.grid-row-check { + width: var(--checkbox-size, 14px) !important; + min-width: var(--checkbox-size, 14px) !important; + height: var(--checkbox-size, 14px) !important; + border-radius: 4px !important; + border: 1px solid var(--gray-500) !important; + background-color: transparent !important; + background-image: none !important; + box-shadow: none !important; + margin-right: 0 !important; + transition: none !important; +} +.row-check input[type=checkbox]::after, +.grid-row-check::after { + content: "" !important; + width: auto !important; + height: auto !important; + background: none !important; + border-radius: 0 !important; + position: absolute !important; + top: auto !important; + left: auto !important; + box-shadow: none !important; + transition: none !important; + transform: none !important; + inset: -8px !important; + opacity: 0 !important; +} +.row-check input[type=checkbox]:checked, +.grid-row-check:checked { + background-color: var(--primary) !important; + background-image: url("data:image/svg+xml, "), var(--checkbox-gradient) !important; + background-size: 57%, 100% !important; + background-repeat: no-repeat !important; + background-position: center !important; + border: none !important; + box-shadow: none !important; +} +.row-check input[type=checkbox]:checked::after, +.grid-row-check:checked::after { + transform: none !important; +} +.datatable input[type=checkbox] { + -webkit-appearance: none !important; + -moz-appearance: none !important; + appearance: none !important; + width: var(--checkbox-size, 14px) !important; + min-width: var(--checkbox-size, 14px) !important; + height: var(--checkbox-size, 14px) !important; + margin: 0 !important; + padding: 0 !important; + border: 1px solid var(--gray-500) !important; + border-radius: 4px !important; + background-color: transparent !important; + background-image: none !important; + box-shadow: none !important; + cursor: pointer !important; + vertical-align: middle !important; + transition: none !important; +} +.datatable input[type=checkbox]::after { + content: none !important; + display: none !important; +} +.datatable input[type=checkbox]:checked { + background-color: var(--primary) !important; + background-image: url("data:image/svg+xml, ") !important; + background-size: 57% !important; + background-repeat: no-repeat !important; + background-position: center !important; + border: none !important; +} +.datatable input[type=checkbox]:disabled { + opacity: 0.5 !important; + cursor: not-allowed !important; +} +.datatable .dt-cell__content:has(> input[type="checkbox"]:only-child) { + display: flex !important; + align-items: center !important; + justify-content: flex-start !important; +} +.datatable .dt-row-filter .dt-cell__content { + display: flex !important; + align-items: center !important; + gap: 2px; +} +.datatable .dt-row-filter .dt-filter.dt-input { + flex: 1 1 0 !important; + min-width: 0 !important; +} +.datatable .dt-row-filter .comparison-help-icon { + flex: 0 0 auto; +} +input.list-row-checkbox::after, +input.list-header-checkbox::after { + inset: auto !important; + width: 12px !important; + height: 12px !important; + background-color: #fff !important; + border-radius: 50% !important; + position: absolute !important; + top: 2px !important; + left: 2px !important; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25) !important; + transition: transform 0.25s ease !important; + opacity: 1 !important; +} +input.list-row-checkbox:checked::after, +input.list-header-checkbox:checked::after { + transform: translateX(12px) !important; +} +.frappe-control[data-fieldtype=Check] .checkbox label { + align-items: center !important; +} +.frappe-control[data-fieldtype=Check] .checkbox .input-area:not(.hide) { + padding-top: 0 !important; + display: flex !important; + align-items: center !important; +} +.filter-section { + display: flex !important; +} +.filter-section .sort-selector { + order: -1 !important; + margin-right: 8px !important; +} +.form-grid { + overflow-x: scroll !important; + padding-bottom: 12px !important; + scrollbar-width: auto !important; +} +.form-grid::-webkit-scrollbar { + height: 10px !important; +} +.form-grid::-webkit-scrollbar-track { + background: var(--gray-100, #f5f5f5) !important; +} +.form-grid::-webkit-scrollbar-thumb { + background: var(--gray-400, #c0c6cc) !important; + border-radius: 5px !important; + border: 2px solid var(--gray-100, #f5f5f5) !important; +} +.form-grid::-webkit-scrollbar-thumb:hover { + background: var(--gray-500, #98a2ab) !important; +} +.jey-col-resize { + position: absolute; + top: 0; + right: -2px; + width: 5px; + height: 100%; + cursor: col-resize; + z-index: 2; + background: transparent; + transition: background 0.15s; +} +.jey-col-resize:hover, +.jey-col-resize:active { + background: var(--primary, #2490ef); + opacity: 0.5; +} +.grid-heading-row .grid-static-col[data-jey-draggable] { + cursor: grab; +} +.grid-heading-row .grid-static-col.jey-drop-target.jey-drop-left { + box-shadow: inset 3px 0 0 var(--primary, #2490ef); + background: rgba(36, 144, 239, 0.05); +} +.grid-heading-row .grid-static-col.jey-drop-target.jey-drop-right { + box-shadow: inset -3px 0 0 var(--primary, #2490ef); + background: rgba(36, 144, 239, 0.05); +} +.list-row-head .list-row-col { + position: relative; +} +.list-row-head .list-row-col:not(:last-child) { + border-right: 1px solid var(--border-color, #e2e6e9); +} +.list-row-head .jey-col-resize { + position: absolute; + top: 0; + right: -2px; + width: 5px; + height: 100%; + cursor: col-resize; + z-index: 3; + background: transparent; + transition: background 0.15s; +} +.list-row-head .jey-col-resize:hover, +.list-row-head .jey-col-resize:active { + background: var(--primary, #2490ef); + opacity: 0.5; +} +.list-row-head .list-row-col[data-jey-draggable]:not(.list-subject) { + cursor: grab; +} +.list-row-head .list-row-col.jey-drop-target.jey-drop-left { + box-shadow: inset 3px 0 0 var(--primary, #2490ef); + background: rgba(36, 144, 239, 0.05); +} +.list-row-head .list-row-col.jey-drop-target.jey-drop-right { + box-shadow: inset -3px 0 0 var(--primary, #2490ef); + background: rgba(36, 144, 239, 0.05); +} +.body-sidebar .body-sidebar-bottom { + min-width: 0; +} +.jey-fullwidth-link, +.jey-theme-switch-link, +.jey-collapse-link { + text-decoration: none; + font-size: var(--text-sm); + display: flex; + align-items: center; + cursor: pointer; + margin-bottom: 8px; + width: 100%; + overflow: hidden; +} +.jey-fullwidth-link svg, +.jey-theme-switch-link svg, +.jey-collapse-link svg { + margin: 0; + flex: 0 0 auto; +} +.jey-fullwidth-link span, +.jey-theme-switch-link span, +.jey-collapse-link span { + margin-left: 10px; + max-width: 200px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + transition: max-width 0.3s cubic-bezier(0.4, 0, 0.2, 1), margin-left 0.3s cubic-bezier(0.4, 0, 0.2, 1); +} +.body-sidebar-container:not(.expanded) .jey-fullwidth-link span, +.body-sidebar-container:not(.expanded) .jey-theme-switch-link span, +.body-sidebar-container:not(.expanded) .jey-collapse-link span { + max-width: 0; + margin-left: 0; +} +.body-sidebar .sidebar-bottom-actions { + display: none !important; +} +.body-sidebar .nav-item { + transition: padding 0.3s cubic-bezier(0.4, 0, 0.2, 1); +} +.modal.fade .modal-dialog { + transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.5s cubic-bezier(0.22, 1, 0.36, 1) !important; + transform: translateY(-24px) scale(0.97); + opacity: 0; +} +.modal.show .modal-dialog { + transform: none; + opacity: 1; +} +@keyframes jey-section-in { + from { + top: -12px; + } + to { + top: 0; + } +} +.form-layout .form-section .section-head, +.form-layout .form-section .section-body { + position: relative; + animation: jey-section-in 0.7s cubic-bezier(0.22, 1, 0.36, 1) both; +} +.form-layout .form-section:nth-child(1) .section-head, +.form-layout .form-section:nth-child(1) .section-body { + animation-delay: 0.04s; +} +.form-layout .form-section:nth-child(2) .section-head, +.form-layout .form-section:nth-child(2) .section-body { + animation-delay: 0.10s; +} +.form-layout .form-section:nth-child(3) .section-head, +.form-layout .form-section:nth-child(3) .section-body { + animation-delay: 0.16s; +} +.form-layout .form-section:nth-child(4) .section-head, +.form-layout .form-section:nth-child(4) .section-body { + animation-delay: 0.22s; +} +.form-layout .form-section:nth-child(5) .section-head, +.form-layout .form-section:nth-child(5) .section-body { + animation-delay: 0.28s; +} +.form-layout .form-section:nth-child(6) .section-head, +.form-layout .form-section:nth-child(6) .section-body { + animation-delay: 0.34s; +} +.form-layout .form-section:nth-child(7) .section-head, +.form-layout .form-section:nth-child(7) .section-body { + animation-delay: 0.40s; +} +.form-layout .form-section:nth-child(8) .section-head, +.form-layout .form-section:nth-child(8) .section-body { + animation-delay: 0.46s; +} +.form-layout .form-section:nth-child(9) .section-head, +.form-layout .form-section:nth-child(9) .section-body { + animation-delay: 0.52s; +} +.form-layout .form-section:nth-child(10) .section-head, +.form-layout .form-section:nth-child(10) .section-body { + animation-delay: 0.58s; +} +.form-layout .form-section:nth-child(11) .section-head, +.form-layout .form-section:nth-child(11) .section-body { + animation-delay: 0.64s; +} +.form-layout .form-section:nth-child(12) .section-head, +.form-layout .form-section:nth-child(12) .section-body { + animation-delay: 0.70s; +} +.form-tabs .nav-link { + position: relative; + border-bottom: none !important; + transition: color 0.3s ease; +} +.form-tabs .nav-link::after { + content: ""; + position: absolute; + bottom: 0; + left: 0; + right: 0; + height: 2px; + background: var(--text-color); + transform: scaleX(0); + transform-origin: center; + transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1); +} +.form-tabs .nav-link.active::after { + transform: scaleX(1); +} +.dropdown-menu { + display: block !important; + visibility: hidden; + opacity: 0; + pointer-events: none; +} +.dropdown-menu.show { + visibility: visible; + opacity: 1; + pointer-events: auto; + animation: jey-dropdown-in 0.2s ease; +} +.dropdown-menu.jey-dropdown-hiding { + visibility: visible !important; + pointer-events: none; + animation: jey-dropdown-out 0.2s ease forwards; +} +@keyframes jey-dropdown-in { + from { + opacity: 0; + } + to { + opacity: 1; + } +} +@keyframes jey-dropdown-out { + from { + opacity: 1; + } + to { + opacity: 0; + } +} +@media (min-width: 576px) { + .body-sidebar-container { + width: 50px; + transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1); + } + .body-sidebar-container.expanded { + width: var(--sidebar-width); + } +} +.body-sidebar .sidebar-header { + padding-left: 0 !important; + padding-right: 0 !important; +} +.body-sidebar-container.expanded .sidebar-user-button { + padding: 0 !important; +} +.body-sidebar .standard-sidebar-item .item-anchor { + transition: padding-left 0.4s cubic-bezier(0.22, 1, 0.36, 1), background 0.4s ease; +} +.body-sidebar .standard-sidebar-item .item-anchor:hover { + padding-left: calc(var(--padding-xs, 8px) + 4px); +} +.body-sidebar .standard-sidebar-item .sidebar-item-icon { + transition: transform 0.45s cubic-bezier(0.22, 1, 0.36, 1); +} +.body-sidebar .standard-sidebar-item .item-anchor:hover .sidebar-item-icon { + transform: scale(1.15); +} +.body-sidebar .standard-sidebar-item.active-sidebar .item-anchor { + position: relative; +} +.body-sidebar .standard-sidebar-item.active-sidebar .item-anchor::before { + content: ""; + position: absolute; + left: 0; + top: 20%; + bottom: 20%; + width: 3px; + border-radius: 0 3px 3px 0; + background: var(--primary, #2490ef); + opacity: 0.8; +} +@keyframes jey-list-row-in { + from { + opacity: 0; + transform: translateX(-16px); + } + to { + opacity: 1; + transform: translateX(0); + } +} +.frappe-list .result .list-row-container:not(:first-child) { + animation: jey-list-row-in 0.4s cubic-bezier(0.22, 1, 0.36, 1) both; +} +.frappe-list .result .list-row-container:nth-child(2) { + animation-delay: 0.03s; +} +.frappe-list .result .list-row-container:nth-child(3) { + animation-delay: 0.05s; +} +.frappe-list .result .list-row-container:nth-child(4) { + animation-delay: 0.07s; +} +.frappe-list .result .list-row-container:nth-child(5) { + animation-delay: 0.09s; +} +.frappe-list .result .list-row-container:nth-child(6) { + animation-delay: 0.11s; +} +.frappe-list .result .list-row-container:nth-child(7) { + animation-delay: 0.13s; +} +.frappe-list .result .list-row-container:nth-child(8) { + animation-delay: 0.15s; +} +.frappe-list .result .list-row-container:nth-child(9) { + animation-delay: 0.17s; +} +.frappe-list .result .list-row-container:nth-child(10) { + animation-delay: 0.19s; +} +.frappe-list .result .list-row-container:nth-child(11) { + animation-delay: 0.21s; +} +.frappe-list .result .list-row-container:nth-child(12) { + animation-delay: 0.23s; +} +.frappe-list .result .list-row-container:nth-child(13) { + animation-delay: 0.25s; +} +.frappe-list .result .list-row-container:nth-child(14) { + animation-delay: 0.27s; +} +.frappe-list .result .list-row-container:nth-child(15) { + animation-delay: 0.29s; +} +.frappe-list .result .list-row-container:nth-child(16) { + animation-delay: 0.31s; +} +.frappe-list .result .list-row-container:nth-child(17) { + animation-delay: 0.33s; +} +.frappe-list .result .list-row-container:nth-child(18) { + animation-delay: 0.35s; +} +.frappe-list .result .list-row-container:nth-child(19) { + animation-delay: 0.37s; +} +.frappe-list .result .list-row-container:nth-child(20) { + animation-delay: 0.39s; +} +.frappe-list .result .list-row-container:nth-child(21) { + animation-delay: 0.41s; +} +.modal:has(.cool-awesomebar-modal-footer) { + display: block !important; + visibility: hidden; + opacity: 0; + pointer-events: none; + transition: opacity 0.5s cubic-bezier(0.22, 1, 0.36, 1), visibility 0.5s; +} +.modal:has(.cool-awesomebar-modal-footer) .modal-dialog { + transform: translateY(-30px); + transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1); +} +.modal.show:has(.cool-awesomebar-modal-footer) { + visibility: visible; + opacity: 1; + pointer-events: auto; +} +.modal.show:has(.cool-awesomebar-modal-footer) .modal-dialog { + transform: none; +} +@keyframes jey-summary-in { + from { + opacity: 0; + transform: translateY(10px); + } + to { + opacity: 1; + transform: translateY(0); + } +} +.report-summary .summary-item { + animation: jey-summary-in 0.7s cubic-bezier(0.22, 1, 0.36, 1) both; +} +.report-summary .summary-item:nth-child(1) { + animation-delay: 0.05s; +} +.report-summary .summary-item:nth-child(2) { + animation-delay: 0.10s; +} +.report-summary .summary-item:nth-child(3) { + animation-delay: 0.15s; +} +.report-summary .summary-item:nth-child(4) { + animation-delay: 0.20s; +} +.report-summary .summary-item:nth-child(5) { + animation-delay: 0.25s; +} +.report-summary .summary-item:nth-child(6) { + animation-delay: 0.30s; +} +.form-section .collapse-indicator { + transition: transform 0.45s cubic-bezier(0.22, 1, 0.36, 1); + display: inline-block; +} +.form-section .section-head.collapsed .collapse-indicator { + transform: rotate(-90deg); +} +.form-section .section-head.collapsible + .section-body { + display: flex !important; + flex-wrap: wrap; + transition: max-height 0.5s ease-in-out, padding 0.5s ease-in-out; +} +.form-section .section-head.collapsed + .section-body { + max-height: 0 !important; + padding-top: 0 !important; + padding-bottom: 0 !important; + overflow: hidden; + transition: max-height 0.5s ease-in-out, padding 0.5s ease-in-out; +} +.awesomplete > [role=listbox] { + animation: jey-awesomplete-in 0.4s cubic-bezier(0.22, 1, 0.36, 1) both; +} +.awesomplete > [role=listbox].jey-awesomplete-hiding { + display: block !important; + pointer-events: none; + animation: jey-awesomplete-out 0.2s ease forwards; +} +@keyframes jey-awesomplete-in { + from { + opacity: 0; + } + to { + opacity: 1; + } +} +@keyframes jey-awesomplete-out { + from { + opacity: 1; + } + to { + opacity: 0; + } +} +.awesomplete > ul[role=listbox]:not([hidden]) { + z-index: 10; +} +input.form-control:not([type="checkbox"]):not([type="radio"]), +textarea.form-control, +.frappe-control input:not([type="checkbox"]):not([type="radio"]), +.frappe-control textarea { + transition: background-color 0.45s cubic-bezier(0.22, 1, 0.36, 1), border-color 0.45s cubic-bezier(0.22, 1, 0.36, 1); +} +input.form-control:not([type="checkbox"]):not([type="radio"]):focus, +textarea.form-control:focus, +.frappe-control input:not([type="checkbox"]):not([type="radio"]):focus, +.frappe-control textarea:focus { + border-color: var(--gray-500, #a8b0b8) !important; + outline: none; +} +.btn { + position: relative; + overflow: hidden; + transition: + box-shadow 0.4s ease, + background-color 0.3s ease, + color 0.3s ease; +} +.btn::after { + content: ""; + position: absolute; + inset: 0; + background: linear-gradient(105deg, transparent 35%, rgba(255, 255, 255, 0.25) 45%, rgba(255, 255, 255, 0.25) 55%, transparent 65%); + transform: translateX(-110%); + transition: transform 0.6s cubic-bezier(0.22, 1, 0.36, 1); + pointer-events: none; +} +.btn:hover::after { + transform: translateX(110%); +} +.btn:active { + box-shadow: inset 0 2px 6px rgba(0, 0, 0, 0.2) !important; +} +.dropdown-menu-item[onclick*=toggle_full_width], +.dropdown-menu-item[onclick*=clear_cache], +.dropdown-menu-item[onclick*=ThemeSwitcher], +.dropdown-menu-item[data-name=website], +.dropdown-menu-item.jey-hidden-item { + display: none !important; +} +.desktop-icon:hover { + transform: translateY(-2px) !important; +} +.desktop-icon:active { + transform: scale(0.97) !important; +} +.icon-container.jey-chrome-done { + width: 72px !important; + height: 72px !important; + padding: 0 !important; + border-radius: 50% !important; + background: none !important; + overflow: visible !important; + position: relative !important; +} +.icon-container.jey-chrome-done:hover { + transform: none !important; +} +.icon-container.folder-icon.jey-chrome-done { + box-shadow: none !important; +} +#desktop-modal .icons-container .icons { + gap: 12px 8px !important; + padding: 12px 0 !important; +} +#desktop-modal .desktop-icon { + min-width: 0 !important; + display: flex !important; + flex-direction: column !important; + align-items: center !important; + text-align: center !important; +} +#desktop-modal .desktop-icon .icon-caption { + width: 100% !important; + max-width: 100% !important; + padding: 0 4px !important; + margin-top: 14px !important; +} +#desktop-modal .desktop-icon .icon-title { + width: 100% !important; + max-width: 100% !important; + display: -webkit-box !important; + -webkit-line-clamp: 2; + line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden !important; + text-overflow: ellipsis !important; + overflow-wrap: anywhere !important; + word-break: break-word !important; + line-height: 1.25 !important; + white-space: normal !important; +} +#desktop-modal .modal-header.desktop-modal-heading { + background: transparent !important; + border-bottom: 0 !important; + box-shadow: none !important; +} +#desktop-modal .modal-header.desktop-modal-heading .modal-title, +#desktop-modal .modal-header.desktop-modal-heading .title-input-label span { + background: transparent !important; + box-shadow: none !important; + text-shadow: none !important; +} +#desktop-modal .icon-title, +#desktop-modal .icon-caption { + text-shadow: none !important; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +#desktop-modal .modal-body.desktop-modal-body { + overflow: visible !important; + max-height: none !important; +} +#desktop-modal .icons-container { + overflow: visible !important; + max-height: none !important; +} +.ico-framework { + animation: ico-float 5s ease-in-out infinite; + transform-origin: center; +} +@keyframes ico-float { + 0%, 100% { + transform: translateY(0) rotate(0deg); + opacity: 0.85; + } + 30% { + transform: translateY(-2px) rotate(0.8deg); + opacity: 1; + } + 70% { + transform: translateY(0.5px) rotate(-0.4deg); + opacity: 0.9; + } +} +.ico-org { + animation: ico-org 6s ease-in-out infinite; + transform-origin: center bottom; +} +@keyframes ico-org { + 0%, 100% { + transform: scaleY(1) scaleX(1); + } + 25% { + transform: scaleY(1.03) scaleX(0.99); + } + 50% { + transform: scaleY(1.05) scaleX(0.98); + } + 75% { + transform: scaleY(1.02) scaleX(1); + } +} +.ico-acc .acc-btn { + animation: ico-press 3s ease-in-out infinite; +} +@keyframes ico-press { + 0%, 25%, 100% { + opacity: 0.5; + stroke-width: 2.5; + } + 12% { + opacity: 1; + stroke-width: 3.2; + } +} +.ico-assets { + animation: ico-safe 6s ease-in-out infinite; + transform-origin: center; +} +.ico-assets .lock-dot { + animation: ico-blink 5s ease-in-out infinite; +} +@keyframes ico-safe { + 0%, 100% { + transform: translateY(0); + } + 40% { + transform: translateY(-0.6px); + } + 60% { + transform: translateY(0.3px); + } +} +@keyframes ico-blink { + 0%, 35%, 65%, 100% { + opacity: 1; + } + 50% { + opacity: 0.15; + } +} +.ico-buying { + animation: ico-cart 6s ease-in-out infinite; + transform-origin: 12px 21px; +} +@keyframes ico-cart { + 0%, 100% { + transform: translateX(0) rotate(0deg); + } + 20% { + transform: translateX(1.5px) rotate(0.8deg); + } + 50% { + transform: translateX(-0.5px) rotate(-0.3deg); + } + 80% { + transform: translateX(0.8px) rotate(0.4deg); + } +} +.ico-mfg .gear1 { + animation: ico-spin 9s linear infinite; + transform-origin: 9px 12px; +} +.ico-mfg .gear2 { + animation: ico-spin-r 7s linear infinite; + transform-origin: 17px 8px; +} +@keyframes ico-spin { + to { + transform: rotate(360deg); + } +} +@keyframes ico-spin-r { + to { + transform: rotate(-360deg); + } +} +.ico-proj .col1 { + animation: ico-g1 5s ease-in-out infinite; + transform-origin: 5.5px 21px; +} +.ico-proj .col2 { + animation: ico-g2 5s ease-in-out infinite 0.5s; + transform-origin: 12.5px 15px; +} +.ico-proj .col3 { + animation: ico-g3 5s ease-in-out infinite 1s; + transform-origin: 19.5px 18px; +} +@keyframes ico-g1 { + 0%, 100% { + transform: scaleY(1); + opacity: 0.75; + } + 50% { + transform: scaleY(0.85); + opacity: 1; + } +} +@keyframes ico-g2 { + 0%, 100% { + transform: scaleY(1); + opacity: 0.75; + } + 50% { + transform: scaleY(1.15); + opacity: 1; + } +} +@keyframes ico-g3 { + 0%, 100% { + transform: scaleY(1); + opacity: 0.75; + } + 50% { + transform: scaleY(0.88); + opacity: 1; + } +} +.ico-quality { + animation: ico-shield 6s ease-in-out infinite; + transform-origin: 12px 14px; +} +@keyframes ico-shield { + 0%, 100% { + transform: rotate(0deg) scale(1); + } + 15% { + transform: rotate(1.5deg) scale(1.03); + } + 35% { + transform: rotate(-0.5deg) scale(1.01); + } + 55% { + transform: rotate(-1.5deg) scale(1.03); + } + 75% { + transform: rotate(0.5deg) scale(1.01); + } +} +.ico-selling { + animation: ico-sell 4s ease-in-out infinite; + transform-origin: center; +} +.ico-selling .arrow-head { + animation: ico-up 4s ease-in-out infinite; +} +@keyframes ico-sell { + 0%, 100% { + opacity: 0.8; + } + 50% { + opacity: 1; + } +} +@keyframes ico-up { + 0%, 100% { + transform: translate(0, 0); + } + 30% { + transform: translate(1px, -1.5px); + } + 60% { + transform: translate(2px, -2.5px); + } +} +.ico-stock { + animation: ico-bob 5s ease-in-out infinite; + transform-origin: center; +} +@keyframes ico-bob { + 0%, 100% { + transform: rotate(0deg) translateY(0); + } + 20% { + transform: rotate(2deg) translateY(-0.7px); + } + 50% { + transform: rotate(-1deg) translateY(0.3px); + } + 80% { + transform: rotate(1.5deg) translateY(-0.4px); + } +} +.ico-sub .person-l { + animation: ico-rl 6s ease-in-out infinite; + transform-origin: 8px 12px; +} +.ico-sub .person-r { + animation: ico-rr 6s ease-in-out infinite; + transform-origin: 16px 12px; +} +@keyframes ico-rl { + 0%, 100% { + transform: translateX(0) rotate(0deg); + } + 30% { + transform: translateX(1px) rotate(1deg); + } + 60% { + transform: translateX(1.5px) rotate(0.5deg); + } +} +@keyframes ico-rr { + 0%, 100% { + transform: translateX(0) rotate(0deg); + } + 30% { + transform: translateX(-1px) rotate(-1deg); + } + 60% { + transform: translateX(-1.5px) rotate(-0.5deg); + } +} +.ico-settings { + animation: ico-gear-main 12s linear infinite; + transform-origin: center; +} +@keyframes ico-gear-main { + to { + transform: rotate(360deg); + } +} +.ico-hr .plus-v { + animation: ico-pv 4s ease-in-out infinite; + transform-origin: center; +} +.ico-hr .plus-h { + animation: ico-ph 4s ease-in-out infinite 0.3s; + transform-origin: center; +} +@keyframes ico-pv { + 0%, 100% { + opacity: 0.4; + stroke-width: 1.8; + } + 50% { + opacity: 1; + stroke-width: 2.4; + } +} +@keyframes ico-ph { + 0%, 100% { + opacity: 0.4; + stroke-width: 1.8; + } + 50% { + opacity: 1; + stroke-width: 2.4; + } +} +.jey-theme-grid { + display: flex; + gap: 20px; + padding: 20px; + justify-content: center; +} +.jey-theme-card { + cursor: pointer; + text-align: center; + padding: 16px; + border-radius: 12px; + border: 2px solid transparent; + transition: border-color 0.2s, background 0.2s; + min-width: 140px; +} +.jey-theme-card:hover { + background: var(--subtle-fg, #f5f5f5); +} +.jey-theme-card.selected { + border-color: var(--primary, #2490ef); + background: var(--subtle-fg, #f5f5f5); +} +.jey-theme-preview { + width: 72px; + height: 72px; + border-radius: 50%; + margin: 0 auto 12px; + position: relative; + overflow: hidden; +} +.jey-theme-preview--chrome { + background: conic-gradient(from 140deg, #a0a0a0 0deg, #f2f2f2 40deg, #777 80deg, #e5e5e5 120deg, #959595 170deg, #ededed 210deg, #808080 260deg, #d8d8d8 310deg, #a0a0a0 360deg); + box-shadow: 0 3px 8px rgba(0, 0, 0, 0.15), inset 0 1px 1px rgba(255, 255, 255, 0.5); +} +.jey-theme-preview--chrome .jey-theme-preview-icon { + position: absolute; + inset: 9px; + border-radius: 50%; + background: linear-gradient(168deg, #f4f4f4 0%, #e0e0e0 45%, #d4d4d4 100%); +} +.jey-theme-preview--modern { + border-radius: 16px; + background: rgba(255, 255, 255, 0.4); + -webkit-backdrop-filter: blur(6px); + backdrop-filter: blur(6px); + border: 1px solid rgba(255, 255, 255, 0.5); + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06); +} +.jey-theme-preview--modern .jey-theme-preview-icon { + position: absolute; + inset: 22px; + border-radius: 6px; + background: #4f46e5; + opacity: 0.25; +} +.jey-theme-label { + font-weight: 600; + font-size: var(--text-base); + margin-bottom: 2px; +} +.jey-theme-info { + font-size: var(--text-sm); + color: var(--text-muted); +} +.ce-block .links-widget-box, +.ce-block .number-widget-box { + opacity: 0; + transform: translateY(24px) scale(0.97); + animation: jey-card-in 0.7s cubic-bezier(0.22, 1, 0.36, 1) forwards; + border-radius: var(--border-radius-lg, 12px); + transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1), box-shadow 0.35s ease; + position: relative; +} +@keyframes jey-number-in { + from { + opacity: 0; + transform: translateY(6px); + } + to { + opacity: 1; + transform: translateY(0); + } +} +.number-widget-box .widget-content .number { + animation: jey-number-in 0.5s cubic-bezier(0.22, 1, 0.36, 1) 0.3s both; +} +.ce-block .links-widget-box .widget-control .dropdown-menu, +.ce-block .number-widget-box .widget-control .dropdown-menu { + z-index: 1050; +} +.ce-block:nth-child(1) .links-widget-box, +.ce-block:nth-child(1) .number-widget-box { + animation-delay: 0.00s; +} +.ce-block:nth-child(2) .links-widget-box, +.ce-block:nth-child(2) .number-widget-box { + animation-delay: 0.06s; +} +.ce-block:nth-child(3) .links-widget-box, +.ce-block:nth-child(3) .number-widget-box { + animation-delay: 0.12s; +} +.ce-block:nth-child(4) .links-widget-box, +.ce-block:nth-child(4) .number-widget-box { + animation-delay: 0.18s; +} +.ce-block:nth-child(5) .links-widget-box, +.ce-block:nth-child(5) .number-widget-box { + animation-delay: 0.24s; +} +.ce-block:nth-child(6) .links-widget-box, +.ce-block:nth-child(6) .number-widget-box { + animation-delay: 0.30s; +} +.ce-block:nth-child(7) .links-widget-box, +.ce-block:nth-child(7) .number-widget-box { + animation-delay: 0.36s; +} +.ce-block:nth-child(8) .links-widget-box, +.ce-block:nth-child(8) .number-widget-box { + animation-delay: 0.42s; +} +.ce-block:nth-child(9) .links-widget-box, +.ce-block:nth-child(9) .number-widget-box { + animation-delay: 0.48s; +} +.ce-block:nth-child(10) .links-widget-box, +.ce-block:nth-child(10) .number-widget-box { + animation-delay: 0.54s; +} +.ce-block:nth-child(11) .links-widget-box, +.ce-block:nth-child(11) .number-widget-box { + animation-delay: 0.60s; +} +.ce-block:nth-child(12) .links-widget-box, +.ce-block:nth-child(12) .number-widget-box { + animation-delay: 0.66s; +} +@keyframes jey-card-in { + from { + opacity: 0; + transform: translateY(24px) scale(0.97); + } + to { + opacity: 1; + transform: none; + } +} +.ce-block .links-widget-box::after, +.ce-block .number-widget-box::after { + content: ""; + position: absolute; + bottom: 0; + left: 10%; + right: 10%; + height: 2.5px; + border-radius: 2px 2px 0 0; + background: var(--primary, #2490ef); + transform: scaleX(0); + transition: transform 0.35s cubic-bezier(0.22, 1, 0.36, 1); + transform-origin: center; +} +.ce-block .links-widget-box:hover::after, +.ce-block .number-widget-box:hover::after { + transform: scaleX(1); +} +.ce-block .links-widget-box:hover, +.ce-block .number-widget-box:hover { + transform: translateY(-3px); + box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08), 0 2px 6px rgba(0, 0, 0, 0.04); +} +.ce-block .links-widget-box:hover, +.ce-block .number-widget-box:hover, +.ce-block .links-widget-box:focus-within, +.ce-block .number-widget-box:focus-within { + z-index: 100; +} +.ce-block .links-widget-box:has(.dropdown-menu.show), +.ce-block .number-widget-box:has(.dropdown-menu.show) { + z-index: 200; +} +.links-widget-box .link-item { + position: relative; + transition: background 0.25s ease, transform 0.25s ease; + border-radius: var(--border-radius, 8px); + overflow: hidden; +} +.links-widget-box .link-item:hover { + transform: translateX(6px); + background: var(--subtle-fg, rgba(0, 0, 0, 0.02)); +} +.links-widget-box .link-item .es-icon { + display: none !important; +} +.select-icon svg { + display: none !important; +} +.select-icon { + top: 0 !important; + bottom: 0 !important; + display: flex !important; + align-items: center !important; +} +.select-icon::after { + content: "" !important; + display: block; + width: 12px; + height: 12px; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23636e72' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); + background-size: contain; + background-repeat: no-repeat; + background-position: center; +} +.msg-box .icon-xl { + display: none !important; +} +.msg-box .mb-4 { + display: flex; + justify-content: center; +} +.msg-box .mb-4::after { + content: "" !important; + display: block; + width: 48px; + height: 48px; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23b0b8c0' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='22 12 16 12 14 15 10 15 8 12 2 12'/%3E%3Cpath d='M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z'/%3E%3C/svg%3E"); + background-size: contain; + background-repeat: no-repeat; + background-position: center; +} +.user-onboarding { + display: none !important; +} +.comment-count svg { + fill: none !important; + stroke: currentColor !important; + stroke-width: 1.5 !important; + stroke-linecap: round; + stroke-linejoin: round; +} +.new-timeline .activity-title, +.new-timeline .timeline-actions, +.comment-box, +.comment-input-wrapper, +.comment-input-wrapper .ql-container, +.comment-input-wrapper .frappe-control .ql-editor { + background: transparent !important; + border-color: transparent !important; + box-shadow: none !important; +} +.standard-filter-section .frappe-control.jey-period-filter { + flex: 0 0 auto; + min-width: 200px; +} +.standard-filter-section .frappe-control.jey-period-filter input { + min-width: 200px; +} +.control-input.fields_order { + height: auto !important; + min-height: 32px; + display: flex; + align-items: center; +} +.control-input.fields_order > .row { + width: 100%; + align-items: center; + margin: 0; +} +.control-input.fields_order > .row > [class*=col-] { + padding-top: 0 !important; + margin-top: 0 !important; +} +@keyframes jey-chrome-rotate-glow { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} +@keyframes jey-chrome-face-light { + 0% { + background: radial-gradient(circle at 25% 20%, rgba(255, 255, 255, 0.5) 0%, transparent 55%); + } + 25% { + background: radial-gradient(circle at 75% 25%, rgba(255, 255, 255, 0.5) 0%, transparent 55%); + } + 50% { + background: radial-gradient(circle at 70% 75%, rgba(255, 255, 255, 0.35) 0%, transparent 55%); + } + 75% { + background: radial-gradient(circle at 25% 70%, rgba(255, 255, 255, 0.35) 0%, transparent 55%); + } + 100% { + background: radial-gradient(circle at 25% 20%, rgba(255, 255, 255, 0.5) 0%, transparent 55%); + } +} +@keyframes jey-chrome-refl-drift { + 0%, 100% { + top: 12%; + opacity: 0.7; + } + 50% { + top: 18%; + opacity: 0.5; + } +} +[data-jey-theme=chrome] .jey-chrome { + width: 72px; + height: 72px; + border-radius: 50%; + position: relative; + background: radial-gradient(ellipse at 35% 20%, rgba(255, 255, 255, 0.7) 0%, transparent 55%), linear-gradient(180deg, #e0e0e0 0%, #b8b8b8 100%); + box-shadow: + 0 4px 10px rgba(0, 0, 0, 0.18), + 0 1px 3px rgba(0, 0, 0, 0.1), + inset 0 1px 1px rgba(255, 255, 255, 0.7); + transition: box-shadow 0.3s ease; +} +[data-jey-theme=chrome] .desktop-icon:hover .jey-chrome { + box-shadow: + 0 6px 16px rgba(0, 0, 0, 0.22), + 0 1px 3px rgba(0, 0, 0, 0.12), + 0 0 14px rgba(255, 255, 255, 0.2), + inset 0 1px 1px rgba(255, 255, 255, 0.7); +} +[data-jey-theme=chrome] .jey-chrome-ring { + position: absolute; + inset: 2px; + border-radius: 50%; + background: conic-gradient(from 140deg, #a0a0a0 0deg, #f2f2f2 40deg, #777 80deg, #e5e5e5 120deg, #959595 170deg, #ededed 210deg, #808080 260deg, #d8d8d8 310deg, #a0a0a0 360deg); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.2); + overflow: hidden; +} +[data-jey-theme=chrome] .jey-ring-glow { + position: absolute; + inset: -10px; + border-radius: 50%; + background: conic-gradient(from 0deg, transparent 0deg, transparent 140deg, rgba(255, 255, 255, 0.55) 165deg, rgba(255, 255, 255, 0.8) 180deg, rgba(255, 255, 255, 0.55) 195deg, transparent 220deg, transparent 360deg); + animation: jey-chrome-rotate-glow 8s linear infinite; + pointer-events: none; +} +[data-jey-theme=chrome] .jey-chrome-gap { + position: absolute; + inset: 5px; + border-radius: 50%; + background: linear-gradient(180deg, #888 0%, #aaa 50%, #999 100%); + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.35), inset 0 -1px 1px rgba(255, 255, 255, 0.2); +} +[data-jey-theme=chrome] .jey-chrome-ring-inner { + position: absolute; + inset: 6px; + border-radius: 50%; + background: conic-gradient(from 200deg, #b0b0b0 0deg, #eee 30deg, #999 70deg, #ddd 110deg, #aaa 160deg, #f0f0f0 200deg, #909090 250deg, #ccc 300deg, #b0b0b0 360deg); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.15); +} +[data-jey-theme=chrome] .jey-chrome-face { + position: absolute; + inset: 9px; + border-radius: 50%; + overflow: hidden; + background: linear-gradient(168deg, #f4f4f4 0%, #e0e0e0 45%, #d4d4d4 100%); + box-shadow: inset 0 3px 7px rgba(255, 255, 255, 0.7), inset 0 -3px 6px rgba(0, 0, 0, 0.06); + display: flex; + align-items: center; + justify-content: center; +} +[data-jey-theme=chrome] .jey-face-glow { + position: absolute; + inset: 0; + border-radius: 50%; + animation: jey-chrome-face-light 8s ease-in-out infinite; + pointer-events: none; + z-index: 1; +} +[data-jey-theme=chrome] .jey-face-reflection { + position: absolute; + top: 15%; + left: 10%; + width: 80%; + height: 30%; + background: linear-gradient(180deg, rgba(255, 255, 255, 0.6) 0%, rgba(255, 255, 255, 0.15) 60%, transparent 100%); + border-radius: 50%; + pointer-events: none; + z-index: 1; + animation: jey-chrome-refl-drift 10s ease-in-out infinite; +} +[data-jey-theme=chrome] .jey-chrome-face .jey-icon { + width: 24px !important; + height: 24px !important; + stroke: #505050 !important; + fill: none !important; + stroke-width: 1.8 !important; + stroke-linecap: round !important; + stroke-linejoin: round !important; + filter: drop-shadow(0 1px 0 rgba(255, 255, 255, 0.5)) !important; + position: relative; + z-index: 2; +} +@keyframes jey-chrome-shine { + 0% { + transform: translateX(-100%) skewX(-15deg); + } + 100% { + transform: translateX(200%) skewX(-15deg); + } +} +[data-jey-theme=chrome] { + --bg-color: #d8d8d8; + --fg-color: #e8e8e8; + --card-bg: #e0e0e0; + --subtle-accent: #d4d4d4; + --subtle-fg: #d0d0d0; + --fg-hover-color: #ccc; + --highlight-color: #d4d4d4; + --navbar-bg: #d0d0d0; + --modal-bg: #ddd; + --toast-bg: #ddd; + --popover-bg: #e0e0e0; + --control-bg: #d5d5d5; + --control-bg-on-gray: #ccc; + --awesomebar-focus-bg: #e8e8e8; + --disabled-control-bg: #d0d0d0; + --skeleton-bg: #c8c8c8; + --surface-menu-bar: #d4d4d4; + --surface-white: #e0e0e0; + --surface-gray-1: #d8d8d8; + --surface-gray-2: #d0d0d0; + --surface-gray-3: #c8c8c8; + --surface-gray-4: #bbb; + --surface-modal: #ddd; + --placeholder-color: #ccc; + --sidebar-hover-color: #c8c8c8; + --sidebar-active-color: #d8d8d8; + --sidebar-border-color: #aaa; + --divider-color: #b0b0b0; + --heading-color: #333; + --text-color: #404040; + --text-neutral: #333; + --text-muted: #666; + --text-light: #888; + --text-dark: #f0f0f0; + --disabled-text-color: #888; + --ink-gray-7: #555; + --ink-gray-8: #404040; + --ink-gray-9: #333; + --border-color: #aaa; + --dark-border-color: #999; + --table-border-color: #aaa; + --btn-group-border-color: #999; + --outline-gray-1: #b0b0b0; + --outline-gray-2: #999; + --outline-gray-modals: #aaa; + --primary: #555; + --brand-color: #555; + --btn-primary: #777; + --btn-default-bg: #ccc; + --btn-default-hover-bg: #bbb; + --btn-ghost-hover-bg: #c0c0c0; + --border-primary: #777; + --shadow-xs: 1px 1px 2px rgba(0,0,0,0.15), -1px -1px 1px rgba(255,255,255,0.5); + --shadow-sm: 1px 1px 3px rgba(0,0,0,0.18), -1px -1px 2px rgba(255,255,255,0.45); + --shadow-base: 2px 2px 4px rgba(0,0,0,0.15), -1px -1px 2px rgba(255,255,255,0.4); + --shadow-md: 2px 2px 6px rgba(0,0,0,0.18), -1px -1px 3px rgba(255,255,255,0.35); + --shadow-lg: 3px 3px 10px rgba(0,0,0,0.15), -2px -2px 5px rgba(255,255,255,0.3); + --shadow-xl: 4px 4px 16px rgba(0,0,0,0.18), -2px -2px 6px rgba(255,255,255,0.25); + --shadow-2xl: 6px 6px 24px rgba(0,0,0,0.2), -3px -3px 8px rgba(255,255,255,0.2); + --shadow-inset: inset 0px -1px 0px #999; + --btn-shadow: 1px 1px 2px rgba(0,0,0,0.15), -1px -1px 1px rgba(255,255,255,0.4); + --card-shadow: 2px 2px 6px rgba(0,0,0,0.12), -1px -1px 3px rgba(255,255,255,0.4); + --modal-shadow: 6px 6px 30px rgba(0,0,0,0.3), -3px -3px 10px rgba(255,255,255,0.15); + --awesomebar-shadow: 3px 3px 12px rgba(0,0,0,0.15), -2px -2px 6px rgba(255,255,255,0.3); + --focus-default: 0 0 0 2px rgba(150,150,150,0.5); + --scrollbar-thumb-color: #999; + --scrollbar-track-color: #c8c8c8; + --switch-bg: #aaa; + --checkbox-color: #555; + --checkbox-gradient: linear-gradient(180deg, #777 0%, #666 100%); + --timeline-badge-color: #555; + --timeline-badge-bg: #ccc; + --date-active-bg: #777; + --date-active-text: #f0f0f0; + --date-range-bg: #ccc; + --progress-bar-bg: #777; + --code-block-bg: #444; + --code-block-text: #ccc; +} +[data-jey-theme=chrome] body { + background: + radial-gradient(ellipse at 25% 15%, rgba(255, 255, 255, 0.45) 0%, transparent 50%), + radial-gradient(ellipse at 80% 80%, rgba(255, 255, 255, 0.2) 0%, transparent 45%), + radial-gradient(ellipse at 50% 50%, rgba(0, 0, 0, 0.03) 0%, transparent 70%), + linear-gradient(168deg, #d8d8d8 0%, #c4c4c4 40%, #b8b8b8 70%, #c8c8c8 100%) !important; + background-attachment: fixed !important; +} +[data-jey-theme=chrome] .page-container { + background: transparent !important; +} +[data-jey-theme=chrome] .navbar { + background: linear-gradient(45deg, #aaa 2%, #ddd 8%, #bbb 18%, #e8e8e8 30%, #ccc 45%, #eee 55%, #bbb 68%, #ddd 80%, #aaa 95%) !important; + border-bottom: 1px solid #888 !important; + box-shadow: + inset 0 1px 0 rgba(255, 255, 255, 0.7), + inset 0 -1px 0 rgba(0, 0, 0, 0.08), + 0 2px 4px rgba(0, 0, 0, 0.15) !important; +} +[data-jey-theme=chrome] .navbar .navbar-nav .nav-link { + color: #444 !important; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} +[data-jey-theme=chrome] .navbar .navbar-nav .nav-link:hover { + color: #222 !important; + background: linear-gradient(180deg, rgba(255, 255, 255, 0.35) 0%, rgba(255, 255, 255, 0.1) 100%) !important; + border-radius: 6px; +} +[data-jey-theme=chrome] .search-bar input { + background: linear-gradient(180deg, #c0c0c0 0%, #d0d0d0 100%) !important; + border: 1px solid #999 !important; + box-shadow: + inset 0 2px 4px rgba(0, 0, 0, 0.15), + inset 0 0 0 1px rgba(0, 0, 0, 0.05), + 0 1px 0 rgba(255, 255, 255, 0.5) !important; + color: #333 !important; + border-radius: 6px !important; +} +[data-jey-theme=chrome] .search-bar input:focus { + background: linear-gradient(180deg, #d5d5d5 0%, #e0e0e0 100%) !important; + border-color: #888 !important; + box-shadow: + inset 0 1px 3px rgba(0, 0, 0, 0.1), + 0 0 0 2px rgba(150, 150, 150, 0.3), + 0 1px 0 rgba(255, 255, 255, 0.4) !important; +} +[data-jey-theme=chrome] .search-bar .search-icon { + color: #777 !important; +} +[data-jey-theme=chrome] .body-sidebar-container { + background: linear-gradient(160deg, #b8b8b8 0%, #f0f0f0 12%, #c0c0c0 28%, #f4f4f4 42%, #b8b8b8 58%, #ededed 72%, #aaa 88%, #ddd 100%) !important; + border-right: 1px solid #888 !important; + box-shadow: + inset -1px 0 0 rgba(255, 255, 255, 0.6), + inset 0 1px 0 rgba(255, 255, 255, 0.7), + inset 0 -1px 0 rgba(0, 0, 0, 0.1), + 2px 0 8px rgba(0, 0, 0, 0.12) !important; +} +[data-jey-theme=chrome] .body-sidebar-container .body-sidebar, +[data-jey-theme=chrome] .body-sidebar-container .body-sidebar-top, +[data-jey-theme=chrome] .body-sidebar-container .body-sidebar-bottom, +[data-jey-theme=chrome] .body-sidebar-container .body-sidebar-cards { + background: transparent !important; +} +[data-jey-theme=chrome] .body-sidebar .standard-sidebar-item .item-anchor:hover { + background: linear-gradient(90deg, rgba(255, 255, 255, 0.25) 0%, rgba(255, 255, 255, 0.05) 100%) !important; +} +[data-jey-theme=chrome] .body-sidebar .standard-sidebar-item.active-sidebar .item-anchor { + background: linear-gradient(45deg, #bbb 5%, #ddd 30%, #ccc 60%, #ddd 90%) !important; + box-shadow: + inset 0 1px 0 rgba(255, 255, 255, 0.6), + inset 0 -1px 0 rgba(0, 0, 0, 0.08), + 1px 1px 2px rgba(0, 0, 0, 0.1), + -1px -1px 1px rgba(255, 255, 255, 0.3) !important; + border-radius: 8px; +} +[data-jey-theme=chrome] .body-sidebar .sidebar-item-icon { + color: #666 !important; + filter: drop-shadow(0 1px 0 rgba(255, 255, 255, 0.5)); +} +[data-jey-theme=chrome] .frappe-menu .menu-item-icon .jey-icon { + width: 20px !important; + height: 20px !important; + stroke: #555 !important; + fill: none !important; + stroke-width: 1.8 !important; + stroke-linecap: round !important; + stroke-linejoin: round !important; + filter: drop-shadow(0 1px 0 rgba(255, 255, 255, 0.4)) !important; +} +[data-jey-theme=chrome] .sidebar-header .header-logo .jey-icon { + width: 22px !important; + height: 22px !important; + stroke: #555 !important; + fill: none !important; + stroke-width: 1.8 !important; + stroke-linecap: round !important; + stroke-linejoin: round !important; + filter: drop-shadow(0 1px 0 rgba(255, 255, 255, 0.4)) !important; +} +[data-jey-theme=chrome] .btn-primary { + background: linear-gradient(45deg, #666 5%, #aaa 10%, #888 30%, #999 50%, #888 70%, #aaa 85%, #666 95%) !important; + color: #f0f0f0 !important; + border: 1px solid #555 !important; + box-shadow: + 2px 2px 4px rgba(0, 0, 0, 0.2), + -1px -1px 2px rgba(255, 255, 255, 0.15), + inset 0 1px 0 rgba(255, 255, 255, 0.3), + inset 0 -1px 0 rgba(0, 0, 0, 0.15), + inset 2px 2px 5px rgba(0, 0, 0, 0), + inset -1px -1px 2px rgba(255, 255, 255, 0) !important; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + position: relative; + overflow: hidden; + transition: box-shadow 0.25s cubic-bezier(0.22, 1, 0.36, 1), border-color 0.25s cubic-bezier(0.22, 1, 0.36, 1) !important; +} +[data-jey-theme=chrome] .btn-primary::before { + content: ""; + position: absolute; + top: 0; + left: -50%; + width: 30%; + height: 100%; + background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.25), transparent); + transform: skewX(-15deg); + transition: left 0.4s ease; + pointer-events: none; +} +[data-jey-theme=chrome] .btn-primary:hover::before { + left: 120%; +} +[data-jey-theme=chrome] .btn-primary:hover { + background: linear-gradient(45deg, #777 5%, #bbb 10%, #999 30%, #aaa 50%, #999 70%, #bbb 85%, #777 95%) !important; + box-shadow: + 2px 2px 6px rgba(0, 0, 0, 0.25), + -1px -1px 3px rgba(255, 255, 255, 0.2), + inset 0 1px 0 rgba(255, 255, 255, 0.35), + inset 0 -1px 0 rgba(0, 0, 0, 0.15), + inset 2px 2px 5px rgba(0, 0, 0, 0), + inset -1px -1px 2px rgba(255, 255, 255, 0) !important; +} +[data-jey-theme=chrome] .btn-primary:active { + background: linear-gradient(45deg, #555 5%, #888 10%, #777 30%, #888 50%, #777 70%, #888 85%, #555 95%) !important; + box-shadow: + 2px 2px 4px rgba(0, 0, 0, 0), + -1px -1px 2px rgba(255, 255, 255, 0), + inset 0 1px 0 rgba(255, 255, 255, 0), + inset 0 -1px 0 rgba(0, 0, 0, 0.05), + inset 3px 3px 7px rgba(0, 0, 0, 0.35), + inset -1px -1px 2px rgba(255, 255, 255, 0.12) !important; + transition: box-shadow 0.08s ease-out !important; +} +[data-jey-theme=chrome] .btn-default, +[data-jey-theme=chrome] .btn-secondary { + background: linear-gradient(45deg, #bbb 5%, #eee 10%, #ccc 30%, #e0e0e0 50%, #ccc 70%, #eee 85%, #bbb 95%) !important; + border: 1px solid #999 !important; + color: #444 !important; + box-shadow: + 1px 1px 3px rgba(0, 0, 0, 0.12), + -1px -1px 2px rgba(255, 255, 255, 0.4), + inset 0 1px 0 rgba(255, 255, 255, 0.6), + inset 0 -1px 0 rgba(0, 0, 0, 0.06), + inset 2px 2px 4px rgba(0, 0, 0, 0), + inset -1px -1px 1px rgba(255, 255, 255, 0) !important; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + transition: box-shadow 0.25s cubic-bezier(0.22, 1, 0.36, 1), border-color 0.25s cubic-bezier(0.22, 1, 0.36, 1) !important; +} +[data-jey-theme=chrome] .btn-default:hover, +[data-jey-theme=chrome] .btn-secondary:hover { + background: linear-gradient(45deg, #c0c0c0 5%, #f2f2f2 10%, #d4d4d4 30%, #e8e8e8 50%, #d4d4d4 70%, #f2f2f2 85%, #c0c0c0 95%) !important; + border-color: #888 !important; + box-shadow: + 2px 2px 4px rgba(0, 0, 0, 0.15), + -1px -1px 2px rgba(255, 255, 255, 0.4), + inset 0 1px 0 rgba(255, 255, 255, 0.7), + inset 0 -1px 0 rgba(0, 0, 0, 0.06), + inset 2px 2px 4px rgba(0, 0, 0, 0), + inset -1px -1px 1px rgba(255, 255, 255, 0) !important; +} +[data-jey-theme=chrome] .btn-default:active, +[data-jey-theme=chrome] .btn-secondary:active { + background: linear-gradient(45deg, #aaa 5%, #d8d8d8 10%, #bbb 30%, #ccc 50%, #bbb 70%, #d8d8d8 85%, #aaa 95%) !important; + box-shadow: + 1px 1px 3px rgba(0, 0, 0, 0), + -1px -1px 2px rgba(255, 255, 255, 0), + inset 0 1px 0 rgba(255, 255, 255, 0), + inset 0 -1px 0 rgba(0, 0, 0, 0.05), + inset 3px 3px 6px rgba(0, 0, 0, 0.3), + inset -1px -1px 1px rgba(255, 255, 255, 0.15) !important; + transition: box-shadow 0.08s ease-out !important; +} +[data-jey-theme=chrome] .btn-danger { + background: linear-gradient(45deg, #b33 5%, #e88 10%, #c55 30%, #d77 50%, #c55 70%, #e88 85%, #b33 95%) !important; + color: #fff !important; + border: 1px solid #944 !important; + box-shadow: + 2px 2px 4px rgba(0, 0, 0, 0.2), + -1px -1px 2px rgba(255, 255, 255, 0.1), + inset 0 1px 0 rgba(255, 255, 255, 0.25) !important; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); +} +[data-jey-theme=chrome] .btn-danger:hover { + background: linear-gradient(45deg, #c44 5%, #f99 10%, #d66 30%, #e88 50%, #d66 70%, #f99 85%, #c44 95%) !important; +} +[data-jey-theme=chrome] .btn-ghost:hover { + background: linear-gradient(180deg, rgba(255, 255, 255, 0.2) 0%, rgba(255, 255, 255, 0.05) 100%) !important; +} +[data-jey-theme=chrome] input.form-control:not([type="checkbox"]):not([type="radio"]), +[data-jey-theme=chrome] textarea.form-control { + background: #d0d0d0 !important; + border: 1px solid #999 !important; + color: #333 !important; + box-shadow: + inset 1px 1px 2px rgba(0, 0, 0, 0.10), + inset -1px -1px 1px rgba(255, 255, 255, 0.25), + inset 0 1px 1px rgba(0, 0, 0, 0.04) !important; + transition: + background-color 0.45s cubic-bezier(0.22, 1, 0.36, 1), + border-color 0.45s cubic-bezier(0.22, 1, 0.36, 1), + box-shadow 0.45s cubic-bezier(0.22, 1, 0.36, 1) !important; +} +[data-jey-theme=chrome] input.form-control:not([type="checkbox"]):not([type="radio"]):focus, +[data-jey-theme=chrome] textarea.form-control:focus { + background: #cbcbcb !important; + border-color: #777 !important; + box-shadow: + inset 4px 4px 8px rgba(0, 0, 0, 0.28), + inset -1px -1px 1px rgba(255, 255, 255, 0.15), + inset 0 3px 5px rgba(0, 0, 0, 0.18) !important; +} +[data-jey-theme=chrome] .form-control:disabled, +[data-jey-theme=chrome] .form-control[disabled] { + background: #d8d8d8 !important; + color: #888 !important; + box-shadow: inset 1px 1px 2px rgba(0, 0, 0, 0.06) !important; +} +[data-jey-theme=chrome] .frappe-control .control-label, +[data-jey-theme=chrome] .frappe-control label { + color: #444 !important; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} +[data-jey-theme=chrome] select.form-control, +[data-jey-theme=chrome] select.input-with-feedback { + background: #d0d0d0 !important; +} +[data-jey-theme=chrome] .form-page { + background: linear-gradient(45deg, #ccc 3%, #e8e8e8 10%, #d5d5d5 25%, #eee 45%, #d8d8d8 60%, #e8e8e8 80%, #ccc 97%) !important; + border: 1px solid #aaa !important; + box-shadow: + 3px 3px 8px rgba(0, 0, 0, 0.12), + -2px -2px 4px rgba(255, 255, 255, 0.4), + inset 0 1px 0 rgba(255, 255, 255, 0.7), + inset 0 -1px 0 rgba(0, 0, 0, 0.05) !important; + border-radius: var(--border-radius-lg) !important; +} +[data-jey-theme=chrome] .form-section .section-head { + color: #444 !important; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + border-bottom: 1px solid #b0b0b0 !important; + position: relative; +} +[data-jey-theme=chrome] .frappe-card { + background: linear-gradient(45deg, #c8c8c8 3%, #e5e5e5 12%, #d4d4d4 30%, #eaeaea 50%, #d4d4d4 70%, #e5e5e5 88%, #c8c8c8 97%) !important; + border: 1px solid #aaa !important; + box-shadow: + 2px 2px 6px rgba(0, 0, 0, 0.1), + -1px -1px 3px rgba(255, 255, 255, 0.4), + inset 0 1px 0 rgba(255, 255, 255, 0.6) !important; +} +[data-jey-theme=chrome] .form-sidebar { + border-left: 1px solid #aaa !important; +} +[data-jey-theme=chrome] .form-sidebar .sidebar-section { + border-bottom: 1px solid #b0b0b0 !important; +} +[data-jey-theme=chrome] .modal-content { + background: linear-gradient(45deg, #ccc 3%, #e8e8e8 12%, #d5d5d5 30%, #eee 50%, #d5d5d5 70%, #e8e8e8 88%, #ccc 97%) !important; + border: 1px solid #999 !important; + box-shadow: + 6px 6px 24px rgba(0, 0, 0, 0.25), + -3px -3px 8px rgba(255, 255, 255, 0.15), + inset 0 1px 0 rgba(255, 255, 255, 0.6), + inset 0 0 0 1px rgba(255, 255, 255, 0.35) !important; +} +[data-jey-theme=chrome] .modal-header { + background: linear-gradient(45deg, #b0b0b0 5%, #ddd 12%, #c0c0c0 30%, #e5e5e5 50%, #c0c0c0 70%, #ddd 88%, #b0b0b0 95%) !important; + border-bottom: 1px solid #999 !important; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.6), inset 0 -1px 0 rgba(0, 0, 0, 0.06) !important; +} +[data-jey-theme=chrome] .modal-header .modal-title { + color: #333 !important; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} +[data-jey-theme=chrome] .modal-footer { + background: linear-gradient(45deg, #b8b8b8 5%, #d8d8d8 20%, #c0c0c0 50%, #d8d8d8 80%, #b8b8b8 95%) !important; + border-top: 1px solid #999 !important; +} +[data-jey-theme=chrome] .modal-backdrop { + background-color: rgba(40, 40, 40, 0.55) !important; +} +[data-jey-theme=chrome] .page-head { + background: linear-gradient(45deg, #b8b8b8 3%, #e0e0e0 10%, #c8c8c8 25%, #eaeaea 45%, #ccc 60%, #e0e0e0 80%, #b8b8b8 97%) !important; + border-bottom: 1px solid #999 !important; + box-shadow: + inset 0 1px 0 rgba(255, 255, 255, 0.6), + inset 0 -1px 0 rgba(0, 0, 0, 0.06), + 0 2px 4px rgba(0, 0, 0, 0.08) !important; +} +[data-jey-theme=chrome] .page-head .title-text { + color: #333 !important; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} +[data-jey-theme=chrome] .list-row-head { + background: linear-gradient(45deg, #aaa 3%, #d8d8d8 10%, #bbb 25%, #e0e0e0 45%, #bbb 60%, #d8d8d8 80%, #aaa 97%) !important; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.6), inset 0 -1px 0 rgba(0, 0, 0, 0.06) !important; +} +[data-jey-theme=chrome] .list-row-container .list-row { + border-bottom: 1px solid #b8b8b8 !important; +} +[data-jey-theme=chrome] .list-row-container:hover { + background: linear-gradient(90deg, rgba(255, 255, 255, 0.2) 0%, rgba(255, 255, 255, 0.05) 100%) !important; +} +[data-jey-theme=chrome] .result .list-row-container .level-left .list-row--col .level-left .ellipsis { + color: #404040 !important; +} +[data-jey-theme=chrome] .frappe-list .list-row .level-right, +[data-jey-theme=chrome] .frappe-list .list-row-head .level-right { + background: linear-gradient(90deg, rgba(216, 216, 216, 0.85) 0%, rgba(208, 208, 208, 0.88) 100%) !important; + backdrop-filter: blur(3px); + -webkit-backdrop-filter: blur(3px); + border-left: 1px solid #a0a0a0 !important; + box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.5) !important; +} +[data-jey-theme=chrome] .frappe-list .list-row-container:hover .level-right { + background: linear-gradient(90deg, rgba(224, 224, 224, 0.9) 0%, rgba(216, 216, 216, 0.92) 100%) !important; + box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.55), -6px 0 10px rgba(0, 0, 0, 0.05) !important; +} +[data-jey-theme=chrome] .layout-side-section { + border-right: 1px solid #aaa !important; +} +[data-jey-theme=chrome] .frappe-control[data-fieldtype=Table] .form-grid { + border: 1px solid #999 !important; +} +[data-jey-theme=chrome] .grid-heading-row { + background: linear-gradient(45deg, #aaa 3%, #d5d5d5 10%, #bbb 30%, #ddd 50%, #bbb 70%, #d5d5d5 90%, #aaa 97%) !important; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.6), inset 0 -1px 0 rgba(0, 0, 0, 0.06) !important; +} +[data-jey-theme=chrome] .grid-heading-row .static-area { + color: #444 !important; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} +[data-jey-theme=chrome] .rows .grid-row:hover { + background: linear-gradient(90deg, rgba(255, 255, 255, 0.2) 0%, rgba(255, 255, 255, 0.05) 100%) !important; +} +[data-jey-theme=chrome] .rows .grid-row { + border-bottom: 1px solid #b8b8b8 !important; +} +[data-jey-theme=chrome] .grid-footer { + background: transparent !important; + border-top: 1px solid #999 !important; +} +[data-jey-theme=chrome] .rows .grid-row.editable-row, +[data-jey-theme=chrome] .rows .grid-row:has(.editable-row) { + border-bottom: 1px solid #b8b8b8 !important; +} +[data-jey-theme=chrome] .grid-row > .data-row input.form-control:not([type="checkbox"]):not([type="radio"]), +[data-jey-theme=chrome] .grid-row > .data-row textarea.form-control, +[data-jey-theme=chrome] .grid-row > .data-row select.form-control, +[data-jey-theme=chrome] .grid-row > .data-row select.input-with-feedback, +[data-jey-theme=chrome] .grid-row > .data-row .awesomplete input, +[data-jey-theme=chrome] .grid-row > .data-row .like-disabled-input { + background: transparent !important; + border: 0 !important; + box-shadow: none !important; + outline: none !important; + color: #333 !important; + transition: box-shadow 0.45s cubic-bezier(0.22, 1, 0.36, 1), background 0.45s cubic-bezier(0.22, 1, 0.36, 1) !important; +} +[data-jey-theme=chrome] .grid-row > .data-row input.form-control:not([type="checkbox"]):not([type="radio"]):focus, +[data-jey-theme=chrome] .grid-row > .data-row textarea.form-control:focus, +[data-jey-theme=chrome] .grid-row > .data-row select.form-control:focus, +[data-jey-theme=chrome] .grid-row > .data-row select.input-with-feedback:focus, +[data-jey-theme=chrome] .grid-row > .data-row .awesomplete input:focus { + background: linear-gradient(45deg, #bbb 5%, #d8d8d8 10%, #c4c4c4 30%, #d0d0d0 50%, #c4c4c4 70%, #d8d8d8 85%, #bbb 95%) !important; + border: 0 !important; + outline: none !important; + box-shadow: + inset 0 1px 0 rgba(255, 255, 255, 0), + inset 0 -1px 0 rgba(0, 0, 0, 0.05), + inset 3px 3px 6px rgba(0, 0, 0, 0.3), + inset -1px -1px 1px rgba(255, 255, 255, 0.15) !important; + transition: box-shadow 0.45s cubic-bezier(0.22, 1, 0.36, 1), background 0.45s cubic-bezier(0.22, 1, 0.36, 1) !important; +} +[data-jey-theme=chrome] .grid-row > .data-row input.form-control:not([type="checkbox"]):not([type="radio"]):disabled, +[data-jey-theme=chrome] .grid-row > .data-row input.form-control:not([type="checkbox"]):not([type="radio"])[disabled], +[data-jey-theme=chrome] .grid-row > .data-row input.form-control:not([type="checkbox"]):not([type="radio"])[readonly], +[data-jey-theme=chrome] .grid-row > .data-row textarea.form-control:disabled, +[data-jey-theme=chrome] .grid-row > .data-row textarea.form-control[readonly], +[data-jey-theme=chrome] .grid-row > .data-row select.form-control:disabled, +[data-jey-theme=chrome] .grid-row > .data-row select.input-with-feedback:disabled { + background: #d8d8d8 !important; + box-shadow: none !important; + color: #666 !important; +} +[data-jey-theme=chrome] .grid-row > .data-row input.form-control:not([type="checkbox"]):not([type="radio"]):disabled:focus, +[data-jey-theme=chrome] .grid-row > .data-row input.form-control:not([type="checkbox"]):not([type="radio"])[disabled]:focus, +[data-jey-theme=chrome] .grid-row > .data-row input.form-control:not([type="checkbox"]):not([type="radio"])[readonly]:focus, +[data-jey-theme=chrome] .grid-row > .data-row textarea.form-control:disabled:focus, +[data-jey-theme=chrome] .grid-row > .data-row textarea.form-control[readonly]:focus, +[data-jey-theme=chrome] .grid-row > .data-row select.form-control:disabled:focus { + background: #d8d8d8 !important; + box-shadow: none !important; +} +[data-jey-theme=chrome] .grid-row .editable-row .form-control { + padding-top: 10px !important; + padding-bottom: 10px !important; + height: auto !important; +} +[data-jey-theme=chrome] .form-tabs .nav-link { + color: #666 !important; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4); +} +[data-jey-theme=chrome] .form-tabs .nav-link:hover { + color: #444 !important; + background: linear-gradient(180deg, rgba(255, 255, 255, 0.3) 0%, rgba(255, 255, 255, 0.05) 100%) !important; +} +[data-jey-theme=chrome] .form-tabs .nav-link.active { + color: #333 !important; + background: linear-gradient(180deg, rgba(255, 255, 255, 0.2) 0%, transparent 100%) !important; +} +[data-jey-theme=chrome] .form-tabs .nav-link::after { + background: #777; +} +[data-jey-theme=chrome] .dropdown-menu { + background: linear-gradient(45deg, #c0c0c0 3%, #e5e5e5 10%, #d0d0d0 30%, #eaeaea 50%, #d0d0d0 70%, #e5e5e5 90%, #c0c0c0 97%) !important; + border: 1px solid #999 !important; + box-shadow: + 4px 4px 12px rgba(0, 0, 0, 0.18), + -2px -2px 4px rgba(255, 255, 255, 0.15), + inset 0 1px 0 rgba(255, 255, 255, 0.6) !important; +} +[data-jey-theme=chrome] .dropdown-item { + color: #444 !important; +} +[data-jey-theme=chrome] .dropdown-item:hover, +[data-jey-theme=chrome] .dropdown-item:focus { + background: linear-gradient(90deg, rgba(255, 255, 255, 0.3) 0%, rgba(255, 255, 255, 0.05) 100%) !important; + color: #222 !important; +} +[data-jey-theme=chrome] .dropdown-divider { + border-top-color: #aaa !important; +} +[data-jey-theme=chrome] .desk-alert { + background: linear-gradient(45deg, #c0c0c0 5%, #e5e5e5 15%, #d0d0d0 40%, #e8e8e8 60%, #d0d0d0 85%, #c0c0c0 95%) !important; + border: 1px solid #999 !important; + box-shadow: + 3px 3px 8px rgba(0, 0, 0, 0.12), + -1px -1px 3px rgba(255, 255, 255, 0.3), + inset 0 1px 0 rgba(255, 255, 255, 0.5) !important; +} +[data-jey-theme=chrome] .breadcrumb-container a { + color: #666 !important; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4); +} +[data-jey-theme=chrome] .breadcrumb-container a:hover { + color: #333 !important; +} +[data-jey-theme=chrome] .new-timeline::before { + border-left-color: #aaa !important; +} +[data-jey-theme=chrome] .timeline-dot { + background: linear-gradient(45deg, #bbb, #ddd, #bbb) !important; + border: 1px solid #999 !important; + box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.1), -1px -1px 1px rgba(255, 255, 255, 0.3); +} +[data-jey-theme=chrome] .indicator-pill { + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.3), 1px 1px 1px rgba(0, 0, 0, 0.08); +} +[data-jey-theme=chrome] .popover { + background: linear-gradient(45deg, #c0c0c0 3%, #e5e5e5 10%, #d0d0d0 30%, #eaeaea 50%, #d0d0d0 70%, #e5e5e5 90%, #c0c0c0 97%) !important; + border: 1px solid #999 !important; + box-shadow: + 4px 4px 12px rgba(0, 0, 0, 0.15), + -2px -2px 4px rgba(255, 255, 255, 0.2), + inset 0 1px 0 rgba(255, 255, 255, 0.5) !important; +} +[data-jey-theme=chrome] .popover .popover-body { + color: #404040 !important; +} +[data-jey-theme=chrome] .ce-block .links-widget-box, +[data-jey-theme=chrome] .ce-block .number-widget-box { + background: linear-gradient(45deg, #c0c0c0 3%, #e5e5e5 12%, #d0d0d0 30%, #eaeaea 50%, #d0d0d0 70%, #e5e5e5 88%, #c0c0c0 97%) !important; + border: 1px solid #aaa !important; + box-shadow: + 2px 2px 6px rgba(0, 0, 0, 0.1), + -1px -1px 3px rgba(255, 255, 255, 0.35), + inset 0 1px 0 rgba(255, 255, 255, 0.6) !important; +} +[data-jey-theme=chrome] .ce-block .links-widget-box::after, +[data-jey-theme=chrome] .ce-block .number-widget-box::after { + background: conic-gradient(from 140deg, #a0a0a0, #e0e0e0, #888, #d0d0d0, #a0a0a0) !important; +} +[data-jey-theme=chrome] .ce-block .links-widget-box:hover, +[data-jey-theme=chrome] .ce-block .number-widget-box:hover { + box-shadow: + 3px 3px 10px rgba(0, 0, 0, 0.14), + -2px -2px 5px rgba(255, 255, 255, 0.3), + inset 0 1px 0 rgba(255, 255, 255, 0.7) !important; +} +[data-jey-theme=chrome] ::-webkit-scrollbar { + width: 10px; + height: 10px; +} +[data-jey-theme=chrome] ::-webkit-scrollbar-track { + background: linear-gradient(90deg, #c0c0c0, #d0d0d0, #c0c0c0); +} +[data-jey-theme=chrome] ::-webkit-scrollbar-thumb { + background: linear-gradient(90deg, #888, #bbb, #999, #bbb, #888); + border-radius: 5px; + border: 1px solid #999; +} +[data-jey-theme=chrome] ::-webkit-scrollbar-thumb:hover { + background: linear-gradient(90deg, #777, #aaa, #888, #aaa, #777); +} +[data-jey-theme=chrome] a { + color: #555; +} +[data-jey-theme=chrome] a:hover { + color: #333; +} +@media print { + [data-jey-theme=chrome] body, + [data-jey-theme=chrome] .page-container, + [data-jey-theme=chrome] .form-page, + [data-jey-theme=chrome] .frappe-card, + [data-jey-theme=chrome] .modal-content, + [data-jey-theme=chrome] .navbar { + background: white !important; + box-shadow: none !important; + border-color: #ddd !important; + text-shadow: none !important; + } + [data-jey-theme=chrome] .btn-primary { + background: #333 !important; + text-shadow: none !important; + } +} +@keyframes jey-modern-glow { + 0%, 100% { + opacity: 0.4; + } + 50% { + opacity: 0.7; + } +} +[data-jey-theme=modern] .jey-chrome { + width: 72px; + height: 72px; + border-radius: 22px; + position: relative; + background: rgba(255, 255, 255, 0.45); + backdrop-filter: blur(12px); + -webkit-backdrop-filter: blur(12px); + border: 1px solid rgba(255, 255, 255, 0.6); + box-shadow: + 0 4px 16px rgba(0, 0, 0, 0.06), + 0 1px 3px rgba(0, 0, 0, 0.04), + inset 0 1px 0 rgba(255, 255, 255, 0.8); + transition: all 0.3s ease; +} +[data-jey-theme=modern] .desktop-icon:hover .jey-chrome { + box-shadow: + 0 8px 24px rgba(0, 0, 0, 0.1), + 0 2px 6px rgba(0, 0, 0, 0.06), + inset 0 1px 0 rgba(255, 255, 255, 0.9); + transform: translateY(-2px); +} +[data-jey-theme=modern] .jey-chrome-ring, +[data-jey-theme=modern] .jey-chrome-gap, +[data-jey-theme=modern] .jey-chrome-ring-inner { + display: none; +} +[data-jey-theme=modern] .jey-chrome-face { + position: absolute; + inset: 0; + border-radius: 22px; + overflow: hidden; + background: transparent; + box-shadow: none; + display: flex; + align-items: center; + justify-content: center; +} +[data-jey-theme=modern] .jey-face-glow { + position: absolute; + bottom: -4px; + left: 16px; + right: 16px; + height: 20px; + border-radius: 50%; + background: radial-gradient(ellipse, rgba(99, 102, 241, 0.35) 0%, transparent 70%); + animation: jey-modern-glow 4s ease-in-out infinite; + pointer-events: none; + z-index: 0; +} +[data-jey-theme=modern] .jey-face-reflection { + position: absolute; + top: 0; + left: 0; + right: 0; + height: 50%; + border-radius: 22px 22px 0 0; + background: linear-gradient(180deg, rgba(255, 255, 255, 0.5) 0%, transparent 100%); + pointer-events: none; + z-index: 1; + animation: none; +} +[data-jey-theme=modern] .jey-chrome-face .jey-icon { + width: 26px !important; + height: 26px !important; + stroke: #4f46e5 !important; + fill: none !important; + stroke-width: 1.6 !important; + stroke-linecap: round !important; + stroke-linejoin: round !important; + filter: drop-shadow(0 1px 2px rgba(79, 70, 229, 0.2)) !important; + position: relative; + z-index: 2; +} +[data-jey-theme=modern] .icon-container.jey-chrome-done { + border-radius: 22px !important; +} +/*# sourceMappingURL=jey_theme.bundle.S6M2WDGN.css.map */ diff --git a/jey_theme/public/dist/css/jey_theme.bundle.S6M2WDGN.css.map b/jey_theme/public/dist/css/jey_theme.bundle.S6M2WDGN.css.map new file mode 100644 index 0000000..d8b7f44 --- /dev/null +++ b/jey_theme/public/dist/css/jey_theme.bundle.S6M2WDGN.css.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../../../../../tmp/tmp-16010-GNkNpqu9JQON/jey_theme/jey_theme/public/css/jey_theme.bundle.css"], + "sourcesContent": ["/* Bundled theme styles (was 3 raw app_include_css/web_include_css entries).\n One hashed bundle -> smaller preload header + auto cache-busting.\n Order preserved: shared -> theme_chrome -> theme_modern. */\n\n/* ===== shared.css ===== */\n/* ==========================================================================\n Jey Theme \u2014 Shared Styles (theme-independent)\n ========================================================================== */\n\n/* Override Frappe's default desk splash image (the blue \"E\").\n Splash markup is in templates/includes/splash_screen.html and gets removed\n by Frappe once the desk boots, so this only shows during page load. */\n.splash img {\n\tcontent: url(\"/assets/jey_theme/images/preloader.png\");\n\tmax-width: 64px !important;\n\twidth: 64px !important;\n\theight: auto;\n}\n\n/* Hide Organization desktop icon by default */\n.desktop-icon[data-id=\"Organization\"],\n.desktop-icon[data-id=\"ERPNext\"] {\n\tdisplay: none !important;\n}\n\n/* Fallback hide for blocked modules (main filtering happens in access_control.py).\n Desktop Icon records use label \"Quality\" and \"Subcontracting\" \u2014 match those. */\n.desktop-icon[data-id=\"Quality\"],\n.desktop-icon[data-id=\"Quality Management\"],\n.desktop-icon[data-id=\"Subcontracting\"] {\n\tdisplay: none !important;\n}\n\n/* ==========================================================================\n Toggle Switch Checkboxes\n ========================================================================== */\n\ninput[type=\"checkbox\"] {\n -webkit-appearance: none !important;\n -moz-appearance: none !important;\n appearance: none !important;\n width: 28px !important;\n min-width: 28px !important;\n height: 16px !important;\n background-color: var(--gray-400, #c0c6cc) !important;\n background-image: none !important;\n border-radius: 999px !important;\n border: none !important;\n position: relative !important;\n cursor: pointer !important;\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.12) !important;\n transition: background-color 0.25s ease !important;\n vertical-align: middle !important;\n margin: 0 !important;\n margin-right: 8px !important;\n outline: none !important;\n}\n\ninput[type=\"checkbox\"]::after {\n content: \"\" !important;\n width: 12px !important;\n height: 12px !important;\n background-color: #fff !important;\n border-radius: 50% !important;\n position: absolute !important;\n top: 2px !important;\n left: 2px !important;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25) !important;\n transition: transform 0.25s ease !important;\n border: none !important;\n}\n\ninput[type=\"checkbox\"]:checked,\ninput[type=\"checkbox\"].disabled-selected {\n background-color: #2da44e !important;\n background-image: none !important;\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.08) !important;\n}\n\ninput[type=\"checkbox\"]:checked::after,\ninput[type=\"checkbox\"].disabled-selected::after {\n transform: translateX(12px) !important;\n}\n\ninput[type=\"checkbox\"]:focus {\n outline: none !important;\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.12), 0 0 0 2px rgba(45, 164, 78, 0.25) !important;\n}\n\ninput[type=\"checkbox\"]:disabled {\n opacity: 0.5 !important;\n cursor: not-allowed !important;\n background-image: none !important;\n}\n\ninput[type=\"checkbox\"].disabled-selected {\n opacity: 0.7 !important;\n cursor: not-allowed !important;\n}\n\n\n/* ==========================================================================\n Table Grid \u2014 restore Frappe default checkboxes\n ========================================================================== */\n\n.row-check input[type=\"checkbox\"],\n.grid-row-check {\n width: var(--checkbox-size, 14px) !important;\n min-width: var(--checkbox-size, 14px) !important;\n height: var(--checkbox-size, 14px) !important;\n border-radius: 4px !important;\n border: 1px solid var(--gray-500) !important;\n background-color: transparent !important;\n background-image: none !important;\n box-shadow: none !important;\n margin-right: 0 !important;\n transition: none !important;\n}\n\n.row-check input[type=\"checkbox\"]::after,\n.grid-row-check::after {\n content: \"\" !important;\n width: auto !important;\n height: auto !important;\n background: none !important;\n border-radius: 0 !important;\n position: absolute !important;\n top: auto !important;\n left: auto !important;\n box-shadow: none !important;\n transition: none !important;\n transform: none !important;\n inset: -8px !important;\n opacity: 0 !important;\n}\n\n.row-check input[type=\"checkbox\"]:checked,\n.grid-row-check:checked {\n background-color: var(--primary) !important;\n background-image: url(\"data:image/svg+xml, \"), var(--checkbox-gradient) !important;\n background-size: 57%, 100% !important;\n background-repeat: no-repeat !important;\n background-position: center !important;\n border: none !important;\n box-shadow: none !important;\n}\n\n.row-check input[type=\"checkbox\"]:checked::after,\n.grid-row-check:checked::after {\n transform: none !important;\n}\n\n/* ==========================================================================\n Report View (frappe-datatable) \u2014 compact themed checkboxes\n The global toggle-switch styling (28\u00D716) doesn't fit the 32px select\n column or the 37px row-number column, so content gets clipped. Use the\n same compact square style as child-table grids (.row-check) \u2014 themed,\n not native.\n ========================================================================== */\n\n.datatable input[type=\"checkbox\"] {\n -webkit-appearance: none !important;\n -moz-appearance: none !important;\n appearance: none !important;\n width: var(--checkbox-size, 14px) !important;\n min-width: var(--checkbox-size, 14px) !important;\n height: var(--checkbox-size, 14px) !important;\n margin: 0 !important;\n padding: 0 !important;\n border: 1px solid var(--gray-500) !important;\n border-radius: 4px !important;\n background-color: transparent !important;\n background-image: none !important;\n box-shadow: none !important;\n cursor: pointer !important;\n vertical-align: middle !important;\n transition: none !important;\n}\n\n.datatable input[type=\"checkbox\"]::after {\n content: none !important;\n display: none !important;\n}\n\n.datatable input[type=\"checkbox\"]:checked {\n background-color: var(--primary) !important;\n background-image: url(\"data:image/svg+xml, \") !important;\n background-size: 57% !important;\n background-repeat: no-repeat !important;\n background-position: center !important;\n border: none !important;\n}\n\n.datatable input[type=\"checkbox\"]:disabled {\n opacity: 0.5 !important;\n cursor: not-allowed !important;\n}\n\n/* Centre the checkbox vertically in its cell \u2014 vertical-align:middle on the\n input alone isn't enough because datatable cells have their own line-box\n rules that anchor the box to the baseline. */\n.datatable .dt-cell__content:has(> input[type=\"checkbox\"]:only-child) {\n display: flex !important;\n align-items: center !important;\n justify-content: flex-start !important;\n}\n\n/* Filter row: input + help-icon squash each other in narrow columns. Let\n the input flex-shrink instead of overflowing its siblings. */\n.datatable .dt-row-filter .dt-cell__content {\n display: flex !important;\n align-items: center !important;\n gap: 2px;\n}\n\n.datatable .dt-row-filter .dt-filter.dt-input {\n flex: 1 1 0 !important;\n min-width: 0 !important;\n}\n\n.datatable .dt-row-filter .comparison-help-icon {\n flex: 0 0 auto;\n}\n\n/* ==========================================================================\n List View \u2014 restore toggle knob\n ========================================================================== */\n\ninput.list-row-checkbox::after,\ninput.list-header-checkbox::after {\n inset: auto !important;\n width: 12px !important;\n height: 12px !important;\n background-color: #fff !important;\n border-radius: 50% !important;\n position: absolute !important;\n top: 2px !important;\n left: 2px !important;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25) !important;\n transition: transform 0.25s ease !important;\n opacity: 1 !important;\n}\n\ninput.list-row-checkbox:checked::after,\ninput.list-header-checkbox:checked::after {\n transform: translateX(12px) !important;\n}\n\n\n.frappe-control[data-fieldtype=\"Check\"] .checkbox label {\n align-items: center !important;\n}\n\n.frappe-control[data-fieldtype=\"Check\"] .checkbox .input-area:not(.hide) {\n padding-top: 0 !important;\n display: flex !important;\n align-items: center !important;\n}\n\n/* ==========================================================================\n List View \u2014 swap filter and sort order\n ========================================================================== */\n\n.filter-section {\n display: flex !important;\n}\n\n.filter-section .sort-selector {\n order: -1 !important;\n margin-right: 8px !important;\n}\n\n/* ==========================================================================\n Table Horizontal Scrollbar \u2014 thicker & easier to grab\n ========================================================================== */\n\n/* Force scrollbar always visible & push it below table content */\n.form-grid {\n overflow-x: scroll !important;\n padding-bottom: 12px !important;\n scrollbar-width: auto !important;\n}\n\n.form-grid::-webkit-scrollbar {\n height: 10px !important;\n}\n\n.form-grid::-webkit-scrollbar-track {\n background: var(--gray-100, #f5f5f5) !important;\n}\n\n.form-grid::-webkit-scrollbar-thumb {\n background: var(--gray-400, #c0c6cc) !important;\n border-radius: 5px !important;\n border: 2px solid var(--gray-100, #f5f5f5) !important;\n}\n\n.form-grid::-webkit-scrollbar-thumb:hover {\n background: var(--gray-500, #98a2ab) !important;\n}\n\n\n/* ==========================================================================\n Grid Column Resize Handles\n ========================================================================== */\n\n.jey-col-resize {\n position: absolute;\n top: 0;\n right: -2px;\n width: 5px;\n height: 100%;\n cursor: col-resize;\n z-index: 2;\n background: transparent;\n transition: background 0.15s;\n}\n\n.jey-col-resize:hover,\n.jey-col-resize:active {\n background: var(--primary, #2490ef);\n opacity: 0.5;\n}\n\n/* Column drag & drop */\n.grid-heading-row .grid-static-col[data-jey-draggable] {\n cursor: grab;\n}\n\n.grid-heading-row .grid-static-col.jey-drop-target.jey-drop-left {\n box-shadow: inset 3px 0 0 var(--primary, #2490ef);\n background: rgba(36, 144, 239, 0.05);\n}\n\n.grid-heading-row .grid-static-col.jey-drop-target.jey-drop-right {\n box-shadow: inset -3px 0 0 var(--primary, #2490ef);\n background: rgba(36, 144, 239, 0.05);\n}\n\n/* ==========================================================================\n List View Column Resize + Reorder\n ========================================================================== */\n\n.list-row-head .list-row-col {\n position: relative;\n}\n\n/* Column dividers \u2014 hint that headers can be resized / reordered. */\n.list-row-head .list-row-col:not(:last-child) {\n border-right: 1px solid var(--border-color, #e2e6e9);\n}\n\n.list-row-head .jey-col-resize {\n position: absolute;\n top: 0;\n right: -2px;\n width: 5px;\n height: 100%;\n cursor: col-resize;\n z-index: 3;\n background: transparent;\n transition: background 0.15s;\n}\n\n.list-row-head .jey-col-resize:hover,\n.list-row-head .jey-col-resize:active {\n background: var(--primary, #2490ef);\n opacity: 0.5;\n}\n\n.list-row-head .list-row-col[data-jey-draggable]:not(.list-subject) {\n cursor: grab;\n}\n\n.list-row-head .list-row-col.jey-drop-target.jey-drop-left {\n box-shadow: inset 3px 0 0 var(--primary, #2490ef);\n background: rgba(36, 144, 239, 0.05);\n}\n\n.list-row-head .list-row-col.jey-drop-target.jey-drop-right {\n box-shadow: inset -3px 0 0 var(--primary, #2490ef);\n background: rgba(36, 144, 239, 0.05);\n}\n\n/* ==========================================================================\n Sidebar \u2014 Full Width button\n ========================================================================== */\n\n/* .body-sidebar-bottom is a flex item of .body-sidebar (column flex).\n By default min-width:auto resolves to min-content, so it refuses to\n shrink below the natural width of its widest text \u2014 and our buttons'\n labels poke past the collapsed sidebar's right edge. Force min-width:0\n so it can match the cross-axis (50px collapsed) and clip properly. */\n.body-sidebar .body-sidebar-bottom {\n min-width: 0;\n}\n\n.jey-fullwidth-link,\n.jey-theme-switch-link,\n.jey-collapse-link {\n text-decoration: none;\n font-size: var(--text-sm);\n display: flex;\n align-items: center;\n cursor: pointer;\n margin-bottom: 8px;\n width: 100%;\n overflow: hidden;\n}\n\n.jey-fullwidth-link svg,\n.jey-theme-switch-link svg,\n.jey-collapse-link svg {\n margin: 0;\n flex: 0 0 auto;\n}\n\n.jey-fullwidth-link span,\n.jey-theme-switch-link span,\n.jey-collapse-link span {\n margin-left: 10px;\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n transition: max-width 0.3s cubic-bezier(0.4, 0, 0.2, 1),\n margin-left 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n/* When sidebar is collapsed, animate the label to zero width + zero\n margin so it smoothly slides under the icon instead of leaving a\n single ellipsized letter at the edge. */\n.body-sidebar-container:not(.expanded) .jey-fullwidth-link span,\n.body-sidebar-container:not(.expanded) .jey-theme-switch-link span,\n.body-sidebar-container:not(.expanded) .jey-collapse-link span {\n max-width: 0;\n margin-left: 0;\n}\n\n/* Hide the v16.17 native bottom row (about + collapse icon-buttons).\n Our labeled .jey-collapse-link replaces it. */\n.body-sidebar .sidebar-bottom-actions {\n display: none !important;\n}\n\n/* Frappe v16 toggles .nav-item padding 0\u21928px instantly between\n collapsed/expanded, while the sidebar width itself transitions over\n 0.3s \u2014 making the user/account button visibly jump 8px. Animate the\n padding so it stays in sync with the width. */\n.body-sidebar .nav-item {\n transition: padding 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n/* ==========================================================================\n Modal / Dialog \u2014 Smooth Entrance\n ========================================================================== */\n\n.modal.fade .modal-dialog {\n transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1),\n opacity 0.5s cubic-bezier(0.22, 1, 0.36, 1) !important;\n transform: translateY(-24px) scale(0.97);\n opacity: 0;\n}\n\n.modal.show .modal-dialog {\n transform: none;\n opacity: 1;\n}\n\n\n/* ==========================================================================\n Form Sections \u2014 Cascade Entrance\n ========================================================================== */\n\n@keyframes jey-section-in {\n from { top: -12px; }\n to { top: 0; }\n}\n\n/* Slide-only entrance \u2014 animating `opacity` here would create a persistent\n stacking context on .section-body (Firefox keeps the compositing layer\n alive after the animation completes when `fill-mode: both` keeps opacity\n fill-forward, even though opacity reaches 1). That stacking context traps\n Frappe's child-table row form (.form-in-grid, z-index 1021) under the\n freeze backdrop (#freeze.modal-backdrop, z-index 1020): the row form\n visually disappears behind the backdrop, every mouse click is captured by\n #freeze (whose handler closes the row form), and only keyboard nav works.\n Same reason we slide via `top` instead of `transform: translateY()` \u2014\n `transform` would also leave behind a stacking context.\n `position: relative` alone (without z-index) does NOT create one. */\n.form-layout .form-section .section-head,\n.form-layout .form-section .section-body {\n position: relative;\n animation: jey-section-in 0.7s cubic-bezier(0.22, 1, 0.36, 1) both;\n}\n\n.form-layout .form-section:nth-child(1) .section-head,\n.form-layout .form-section:nth-child(1) .section-body { animation-delay: 0.04s; }\n.form-layout .form-section:nth-child(2) .section-head,\n.form-layout .form-section:nth-child(2) .section-body { animation-delay: 0.10s; }\n.form-layout .form-section:nth-child(3) .section-head,\n.form-layout .form-section:nth-child(3) .section-body { animation-delay: 0.16s; }\n.form-layout .form-section:nth-child(4) .section-head,\n.form-layout .form-section:nth-child(4) .section-body { animation-delay: 0.22s; }\n.form-layout .form-section:nth-child(5) .section-head,\n.form-layout .form-section:nth-child(5) .section-body { animation-delay: 0.28s; }\n.form-layout .form-section:nth-child(6) .section-head,\n.form-layout .form-section:nth-child(6) .section-body { animation-delay: 0.34s; }\n.form-layout .form-section:nth-child(7) .section-head,\n.form-layout .form-section:nth-child(7) .section-body { animation-delay: 0.40s; }\n.form-layout .form-section:nth-child(8) .section-head,\n.form-layout .form-section:nth-child(8) .section-body { animation-delay: 0.46s; }\n.form-layout .form-section:nth-child(9) .section-head,\n.form-layout .form-section:nth-child(9) .section-body { animation-delay: 0.52s; }\n.form-layout .form-section:nth-child(10) .section-head,\n.form-layout .form-section:nth-child(10) .section-body { animation-delay: 0.58s; }\n.form-layout .form-section:nth-child(11) .section-head,\n.form-layout .form-section:nth-child(11) .section-body { animation-delay: 0.64s; }\n.form-layout .form-section:nth-child(12) .section-head,\n.form-layout .form-section:nth-child(12) .section-body { animation-delay: 0.70s; }\n\n\n/* ==========================================================================\n Form Tabs \u2014 Sliding Active Indicator\n ========================================================================== */\n\n.form-tabs .nav-link {\n position: relative;\n border-bottom: none !important;\n transition: color 0.3s ease;\n}\n\n.form-tabs .nav-link::after {\n content: \"\";\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n height: 2px;\n background: var(--text-color);\n transform: scaleX(0);\n transform-origin: center;\n transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1);\n}\n\n.form-tabs .nav-link.active::after {\n transform: scaleX(1);\n}\n\n\n/* ==========================================================================\n Dropdown Animations\n ========================================================================== */\n\n.dropdown-menu {\n display: block !important;\n visibility: hidden;\n opacity: 0;\n pointer-events: none;\n}\n\n.dropdown-menu.show {\n visibility: visible;\n opacity: 1;\n pointer-events: auto;\n animation: jey-dropdown-in 0.2s ease;\n}\n\n/* Applied by JS during Bootstrap hide so Popper's transform reset\n doesn't move the menu mid-fade. See \"Dropdown fade-out\" in jey_theme.js. */\n.dropdown-menu.jey-dropdown-hiding {\n visibility: visible !important;\n pointer-events: none;\n animation: jey-dropdown-out 0.2s ease forwards;\n}\n\n@keyframes jey-dropdown-in {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n@keyframes jey-dropdown-out {\n from { opacity: 1; }\n to { opacity: 0; }\n}\n\n/* ==========================================================================\n Sidebar \u2014 Smooth Collapse / Expand\n Frappe toggles .body-sidebar-placeholder between display:none and display:flex,\n so the container's fit-content width snaps on expand (the inner sidebar goes\n position:absolute, placeholder appears at 220px instantly). The collapse path\n keeps the sidebar in flow, so its width transition is already smooth.\n Override the container with an explicit width transition to make expand\n symmetric with collapse.\n ========================================================================== */\n\n@media (min-width: 576px) {\n .body-sidebar-container {\n width: 50px;\n transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .body-sidebar-container.expanded {\n width: var(--sidebar-width);\n }\n}\n\n/* ==========================================================================\n Sidebar \u2014 No Alignment Shift Between States\n Regular items land at 15px from the sidebar's left edge (sidebar padding 8\n + icon padding 7). Two state-dependent paddings break that alignment in\n expanded mode:\n 1. Frappe's sidebar_header.js sets inline padding-left/right: 8px on\n .sidebar-header when expanded, 0 when collapsed \u2014 pushes the logo to\n 23px in expanded. Override inline style with !important.\n 2. SCSS mixin body-sidebar-expanded gives .sidebar-user-button\n padding: var(--padding-sm) only when .expanded \u2014 pushes the avatar\n to 23px and makes the button taller, which shifts the Jey buttons\n above it vertically. Zero out the padding.\n Zeroing both keeps every icon/avatar at 15px and button heights constant\n across expand/collapse, so nothing jumps on toggle.\n ========================================================================== */\n\n.body-sidebar .sidebar-header {\n padding-left: 0 !important;\n padding-right: 0 !important;\n}\n\n.body-sidebar-container.expanded .sidebar-user-button {\n padding: 0 !important;\n}\n\n/* ==========================================================================\n Sidebar \u2014 Hover Effects\n ========================================================================== */\n\n.body-sidebar .standard-sidebar-item .item-anchor {\n transition: padding-left 0.4s cubic-bezier(0.22, 1, 0.36, 1),\n background 0.4s ease;\n}\n\n.body-sidebar .standard-sidebar-item .item-anchor:hover {\n padding-left: calc(var(--padding-xs, 8px) + 4px);\n}\n\n.body-sidebar .standard-sidebar-item .sidebar-item-icon {\n transition: transform 0.45s cubic-bezier(0.22, 1, 0.36, 1);\n}\n\n.body-sidebar .standard-sidebar-item .item-anchor:hover .sidebar-item-icon {\n transform: scale(1.15);\n}\n\n/* Active item \u2014 subtle left accent bar */\n.body-sidebar .standard-sidebar-item.active-sidebar .item-anchor {\n position: relative;\n}\n\n.body-sidebar .standard-sidebar-item.active-sidebar .item-anchor::before {\n content: \"\";\n position: absolute;\n left: 0;\n top: 20%;\n bottom: 20%;\n width: 3px;\n border-radius: 0 3px 3px 0;\n background: var(--primary, #2490ef);\n opacity: 0.8;\n}\n\n\n/* ==========================================================================\n List View \u2014 Row Entrance Animation\n ========================================================================== */\n\n@keyframes jey-list-row-in {\n from {\n opacity: 0;\n transform: translateX(-16px);\n }\n to {\n opacity: 1;\n transform: translateX(0);\n }\n}\n\n.frappe-list .result .list-row-container:not(:first-child) {\n animation: jey-list-row-in 0.4s cubic-bezier(0.22, 1, 0.36, 1) both;\n}\n\n.frappe-list .result .list-row-container:nth-child(2) { animation-delay: 0.03s; }\n.frappe-list .result .list-row-container:nth-child(3) { animation-delay: 0.05s; }\n.frappe-list .result .list-row-container:nth-child(4) { animation-delay: 0.07s; }\n.frappe-list .result .list-row-container:nth-child(5) { animation-delay: 0.09s; }\n.frappe-list .result .list-row-container:nth-child(6) { animation-delay: 0.11s; }\n.frappe-list .result .list-row-container:nth-child(7) { animation-delay: 0.13s; }\n.frappe-list .result .list-row-container:nth-child(8) { animation-delay: 0.15s; }\n.frappe-list .result .list-row-container:nth-child(9) { animation-delay: 0.17s; }\n.frappe-list .result .list-row-container:nth-child(10) { animation-delay: 0.19s; }\n.frappe-list .result .list-row-container:nth-child(11) { animation-delay: 0.21s; }\n.frappe-list .result .list-row-container:nth-child(12) { animation-delay: 0.23s; }\n.frappe-list .result .list-row-container:nth-child(13) { animation-delay: 0.25s; }\n.frappe-list .result .list-row-container:nth-child(14) { animation-delay: 0.27s; }\n.frappe-list .result .list-row-container:nth-child(15) { animation-delay: 0.29s; }\n.frappe-list .result .list-row-container:nth-child(16) { animation-delay: 0.31s; }\n.frappe-list .result .list-row-container:nth-child(17) { animation-delay: 0.33s; }\n.frappe-list .result .list-row-container:nth-child(18) { animation-delay: 0.35s; }\n.frappe-list .result .list-row-container:nth-child(19) { animation-delay: 0.37s; }\n.frappe-list .result .list-row-container:nth-child(20) { animation-delay: 0.39s; }\n.frappe-list .result .list-row-container:nth-child(21) { animation-delay: 0.41s; }\n\n\n/* ==========================================================================\n Search Dialog \u2014 Fade In / Out\n ========================================================================== */\n\n.modal:has(.cool-awesomebar-modal-footer) {\n display: block !important;\n visibility: hidden;\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.5s cubic-bezier(0.22, 1, 0.36, 1),\n visibility 0.5s;\n}\n\n.modal:has(.cool-awesomebar-modal-footer) .modal-dialog {\n transform: translateY(-30px);\n transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1);\n}\n\n.modal.show:has(.cool-awesomebar-modal-footer) {\n visibility: visible;\n opacity: 1;\n pointer-events: auto;\n}\n\n.modal.show:has(.cool-awesomebar-modal-footer) .modal-dialog {\n transform: none;\n}\n\n\n/* ==========================================================================\n Report Summary \u2014 Card Cascade\n ========================================================================== */\n\n@keyframes jey-summary-in {\n from {\n opacity: 0;\n transform: translateY(10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.report-summary .summary-item {\n animation: jey-summary-in 0.7s cubic-bezier(0.22, 1, 0.36, 1) both;\n}\n\n.report-summary .summary-item:nth-child(1) { animation-delay: 0.05s; }\n.report-summary .summary-item:nth-child(2) { animation-delay: 0.10s; }\n.report-summary .summary-item:nth-child(3) { animation-delay: 0.15s; }\n.report-summary .summary-item:nth-child(4) { animation-delay: 0.20s; }\n.report-summary .summary-item:nth-child(5) { animation-delay: 0.25s; }\n.report-summary .summary-item:nth-child(6) { animation-delay: 0.30s; }\n\n\n/* ==========================================================================\n Form Section Collapse / Expand \u2014 Smooth\n ========================================================================== */\n\n.form-section .collapse-indicator {\n transition: transform 0.45s cubic-bezier(0.22, 1, 0.36, 1);\n display: inline-block;\n}\n\n.form-section .section-head.collapsed .collapse-indicator {\n transform: rotate(-90deg);\n}\n\n/* Expanded section-body has no `overflow: hidden` \u2014 so Link-field autocomplete\n dropdowns (and any other overflow) are not clipped by the section boundary.\n `overflow: hidden` is applied via JS only during the collapse/expand\n transition (see jey_theme.js), then removed once the animation finishes. */\n.form-section .section-head.collapsible + .section-body {\n display: flex !important;\n flex-wrap: wrap;\n transition: max-height 0.5s ease-in-out,\n padding 0.5s ease-in-out;\n}\n\n.form-section .section-head.collapsed + .section-body {\n max-height: 0 !important;\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n overflow: hidden;\n transition: max-height 0.5s ease-in-out,\n padding 0.5s ease-in-out;\n}\n\n\n\n/* ==========================================================================\n Link Field \u2014 Awesomplete Dropdown Fade\n ========================================================================== */\n\n.awesomplete > [role=\"listbox\"] {\n animation: jey-awesomplete-in 0.4s cubic-bezier(0.22, 1, 0.36, 1) both;\n}\n\n/* Applied by JS on awesomplete-close so the listbox fades instead of\n vanishing when [hidden] is set. See \"Awesomplete fade-out\" in jey_theme.js. */\n.awesomplete > [role=\"listbox\"].jey-awesomplete-hiding {\n display: block !important;\n pointer-events: none;\n animation: jey-awesomplete-out 0.2s ease forwards;\n}\n\n@keyframes jey-awesomplete-in {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n@keyframes jey-awesomplete-out {\n from { opacity: 1; }\n to { opacity: 0; }\n}\n\n/* Lift the open autocomplete listbox above its siblings so the dropdown can\n spill past the section boundary without being painted over by later\n sections (which naturally paint above earlier ones in DOM order).\n Lift only the listbox itself, NOT the surrounding .form-section, because a\n z-index on the section creates a stacking context that traps Frappe's\n child-table row form (.form-in-grid, z-index 1021) below the freeze\n backdrop (#freeze.modal-backdrop, z-index 1020), leaving the screen\n unclickable when editing a row. */\n.awesomplete > ul[role=\"listbox\"]:not([hidden]) {\n z-index: 10;\n}\n\n\n/* ==========================================================================\n Input Focus \u2014 Inset Press\n ========================================================================== */\n\ninput.form-control:not([type=\"checkbox\"]):not([type=\"radio\"]),\ntextarea.form-control,\n.frappe-control input:not([type=\"checkbox\"]):not([type=\"radio\"]),\n.frappe-control textarea {\n transition:\n background-color 0.45s cubic-bezier(0.22, 1, 0.36, 1),\n border-color 0.45s cubic-bezier(0.22, 1, 0.36, 1);\n}\n\ninput.form-control:not([type=\"checkbox\"]):not([type=\"radio\"]):focus,\ntextarea.form-control:focus,\n.frappe-control input:not([type=\"checkbox\"]):not([type=\"radio\"]):focus,\n.frappe-control textarea:focus {\n border-color: var(--gray-500, #a8b0b8) !important;\n outline: none;\n}\n\n\n/* ==========================================================================\n Buttons \u2014 Shine on Hover, Press on Click\n ========================================================================== */\n\n.btn {\n position: relative;\n overflow: hidden;\n transition: box-shadow 0.4s ease, background-color 0.3s ease, color 0.3s ease;\n}\n\n.btn::after {\n content: \"\";\n position: absolute;\n inset: 0;\n background: linear-gradient(105deg,\n transparent 35%,\n rgba(255, 255, 255, 0.25) 45%,\n rgba(255, 255, 255, 0.25) 55%,\n transparent 65%);\n transform: translateX(-110%);\n transition: transform 0.6s cubic-bezier(0.22, 1, 0.36, 1);\n pointer-events: none;\n}\n\n.btn:hover::after {\n transform: translateX(110%);\n}\n\n.btn:active {\n box-shadow: inset 0 2px 6px rgba(0, 0, 0, 0.2) !important;\n}\n\n\n/* Hide dropdown items now surfaced as sidebar buttons */\n.dropdown-menu-item[onclick*=\"toggle_full_width\"],\n.dropdown-menu-item[onclick*=\"clear_cache\"],\n.dropdown-menu-item[onclick*=\"ThemeSwitcher\"],\n.dropdown-menu-item[data-name=\"website\"],\n.dropdown-menu-item.jey-hidden-item {\n display: none !important;\n}\n\n\n/* ==========================================================================\n Desktop Icons \u2014 Shared base (all themes)\n ========================================================================== */\n\n.desktop-icon:hover {\n transform: translateY(-2px) !important;\n}\n\n.desktop-icon:active {\n transform: scale(0.97) !important;\n}\n\n.icon-container.jey-chrome-done {\n width: 72px !important;\n height: 72px !important;\n padding: 0 !important;\n border-radius: 50% !important;\n background: none !important;\n overflow: visible !important;\n position: relative !important;\n}\n\n.icon-container.jey-chrome-done:hover {\n transform: none !important;\n}\n\n.icon-container.folder-icon.jey-chrome-done {\n box-shadow: none !important;\n}\n\n/* ==========================================================================\n Desktop Modal (module icons picker) \u2014 caption overflow + clean heading\n ========================================================================== */\n\n/* Give the 4-col icon grid room between cells so captions don't collide */\n#desktop-modal .icons-container .icons {\n gap: 12px 8px !important;\n padding: 12px 0 !important;\n}\n\n/* Each icon: constrain to its grid track and center contents */\n#desktop-modal .desktop-icon {\n min-width: 0 !important;\n display: flex !important;\n flex-direction: column !important;\n align-items: center !important;\n text-align: center !important;\n}\n\n/* Caption wraps to 2 lines max, truncates with ellipsis, never overflows column */\n#desktop-modal .desktop-icon .icon-caption {\n width: 100% !important;\n max-width: 100% !important;\n padding: 0 4px !important;\n margin-top: 14px !important;\n}\n\n#desktop-modal .desktop-icon .icon-title {\n width: 100% !important;\n max-width: 100% !important;\n display: -webkit-box !important;\n -webkit-line-clamp: 2;\n line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden !important;\n text-overflow: ellipsis !important;\n overflow-wrap: anywhere !important;\n word-break: break-word !important;\n line-height: 1.25 !important;\n white-space: normal !important;\n}\n\n/* Strip the themed gradient/border off the desktop-modal header \u2014 title only, no bar */\n#desktop-modal .modal-header.desktop-modal-heading {\n background: transparent !important;\n border-bottom: 0 !important;\n box-shadow: none !important;\n}\n\n#desktop-modal .modal-header.desktop-modal-heading .modal-title,\n#desktop-modal .modal-header.desktop-modal-heading .title-input-label span {\n background: transparent !important;\n box-shadow: none !important;\n text-shadow: none !important;\n}\n\n/* Everything inside the desktop-modal renders text crisply \u2014 no inherited blur */\n#desktop-modal .icon-title,\n#desktop-modal .icon-caption {\n text-shadow: none !important;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n/* Grow to content: no inner scrollbar when icons fit */\n#desktop-modal .modal-body.desktop-modal-body {\n overflow: visible !important;\n max-height: none !important;\n}\n\n#desktop-modal .icons-container {\n overflow: visible !important;\n max-height: none !important;\n}\n\n/* ==========================================================================\n Icon Animations \u2014 Shared (all themes)\n ========================================================================== */\n\n/* Framework \u2014 gentle float */\n.ico-framework { animation: ico-float 5s ease-in-out infinite; transform-origin: center; }\n@keyframes ico-float {\n 0%,100% { transform: translateY(0) rotate(0deg); opacity: 0.85; }\n 30% { transform: translateY(-2px) rotate(0.8deg); opacity: 1; }\n 70% { transform: translateY(0.5px) rotate(-0.4deg); opacity: 0.9; }\n}\n\n.ico-org { animation: ico-org 6s ease-in-out infinite; transform-origin: center bottom; }\n@keyframes ico-org {\n 0%,100% { transform: scaleY(1) scaleX(1); }\n 25% { transform: scaleY(1.03) scaleX(0.99); }\n 50% { transform: scaleY(1.05) scaleX(0.98); }\n 75% { transform: scaleY(1.02) scaleX(1); }\n}\n\n.ico-acc .acc-btn { animation: ico-press 3s ease-in-out infinite; }\n@keyframes ico-press { 0%,25%,100% { opacity: 0.5; stroke-width: 2.5; } 12% { opacity: 1; stroke-width: 3.2; } }\n\n.ico-assets { animation: ico-safe 6s ease-in-out infinite; transform-origin: center; }\n.ico-assets .lock-dot { animation: ico-blink 5s ease-in-out infinite; }\n@keyframes ico-safe { 0%,100% { transform: translateY(0); } 40% { transform: translateY(-0.6px); } 60% { transform: translateY(0.3px); } }\n@keyframes ico-blink { 0%,35%,65%,100% { opacity: 1; } 50% { opacity: 0.15; } }\n\n.ico-buying { animation: ico-cart 6s ease-in-out infinite; transform-origin: 12px 21px; }\n@keyframes ico-cart { 0%,100% { transform: translateX(0) rotate(0deg); } 20% { transform: translateX(1.5px) rotate(0.8deg); } 50% { transform: translateX(-0.5px) rotate(-0.3deg); } 80% { transform: translateX(0.8px) rotate(0.4deg); } }\n\n.ico-mfg .gear1 { animation: ico-spin 9s linear infinite; transform-origin: 9px 12px; }\n.ico-mfg .gear2 { animation: ico-spin-r 7s linear infinite; transform-origin: 17px 8px; }\n@keyframes ico-spin { to { transform: rotate(360deg); } }\n@keyframes ico-spin-r { to { transform: rotate(-360deg); } }\n\n.ico-proj .col1 { animation: ico-g1 5s ease-in-out infinite; transform-origin: 5.5px 21px; }\n.ico-proj .col2 { animation: ico-g2 5s ease-in-out infinite 0.5s; transform-origin: 12.5px 15px; }\n.ico-proj .col3 { animation: ico-g3 5s ease-in-out infinite 1s; transform-origin: 19.5px 18px; }\n@keyframes ico-g1 { 0%,100% { transform: scaleY(1); opacity: 0.75; } 50% { transform: scaleY(0.85); opacity: 1; } }\n@keyframes ico-g2 { 0%,100% { transform: scaleY(1); opacity: 0.75; } 50% { transform: scaleY(1.15); opacity: 1; } }\n@keyframes ico-g3 { 0%,100% { transform: scaleY(1); opacity: 0.75; } 50% { transform: scaleY(0.88); opacity: 1; } }\n\n.ico-quality { animation: ico-shield 6s ease-in-out infinite; transform-origin: 12px 14px; }\n@keyframes ico-shield { 0%,100% { transform: rotate(0deg) scale(1); } 15% { transform: rotate(1.5deg) scale(1.03); } 35% { transform: rotate(-0.5deg) scale(1.01); } 55% { transform: rotate(-1.5deg) scale(1.03); } 75% { transform: rotate(0.5deg) scale(1.01); } }\n\n.ico-selling { animation: ico-sell 4s ease-in-out infinite; transform-origin: center; }\n.ico-selling .arrow-head { animation: ico-up 4s ease-in-out infinite; }\n@keyframes ico-sell { 0%,100% { opacity: 0.8; } 50% { opacity: 1; } }\n@keyframes ico-up { 0%,100% { transform: translate(0,0); } 30% { transform: translate(1px, -1.5px); } 60% { transform: translate(2px, -2.5px); } }\n\n.ico-stock { animation: ico-bob 5s ease-in-out infinite; transform-origin: center; }\n@keyframes ico-bob { 0%,100% { transform: rotate(0deg) translateY(0); } 20% { transform: rotate(2deg) translateY(-0.7px); } 50% { transform: rotate(-1deg) translateY(0.3px); } 80% { transform: rotate(1.5deg) translateY(-0.4px); } }\n\n.ico-sub .person-l { animation: ico-rl 6s ease-in-out infinite; transform-origin: 8px 12px; }\n.ico-sub .person-r { animation: ico-rr 6s ease-in-out infinite; transform-origin: 16px 12px; }\n@keyframes ico-rl { 0%,100% { transform: translateX(0) rotate(0deg); } 30% { transform: translateX(1px) rotate(1deg); } 60% { transform: translateX(1.5px) rotate(0.5deg); } }\n@keyframes ico-rr { 0%,100% { transform: translateX(0) rotate(0deg); } 30% { transform: translateX(-1px) rotate(-1deg); } 60% { transform: translateX(-1.5px) rotate(-0.5deg); } }\n\n.ico-settings { animation: ico-gear-main 12s linear infinite; transform-origin: center; }\n@keyframes ico-gear-main { to { transform: rotate(360deg); } }\n\n/* HR \u2014 plus sign pulsing */\n.ico-hr .plus-v { animation: ico-pv 4s ease-in-out infinite; transform-origin: center; }\n.ico-hr .plus-h { animation: ico-ph 4s ease-in-out infinite 0.3s; transform-origin: center; }\n@keyframes ico-pv { 0%,100% { opacity: 0.4; stroke-width: 1.8; } 50% { opacity: 1; stroke-width: 2.4; } }\n@keyframes ico-ph { 0%,100% { opacity: 0.4; stroke-width: 1.8; } 50% { opacity: 1; stroke-width: 2.4; } }\n\n/* ==========================================================================\n Theme Switcher Dialog\n ========================================================================== */\n\n.jey-theme-grid {\n display: flex;\n gap: 20px;\n padding: 20px;\n justify-content: center;\n}\n\n.jey-theme-card {\n cursor: pointer;\n text-align: center;\n padding: 16px;\n border-radius: 12px;\n border: 2px solid transparent;\n transition: border-color 0.2s, background 0.2s;\n min-width: 140px;\n}\n\n.jey-theme-card:hover {\n background: var(--subtle-fg, #f5f5f5);\n}\n\n.jey-theme-card.selected {\n border-color: var(--primary, #2490ef);\n background: var(--subtle-fg, #f5f5f5);\n}\n\n.jey-theme-preview {\n width: 72px;\n height: 72px;\n border-radius: 50%;\n margin: 0 auto 12px;\n position: relative;\n overflow: hidden;\n}\n\n.jey-theme-preview--chrome {\n background: conic-gradient(from 140deg, #a0a0a0 0deg, #f2f2f2 40deg, #777 80deg, #e5e5e5 120deg, #959595 170deg, #ededed 210deg, #808080 260deg, #d8d8d8 310deg, #a0a0a0 360deg);\n box-shadow: 0 3px 8px rgba(0,0,0,0.15), inset 0 1px 1px rgba(255,255,255,0.5);\n}\n\n.jey-theme-preview--chrome .jey-theme-preview-icon {\n position: absolute;\n inset: 9px;\n border-radius: 50%;\n background: linear-gradient(168deg, #f4f4f4 0%, #e0e0e0 45%, #d4d4d4 100%);\n}\n\n.jey-theme-preview--modern {\n border-radius: 16px;\n background: rgba(255, 255, 255, 0.4);\n -webkit-backdrop-filter: blur(6px);\n backdrop-filter: blur(6px);\n border: 1px solid rgba(255, 255, 255, 0.5);\n box-shadow: 0 2px 8px rgba(0,0,0,0.06);\n}\n\n.jey-theme-preview--modern .jey-theme-preview-icon {\n position: absolute;\n inset: 22px;\n border-radius: 6px;\n background: #4f46e5;\n opacity: 0.25;\n}\n\n.jey-theme-label {\n font-weight: 600;\n font-size: var(--text-base);\n margin-bottom: 2px;\n}\n\n.jey-theme-info {\n font-size: var(--text-sm);\n color: var(--text-muted);\n}\n\n/* ==========================================================================\n Module Widget Cards \u2014 Entrance & Hover Animations\n ========================================================================== */\n\n/* --- Animation variant #2 (final): Slide-up entrance + Accent Bar hover --- */\n\n/* Entrance: fade-in slide-up (from variant #1) */\n.ce-block .links-widget-box,\n.ce-block .number-widget-box {\n opacity: 0;\n transform: translateY(24px) scale(0.97);\n animation: jey-card-in 0.7s cubic-bezier(0.22, 1, 0.36, 1) forwards;\n border-radius: var(--border-radius-lg, 12px);\n transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1),\n box-shadow 0.35s ease;\n position: relative;\n}\n\n/* Number card value \u2014 delayed fade-in after card entrance */\n@keyframes jey-number-in {\n from { opacity: 0; transform: translateY(6px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.number-widget-box .widget-content .number {\n animation: jey-number-in 0.5s cubic-bezier(0.22, 1, 0.36, 1) 0.3s both;\n}\n\n/* Allow dropdown menus (card actions) to escape the widget box.\n Without this, .widget-control .dropdown-menu is clipped/hidden behind\n the widget because Popper renders it as a sibling inside the box. */\n.ce-block .links-widget-box .widget-control .dropdown-menu,\n.ce-block .number-widget-box .widget-control .dropdown-menu {\n z-index: 1050;\n}\n\n/* Stagger delays */\n.ce-block:nth-child(1) .links-widget-box,\n.ce-block:nth-child(1) .number-widget-box { animation-delay: 0.00s; }\n.ce-block:nth-child(2) .links-widget-box,\n.ce-block:nth-child(2) .number-widget-box { animation-delay: 0.06s; }\n.ce-block:nth-child(3) .links-widget-box,\n.ce-block:nth-child(3) .number-widget-box { animation-delay: 0.12s; }\n.ce-block:nth-child(4) .links-widget-box,\n.ce-block:nth-child(4) .number-widget-box { animation-delay: 0.18s; }\n.ce-block:nth-child(5) .links-widget-box,\n.ce-block:nth-child(5) .number-widget-box { animation-delay: 0.24s; }\n.ce-block:nth-child(6) .links-widget-box,\n.ce-block:nth-child(6) .number-widget-box { animation-delay: 0.30s; }\n.ce-block:nth-child(7) .links-widget-box,\n.ce-block:nth-child(7) .number-widget-box { animation-delay: 0.36s; }\n.ce-block:nth-child(8) .links-widget-box,\n.ce-block:nth-child(8) .number-widget-box { animation-delay: 0.42s; }\n.ce-block:nth-child(9) .links-widget-box,\n.ce-block:nth-child(9) .number-widget-box { animation-delay: 0.48s; }\n.ce-block:nth-child(10) .links-widget-box,\n.ce-block:nth-child(10) .number-widget-box { animation-delay: 0.54s; }\n.ce-block:nth-child(11) .links-widget-box,\n.ce-block:nth-child(11) .number-widget-box { animation-delay: 0.60s; }\n.ce-block:nth-child(12) .links-widget-box,\n.ce-block:nth-child(12) .number-widget-box { animation-delay: 0.66s; }\n\n@keyframes jey-card-in {\n from {\n opacity: 0;\n transform: translateY(24px) scale(0.97);\n }\n to {\n opacity: 1;\n transform: none;\n }\n}\n\n/* Hover: soft bottom accent line + lift */\n.ce-block .links-widget-box::after,\n.ce-block .number-widget-box::after {\n content: \"\";\n position: absolute;\n bottom: 0;\n left: 10%;\n right: 10%;\n height: 2.5px;\n border-radius: 2px 2px 0 0;\n background: var(--primary, #2490ef);\n transform: scaleX(0);\n transition: transform 0.35s cubic-bezier(0.22, 1, 0.36, 1);\n transform-origin: center;\n}\n\n.ce-block .links-widget-box:hover::after,\n.ce-block .number-widget-box:hover::after {\n transform: scaleX(1);\n}\n\n.ce-block .links-widget-box:hover,\n.ce-block .number-widget-box:hover {\n transform: translateY(-3px);\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08),\n 0 2px 6px rgba(0, 0, 0, 0.04);\n}\n\n/* Lift widget above its siblings while hovered or while its card-actions\n dropdown is open, so the dropdown menu (which lives inside the widget's\n own stacking context due to transform) is not covered by neighbours. */\n.ce-block .links-widget-box:hover,\n.ce-block .number-widget-box:hover,\n.ce-block .links-widget-box:focus-within,\n.ce-block .number-widget-box:focus-within {\n z-index: 100;\n}\n\n.ce-block .links-widget-box:has(.dropdown-menu.show),\n.ce-block .number-widget-box:has(.dropdown-menu.show) {\n z-index: 200;\n}\n\n\n/* Link items: colored left accent bar slides in */\n.links-widget-box .link-item {\n position: relative;\n transition: background 0.25s ease, transform 0.25s ease;\n border-radius: var(--border-radius, 8px);\n overflow: hidden;\n}\n\n.links-widget-box .link-item:hover {\n transform: translateX(6px);\n background: var(--subtle-fg, rgba(0, 0, 0, 0.02));\n}\n\n.links-widget-box .link-item .es-icon {\n display: none !important;\n}\n\n\n/* ==========================================================================\n Select Field \u2014 Custom chevron icon\n ========================================================================== */\n\n.select-icon svg {\n display: none !important;\n}\n\n.select-icon {\n top: 0 !important;\n bottom: 0 !important;\n display: flex !important;\n align-items: center !important;\n}\n\n.select-icon::after {\n content: \"\" !important;\n display: block;\n width: 12px;\n height: 12px;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23636e72' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E\");\n background-size: contain;\n background-repeat: no-repeat;\n background-position: center;\n}\n\n/* ==========================================================================\n Empty State \u2014 Custom folder icon\n ========================================================================== */\n\n.msg-box .icon-xl {\n display: none !important;\n}\n\n.msg-box .mb-4 {\n display: flex;\n justify-content: center;\n}\n\n.msg-box .mb-4::after {\n content: \"\" !important;\n display: block;\n width: 48px;\n height: 48px;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23b0b8c0' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='22 12 16 12 14 15 10 15 8 12 2 12'/%3E%3Cpath d='M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z'/%3E%3C/svg%3E\");\n background-size: contain;\n background-repeat: no-repeat;\n background-position: center;\n}\n\n/* ==========================================================================\n Hide \"Getting Started\" onboarding panels\n ========================================================================== */\n\n.user-onboarding {\n display: none !important;\n}\n\n/* ==========================================================================\n Comment-count icon override\n jey_theme.js swaps the sprite href from #es-line-chat-alt (filled)\n to a lucide stroke-based icon. The SVG element still carries .es-icon\n (fill: currentColor; stroke-width: 0), which would render the new\n icon as a solid black shape \u2014 force stroke rendering here.\n ========================================================================== */\n.comment-count svg {\n fill: none !important;\n stroke: currentColor !important;\n stroke-width: 1.5 !important;\n stroke-linecap: round;\n stroke-linejoin: round;\n}\n\n/* ==========================================================================\n Activity panel & comment input \u2014 transparent background\n Frappe core paints .activity-title / .timeline-actions with var(--bg-color),\n .frappe-control .ql-editor with var(--control-bg), and the form footer's\n .comment-box wraps the input area; strip them all so the activity panel\n and comment composer blend with the form background.\n ========================================================================== */\n.new-timeline .activity-title,\n.new-timeline .timeline-actions,\n.comment-box,\n.comment-input-wrapper,\n.comment-input-wrapper .ql-container,\n.comment-input-wrapper .frappe-control .ql-editor {\n background: transparent !important;\n border-color: transparent !important;\n box-shadow: none !important;\n}\n\n/* List view \u2014 period (Between) filter sized to fit \"DD/MM/YYYY to DD/MM/YYYY\". */\n.standard-filter-section .frappe-control.jey-period-filter {\n flex: 0 0 auto;\n min-width: 200px;\n}\n.standard-filter-section .frappe-control.jey-period-filter input {\n min-width: 200px;\n}\n\n/* Grid \"Configure Columns\" dialog \u2014 let rows grow when label wraps.\n Frappe hardcodes height:32px inline on each .fields_order row in\n grid_row.js, which clips long translated labels (eg. Azerbaijani\n \"\u018Fsas Tarif (Anbar \u00D6l\u00E7\u00FC Vahidin\u0259 g\u00F6r\u0259)\") so the wrapped portion\n overflows into the next row and into the help text below. Switch\n to flex centering with min-height so rows grow with content. */\n.control-input.fields_order {\n height: auto !important;\n min-height: 32px;\n display: flex;\n align-items: center;\n}\n.control-input.fields_order > .row {\n width: 100%;\n align-items: center;\n margin: 0;\n}\n.control-input.fields_order > .row > [class*=\"col-\"] {\n padding-top: 0 !important;\n margin-top: 0 !important;\n}\n\n/* ===== theme_chrome.css ===== */\n/* ==========================================================================\n THEME: Chrome [data-jey-theme=\"chrome\"]\n Metallic chrome button with conic-gradient rings and rotating glow.\n ========================================================================== */\n\n@keyframes jey-chrome-rotate-glow {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n\n@keyframes jey-chrome-face-light {\n 0% { background: radial-gradient(circle at 25% 20%, rgba(255,255,255,0.5) 0%, transparent 55%); }\n 25% { background: radial-gradient(circle at 75% 25%, rgba(255,255,255,0.5) 0%, transparent 55%); }\n 50% { background: radial-gradient(circle at 70% 75%, rgba(255,255,255,0.35) 0%, transparent 55%); }\n 75% { background: radial-gradient(circle at 25% 70%, rgba(255,255,255,0.35) 0%, transparent 55%); }\n 100% { background: radial-gradient(circle at 25% 20%, rgba(255,255,255,0.5) 0%, transparent 55%); }\n}\n\n@keyframes jey-chrome-refl-drift {\n 0%, 100% { top: 12%; opacity: 0.7; }\n 50% { top: 18%; opacity: 0.5; }\n}\n\n[data-jey-theme=\"chrome\"] .jey-chrome {\n width: 72px; height: 72px; border-radius: 50%; position: relative;\n background: radial-gradient(ellipse at 35% 20%, rgba(255,255,255,0.7) 0%, transparent 55%), linear-gradient(180deg, #e0e0e0 0%, #b8b8b8 100%);\n box-shadow: 0 4px 10px rgba(0,0,0,0.18), 0 1px 3px rgba(0,0,0,0.1), inset 0 1px 1px rgba(255,255,255,0.7);\n transition: box-shadow 0.3s ease;\n}\n\n[data-jey-theme=\"chrome\"] .desktop-icon:hover .jey-chrome {\n box-shadow: 0 6px 16px rgba(0,0,0,0.22), 0 1px 3px rgba(0,0,0,0.12), 0 0 14px rgba(255,255,255,0.2), inset 0 1px 1px rgba(255,255,255,0.7);\n}\n\n[data-jey-theme=\"chrome\"] .jey-chrome-ring {\n position: absolute; inset: 2px; border-radius: 50%;\n background: conic-gradient(from 140deg, #a0a0a0 0deg, #f2f2f2 40deg, #777 80deg, #e5e5e5 120deg, #959595 170deg, #ededed 210deg, #808080 260deg, #d8d8d8 310deg, #a0a0a0 360deg);\n box-shadow: inset 0 1px 2px rgba(0,0,0,0.2); overflow: hidden;\n}\n\n[data-jey-theme=\"chrome\"] .jey-ring-glow {\n position: absolute; inset: -10px; border-radius: 50%;\n background: conic-gradient(from 0deg, transparent 0deg, transparent 140deg, rgba(255,255,255,0.55) 165deg, rgba(255,255,255,0.8) 180deg, rgba(255,255,255,0.55) 195deg, transparent 220deg, transparent 360deg);\n animation: jey-chrome-rotate-glow 8s linear infinite; pointer-events: none;\n}\n\n[data-jey-theme=\"chrome\"] .jey-chrome-gap {\n position: absolute; inset: 5px; border-radius: 50%;\n background: linear-gradient(180deg, #888 0%, #aaa 50%, #999 100%);\n box-shadow: inset 0 1px 3px rgba(0,0,0,0.35), inset 0 -1px 1px rgba(255,255,255,0.2);\n}\n\n[data-jey-theme=\"chrome\"] .jey-chrome-ring-inner {\n position: absolute; inset: 6px; border-radius: 50%;\n background: conic-gradient(from 200deg, #b0b0b0 0deg, #eee 30deg, #999 70deg, #ddd 110deg, #aaa 160deg, #f0f0f0 200deg, #909090 250deg, #ccc 300deg, #b0b0b0 360deg);\n box-shadow: inset 0 1px 1px rgba(0,0,0,0.15);\n}\n\n[data-jey-theme=\"chrome\"] .jey-chrome-face {\n position: absolute; inset: 9px; border-radius: 50%; overflow: hidden;\n background: linear-gradient(168deg, #f4f4f4 0%, #e0e0e0 45%, #d4d4d4 100%);\n box-shadow: inset 0 3px 7px rgba(255,255,255,0.7), inset 0 -3px 6px rgba(0,0,0,0.06);\n display: flex; align-items: center; justify-content: center;\n}\n\n[data-jey-theme=\"chrome\"] .jey-face-glow {\n position: absolute; inset: 0; border-radius: 50%;\n animation: jey-chrome-face-light 8s ease-in-out infinite;\n pointer-events: none; z-index: 1;\n}\n\n[data-jey-theme=\"chrome\"] .jey-face-reflection {\n position: absolute; top: 15%; left: 10%; width: 80%; height: 30%;\n background: linear-gradient(180deg, rgba(255,255,255,0.6) 0%, rgba(255,255,255,0.15) 60%, transparent 100%);\n border-radius: 50%; pointer-events: none; z-index: 1;\n animation: jey-chrome-refl-drift 10s ease-in-out infinite;\n}\n\n[data-jey-theme=\"chrome\"] .jey-chrome-face .jey-icon {\n width: 24px !important; height: 24px !important;\n stroke: #505050 !important; fill: none !important;\n stroke-width: 1.8 !important; stroke-linecap: round !important; stroke-linejoin: round !important;\n filter: drop-shadow(0 1px 0 rgba(255,255,255,0.5)) !important;\n position: relative; z-index: 2;\n}\n\n\n/* ==========================================================================\n FULL APP CHROME THEME\n Real metallic chrome with 45\u00B0 multi-stop reflective gradients,\n brushed metal textures, beveled edges, and conic-gradient accents.\n ========================================================================== */\n\n/* --- Shine sweep animation for interactive elements --- */\n@keyframes jey-chrome-shine {\n 0% { transform: translateX(-100%) skewX(-15deg); }\n 100% { transform: translateX(200%) skewX(-15deg); }\n}\n\n/* ==========================================================================\n CSS Variable Overrides\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] {\n /* --- Surfaces --- */\n --bg-color: #d8d8d8;\n --fg-color: #e8e8e8;\n --card-bg: #e0e0e0;\n --subtle-accent: #d4d4d4;\n --subtle-fg: #d0d0d0;\n --fg-hover-color: #ccc;\n --highlight-color: #d4d4d4;\n --navbar-bg: #d0d0d0;\n --modal-bg: #ddd;\n --toast-bg: #ddd;\n --popover-bg: #e0e0e0;\n --control-bg: #d5d5d5;\n --control-bg-on-gray: #ccc;\n --awesomebar-focus-bg: #e8e8e8;\n --disabled-control-bg: #d0d0d0;\n --skeleton-bg: #c8c8c8;\n --surface-menu-bar: #d4d4d4;\n --surface-white: #e0e0e0;\n --surface-gray-1: #d8d8d8;\n --surface-gray-2: #d0d0d0;\n --surface-gray-3: #c8c8c8;\n --surface-gray-4: #bbb;\n --surface-modal: #ddd;\n --placeholder-color: #ccc;\n\n /* --- Sidebar --- */\n --sidebar-hover-color: #c8c8c8;\n --sidebar-active-color: #d8d8d8;\n --sidebar-border-color: #aaa;\n --divider-color: #b0b0b0;\n\n /* --- Text --- */\n --heading-color: #333;\n --text-color: #404040;\n --text-neutral: #333;\n --text-muted: #666;\n --text-light: #888;\n --text-dark: #f0f0f0;\n --disabled-text-color: #888;\n --ink-gray-7: #555;\n --ink-gray-8: #404040;\n --ink-gray-9: #333;\n\n /* --- Borders --- */\n --border-color: #aaa;\n --dark-border-color: #999;\n --table-border-color: #aaa;\n --btn-group-border-color: #999;\n --outline-gray-1: #b0b0b0;\n --outline-gray-2: #999;\n --outline-gray-modals: #aaa;\n\n /* --- Primary / Buttons --- */\n --primary: #555;\n --brand-color: #555;\n --btn-primary: #777;\n --btn-default-bg: #ccc;\n --btn-default-hover-bg: #bbb;\n --btn-ghost-hover-bg: #c0c0c0;\n --border-primary: #777;\n\n /* --- Shadows (beveled metallic) --- */\n --shadow-xs: 1px 1px 2px rgba(0,0,0,0.15), -1px -1px 1px rgba(255,255,255,0.5);\n --shadow-sm: 1px 1px 3px rgba(0,0,0,0.18), -1px -1px 2px rgba(255,255,255,0.45);\n --shadow-base: 2px 2px 4px rgba(0,0,0,0.15), -1px -1px 2px rgba(255,255,255,0.4);\n --shadow-md: 2px 2px 6px rgba(0,0,0,0.18), -1px -1px 3px rgba(255,255,255,0.35);\n --shadow-lg: 3px 3px 10px rgba(0,0,0,0.15), -2px -2px 5px rgba(255,255,255,0.3);\n --shadow-xl: 4px 4px 16px rgba(0,0,0,0.18), -2px -2px 6px rgba(255,255,255,0.25);\n --shadow-2xl: 6px 6px 24px rgba(0,0,0,0.2), -3px -3px 8px rgba(255,255,255,0.2);\n --shadow-inset: inset 0px -1px 0px #999;\n --btn-shadow: 1px 1px 2px rgba(0,0,0,0.15), -1px -1px 1px rgba(255,255,255,0.4);\n --card-shadow: 2px 2px 6px rgba(0,0,0,0.12), -1px -1px 3px rgba(255,255,255,0.4);\n --modal-shadow: 6px 6px 30px rgba(0,0,0,0.3), -3px -3px 10px rgba(255,255,255,0.15);\n --awesomebar-shadow: 3px 3px 12px rgba(0,0,0,0.15), -2px -2px 6px rgba(255,255,255,0.3);\n\n /* --- Focus rings --- */\n --focus-default: 0 0 0 2px rgba(150,150,150,0.5);\n\n /* --- Scrollbar --- */\n --scrollbar-thumb-color: #999;\n --scrollbar-track-color: #c8c8c8;\n\n /* --- Checkbox / Switch --- */\n --switch-bg: #aaa;\n --checkbox-color: #555;\n --checkbox-gradient: linear-gradient(180deg, #777 0%, #666 100%);\n\n /* --- Timeline --- */\n --timeline-badge-color: #555;\n --timeline-badge-bg: #ccc;\n\n /* --- Date picker --- */\n --date-active-bg: #777;\n --date-active-text: #f0f0f0;\n --date-range-bg: #ccc;\n\n /* --- Progress / Misc --- */\n --progress-bar-bg: #777;\n --code-block-bg: #444;\n --code-block-text: #ccc;\n}\n\n\n/* ==========================================================================\n Body \u2014 Brushed Metal Background\n 3 layered repeating-gradients at different lengths = realistic grain\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] body {\n background:\n radial-gradient(ellipse at 25% 15%, rgba(255,255,255,0.45) 0%, transparent 50%),\n radial-gradient(ellipse at 80% 80%, rgba(255,255,255,0.2) 0%, transparent 45%),\n radial-gradient(ellipse at 50% 50%, rgba(0,0,0,0.03) 0%, transparent 70%),\n linear-gradient(168deg, #d8d8d8 0%, #c4c4c4 40%, #b8b8b8 70%, #c8c8c8 100%) !important;\n background-attachment: fixed !important;\n}\n\n[data-jey-theme=\"chrome\"] .page-container {\n background: transparent !important;\n}\n\n\n/* ==========================================================================\n Navbar \u2014 Reflective Chrome Bar\n 45\u00B0 multi-stop gradient simulating polished metal reflection\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] .navbar {\n background:\n linear-gradient(45deg, #aaa 2%, #ddd 8%, #bbb 18%, #e8e8e8 30%, #ccc 45%, #eee 55%, #bbb 68%, #ddd 80%, #aaa 95%) !important;\n border-bottom: 1px solid #888 !important;\n box-shadow:\n inset 0 1px 0 rgba(255,255,255,0.7),\n inset 0 -1px 0 rgba(0,0,0,0.08),\n 0 2px 4px rgba(0,0,0,0.15) !important;\n}\n\n[data-jey-theme=\"chrome\"] .navbar .navbar-nav .nav-link {\n color: #444 !important;\n text-shadow: 0 1px 0 rgba(255,255,255,0.5);\n}\n\n[data-jey-theme=\"chrome\"] .navbar .navbar-nav .nav-link:hover {\n color: #222 !important;\n background: linear-gradient(180deg, rgba(255,255,255,0.35) 0%, rgba(255,255,255,0.1) 100%) !important;\n border-radius: 6px;\n}\n\n\n/* ==========================================================================\n Awesomebar \u2014 Sunken Metal Slot\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] .search-bar input {\n background: linear-gradient(180deg, #c0c0c0 0%, #d0d0d0 100%) !important;\n border: 1px solid #999 !important;\n box-shadow:\n inset 0 2px 4px rgba(0,0,0,0.15),\n inset 0 0 0 1px rgba(0,0,0,0.05),\n 0 1px 0 rgba(255,255,255,0.5) !important;\n color: #333 !important;\n border-radius: 6px !important;\n}\n\n[data-jey-theme=\"chrome\"] .search-bar input:focus {\n background: linear-gradient(180deg, #d5d5d5 0%, #e0e0e0 100%) !important;\n border-color: #888 !important;\n box-shadow:\n inset 0 1px 3px rgba(0,0,0,0.1),\n 0 0 0 2px rgba(150,150,150,0.3),\n 0 1px 0 rgba(255,255,255,0.4) !important;\n}\n\n[data-jey-theme=\"chrome\"] .search-bar .search-icon {\n color: #777 !important;\n}\n\n\n/* ==========================================================================\n Sidebar \u2014 Brushed Metal Panel\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] .body-sidebar-container {\n background: linear-gradient(160deg, #b8b8b8 0%, #f0f0f0 12%, #c0c0c0 28%, #f4f4f4 42%, #b8b8b8 58%, #ededed 72%, #aaa 88%, #ddd 100%) !important;\n border-right: 1px solid #888 !important;\n box-shadow:\n inset -1px 0 0 rgba(255,255,255,0.6),\n inset 0 1px 0 rgba(255,255,255,0.7),\n inset 0 -1px 0 rgba(0,0,0,0.1),\n 2px 0 8px rgba(0,0,0,0.12) !important;\n}\n\n[data-jey-theme=\"chrome\"] .body-sidebar-container .body-sidebar,\n[data-jey-theme=\"chrome\"] .body-sidebar-container .body-sidebar-top,\n[data-jey-theme=\"chrome\"] .body-sidebar-container .body-sidebar-bottom,\n[data-jey-theme=\"chrome\"] .body-sidebar-container .body-sidebar-cards {\n background: transparent !important;\n}\n\n[data-jey-theme=\"chrome\"] .body-sidebar .standard-sidebar-item .item-anchor:hover {\n background: linear-gradient(90deg, rgba(255,255,255,0.25) 0%, rgba(255,255,255,0.05) 100%) !important;\n}\n\n[data-jey-theme=\"chrome\"] .body-sidebar .standard-sidebar-item.active-sidebar .item-anchor {\n background: linear-gradient(45deg, #bbb 5%, #ddd 30%, #ccc 60%, #ddd 90%) !important;\n box-shadow:\n inset 0 1px 0 rgba(255,255,255,0.6),\n inset 0 -1px 0 rgba(0,0,0,0.08),\n 1px 1px 2px rgba(0,0,0,0.1),\n -1px -1px 1px rgba(255,255,255,0.3) !important;\n border-radius: 8px;\n}\n\n[data-jey-theme=\"chrome\"] .body-sidebar .sidebar-item-icon {\n color: #666 !important;\n filter: drop-shadow(0 1px 0 rgba(255,255,255,0.5));\n}\n\n\n/* ==========================================================================\n Context Menu \u2014 Themed icons\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] .frappe-menu .menu-item-icon .jey-icon {\n width: 20px !important;\n height: 20px !important;\n stroke: #555 !important;\n fill: none !important;\n stroke-width: 1.8 !important;\n stroke-linecap: round !important;\n stroke-linejoin: round !important;\n filter: drop-shadow(0 1px 0 rgba(255,255,255,0.4)) !important;\n}\n\n\n/* ==========================================================================\n Sidebar Header \u2014 Themed icon\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] .sidebar-header .header-logo .jey-icon {\n width: 22px !important;\n height: 22px !important;\n stroke: #555 !important;\n fill: none !important;\n stroke-width: 1.8 !important;\n stroke-linecap: round !important;\n stroke-linejoin: round !important;\n filter: drop-shadow(0 1px 0 rgba(255,255,255,0.4)) !important;\n}\n\n\n/* ==========================================================================\n Primary Buttons \u2014 Polished Chrome with Shine\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] .btn-primary {\n background: linear-gradient(45deg, #666 5%, #aaa 10%, #888 30%, #999 50%, #888 70%, #aaa 85%, #666 95%) !important;\n color: #f0f0f0 !important;\n border: 1px solid #555 !important;\n box-shadow:\n 2px 2px 4px rgba(0,0,0,0.2),\n -1px -1px 2px rgba(255,255,255,0.15),\n inset 0 1px 0 rgba(255,255,255,0.3),\n inset 0 -1px 0 rgba(0,0,0,0.15),\n inset 2px 2px 5px rgba(0,0,0,0),\n inset -1px -1px 2px rgba(255,255,255,0) !important;\n text-shadow: 0 -1px 0 rgba(0,0,0,0.25);\n position: relative;\n overflow: hidden;\n transition:\n box-shadow 0.25s cubic-bezier(0.22, 1, 0.36, 1),\n border-color 0.25s cubic-bezier(0.22, 1, 0.36, 1) !important;\n}\n\n[data-jey-theme=\"chrome\"] .btn-primary::before {\n content: \"\";\n position: absolute;\n top: 0; left: -50%; width: 30%; height: 100%;\n background: linear-gradient(90deg, transparent, rgba(255,255,255,0.25), transparent);\n transform: skewX(-15deg);\n transition: left 0.4s ease;\n pointer-events: none;\n}\n\n[data-jey-theme=\"chrome\"] .btn-primary:hover::before {\n left: 120%;\n}\n\n[data-jey-theme=\"chrome\"] .btn-primary:hover {\n background: linear-gradient(45deg, #777 5%, #bbb 10%, #999 30%, #aaa 50%, #999 70%, #bbb 85%, #777 95%) !important;\n box-shadow:\n 2px 2px 6px rgba(0,0,0,0.25),\n -1px -1px 3px rgba(255,255,255,0.2),\n inset 0 1px 0 rgba(255,255,255,0.35),\n inset 0 -1px 0 rgba(0,0,0,0.15),\n inset 2px 2px 5px rgba(0,0,0,0),\n inset -1px -1px 2px rgba(255,255,255,0) !important;\n}\n\n[data-jey-theme=\"chrome\"] .btn-primary:active {\n background: linear-gradient(45deg, #555 5%, #888 10%, #777 30%, #888 50%, #777 70%, #888 85%, #555 95%) !important;\n box-shadow:\n 2px 2px 4px rgba(0,0,0,0),\n -1px -1px 2px rgba(255,255,255,0),\n inset 0 1px 0 rgba(255,255,255,0),\n inset 0 -1px 0 rgba(0,0,0,0.05),\n inset 3px 3px 7px rgba(0,0,0,0.35),\n inset -1px -1px 2px rgba(255,255,255,0.12) !important;\n transition: box-shadow 0.08s ease-out !important;\n}\n\n\n/* ==========================================================================\n Default/Secondary Buttons \u2014 Brushed Metal\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] .btn-default,\n[data-jey-theme=\"chrome\"] .btn-secondary {\n background: linear-gradient(45deg, #bbb 5%, #eee 10%, #ccc 30%, #e0e0e0 50%, #ccc 70%, #eee 85%, #bbb 95%) !important;\n border: 1px solid #999 !important;\n color: #444 !important;\n box-shadow:\n 1px 1px 3px rgba(0,0,0,0.12),\n -1px -1px 2px rgba(255,255,255,0.4),\n inset 0 1px 0 rgba(255,255,255,0.6),\n inset 0 -1px 0 rgba(0,0,0,0.06),\n inset 2px 2px 4px rgba(0,0,0,0),\n inset -1px -1px 1px rgba(255,255,255,0) !important;\n text-shadow: 0 1px 0 rgba(255,255,255,0.5);\n transition:\n box-shadow 0.25s cubic-bezier(0.22, 1, 0.36, 1),\n border-color 0.25s cubic-bezier(0.22, 1, 0.36, 1) !important;\n}\n\n[data-jey-theme=\"chrome\"] .btn-default:hover,\n[data-jey-theme=\"chrome\"] .btn-secondary:hover {\n background: linear-gradient(45deg, #c0c0c0 5%, #f2f2f2 10%, #d4d4d4 30%, #e8e8e8 50%, #d4d4d4 70%, #f2f2f2 85%, #c0c0c0 95%) !important;\n border-color: #888 !important;\n box-shadow:\n 2px 2px 4px rgba(0,0,0,0.15),\n -1px -1px 2px rgba(255,255,255,0.4),\n inset 0 1px 0 rgba(255,255,255,0.7),\n inset 0 -1px 0 rgba(0,0,0,0.06),\n inset 2px 2px 4px rgba(0,0,0,0),\n inset -1px -1px 1px rgba(255,255,255,0) !important;\n}\n\n[data-jey-theme=\"chrome\"] .btn-default:active,\n[data-jey-theme=\"chrome\"] .btn-secondary:active {\n background: linear-gradient(45deg, #aaa 5%, #d8d8d8 10%, #bbb 30%, #ccc 50%, #bbb 70%, #d8d8d8 85%, #aaa 95%) !important;\n box-shadow:\n 1px 1px 3px rgba(0,0,0,0),\n -1px -1px 2px rgba(255,255,255,0),\n inset 0 1px 0 rgba(255,255,255,0),\n inset 0 -1px 0 rgba(0,0,0,0.05),\n inset 3px 3px 6px rgba(0,0,0,0.3),\n inset -1px -1px 1px rgba(255,255,255,0.15) !important;\n transition: box-shadow 0.08s ease-out !important;\n}\n\n/* Danger */\n[data-jey-theme=\"chrome\"] .btn-danger {\n background: linear-gradient(45deg, #b33 5%, #e88 10%, #c55 30%, #d77 50%, #c55 70%, #e88 85%, #b33 95%) !important;\n color: #fff !important;\n border: 1px solid #944 !important;\n box-shadow:\n 2px 2px 4px rgba(0,0,0,0.2),\n -1px -1px 2px rgba(255,255,255,0.1),\n inset 0 1px 0 rgba(255,255,255,0.25) !important;\n text-shadow: 0 -1px 0 rgba(0,0,0,0.2);\n}\n\n[data-jey-theme=\"chrome\"] .btn-danger:hover {\n background: linear-gradient(45deg, #c44 5%, #f99 10%, #d66 30%, #e88 50%, #d66 70%, #f99 85%, #c44 95%) !important;\n}\n\n/* Ghost */\n[data-jey-theme=\"chrome\"] .btn-ghost:hover {\n background: linear-gradient(180deg, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.05) 100%) !important;\n}\n\n\n/* ==========================================================================\n Input Fields \u2014 Sunken Metal Inset\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] input.form-control:not([type=\"checkbox\"]):not([type=\"radio\"]),\n[data-jey-theme=\"chrome\"] textarea.form-control {\n background: #d0d0d0 !important;\n border: 1px solid #999 !important;\n color: #333 !important;\n box-shadow:\n inset 1px 1px 2px rgba(0,0,0,0.10),\n inset -1px -1px 1px rgba(255,255,255,0.25),\n inset 0 1px 1px rgba(0,0,0,0.04) !important;\n transition:\n background-color 0.45s cubic-bezier(0.22, 1, 0.36, 1),\n border-color 0.45s cubic-bezier(0.22, 1, 0.36, 1),\n box-shadow 0.45s cubic-bezier(0.22, 1, 0.36, 1) !important;\n}\n\n[data-jey-theme=\"chrome\"] input.form-control:not([type=\"checkbox\"]):not([type=\"radio\"]):focus,\n[data-jey-theme=\"chrome\"] textarea.form-control:focus {\n background: #cbcbcb !important;\n border-color: #777 !important;\n box-shadow:\n inset 4px 4px 8px rgba(0,0,0,0.28),\n inset -1px -1px 1px rgba(255,255,255,0.15),\n inset 0 3px 5px rgba(0,0,0,0.18) !important;\n}\n\n[data-jey-theme=\"chrome\"] .form-control:disabled,\n[data-jey-theme=\"chrome\"] .form-control[disabled] {\n background: #d8d8d8 !important;\n color: #888 !important;\n box-shadow: inset 1px 1px 2px rgba(0,0,0,0.06) !important;\n}\n\n[data-jey-theme=\"chrome\"] .frappe-control .control-label,\n[data-jey-theme=\"chrome\"] .frappe-control label {\n color: #444 !important;\n text-shadow: 0 1px 0 rgba(255,255,255,0.5);\n}\n\n[data-jey-theme=\"chrome\"] select.form-control,\n[data-jey-theme=\"chrome\"] select.input-with-feedback {\n background: #d0d0d0 !important;\n}\n\n\n/* ==========================================================================\n Forms / Cards \u2014 Raised Metal Panels\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] .form-page {\n background:\n linear-gradient(45deg, #ccc 3%, #e8e8e8 10%, #d5d5d5 25%, #eee 45%, #d8d8d8 60%, #e8e8e8 80%, #ccc 97%) !important;\n border: 1px solid #aaa !important;\n box-shadow:\n 3px 3px 8px rgba(0,0,0,0.12),\n -2px -2px 4px rgba(255,255,255,0.4),\n inset 0 1px 0 rgba(255,255,255,0.7),\n inset 0 -1px 0 rgba(0,0,0,0.05) !important;\n border-radius: var(--border-radius-lg) !important;\n}\n\n[data-jey-theme=\"chrome\"] .form-section .section-head {\n color: #444 !important;\n text-shadow: 0 1px 0 rgba(255,255,255,0.5);\n border-bottom: 1px solid #b0b0b0 !important;\n position: relative;\n}\n\n[data-jey-theme=\"chrome\"] .frappe-card {\n background: linear-gradient(45deg, #c8c8c8 3%, #e5e5e5 12%, #d4d4d4 30%, #eaeaea 50%, #d4d4d4 70%, #e5e5e5 88%, #c8c8c8 97%) !important;\n border: 1px solid #aaa !important;\n box-shadow:\n 2px 2px 6px rgba(0,0,0,0.1),\n -1px -1px 3px rgba(255,255,255,0.4),\n inset 0 1px 0 rgba(255,255,255,0.6) !important;\n}\n\n/* Form sidebar */\n[data-jey-theme=\"chrome\"] .form-sidebar {\n border-left: 1px solid #aaa !important;\n}\n\n[data-jey-theme=\"chrome\"] .form-sidebar .sidebar-section {\n border-bottom: 1px solid #b0b0b0 !important;\n}\n\n\n/* ==========================================================================\n Modals / Dialogs \u2014 Chrome Frame with Conic-Gradient Border\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] .modal-content {\n background: linear-gradient(45deg, #ccc 3%, #e8e8e8 12%, #d5d5d5 30%, #eee 50%, #d5d5d5 70%, #e8e8e8 88%, #ccc 97%) !important;\n border: 1px solid #999 !important;\n box-shadow:\n 6px 6px 24px rgba(0,0,0,0.25),\n -3px -3px 8px rgba(255,255,255,0.15),\n inset 0 1px 0 rgba(255,255,255,0.6),\n inset 0 0 0 1px rgba(255,255,255,0.35) !important;\n}\n\n[data-jey-theme=\"chrome\"] .modal-header {\n background: linear-gradient(45deg, #b0b0b0 5%, #ddd 12%, #c0c0c0 30%, #e5e5e5 50%, #c0c0c0 70%, #ddd 88%, #b0b0b0 95%) !important;\n border-bottom: 1px solid #999 !important;\n box-shadow:\n inset 0 1px 0 rgba(255,255,255,0.6),\n inset 0 -1px 0 rgba(0,0,0,0.06) !important;\n}\n\n[data-jey-theme=\"chrome\"] .modal-header .modal-title {\n color: #333 !important;\n text-shadow: 0 1px 0 rgba(255,255,255,0.5);\n}\n\n[data-jey-theme=\"chrome\"] .modal-footer {\n background: linear-gradient(45deg, #b8b8b8 5%, #d8d8d8 20%, #c0c0c0 50%, #d8d8d8 80%, #b8b8b8 95%) !important;\n border-top: 1px solid #999 !important;\n}\n\n[data-jey-theme=\"chrome\"] .modal-backdrop {\n background-color: rgba(40,40,40,0.55) !important;\n}\n\n\n/* ==========================================================================\n Page Head \u2014 Chrome Title Bar\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] .page-head {\n background: linear-gradient(45deg, #b8b8b8 3%, #e0e0e0 10%, #c8c8c8 25%, #eaeaea 45%, #ccc 60%, #e0e0e0 80%, #b8b8b8 97%) !important;\n border-bottom: 1px solid #999 !important;\n box-shadow:\n inset 0 1px 0 rgba(255,255,255,0.6),\n inset 0 -1px 0 rgba(0,0,0,0.06),\n 0 2px 4px rgba(0,0,0,0.08) !important;\n}\n\n[data-jey-theme=\"chrome\"] .page-head .title-text {\n color: #333 !important;\n text-shadow: 0 1px 0 rgba(255,255,255,0.5);\n}\n\n\n/* ==========================================================================\n List View \u2014 Metal Table\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] .list-row-head {\n background: linear-gradient(45deg, #aaa 3%, #d8d8d8 10%, #bbb 25%, #e0e0e0 45%, #bbb 60%, #d8d8d8 80%, #aaa 97%) !important;\n box-shadow:\n inset 0 1px 0 rgba(255,255,255,0.6),\n inset 0 -1px 0 rgba(0,0,0,0.06) !important;\n}\n\n[data-jey-theme=\"chrome\"] .list-row-container .list-row {\n border-bottom: 1px solid #b8b8b8 !important;\n}\n\n[data-jey-theme=\"chrome\"] .list-row-container:hover {\n background: linear-gradient(90deg, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.05) 100%) !important;\n}\n\n[data-jey-theme=\"chrome\"] .result .list-row-container .level-left .list-row--col .level-left .ellipsis {\n color: #404040 !important;\n}\n\n/* Sticky right column: blend with metallic body + visible separator.\n Uses a translucent bg so it reads continuous with body gradient while\n still covering horizontally-overflowing columns under it. */\n[data-jey-theme=\"chrome\"] .frappe-list .list-row .level-right,\n[data-jey-theme=\"chrome\"] .frappe-list .list-row-head .level-right {\n background: linear-gradient(90deg,\n rgba(216,216,216,0.85) 0%,\n rgba(208,208,208,0.88) 100%) !important;\n backdrop-filter: blur(3px);\n -webkit-backdrop-filter: blur(3px);\n border-left: 1px solid #a0a0a0 !important;\n box-shadow: inset 1px 0 0 rgba(255,255,255,0.5) !important;\n}\n\n[data-jey-theme=\"chrome\"] .frappe-list .list-row-container:hover .level-right {\n background: linear-gradient(90deg,\n rgba(224,224,224,0.9) 0%,\n rgba(216,216,216,0.92) 100%) !important;\n box-shadow:\n inset 1px 0 0 rgba(255,255,255,0.55),\n -6px 0 10px rgba(0,0,0,0.05) !important;\n}\n\n/* List sidebar */\n[data-jey-theme=\"chrome\"] .layout-side-section {\n border-right: 1px solid #aaa !important;\n}\n\n\n/* ==========================================================================\n Tables / Grids \u2014 Metallic Header & Rows\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] .frappe-control[data-fieldtype=\"Table\"] .form-grid {\n border: 1px solid #999 !important;\n}\n\n[data-jey-theme=\"chrome\"] .grid-heading-row {\n background: linear-gradient(45deg, #aaa 3%, #d5d5d5 10%, #bbb 30%, #ddd 50%, #bbb 70%, #d5d5d5 90%, #aaa 97%) !important;\n box-shadow:\n inset 0 1px 0 rgba(255,255,255,0.6),\n inset 0 -1px 0 rgba(0,0,0,0.06) !important;\n}\n\n[data-jey-theme=\"chrome\"] .grid-heading-row .static-area {\n color: #444 !important;\n text-shadow: 0 1px 0 rgba(255,255,255,0.5);\n}\n\n[data-jey-theme=\"chrome\"] .rows .grid-row:hover {\n background: linear-gradient(90deg, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.05) 100%) !important;\n}\n\n[data-jey-theme=\"chrome\"] .rows .grid-row {\n border-bottom: 1px solid #b8b8b8 !important;\n}\n\n[data-jey-theme=\"chrome\"] .grid-footer {\n background: transparent !important;\n border-top: 1px solid #999 !important;\n}\n\n/* --- Active (edit-mode) grid cells: identical look to the static row --- */\n/* Keep the row's bottom border visible even when in edit mode */\n[data-jey-theme=\"chrome\"] .rows .grid-row.editable-row,\n[data-jey-theme=\"chrome\"] .rows .grid-row:has(.editable-row) {\n border-bottom: 1px solid #b8b8b8 !important;\n}\n\n/* Flatten every form control inside a grid row \u2014 no bg, no border, no shadow.\n Scoped to .data-row so the row-edit modal (`.form-in-grid`, which is a\n sibling of .data-row inside .grid-row) keeps its normal field styling. */\n[data-jey-theme=\"chrome\"] .grid-row > .data-row input.form-control:not([type=\"checkbox\"]):not([type=\"radio\"]),\n[data-jey-theme=\"chrome\"] .grid-row > .data-row textarea.form-control,\n[data-jey-theme=\"chrome\"] .grid-row > .data-row select.form-control,\n[data-jey-theme=\"chrome\"] .grid-row > .data-row select.input-with-feedback,\n[data-jey-theme=\"chrome\"] .grid-row > .data-row .awesomplete input,\n[data-jey-theme=\"chrome\"] .grid-row > .data-row .like-disabled-input {\n background: transparent !important;\n border: 0 !important;\n box-shadow: none !important;\n outline: none !important;\n color: #333 !important;\n transition:\n box-shadow 0.45s cubic-bezier(0.22, 1, 0.36, 1),\n background 0.45s cubic-bezier(0.22, 1, 0.36, 1) !important;\n}\n\n/* Focused cell: pressed-in look \u2014 same shadow pattern as .btn-default:active */\n[data-jey-theme=\"chrome\"] .grid-row > .data-row input.form-control:not([type=\"checkbox\"]):not([type=\"radio\"]):focus,\n[data-jey-theme=\"chrome\"] .grid-row > .data-row textarea.form-control:focus,\n[data-jey-theme=\"chrome\"] .grid-row > .data-row select.form-control:focus,\n[data-jey-theme=\"chrome\"] .grid-row > .data-row select.input-with-feedback:focus,\n[data-jey-theme=\"chrome\"] .grid-row > .data-row .awesomplete input:focus {\n background: linear-gradient(45deg, #bbb 5%, #d8d8d8 10%, #c4c4c4 30%, #d0d0d0 50%, #c4c4c4 70%, #d8d8d8 85%, #bbb 95%) !important;\n border: 0 !important;\n outline: none !important;\n box-shadow:\n inset 0 1px 0 rgba(255,255,255,0),\n inset 0 -1px 0 rgba(0,0,0,0.05),\n inset 3px 3px 6px rgba(0,0,0,0.3),\n inset -1px -1px 1px rgba(255,255,255,0.15) !important;\n transition:\n box-shadow 0.45s cubic-bezier(0.22, 1, 0.36, 1),\n background 0.45s cubic-bezier(0.22, 1, 0.36, 1) !important;\n}\n\n/* Read-only cells \u2014 darker grey bg. Specificity matches the \"flatten\" rule above\n (tag.class + two :not()), so it wins over `background: transparent`. Frappe hides\n .field-area on inactive rows, so the tint only shows on the currently-active row. */\n[data-jey-theme=\"chrome\"] .grid-row > .data-row input.form-control:not([type=\"checkbox\"]):not([type=\"radio\"]):disabled,\n[data-jey-theme=\"chrome\"] .grid-row > .data-row input.form-control:not([type=\"checkbox\"]):not([type=\"radio\"])[disabled],\n[data-jey-theme=\"chrome\"] .grid-row > .data-row input.form-control:not([type=\"checkbox\"]):not([type=\"radio\"])[readonly],\n[data-jey-theme=\"chrome\"] .grid-row > .data-row textarea.form-control:disabled,\n[data-jey-theme=\"chrome\"] .grid-row > .data-row textarea.form-control[readonly],\n[data-jey-theme=\"chrome\"] .grid-row > .data-row select.form-control:disabled,\n[data-jey-theme=\"chrome\"] .grid-row > .data-row select.input-with-feedback:disabled {\n background: #d8d8d8 !important;\n box-shadow: none !important;\n color: #666 !important;\n}\n\n/* No pressed-in effect on focus for read-only cells */\n[data-jey-theme=\"chrome\"] .grid-row > .data-row input.form-control:not([type=\"checkbox\"]):not([type=\"radio\"]):disabled:focus,\n[data-jey-theme=\"chrome\"] .grid-row > .data-row input.form-control:not([type=\"checkbox\"]):not([type=\"radio\"])[disabled]:focus,\n[data-jey-theme=\"chrome\"] .grid-row > .data-row input.form-control:not([type=\"checkbox\"]):not([type=\"radio\"])[readonly]:focus,\n[data-jey-theme=\"chrome\"] .grid-row > .data-row textarea.form-control:disabled:focus,\n[data-jey-theme=\"chrome\"] .grid-row > .data-row textarea.form-control[readonly]:focus,\n[data-jey-theme=\"chrome\"] .grid-row > .data-row select.form-control:disabled:focus {\n background: #d8d8d8 !important;\n box-shadow: none !important;\n}\n\n/* Match static-row cell height: static cells use padding 10px 8px; form-control in\n Frappe uses padding-top:10px, padding-bottom: calc(--padding-md - 3px). Equalise so\n the active row doesn't grow or shrink compared to an idle row. */\n[data-jey-theme=\"chrome\"] .grid-row .editable-row .form-control {\n padding-top: 10px !important;\n padding-bottom: 10px !important;\n height: auto !important;\n}\n\n\n/* ==========================================================================\n Tabs \u2014 Metallic Tab Strip\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] .form-tabs .nav-link {\n color: #666 !important;\n text-shadow: 0 1px 0 rgba(255,255,255,0.4);\n}\n\n[data-jey-theme=\"chrome\"] .form-tabs .nav-link:hover {\n color: #444 !important;\n background: linear-gradient(180deg, rgba(255,255,255,0.3) 0%, rgba(255,255,255,0.05) 100%) !important;\n}\n\n[data-jey-theme=\"chrome\"] .form-tabs .nav-link.active {\n color: #333 !important;\n background: linear-gradient(180deg, rgba(255,255,255,0.2) 0%, transparent 100%) !important;\n}\n\n[data-jey-theme=\"chrome\"] .form-tabs .nav-link::after {\n background: #777;\n}\n\n\n/* ==========================================================================\n Dropdowns \u2014 Chrome Panel\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] .dropdown-menu {\n background: linear-gradient(45deg, #c0c0c0 3%, #e5e5e5 10%, #d0d0d0 30%, #eaeaea 50%, #d0d0d0 70%, #e5e5e5 90%, #c0c0c0 97%) !important;\n border: 1px solid #999 !important;\n box-shadow:\n 4px 4px 12px rgba(0,0,0,0.18),\n -2px -2px 4px rgba(255,255,255,0.15),\n inset 0 1px 0 rgba(255,255,255,0.6) !important;\n}\n\n[data-jey-theme=\"chrome\"] .dropdown-item {\n color: #444 !important;\n}\n\n[data-jey-theme=\"chrome\"] .dropdown-item:hover,\n[data-jey-theme=\"chrome\"] .dropdown-item:focus {\n background: linear-gradient(90deg, rgba(255,255,255,0.3) 0%, rgba(255,255,255,0.05) 100%) !important;\n color: #222 !important;\n}\n\n[data-jey-theme=\"chrome\"] .dropdown-divider {\n border-top-color: #aaa !important;\n}\n\n\n/* ==========================================================================\n Alerts / Toasts\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] .desk-alert {\n background: linear-gradient(45deg, #c0c0c0 5%, #e5e5e5 15%, #d0d0d0 40%, #e8e8e8 60%, #d0d0d0 85%, #c0c0c0 95%) !important;\n border: 1px solid #999 !important;\n box-shadow:\n 3px 3px 8px rgba(0,0,0,0.12),\n -1px -1px 3px rgba(255,255,255,0.3),\n inset 0 1px 0 rgba(255,255,255,0.5) !important;\n}\n\n\n/* ==========================================================================\n Breadcrumbs\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] .breadcrumb-container a {\n color: #666 !important;\n text-shadow: 0 1px 0 rgba(255,255,255,0.4);\n}\n\n[data-jey-theme=\"chrome\"] .breadcrumb-container a:hover {\n color: #333 !important;\n}\n\n\n/* ==========================================================================\n Timeline\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] .new-timeline::before {\n border-left-color: #aaa !important;\n}\n\n[data-jey-theme=\"chrome\"] .timeline-dot {\n background: linear-gradient(45deg, #bbb, #ddd, #bbb) !important;\n border: 1px solid #999 !important;\n box-shadow: 1px 1px 2px rgba(0,0,0,0.1), -1px -1px 1px rgba(255,255,255,0.3);\n}\n\n\n/* ==========================================================================\n Badges / Indicators\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] .indicator-pill {\n box-shadow:\n inset 0 1px 0 rgba(255,255,255,0.3),\n 1px 1px 1px rgba(0,0,0,0.08);\n}\n\n\n/* ==========================================================================\n Popovers\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] .popover {\n background: linear-gradient(45deg, #c0c0c0 3%, #e5e5e5 10%, #d0d0d0 30%, #eaeaea 50%, #d0d0d0 70%, #e5e5e5 90%, #c0c0c0 97%) !important;\n border: 1px solid #999 !important;\n box-shadow:\n 4px 4px 12px rgba(0,0,0,0.15),\n -2px -2px 4px rgba(255,255,255,0.2),\n inset 0 1px 0 rgba(255,255,255,0.5) !important;\n}\n\n[data-jey-theme=\"chrome\"] .popover .popover-body {\n color: #404040 !important;\n}\n\n\n/* ==========================================================================\n Module Widget Cards \u2014 Chrome Panels with Conic Border Accent\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] .ce-block .links-widget-box,\n[data-jey-theme=\"chrome\"] .ce-block .number-widget-box {\n background: linear-gradient(45deg, #c0c0c0 3%, #e5e5e5 12%, #d0d0d0 30%, #eaeaea 50%, #d0d0d0 70%, #e5e5e5 88%, #c0c0c0 97%) !important;\n border: 1px solid #aaa !important;\n box-shadow:\n 2px 2px 6px rgba(0,0,0,0.1),\n -1px -1px 3px rgba(255,255,255,0.35),\n inset 0 1px 0 rgba(255,255,255,0.6) !important;\n}\n\n[data-jey-theme=\"chrome\"] .ce-block .links-widget-box::after,\n[data-jey-theme=\"chrome\"] .ce-block .number-widget-box::after {\n background: conic-gradient(from 140deg, #a0a0a0, #e0e0e0, #888, #d0d0d0, #a0a0a0) !important;\n}\n\n[data-jey-theme=\"chrome\"] .ce-block .links-widget-box:hover,\n[data-jey-theme=\"chrome\"] .ce-block .number-widget-box:hover {\n box-shadow:\n 3px 3px 10px rgba(0,0,0,0.14),\n -2px -2px 5px rgba(255,255,255,0.3),\n inset 0 1px 0 rgba(255,255,255,0.7) !important;\n}\n\n\n/* ==========================================================================\n Scrollbars \u2014 Metal Cylinder\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] ::-webkit-scrollbar {\n width: 10px;\n height: 10px;\n}\n\n[data-jey-theme=\"chrome\"] ::-webkit-scrollbar-track {\n background: linear-gradient(90deg, #c0c0c0, #d0d0d0, #c0c0c0);\n}\n\n[data-jey-theme=\"chrome\"] ::-webkit-scrollbar-thumb {\n background: linear-gradient(90deg, #888, #bbb, #999, #bbb, #888);\n border-radius: 5px;\n border: 1px solid #999;\n}\n\n[data-jey-theme=\"chrome\"] ::-webkit-scrollbar-thumb:hover {\n background: linear-gradient(90deg, #777, #aaa, #888, #aaa, #777);\n}\n\n\n/* ==========================================================================\n Link Colors\n ========================================================================== */\n\n[data-jey-theme=\"chrome\"] a {\n color: #555;\n}\n\n[data-jey-theme=\"chrome\"] a:hover {\n color: #333;\n}\n\n\n/* ==========================================================================\n Print \u2014 Reset\n ========================================================================== */\n\n@media print {\n [data-jey-theme=\"chrome\"] body,\n [data-jey-theme=\"chrome\"] .page-container,\n [data-jey-theme=\"chrome\"] .form-page,\n [data-jey-theme=\"chrome\"] .frappe-card,\n [data-jey-theme=\"chrome\"] .modal-content,\n [data-jey-theme=\"chrome\"] .navbar {\n background: white !important;\n box-shadow: none !important;\n border-color: #ddd !important;\n text-shadow: none !important;\n }\n [data-jey-theme=\"chrome\"] .btn-primary {\n background: #333 !important;\n text-shadow: none !important;\n }\n}\n\n/* ===== theme_modern.css ===== */\n/* ==========================================================================\n THEME: Modern [data-jey-theme=\"modern\"]\n Frosted glass rounded squares with indigo accents.\n ========================================================================== */\n\n@keyframes jey-modern-glow {\n 0%, 100% { opacity: 0.4; }\n 50% { opacity: 0.7; }\n}\n\n/* Outer shell \u2014 frosted glass rounded square */\n[data-jey-theme=\"modern\"] .jey-chrome {\n width: 72px; height: 72px; border-radius: 22px; position: relative;\n background: rgba(255, 255, 255, 0.45);\n backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);\n border: 1px solid rgba(255, 255, 255, 0.6);\n box-shadow: 0 4px 16px rgba(0,0,0,0.06), 0 1px 3px rgba(0,0,0,0.04), inset 0 1px 0 rgba(255,255,255,0.8);\n transition: all 0.3s ease;\n}\n\n[data-jey-theme=\"modern\"] .desktop-icon:hover .jey-chrome {\n box-shadow: 0 8px 24px rgba(0,0,0,0.1), 0 2px 6px rgba(0,0,0,0.06), inset 0 1px 0 rgba(255,255,255,0.9);\n transform: translateY(-2px);\n}\n\n/* Hide chrome ring layers */\n[data-jey-theme=\"modern\"] .jey-chrome-ring,\n[data-jey-theme=\"modern\"] .jey-chrome-gap,\n[data-jey-theme=\"modern\"] .jey-chrome-ring-inner {\n display: none;\n}\n\n/* Face fills rounded square */\n[data-jey-theme=\"modern\"] .jey-chrome-face {\n position: absolute; inset: 0; border-radius: 22px; overflow: hidden;\n background: transparent; box-shadow: none;\n display: flex; align-items: center; justify-content: center;\n}\n\n/* Bottom glow accent */\n[data-jey-theme=\"modern\"] .jey-face-glow {\n position: absolute; bottom: -4px; left: 16px; right: 16px; height: 20px;\n border-radius: 50%;\n background: radial-gradient(ellipse, rgba(99, 102, 241, 0.35) 0%, transparent 70%);\n animation: jey-modern-glow 4s ease-in-out infinite;\n pointer-events: none; z-index: 0;\n}\n\n/* Top glass highlight */\n[data-jey-theme=\"modern\"] .jey-face-reflection {\n position: absolute; top: 0; left: 0; right: 0; height: 50%;\n border-radius: 22px 22px 0 0;\n background: linear-gradient(180deg, rgba(255,255,255,0.5) 0%, transparent 100%);\n pointer-events: none; z-index: 1; animation: none;\n}\n\n/* Icon \u2014 indigo accent */\n[data-jey-theme=\"modern\"] .jey-chrome-face .jey-icon {\n width: 26px !important; height: 26px !important;\n stroke: #4f46e5 !important; fill: none !important;\n stroke-width: 1.6 !important; stroke-linecap: round !important; stroke-linejoin: round !important;\n filter: drop-shadow(0 1px 2px rgba(79, 70, 229, 0.2)) !important;\n position: relative; z-index: 2;\n}\n\n/* Rounded square container */\n[data-jey-theme=\"modern\"] .icon-container.jey-chrome-done {\n border-radius: 22px !important;\n}\n"], + "mappings": ";AAYA;AACC;AACA;AACA;AACA;AAAA;AAID;AAAA;AAEC;AAAA;AAKD;AAAA;AAAA;AAGC;AAAA;AAOD;AACQ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGR;AACQ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGR;AAAA;AAEQ;AACA;AACA;AAAA;AAGR;AAAA;AAEQ;AAAA;AAGR;AACQ;AACA;AAAA;AAGR;AACQ;AACA;AACA;AAAA;AAGR;AACQ;AACA;AAAA;AAQR;AAAA;AAEQ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGR;AAAA;AAEQ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGR;AAAA;AAEQ;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGR;AAAA;AAEQ;AAAA;AAWR;AACQ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGR;AACQ;AACA;AAAA;AAGR;AACQ;AACA;AACA;AACA;AACA;AACA;AAAA;AAGR;AACQ;AACA;AAAA;AAMR;AACQ;AACA;AACA;AAAA;AAKR;AACQ;AACA;AACA;AAAA;AAGR;AACQ;AACA;AAAA;AAGR;AACQ;AAAA;AAOR;AAAA;AAEQ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGR;AAAA;AAEQ;AAAA;AAIR;AACQ;AAAA;AAGR;AACQ;AACA;AACA;AAAA;AAOR;AACQ;AAAA;AAGR;AACQ;AACA;AAAA;AAQR;AACQ;AACA;AACA;AAAA;AAGR;AACQ;AAAA;AAGR;AACQ;AAAA;AAGR;AACQ;AACA;AACA;AAAA;AAGR;AACQ;AAAA;AAQR;AACQ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGR;AAAA;AAEQ;AACA;AAAA;AAIR;AACQ;AAAA;AAGR;AACQ;AACA;AAAA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", + "names": [] +}