/* ======================================================================== CSS Variables - Defined at body level for Style Settings compatibility ======================================================================== */ body { /* ======================================================================== Padding Variables for Items and Containers ======================================================================== */ /* Container/Scroller padding */ --nn-scroller-padding: 10px; /* Horizontal padding for scroll containers */ /* Navigation item padding */ --nn-nav-item-padding-horizontal: 8px; /* Horizontal padding for navigation items */ /* File item padding */ --nn-file-item-padding-horizontal: 12px; /* Horizontal padding for file items and date headers */ /* ======================================================================== Fixed Height Variables for Pixel-Perfect Rendering ======================================================================== */ /* File item heights - fixed pixel values to prevent fractional rendering */ --nn-file-title-line-height: 20px; /* Height of file title text */ --nn-file-padding-vertical: 8px; /* 8px */ --nn-file-padding-vertical-slim: 5px; /* Reduced padding for slim mode */ --nn-file-padding-vertical-slim-mobile: 8px; /* Mobile slim mode padding for touch targets */ --nn-file-padding-total: calc(var(--nn-file-padding-vertical) * 2); /* Total vertical padding (top + bottom) */ --nn-file-single-text-line-height: 19px; /* Height for single-line text (metadata, date, or single preview) */ --nn-file-multiline-text-line-height: 18px; /* Height for multi-line preview text */ --nn-feature-image-min-size: 42px; /* Minimum size for feature images */ --nn-feature-image-max-size: 64px; /* Maximum size for feature images */ /* Font sizes - fixed pixel values to prevent scaling with Obsidian font size */ --nn-file-name-size: 14px; /* Fixed 14px */ --nn-file-small-size: 13px; /* Fixed 13px */ /* Date header heights and padding */ --nn-date-header-height: 35px; /* First header */ --nn-date-header-height-subsequent: 50px; /* Headers with margin */ --nn-date-header-padding-top: 24px; /* Top padding for subsequent headers */ --nn-date-header-padding-bottom: 6px; /* Bottom padding for subsequent headers */ /* Navigation item heights - fixed pixel values to prevent fractional rendering */ --nn-nav-line-height: 18px; /* Fixed line height for folder/tag names */ /* Note: The following are dynamically set by JavaScript based on user settings: --nn-setting-nav-padding-vertical --nn-setting-nav-padding-vertical-mobile --nn-setting-nav-item-height --nn-setting-nav-item-height-mobile --nn-setting-nav-font-size --nn-setting-nav-font-size-mobile --nn-setting-nav-indent */ /* Navigation icon size */ --nn-nav-icon-size: 16px; /* Fixed icon size */ /* List title area */ --nn-list-title-padding-block: 12px; /* Vertical padding around list title */ --nn-list-title-font-size: 16px; /* Desktop list title text size */ /* ======================================================================== Header Font Sizes ======================================================================== */ /* Header font sizes */ --nn-desktop-header-font-size: 13px; /* Fixed desktop header font size */ --nn-mobile-header-font-size: 17px; /* Fixed mobile header font size */ /* ======================================================================== Pane Width Constraints ======================================================================== */ /* Minimum widths for panes */ --nn-navigation-pane-min-width: 150px; /* Minimum width for navigation pane */ --nn-list-pane-min-width: 250px; /* Minimum width for list pane */ /* ======================================================================== Notebook Navigator Theme Variables ======================================================================== */ /* -- Navigation Pane -- */ --nn-theme-nav-bg: var(--background-secondary); --nn-theme-pinned-shortcut-shadow-color: rgba(0, 0, 0, 0.05); /* -- Folder & Tag Items -- */ --nn-theme-navitem-chevron-color: var(--text-muted); --nn-theme-navitem-icon-color: var(--text-muted); --nn-theme-navitem-name-color: var(--text-normal); --nn-theme-navitem-count-color: var(--text-muted); --nn-theme-navitem-count-bg: transparent; --nn-theme-navitem-count-border-radius: 8px; --nn-theme-navitem-border-radius: 4px; --nn-theme-navitem-hover-bg: var(--background-modifier-hover); --nn-theme-navitem-selected-bg: var(--text-selection); --nn-theme-navitem-selected-chevron-color: var(--nn-theme-navitem-chevron-color); --nn-theme-navitem-selected-icon-color: var(--nn-theme-navitem-icon-color); --nn-theme-navitem-selected-name-color: var(--nn-theme-navitem-name-color); --nn-theme-navitem-selected-count-color: var(--nn-theme-navitem-count-color); --nn-theme-navitem-selected-count-bg: var(--nn-theme-navitem-count-bg); --nn-theme-navitem-selected-inactive-bg: var(--background-modifier-hover); /* -- Navigation Item Text Styling -- */ --nn-theme-navitem-file-name-font-weight: 400; --nn-theme-navitem-name-font-weight: 400; --nn-theme-navitem-count-font-weight: 400; --nn-theme-navitem-custom-color-file-name-font-weight: 600; --nn-theme-navitem-custom-color-name-font-weight: 600; --nn-theme-navitem-folder-note-name-font-weight: 600; --nn-theme-navitem-folder-note-name-decoration: underline; /* -- Pane Divider -- */ --nn-theme-divider-border-color: var(--background-modifier-border); --nn-theme-divider-resize-handle-hover-bg: var(--interactive-accent); /* -- List Pane (Files) -- */ --nn-theme-list-bg: var(--background-primary); --nn-theme-list-header-icon-color: var(--text-muted); --nn-theme-list-header-breadcrumb-color: var(--text-muted); --nn-theme-list-header-breadcrumb-font-weight: 600; --nn-theme-list-search-active-bg: var(--text-highlight-bg); --nn-theme-list-search-border-color: var(--background-modifier-border); --nn-theme-list-heading-color: var(--text-muted); --nn-theme-list-heading-font-weight: 600; --nn-theme-list-group-header-color: var(--text-muted); --nn-theme-list-separator-color: var(--background-modifier-border); /* -- File Items -- */ --nn-theme-file-name-color: var(--text-normal); --nn-theme-file-preview-color: var(--text-muted); --nn-theme-file-feature-border-radius: 4px; --nn-theme-file-date-color: var(--text-normal); --nn-theme-file-parent-color: var(--text-muted); --nn-theme-file-tag-color: var(--text-muted); --nn-theme-file-tag-custom-color-text-color: white; --nn-theme-file-tag-bg: var(--background-modifier-border); --nn-theme-file-tag-border-radius: 10px; --nn-theme-file-border-radius: 8px; --nn-theme-file-selected-bg: var(--text-selection); --nn-theme-file-selected-name-color: var(--nn-theme-file-name-color); --nn-theme-file-selected-preview-color: var(--nn-theme-file-preview-color); --nn-theme-file-selected-date-color: var(--nn-theme-file-date-color); --nn-theme-file-selected-parent-color: var(--nn-theme-file-parent-color); --nn-theme-file-selected-tag-color: var(--nn-theme-file-tag-color); --nn-theme-file-selected-tag-bg: var(--nn-theme-file-tag-bg); --nn-theme-file-selected-inactive-bg: var(--background-modifier-hover); /* -- File Item Text Styling -- */ --nn-theme-list-group-header-font-weight: 600; --nn-theme-file-name-font-weight: 600; --nn-theme-file-slim-name-font-weight: 400; --nn-theme-file-preview-font-weight: 400; --nn-theme-file-date-font-weight: 400; --nn-theme-file-parent-font-weight: 400; --nn-theme-file-tag-font-weight: 400; /* -- Quick Actions -- */ --nn-theme-quick-actions-bg: color-mix(in srgb, var(--background-primary) 95%, transparent); --nn-theme-quick-actions-border: var(--background-modifier-border); --nn-theme-quick-actions-border-radius: 4px; --nn-theme-quick-actions-icon-color: var(--text-muted); --nn-theme-quick-actions-icon-hover-color: var(--text-normal); --nn-theme-quick-actions-separator-color: var(--background-modifier-border); /* -- Header Buttons -- */ --nn-theme-header-button-icon-color: var(--text-muted); --nn-theme-header-button-hover-bg: var(--background-modifier-hover); --nn-theme-header-button-active-bg: var(--background-modifier-hover); --nn-theme-header-button-active-icon-color: var(--text-normal); --nn-theme-header-button-disabled-icon-color: var(--text-muted); /* -- Mobile Styles -- */ --nn-theme-mobile-nav-bg: var(--background-primary); --nn-theme-mobile-list-header-link-color: var(--link-color); --nn-theme-mobile-list-header-breadcrumb-color: var(--text-normal); --nn-theme-mobile-list-header-breadcrumb-font-weight: 600; --nn-theme-mobile-toolbar-bg: var(--background-secondary); --nn-theme-mobile-toolbar-border-color: var(--background-modifier-border); --nn-theme-mobile-toolbar-button-icon-color: var(--link-color); --nn-theme-mobile-toolbar-button-active-bg: var(--background-modifier-hover); --nn-theme-mobile-toolbar-button-active-icon-color: var(--link-color); /* -- File Separator -- */ --nn-separator-height: 1px; } .theme-dark { --nn-theme-pinned-shortcut-shadow-color: rgba(0, 0, 0, 0.2); } /* ======================================================================== Base Layout & Container Styles ======================================================================== */ /* Inline match highlight in file names while search is active */ .nn-search-highlight { background-color: var(--nn-theme-list-search-active-bg); color: inherit; border-radius: 3px; } /* Resets Obsidian's default view-content padding for cleaner integration */ .view-content.notebook-navigator { padding: 0; border: none; } /* Main container - establishes the plugin's layout foundation */ .notebook-navigator { height: 100%; display: flex; flex-direction: column; background-color: var(--background-primary); font-family: var(--font-interface); } /* Removes focus outline on main container for cleaner appearance */ .notebook-navigator:focus { outline: none; } /* Split container - creates the two-pane layout structure */ .nn-split-container { display: flex; height: 100%; overflow: hidden; position: relative; } /* ======================================================================== Update notice banner ======================================================================== */ .nn-update-banner { position: absolute; top: calc(var(--nn-date-header-height) + 8px); left: 50%; transform: translate(-50%, 0); z-index: 10; min-width: 220px; max-width: calc(100% - 32px); background-color: var(--interactive-accent); color: var(--text-on-accent); padding: 10px 16px; border-radius: 10px; box-shadow: 0 8px 18px rgba(0, 0, 0, 0.18); display: flex; align-items: center; justify-content: space-between; gap: 16px; opacity: 1; transition: opacity 0.4s ease, transform 0.4s ease; } .nn-update-banner.fade-out { opacity: 0; transform: translate(-50%, -18px); } .nn-update-banner__text { display: flex; flex-direction: column; gap: 2px; } .nn-update-banner__label { font-weight: 600; font-size: 12px; } .nn-update-banner__instruction { font-size: 11px; color: var(--text-on-accent); opacity: 0.9; } .nn-update-status { margin-top: 6px; font-weight: 600; color: var(--color-red); } .nn-update-status.is-hidden { display: none; } @media (max-width: 600px) { .nn-update-banner { left: 8px; right: 8px; transform: none; max-width: none; width: auto; justify-content: center; top: 8px; } .nn-update-banner__text { align-items: center; text-align: center; } .nn-update-banner.fade-out { transform: translateY(-12px); } } /* ======================================================================== Pane Layout ======================================================================== */ /* Navigation pane - contains the folder tree navigation */ .nn-navigation-pane { flex: 0 0 auto; /* Don't grow or shrink, use explicit width */ min-width: var(--nn-navigation-pane-min-width); display: flex; flex-direction: column; overflow: hidden; background-color: var(--nn-theme-nav-bg); /* Performance optimization for virtualized content */ contain: layout style; } /* Right pane - contains the file list */ .nn-list-pane { flex: 1; min-width: var(--nn-list-pane-min-width); display: flex; flex-direction: column; overflow: hidden; background-color: var(--nn-theme-list-bg); position: relative; /* Enable absolute positioning for resize handle */ /* Performance optimization for virtualized content */ contain: layout style; } /* Pane divider resize handle - overlay on the left edge of list pane */ .nn-resize-handle { width: 3px; background-color: transparent; cursor: col-resize; position: absolute; left: 0; top: 0; bottom: 0; z-index: 10; } /* Pane divider resize handle hover state - provides visual feedback */ .nn-resize-handle:hover { background-color: var(--nn-theme-divider-resize-handle-hover-bg); } /* Pane divider resize handle active state - maintains visibility during resize */ .nn-split-container.nn-resizing .nn-resize-handle { background-color: var(--nn-theme-divider-resize-handle-hover-bg); } /* ======================================================================== Header Styles ======================================================================== */ /* Pane headers - consistent header styling for both panes */ .nn-pane-header { padding: 8px 8px; display: flex; justify-content: flex-end; align-items: center; min-height: 32px; height: 32px; } /* File pane header needs flex layout for title and buttons */ .nn-list-pane .nn-pane-header > .nn-header-actions { display: flex; justify-content: space-between; align-items: center; width: 100%; } /* Navigation pane header - matches folder tree background for visual consistency */ .nn-navigation-pane .nn-pane-header { background-color: var(--nn-theme-nav-bg); } /* Add right border to nav header in dual pane mode */ :not(.nn-single-pane) .nn-navigation-pane .nn-pane-header { border-right: 1px solid var(--nn-theme-divider-border-color); } /* File list pane header */ .nn-list-pane .nn-pane-header { background-color: var(--nn-theme-list-bg); } /* Header actions container - groups action buttons in headers */ .nn-header-actions { display: flex; gap: 2px; align-items: center; } .nn-pane-header-title { font-size: var(--nn-desktop-header-font-size); font-weight: var(--nn-theme-list-header-breadcrumb-font-weight); color: var(--nn-theme-list-header-breadcrumb-color); padding-left: 12px; flex: 1; min-width: 0; display: flex; align-items: center; } .nn-single-pane .nn-list-pane .nn-pane-header-title { padding-left: 2px; } .nn-pane-header-icon { width: var(--nn-nav-icon-size); height: var(--nn-nav-icon-size); margin-inline-end: 8px; flex-shrink: 0; display: flex; align-items: center; color: var(--nn-theme-list-header-icon-color); overflow: visible; } .nn-pane-header-icon svg { width: var(--nn-nav-icon-size); height: var(--nn-nav-icon-size); } .nn-pane-header-icon.nn-emoji-icon { font-size: var(--nn-nav-icon-size); line-height: var(--nn-nav-icon-size); text-align: center; justify-content: center; } .nn-pane-header-icon.nn-iconfont { font-size: var(--nn-nav-icon-size); line-height: var(--nn-nav-icon-size); } .nn-pane-header-icon[data-has-color='true'] svg { stroke-width: 2.4; } .nn-pane-header-text { line-height: var(--nn-nav-line-height); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--nn-theme-list-header-breadcrumb-color); flex: 1; min-width: 0; } /* Search bar container */ .nn-search-bar-container { height: 0; overflow: hidden; background-color: var(--nn-theme-list-bg); } .nn-search-bar-container.nn-search-bar-visible { height: 44px; } /* Search input wrapper */ .nn-search-input-wrapper { display: flex; align-items: center; height: 44px; padding: 0 10px 6px 10px; background-color: var(--nn-theme-list-bg); } /* Search input container */ .nn-search-input-container { position: relative; width: 100%; height: 32px; } /* Search icon */ .nn-search-input-icon { position: absolute; left: 10px; top: 8px; width: 16px; height: 16px; font-size: 16px; line-height: 16px; color: var(--nn-theme-list-header-icon-color); pointer-events: none; } .nn-search-input-icon svg { width: 16px; height: 16px; display: block; } /* Search input field */ .nn-search-input { width: 100%; height: 32px; padding: 4px 60px 4px 36px !important; font-size: 13px; color: var(--nn-theme-file-selected-name-color) !important; background: var(--nn-theme-list-bg) !important; border: 1px solid var(--nn-theme-list-search-border-color) !important; border-radius: 5px; outline: none; box-sizing: border-box; } /* Active search state - when there's a search query */ .nn-search-input.nn-search-active { background: var(--nn-theme-list-search-active-bg) !important; } /* Maintain highlight background on hover when search is active */ .nn-search-input.nn-search-active:hover { background: var(--nn-theme-list-search-active-bg) !important; } /* Focus state */ .nn-search-input:focus { border-color: var(--nn-theme-list-search-border-color) !important; box-shadow: 0 0 0 2px var(--nn-theme-list-search-border-color) !important; } .nn-search-input::placeholder { color: var(--nn-theme-list-header-breadcrumb-color) !important; } /* Clear button */ /* Hide webkit search cancel button */ .nn-search-input::-webkit-search-cancel-button { display: none; } /* ======================================================================== Mobile Search Styles ======================================================================== */ /* Mobile search input wrapper - inherits padding from base styles */ .notebook-navigator-mobile .nn-search-input-wrapper { height: 48px; background-color: var(--nn-theme-list-bg); } /* Mobile search bar container */ .notebook-navigator-mobile .nn-search-bar-container { background-color: var(--nn-theme-list-bg); } .notebook-navigator-mobile .nn-search-bar-container.nn-search-bar-visible { height: 48px; } /* Mobile search input container */ .notebook-navigator-mobile .nn-search-input-container { height: 36px; } /* Mobile search input field */ .notebook-navigator-mobile .nn-search-input { height: 36px; font-size: 16px; /* Prevent zoom on iOS */ padding: 4px 60px 4px 36px !important; border-radius: 8px; } /* Mobile search icon */ .notebook-navigator-mobile .nn-search-input-icon { top: 10px; } /* Mobile clear button */ .notebook-navigator-mobile .nn-search-clear-button { top: 0; } .nn-search-clear-button, .nn-search-star-button { position: absolute; top: 8px; cursor: pointer; color: var(--text-muted); display: inline-flex; align-items: center; justify-content: center; } .nn-search-clear-button:hover, .nn-search-star-button:hover { color: var(--nn-theme-header-button-active-icon-color); } .nn-search-clear-button:focus-visible, .nn-search-star-button:focus-visible { outline: 2px solid var(--interactive-accent); outline-offset: 2px; } .nn-search-clear-button svg, .nn-search-star-button svg { width: 16px; height: 16px; } .nn-search-clear-button { right: 10px; } .nn-search-star-button { right: 34px; } .nn-search-star-button--active { color: var(--interactive-accent); } .notebook-navigator-mobile .nn-search-clear-button, .notebook-navigator-mobile .nn-search-star-button { top: 0; height: 36px; } .notebook-navigator-mobile .nn-search-clear-button { right: 10px; } .notebook-navigator-mobile .nn-search-star-button { right: 44px; } /* Clickable path segments in header */ .nn-path-segment { cursor: pointer; } .nn-path-segment:hover { text-decoration: underline; } /* On mobile, use link color for clickable segments */ .is-mobile .nn-path-segment { color: var(--nn-theme-mobile-list-header-link-color); text-decoration: none; } /* Prevent underline on mobile tap/active state */ .is-mobile .nn-path-segment:active, .is-mobile .nn-path-segment:focus { text-decoration: none; } /* ======================================================================== Button Styles ======================================================================== */ /* Icon button base style - transparent buttons matching Obsidian's design */ .nn-icon-button { background: transparent !important; background-color: transparent !important; border: none !important; border-radius: var(--radius-s); padding: 0 8px; color: var(--nn-theme-header-button-icon-color); opacity: 0.85; display: flex; align-items: center; justify-content: center; box-shadow: none !important; outline: none !important; } /* Header buttons - match Obsidian's standard dimensions */ .nn-header-actions button.nn-icon-button { padding: 0 8px; width: auto; min-width: 34px; height: 25px; } /* iPad-specific adjustment for icon buttons in headers */ @media (min-width: 768px) { .notebook-navigator-mobile .nn-header-actions button.nn-icon-button { /* Maintain same dimensions as desktop for consistency */ padding: 0 8px; width: auto; min-width: 34px; height: 25px; } } /* Icon button hover state - subtle background on hover - desktop only */ .nn-desktop .nn-icon-button:hover { background-color: var(--nn-theme-header-button-hover-bg) !important; opacity: 1; } /* Icon button active state - feedback on click */ .nn-icon-button:active { opacity: 0.8; } /* Icon button active state - for toggle buttons that are "ON" */ .nn-icon-button-active { background-color: var(--nn-theme-header-button-active-bg) !important; color: var(--nn-theme-header-button-active-icon-color) !important; } /* Active button icon color */ .nn-icon-button-active svg { stroke: var(--nn-theme-header-button-active-icon-color) !important; } /* Icon button disabled state - visual indicator for unavailable actions */ .nn-icon-button:disabled { opacity: 0.5; cursor: not-allowed; color: var(--nn-theme-header-button-disabled-icon-color); } /* Disabled icon svg stroke color */ .nn-icon-button:disabled svg { stroke: var(--nn-theme-header-button-disabled-icon-color); } /* Disabled hover state - no hover effect when disabled */ .nn-desktop .nn-icon-button:disabled:hover { background-color: transparent; color: var(--nn-theme-header-button-disabled-icon-color); } /* Disabled icon color - maintains muted appearance */ .nn-desktop .nn-icon-button:disabled:hover svg { stroke: var(--nn-theme-header-button-disabled-icon-color); } /* Icon styling - consistent size and appearance for all button icons */ .nn-icon-button svg { width: 16px; height: 16px; stroke: var(--nn-theme-header-button-icon-color); stroke-width: 2; fill: none; } /* Remove line-height from icon span to prevent vertical offset */ .nn-icon-button > span { line-height: 0; } /* ======================================================================== Pane Spacers ======================================================================== */ /* Navigation pane spacers - provide visual breathing room in the list */ .nn-nav-top-spacer { height: 8px; flex-shrink: 0; } .nn-nav-bottom-spacer { height: 20px; flex-shrink: 0; } .nn-nav-list-spacer { height: 8px; flex-shrink: 0; } /* List pane spacers - match navigation pane for consistency */ .nn-list-top-spacer { height: 8px; } .nn-list-bottom-spacer { height: 20px; } /* ======================================================================== Navigation Pane Scroller ======================================================================== */ /* Scroller container for both folder tree and tag list */ .nn-navigation-pane-scroller { flex: 1; overflow-y: auto; overflow-x: hidden; padding: 0 var(--nn-scroller-padding); line-height: 1; /* Reset to 1 - we'll use fixed line-heights on individual elements */ border-right: 1px solid var(--nn-theme-divider-border-color); background-color: var(--nn-theme-nav-bg); /* Opaque background for GPU scroll layer optimization */ /* Ensure scroll events work properly with virtualization */ position: relative; } /* Container for pinned shortcuts displayed above the scrollable navigation tree */ .nn-shortcut-pinned { flex-shrink: 0; padding: 8px var(--nn-scroller-padding) 4px; border-bottom: 1px solid var(--nn-theme-divider-border-color); border-right: 1px solid var(--nn-theme-divider-border-color); background-color: var(--nn-theme-nav-bg); position: relative; z-index: 1; } /* Remove top padding when banner is present to avoid double spacing */ .nn-shortcut-pinned[data-has-banner='true'] { padding-top: 0; } /* Add top margin to banner inside pinned shortcuts area for consistent spacing */ .nn-shortcut-pinned[data-has-banner='true'] .nn-nav-banner { margin-top: 8px; } /* Inner wrapper for pinned shortcut items */ .nn-shortcut-pinned-inner { display: flex; flex-direction: column; gap: 0; } .nn-shortcut-pinned::after { content: ''; position: absolute; left: 0; right: 0; top: calc(100% + 1px); height: 8px; pointer-events: none; background: linear-gradient(to bottom, var(--nn-theme-pinned-shortcut-shadow-color) 0%, transparent 100%); } .notebook-navigator-mobile .nn-shortcut-pinned { background-color: var(--nn-theme-mobile-nav-bg); border-bottom: 1px solid var(--nn-theme-divider-border-color); border-right: none; } /* Navigation banner displayed above tree items */ .nn-nav-banner { padding: var(--nn-nav-banner-padding-vertical, 8px) var(--nn-nav-item-padding-horizontal); box-sizing: border-box; } .nn-nav-banner-image { display: block; width: 100%; height: auto; border-radius: min(14px, var(--nn-theme-navitem-border-radius)); background-color: var(--background-tertiary); } /* ======================================================================== Folder Tree Styles ======================================================================== */ /* Note: Navigation pane scroller styles are defined above in the Navigation Pane Scroller section */ /* Navigation item - container for each folder/tag in the tree */ .nn-navitem { -webkit-user-select: none; user-select: none; background: transparent; display: flex; align-items: center; margin: 0; padding: 0; min-width: 0; /* Allow folder items to shrink below min-content width */ height: var(--nn-setting-nav-item-height); /* Fixed height for virtualizer accuracy */ box-sizing: border-box; padding-inline-start: calc(var(--level, 0) * var(--nn-setting-nav-indent)); contain: paint; /* Isolate per-item painting */ } .nn-navitem.nn-has-custom-background { position: relative; } .nn-navitem.nn-has-custom-background:not(.nn-selected)::before { content: ''; position: absolute; top: 0; inset-inline-start: 0; inset-inline-end: 0; bottom: 0; background-color: var(--nn-navitem-custom-bg-color); border-radius: min(14px, var(--nn-theme-navitem-border-radius)); z-index: 0; pointer-events: none; } .nn-navitem.nn-has-custom-background > .nn-navitem-content { position: relative; z-index: 2; } .nn-navitem.nn-has-custom-background > .nn-navitem-content > * { position: relative; z-index: 2; } /* Folder content - contains folder UI elements */ .nn-navitem-content { display: flex; align-items: center; padding: var(--nn-setting-nav-padding-vertical) var(--nn-nav-item-padding-horizontal); border-radius: min(14px, var(--nn-theme-navitem-border-radius)); margin: 0; background: transparent; position: relative; flex: 1; min-width: 0; /* Critical: allows flex children to shrink below their min-content width */ box-sizing: border-box; } /* Folder hover state - desktop only, using pseudo-element for padding control */ .nn-desktop .nn-navitem:hover { position: relative; } .nn-desktop .nn-navitem:hover::after { content: ''; position: absolute; top: 0; bottom: 0; inset-inline-start: 0; inset-inline-end: 0; background-color: var(--nn-theme-navitem-hover-bg); border-radius: min(14px, var(--nn-theme-navitem-border-radius)); z-index: 1; pointer-events: none; } /* Ensure content appears above hover background */ .nn-desktop .nn-navitem:hover > .nn-navitem-content > * { position: relative; z-index: 2; } /* Folder chevron - expand/collapse indicator */ .nn-navitem-chevron { width: var(--nn-nav-icon-size); height: var(--nn-nav-icon-size); margin-inline-end: 4px; display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; color: var(--nn-theme-navitem-chevron-color); } /* Chevron states for folders without children */ .nn-navitem-chevron--no-children { visibility: hidden; cursor: default; } /* Chevron states for folders with children */ .nn-navitem-chevron--has-children { visibility: visible; } /* Folder icon - displays folder open/closed or custom icons */ .nn-navitem-icon { width: var(--nn-nav-icon-size); height: var(--nn-nav-icon-size); margin-inline-end: 8px; flex-shrink: 0; color: var(--nn-theme-navitem-icon-color); display: flex; align-items: center; } .nn-navitem-icon svg { width: var(--nn-nav-icon-size); height: var(--nn-nav-icon-size); } .nn-navitem-icon.nn-iconfont, .nn-tag-icon.nn-iconfont { font-size: var(--nn-nav-icon-size); line-height: var(--nn-nav-icon-size); } .nn-navitem-icon[data-has-color='true'] svg, .nn-tag-icon[data-has-color='true'] svg { stroke-width: 2.4; } /* Folder name text - truncates with ellipsis on overflow */ .nn-navitem-name { font-size: var(--nn-setting-nav-font-size); font-weight: var(--nn-theme-navitem-name-font-weight) !important; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; line-height: var(--nn-nav-line-height); color: var(--nn-theme-navitem-name-color); unicode-bidi: plaintext; /* Proper bidirectional text handling */ } /* Custom colored folder names */ .nn-navitem-name.nn-has-custom-color { font-weight: var(--nn-theme-navitem-custom-color-name-font-weight) !important; } /* Folder with folder note */ .nn-navitem-name.nn-has-folder-note { font-weight: var(--nn-theme-navitem-folder-note-name-font-weight) !important; text-decoration: var(--nn-theme-navitem-folder-note-name-decoration) !important; } /* Folder with folder note - show pointer cursor on hover */ .nn-navitem-name.nn-has-folder-note:hover { cursor: pointer; } /* Spacer element to push count to the end */ .nn-navitem-spacer { flex: 1; min-width: 8px; /* Minimum space between name and count */ } /* Folder file count - shows number of files in folder */ .nn-navitem-count { font-size: 11px; font-weight: var(--nn-theme-navitem-count-font-weight); color: var(--nn-theme-navitem-count-color); background-color: var(--nn-theme-navitem-count-bg); flex-shrink: 0; /* Dynamic margin that increases with navitem border radius for better visual balance */ margin-inline-end: calc(-2px + max(0px, calc(min(14px, var(--nn-theme-navitem-border-radius)) - 4px) * 0.3)); /* Pill style when background is set */ border-radius: min(8px, var(--nn-theme-navitem-count-border-radius)); padding: 0 6px; height: 16px; line-height: 16px; min-width: 20px; text-align: center; display: inline-flex; align-items: center; justify-content: center; } /* Shortcut section styling */ .nn-shortcut-header-item .nn-navitem-name { font-weight: 400; } .nn-shortcut-header-item .nn-navitem-count { font-size: 11px; } .nn-drag-item { position: relative; } .nn-shortcut-drag-source { opacity: 0.6; } .nn-drag-item[data-reorder-drop-before='true'] .nn-navitem-content::before, .nn-drag-item[data-reorder-drop-after='true'] .nn-navitem-content::after { content: ''; position: absolute; inset-inline-start: 0; inset-inline-end: 0; height: 2px; background-color: var(--interactive-accent); border-radius: 999px; pointer-events: none; z-index: 3; } .nn-drag-item[data-reorder-drop-before='true'] .nn-navitem-content::before { top: 0; } .nn-drag-item[data-reorder-drop-after='true'] .nn-navitem-content::after { bottom: 0; } .nn-desktop .nn-drag-item[data-reorder-drop-before='true']::before, .nn-desktop .nn-drag-item[data-reorder-drop-after='true']::after { content: ''; position: absolute; inset-inline-start: 0; inset-inline-end: 0; height: 3px; background-color: var(--interactive-accent); border-radius: 999px; pointer-events: none; z-index: 5; } .nn-desktop .nn-drag-item[data-reorder-drop-before='true']::before { top: -1px; } .nn-desktop .nn-drag-item[data-reorder-drop-after='true']::after { bottom: -1px; } .nn-drag-item .nn-navitem-name { display: inline-flex; align-items: center; gap: 6px; min-width: 0; } .nn-drag-item .nn-shortcut-label { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .nn-shortcut-item .nn-shortcut-label { font-weight: var(--nn-theme-navitem-file-name-font-weight); } .nn-shortcut-item .nn-shortcut-label[data-has-color='true'] { font-weight: var(--nn-theme-navitem-custom-color-file-name-font-weight) !important; } .nn-shortcut-item--missing .nn-shortcut-label { text-decoration: line-through; } /* Styles for shortcut labels that have an associated folder note */ .nn-shortcut-item .nn-navitem-name.nn-has-folder-note .nn-shortcut-label { font-weight: var(--nn-theme-navitem-folder-note-name-font-weight) !important; text-decoration: var(--nn-theme-navitem-folder-note-name-decoration) !important; } /* Pointer cursor on hover for clickable folder note shortcuts */ .nn-shortcut-item .nn-navitem-name.nn-has-folder-note:hover .nn-shortcut-label { cursor: pointer; } .nn-drag-item .nn-shortcut-description { flex-shrink: 0; } .nn-shortcut-actions { display: flex; gap: 0.25rem; margin-inline-start: 0.5rem; } .nn-drag-item-has-handle .nn-navitem-content { gap: 0.25rem; } .nn-drag-handle { width: 28px; height: calc(var(--nn-setting-nav-item-height) - 4px); margin-inline-start: 0; border-radius: 8px; display: inline-flex; align-items: center; justify-content: center; cursor: grab; touch-action: none; color: var(--nn-theme-navitem-icon-color); flex-shrink: 0; } .nn-drag-handle:active, .nn-drag-handle-active { cursor: grabbing; } .nn-drag-handle-disabled { opacity: 0.4; cursor: default; } .nn-drag-handle:focus { outline: none; } .nn-drag-handle .nn-iconfont, .nn-drag-handle svg { width: 16px; height: 16px; } .nn-root-reorder-panel { display: flex; flex-direction: column; gap: 0.75rem; padding: 0.75rem 0; } .nn-root-reorder-header { display: flex; flex-direction: column; gap: 0.25rem; align-items: center; } .nn-root-reorder-title { font-size: var(--nn-desktop-header-font-size); font-weight: var(--nn-theme-list-header-breadcrumb-font-weight); line-height: 1.3; } .notebook-navigator-mobile .nn-root-reorder-title { font-size: var(--nn-mobile-header-font-size); } .nn-root-reorder-title, .nn-root-reorder-hint { text-align: center; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .nn-root-reorder-hint { font-size: var(--font-ui-smaller); color: var(--text-muted); line-height: 1.25; } .notebook-navigator-mobile .nn-root-reorder-hint { font-size: var(--font-ui-small); } .nn-root-reorder-list { display: flex; flex-direction: column; margin: 0; padding: 0; } .nn-root-reorder-section { display: flex; flex-direction: column; position: relative; } .nn-root-reorder-section[data-reorder-drop-after='true']::after { content: ''; position: absolute; inset-inline-start: 0; inset-inline-end: 0; bottom: 0; height: 2px; background-color: var(--interactive-accent); border-radius: 999px; pointer-events: none; z-index: 3; } .nn-desktop .nn-root-reorder-section[data-reorder-drop-after='true']::after { height: 3px; bottom: -1px; z-index: 5; } .nn-root-reorder-section-list { display: flex; flex-direction: column; } .nn-root-reorder-item { cursor: default; } .nn-root-reorder-item .nn-shortcut-label { font-weight: var(--nn-theme-navitem-name-font-weight); } .nn-root-reorder-item .nn-shortcut-label[data-has-color='true'] { font-weight: var(--nn-theme-navitem-custom-color-name-font-weight) !important; } .nn-root-reorder-item--missing .nn-shortcut-label { text-decoration: line-through; color: var(--text-muted); } .nn-root-reorder-actions { margin-top: 0.75rem; display: flex; justify-content: center; } .nn-root-reorder-remove { color: var(--text-accent); font-size: var(--nn-setting-nav-font-size); font-weight: var(--font-semibold); cursor: pointer; display: inline; text-decoration: underline; } .nn-root-reorder-remove:hover, .nn-root-reorder-remove:focus { color: var(--text-accent); text-decoration: underline; } .nn-root-reorder-remove:focus-visible { outline: none; } .nn-root-reorder-reset { display: inline-flex; align-items: center; gap: 0.5rem; padding: 0 1rem; cursor: pointer; } .nn-root-reorder-reset-icon { display: inline-flex; align-items: center; justify-content: center; font-weight: 500; } .nn-shortcut-disabled { opacity: 0.5; pointer-events: none; } /* ======================================================================== File List Styles ======================================================================== */ /* File list container - scrollable area for files */ .nn-list-pane-scroller { flex: 1; overflow-y: auto; padding: 0 var(--nn-scroller-padding); background-color: var(--nn-theme-list-bg); /* Opaque background for GPU scroll layer optimization */ position: relative; } .nn-list-title-area { background-color: var(--nn-theme-list-bg); padding: var(--nn-list-title-padding-block) var(--nn-scroller-padding) 8px; } .nn-list-title-content { display: flex; align-items: center; padding: 0 var(--nn-file-item-padding-horizontal); font-size: var(--nn-list-title-font-size); font-weight: var(--nn-theme-list-heading-font-weight); color: var(--nn-theme-list-heading-color); } .nn-list-title-text { line-height: 1.2; flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } /* File - container for each file in the list */ .nn-file { background: transparent; padding: 0; -webkit-user-select: none; user-select: none; position: relative; /* CSS Custom Properties for file items - themes can override these */ contain: paint; /* Isolate per-item painting */ } /* Remove shadows */ .nn-file, .nn-desktop .nn-file:hover { box-shadow: none; } /* File content wrapper - contains all file information */ .nn-file-content { padding: var(--nn-file-padding-vertical) var(--nn-file-item-padding-horizontal); margin: 0; border-radius: min(16px, var(--nn-theme-file-border-radius)); background: transparent; position: relative; /* For absolute positioning of reveal overlay */ } /* File inner content - flex container for actual content */ .nn-file-inner-content { display: flex; flex-direction: row; gap: 4px; align-items: center; /* Center items vertically */ position: relative; } /* Virtual list file separator */ .nn-virtual-file-item:not(.nn-last-file)::after { content: ''; position: absolute; bottom: 0; inset-inline-start: 20px; inset-inline-end: 20px; height: var(--nn-separator-height); background-color: var(--nn-theme-list-separator-color); z-index: 100; /* Very high to ensure it's always on top */ pointer-events: none; /* Ensure it doesn't interfere with clicks */ } /* Hide separator when flagged by renderer (selection) or context menu */ .nn-virtual-file-item.nn-hide-separator-selection::after, .nn-virtual-file-item.nn-hide-separator-context-menu::after { display: none; } /* Hide separators in slim mode */ .nn-slim-mode .nn-virtual-file-item::after { display: none; } /* File text content - left side container for name and preview */ .nn-file-text-content { flex: 1; min-width: 0; /* Enable text truncation */ display: flex; flex-direction: column; gap: 0; order: 1; /* Ensure it appears on the left */ min-height: var(--nn-feature-image-min-size); /* Minimum height to match minimum image size */ justify-content: flex-start; /* Top-align content */ /* No align-self - let it stretch naturally */ } /* Slim mode file text content - same as above but without min-height */ .nn-slim-file-text-content { flex: 1; min-width: 0; /* Enable text truncation */ display: flex; flex-direction: column; gap: 0; order: 1; /* Ensure it appears on the left */ justify-content: flex-start; /* Top-align content */ } /* File name - primary text with ellipsis overflow */ .nn-file-name { font-size: var(--nn-file-name-size); font-weight: var(--nn-theme-file-name-font-weight); color: var(--nn-theme-file-name-color); overflow: hidden; text-overflow: ellipsis; margin-bottom: 0; display: -webkit-box; -webkit-line-clamp: var(--filename-rows, 1); -webkit-box-orient: vertical; line-height: var(--nn-file-title-line-height); word-break: break-word; unicode-bidi: plaintext; /* Proper bidirectional text handling */ /* Fixed height: always take up configured number of lines */ min-height: calc(var(--nn-file-title-line-height) * var(--filename-rows, 1)); height: calc(var(--nn-file-title-line-height) * var(--filename-rows, 1)); } .nn-file-name[data-has-color='true'] { color: var(--nn-file-name-custom-color); } .nn-file-name-wrapper { display: flex; align-items: center; gap: 6px; } .nn-file-name-wrapper[data-multiline='true'] { align-items: flex-start; } .nn-file-name-content { flex: 1; min-width: 0; } .nn-file-name-row { display: flex; align-items: center; } .nn-file-name-row .nn-file-name { flex: 1; min-width: 0; } .nn-file-external-icon { margin-inline-end: 4px; } .nn-file-external-icon svg, .nn-slim-file-type-icon svg { width: 14px; height: 14px; } .nn-file-icon { width: var(--nn-nav-icon-size); height: var(--nn-nav-icon-size); display: flex; align-items: center; justify-content: center; flex-shrink: 0; color: var(--nn-theme-navitem-icon-color); } .nn-file-name-wrapper[data-multiline='true'] .nn-file-icon { align-self: flex-start; } .nn-file-icon svg { width: var(--nn-nav-icon-size); height: var(--nn-nav-icon-size); } .nn-file-icon.nn-emoji-icon, .nn-file-icon .nn-emoji-icon { font-size: var(--nn-nav-icon-size); width: var(--nn-nav-icon-size); height: var(--nn-nav-icon-size); line-height: var(--nn-nav-icon-size); display: flex; align-items: center; justify-content: center; } .nn-file-icon[data-has-color='false'] { color: var(--nn-theme-navitem-icon-color); } .nn-file.nn-selected .nn-file-icon[data-has-color='false'] { color: var(--nn-theme-navitem-selected-icon-color); } .nn-file-icon[data-has-color='true'] svg { stroke-width: 2.4; } /* Quick actions panel - horizontal container for action icons */ .nn-quick-actions-panel { position: absolute; top: 8px; /* Default: 8px for normal mode */ inset-inline-end: 8px; height: 24px; display: none; background: var(--nn-theme-quick-actions-bg); border: 1px solid var(--nn-theme-quick-actions-border); border-radius: min(12px, var(--nn-theme-quick-actions-border-radius)); z-index: 10; flex-direction: row; align-items: center; /* Dynamic padding that scales with border radius for better visual balance (clamped to max 6px at 12px radius) */ padding: 0 max(4px, calc(min(12px, var(--nn-theme-quick-actions-border-radius)) * 0.5)); gap: 0; } /* Individual quick action items */ .nn-quick-action-item { width: 16px; height: 16px; cursor: pointer; color: var(--nn-theme-quick-actions-icon-color); display: flex; align-items: center; justify-content: center; flex-shrink: 0; } /* Icon highlights when hovering directly on it */ .nn-quick-action-item:hover { color: var(--nn-theme-quick-actions-icon-hover-color); } /* Separator between quick actions */ .nn-quick-action-separator { width: 1px; height: 14px; background: var(--nn-theme-quick-actions-separator-color); margin: 0 4px; flex-shrink: 0; } /* Slim mode with 1 title row and no tags: center vertically (4px offset) */ .nn-quick-actions-panel.nn-slim-mode[data-title-rows='1'][data-has-tags='false'] { top: 3px; /* (20px line height + 10px padding - 24px icon) / 2 = 3px */ } /* Slim mode with tags or 2 title rows: use default slim padding (6px) */ .nn-quick-actions-panel.nn-slim-mode[data-title-rows='2'], .nn-quick-actions-panel.nn-slim-mode[data-has-tags='true'] { top: 5px; /* Match slim mode padding */ } /* Panel appears when hovering anywhere on file row */ .nn-desktop .nn-file:hover .nn-quick-actions-panel, .nn-desktop.nn-single-pane .nn-file:hover .nn-quick-actions-panel { display: flex; } /* Second line container - holds date and preview text */ .nn-file-second-line { display: flex; align-items: center; /* Center align for better icon/text alignment */ gap: 4px; } /* File date - modification date display */ .nn-file-date { font-size: var(--nn-file-small-size); font-weight: var(--nn-theme-file-date-font-weight); color: var(--nn-theme-file-date-color); flex-shrink: 0; white-space: nowrap; margin-inline-end: 8px; overflow: hidden; text-overflow: ellipsis; min-width: auto; line-height: var(--nn-file-single-text-line-height); } /* File preview text - secondary line showing file content */ .nn-file-preview { font-size: var(--nn-file-small-size); font-weight: var(--nn-theme-file-preview-font-weight); color: var(--nn-theme-file-preview-color); line-height: var(--nn-file-multiline-text-line-height); overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: var(--preview-rows, 1); -webkit-box-orient: vertical; word-break: break-word; flex: 1; } /* Multi-line preview - always take up configured number of lines */ .nn-file-preview:not(.nn-file-second-line .nn-file-preview) { min-height: calc(var(--nn-file-multiline-text-line-height) * var(--preview-rows, 1)); height: calc(var(--nn-file-multiline-text-line-height) * var(--preview-rows, 1)); } /* Preview on same line as date - match date line-height for alignment */ .nn-file-second-line .nn-file-preview { line-height: var(--nn-file-single-text-line-height); } /* Folder indicator - shows parent folder for files from subfolders */ .nn-file-folder { font-size: var(--nn-file-small-size); font-weight: var(--nn-theme-file-parent-font-weight); color: var(--nn-theme-file-parent-color); display: flex; align-items: center; gap: 4px; overflow: hidden; line-height: var(--nn-file-single-text-line-height); /* Use second line height for consistent spacing */ flex: 1; min-width: 0; } /* Folder indicator text */ .nn-file-folder span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } /* Folder icon styling */ .nn-file-folder-icon { width: calc(var(--icon-size) * 0.8); height: calc(var(--icon-size) * 0.8); display: flex; align-items: center; justify-content: center; flex-shrink: 0; } /* ======================================================================== Tag Display Styles ======================================================================== */ /* Tag container */ .nn-file-tags { display: flex; flex-wrap: nowrap; gap: 4px; margin-top: 4px; overflow: hidden; height: 22px; /* Fixed height for single row */ position: relative; } /* Individual tag pill */ .nn-file-tag { display: inline-flex; align-items: center; height: 20px; padding: 0 8px; background-color: var(--nn-theme-file-tag-bg); color: var(--nn-theme-file-tag-color); border-radius: min(10px, var(--nn-theme-file-tag-border-radius)); font-size: 12px; font-weight: var(--nn-theme-file-tag-font-weight); white-space: nowrap; flex-shrink: 0; } /* When tag has custom color, use custom color text variable */ .nn-file-tag[style*='background-color'] { color: var(--nn-theme-file-tag-custom-color-text-color); } /* Tag pill hover effect - darken/lighten all tags on hover */ .nn-file-tag:hover { filter: brightness(0.9); } /* Custom colored tag hover - slightly darken/lighten the background */ .nn-file-tag[style*='background-color']:hover { filter: brightness(0.9); color: var(--nn-theme-file-tag-custom-color-text-color); } /* Clickable tag styling */ .nn-file-tag.nn-clickable-tag { cursor: pointer; } /* Dark mode tag hover - lighten instead of darken */ .theme-dark .nn-file-tag:hover { filter: brightness(1.05); } /* Selected file tag styles - only for tags without custom colors */ .nn-file.nn-selected .nn-file-tag:not([style*='background-color']) { background-color: var(--nn-theme-file-selected-tag-bg); color: var(--nn-theme-file-selected-tag-color); } /* Ensure custom color tags keep their text color when selected */ .nn-file.nn-selected .nn-file-tag[style*='background-color'] { color: var(--nn-theme-file-tag-custom-color-text-color); } /* Selected file text colors */ .nn-file.nn-selected .nn-file-name { color: var(--nn-theme-file-selected-name-color); } .nn-file.nn-selected .nn-file-name[data-has-color='true'] { color: var(--nn-file-name-custom-color); } .nn-file.nn-selected .nn-file-preview { color: var(--nn-theme-file-selected-preview-color); } .nn-file.nn-selected .nn-file-date { color: var(--nn-theme-file-selected-date-color); } .nn-file.nn-selected .nn-file-parent { color: var(--nn-theme-file-selected-parent-color); } /* ======================================================================== Slim Mode Styles - When date, preview, and image are all disabled ======================================================================== */ /* Slim file item - more compact list appearance */ .nn-file.nn-slim .nn-file-content { padding: var(--nn-file-padding-vertical-slim) var(--nn-file-item-padding-horizontal); /* Reduced vertical padding */ } /* Slim file name - no bold, smaller font like folder items */ .nn-file.nn-slim .nn-file-name { font-size: var(--nn-file-small-size); font-weight: var(--nn-theme-file-slim-name-font-weight); margin-bottom: 0; line-height: var(--nn-file-title-line-height); } /* Apply standard font weight to colored file names in slim mode */ .nn-file.nn-slim .nn-file-name[data-has-color='true'] { font-weight: var(--nn-theme-file-name-font-weight); } .nn-slim-file-header { display: flex; align-items: center; gap: 8px; } .nn-slim-file-header .nn-file-name-wrapper { flex: 1; min-width: 0; } /* Selected slim file - maintain selection styles */ .nn-file.nn-slim.nn-selected .nn-file-name { color: var(--nn-theme-file-selected-name-color); } /* Preserve custom color for colored file names even when selected in slim mode */ .nn-file.nn-slim.nn-selected .nn-file-name[data-has-color='true'] { color: var(--nn-file-name-custom-color); } /* ======================================================================== Feature Image Styles ======================================================================== */ /* Feature image container - right-aligned image thumbnail */ .nn-feature-image { flex-shrink: 0; border-radius: min(32px, var(--nn-theme-file-feature-border-radius)); overflow: hidden; background-color: transparent; position: relative; order: 2; /* Ensure it appears on the right */ } .nn-feature-image--square { width: var(--nn-feature-image-min-size); height: var(--nn-feature-image-min-size); } .nn-feature-image--natural { width: auto; height: var(--nn-feature-image-min-size); aspect-ratio: var(--nn-feature-image-aspect-ratio, 1); } /* Dynamic sizing based on calculated item height */ .nn-virtual-file-item .nn-feature-image { /* Size based on item height minus total padding */ --image-size: clamp( var(--nn-feature-image-min-size), calc(var(--item-height) - var(--nn-file-padding-total)), var(--nn-feature-image-max-size) ); } .nn-virtual-file-item .nn-feature-image--square { width: var(--image-size); height: var(--image-size); } .nn-virtual-file-item .nn-feature-image--natural { height: var(--image-size); max-height: var(--image-size); } /* Feature image element - covers container with proper aspect ratio */ .nn-feature-image-img { width: 100%; height: 100%; } .nn-feature-image--square .nn-feature-image-img { object-fit: cover; object-position: center top; } .nn-feature-image--natural .nn-feature-image-img { object-fit: contain; object-position: center; } /* Selected file image - slightly transparent when selected */ .nn-file.nn-selected .nn-feature-image { opacity: 0.9; } /* File extension badge - shown for non-markdown/non-image files */ .nn-file-extension-badge { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; background-color: var(--background-secondary); font-family: var(--font-monospace); padding: 2px; box-sizing: border-box; } .nn-file-extension-text { font-size: 9px; font-weight: 700; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.1px; } /* ======================================================================== Date Group Headers ======================================================================== */ /* Date group headers - sticky headers for grouped files */ .nn-date-group-header { height: var(--nn-date-header-height-subsequent); box-sizing: border-box; padding: var(--nn-date-header-padding-top) var(--nn-file-item-padding-horizontal) var(--nn-date-header-padding-bottom) var(--nn-file-item-padding-horizontal); font-size: var(--nn-file-small-size); font-weight: var(--nn-theme-list-group-header-font-weight); color: var(--nn-theme-list-group-header-color); background-color: transparent !important; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: flex; align-items: flex-start; } /* First date header - no top margin or extra padding for first group */ .nn-date-group-header.nn-first-header { height: var(--nn-date-header-height); padding: 0 var(--nn-file-item-padding-horizontal); align-items: center; } /* Virtual list item - absolute positioning for list pane items */ .nn-list-pane-scroller .nn-virtual-item { position: absolute; top: 0; left: 0; width: 100%; } /* Skeleton view - minimal loading state */ .nn-skeleton-navigation-pane { background-color: var(--nn-theme-nav-bg); height: 100%; display: flex; flex-direction: column; } .nn-skeleton-list-pane { background-color: var(--nn-theme-list-bg); width: 100%; height: 100%; flex: 1; display: flex; flex-direction: column; } .nn-skeleton-nav-header { height: 32px; background-color: var(--nn-theme-nav-bg); flex-shrink: 0; } /* Add right border to nav header in dual pane mode */ :not(.nn-single-pane) .nn-skeleton-nav-header { border-right: 1px solid var(--nn-theme-divider-border-color); } .nn-skeleton-list-header { height: 32px; background-color: var(--nn-theme-list-bg); flex-shrink: 0; } .nn-skeleton-content { flex: 1; overflow: hidden; background-color: inherit; } .nn-skeleton-search-bar { height: 40px; background-color: var(--nn-theme-list-bg); flex-shrink: 0; } /* Add right border only to nav content area in dual pane mode */ :not(.nn-single-pane) .nn-skeleton-navigation-pane .nn-skeleton-content { border-right: 1px solid var(--nn-theme-divider-border-color); } /* ======================================================================== Empty State ======================================================================== */ /* Empty state container - shown when no files in folder */ .nn-empty-state { display: flex; align-items: center; justify-content: center; height: 100%; padding: 40px 20px; text-align: center; color: var(--text-muted); font-size: 14px; } /* Empty state message text */ .nn-empty-message { text-align: center; } /* ======================================================================== Selection States ======================================================================== */ /* Selected file background pseudo-element - better control over styling */ .nn-file.nn-selected .nn-file-content::before { content: ''; position: absolute; top: 0; inset-inline-start: 0; inset-inline-end: 0; bottom: 0; /* Extend all the way down */ background-color: var(--nn-theme-navitem-selected-bg); border-radius: min(16px, var(--nn-theme-file-border-radius)); z-index: 0; /* Below separator lines */ } /* Adjust rounded corners for multiselection */ .nn-file.nn-selected.nn-has-selected-above .nn-file-content::before { border-top-left-radius: 0; border-top-right-radius: 0; } .nn-file.nn-selected.nn-has-selected-below .nn-file-content::before { border-bottom-left-radius: 0; border-bottom-right-radius: 0; } /* Selected folder - transparent background for pseudo-element approach */ .nn-navitem.nn-selected { position: relative; } .nn-navitem.nn-selected > .nn-navitem-content { background: transparent; } /* Selected folder background - uses pseudo-element for better control */ .nn-navitem.nn-selected::before { content: ''; position: absolute; top: 0; inset-inline-start: 0; inset-inline-end: 0; bottom: 0; background-color: var(--nn-theme-navitem-selected-bg); border-radius: min(14px, var(--nn-theme-navitem-border-radius)); z-index: 0; } /* Selected folder content z-index - ensures text appears above background */ .nn-navitem.nn-selected > .nn-navitem-content > * { position: relative; z-index: 1; } /* Selected file inner content z-index - ensures content above background */ .nn-file.nn-selected .nn-file-inner-content { position: relative; z-index: 5; /* Above selection background but below separators */ } /* ======================================================================== Focus States ======================================================================== */ /* Dimmed selections - apply to all these cases: 1. Navigator unfocused (all selections dimmed) 2. Navigator focused but inactive pane (cross-pane dimming) 3. Search field is focused (both panes dimmed) */ .nn-split-container[data-navigator-focused='false'] .nn-file.nn-selected .nn-file-content::before, .nn-split-container[data-navigator-focused='false'] .nn-navitem.nn-selected::before, .nn-split-container[data-navigator-focused='true'][data-focus-pane='navigation'] .nn-file.nn-selected .nn-file-content::before, .nn-split-container[data-navigator-focused='true'][data-focus-pane='files'] .nn-navitem.nn-selected::before, .nn-split-container[data-navigator-focused='true'][data-focus-pane='search'] .nn-file.nn-selected .nn-file-content::before, .nn-split-container[data-navigator-focused='true'][data-focus-pane='search'] .nn-navitem.nn-selected::before { background-color: var(--nn-theme-navitem-selected-inactive-bg); } /* Active navigation item selection styles - only when navigation pane is focused */ .nn-split-container[data-navigator-focused='true'][data-focus-pane='navigation'] .nn-navitem.nn-selected .nn-navitem-chevron { color: var(--nn-theme-navitem-selected-chevron-color); } .nn-split-container[data-navigator-focused='true'][data-focus-pane='navigation'] .nn-navitem.nn-selected .nn-navitem-icon { color: var(--nn-theme-navitem-selected-icon-color); } .nn-split-container[data-navigator-focused='true'][data-focus-pane='navigation'] .nn-navitem.nn-selected .nn-navitem-name { color: var(--nn-theme-navitem-selected-name-color); } .nn-split-container[data-navigator-focused='true'][data-focus-pane='navigation'] .nn-navitem.nn-selected .nn-navitem-count { color: var(--nn-theme-navitem-selected-count-color); background-color: var(--nn-theme-navitem-selected-count-bg); } /* ======================================================================== Hover States ======================================================================== */ /* File hover states - maintains transparency - desktop only */ .nn-desktop .nn-file:hover .nn-file-content { background-color: transparent; } .nn-desktop .nn-file.nn-selected:hover .nn-file-content, .theme-dark .nn-desktop .nn-file.nn-selected:hover .nn-file-content { background-color: transparent; } /* ======================================================================== Drag and Drop States ======================================================================== */ /* Dragging state - visual feedback during drag operations */ .nn-dragging { opacity: 0.5; } /* Resizing state - prevents text selection during pane resize */ body.nn-resizing { -webkit-user-select: none; user-select: none; } /* Drag over state - highlights valid drop targets */ .nn-navitem.nn-drag-over { background-color: var(--text-selection); border-radius: min(14px, var(--nn-theme-navitem-border-radius)); } .nn-list-pane-scroller.nn-drag-over { outline: 2px solid var(--text-selection); outline-offset: -2px; } /* Special visual feedback for tag drop zones */ [data-drop-zone='tag'].nn-drag-over { background-color: var(--background-modifier-success); border-radius: min(14px, var(--nn-theme-navitem-border-radius)); } /* Different style for untagged drop zone */ [data-drop-zone='tag'][data-tag='__untagged__'].nn-drag-over { background-color: var(--background-modifier-error-hover); border-radius: min(14px, var(--nn-theme-navitem-border-radius)); } /* Empty placeholder to hide browser's default drag preview */ .nn-drag-empty-placeholder { position: absolute; width: 1px; height: 1px; left: -9999px; top: -9999px; opacity: 0; } /* Drag ghost element - follows the cursor during drag */ .nn-drag-ghost { position: fixed; pointer-events: none; z-index: 999999; opacity: 0.9; will-change: transform; } /* Badge shown on drag ghost for multiple files - Apple-style red badge */ .nn-drag-ghost-badge { background-color: #dc3545; color: white; font-weight: bold; font-size: 14px; min-width: 24px; height: 24px; padding: 0 8px; border-radius: 12px; display: inline-flex; align-items: center; justify-content: center; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); } /* Icon shown on drag ghost for single file/folder - dark circular background */ .nn-drag-ghost-icon { background-color: #000000; /* Default black for light mode */ border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2); } /* Dark mode: use dark gray background */ .theme-dark .nn-drag-ghost-icon { background-color: var(--background-modifier-border-hover); } /* Style the Lucide icon inside drag ghost - white icon */ .nn-drag-ghost-icon svg { width: 16px; height: 16px; color: #ffffff; stroke: #ffffff; stroke-width: 2.5; fill: none; } /* Featured image in drag ghost - circular */ .nn-drag-ghost-icon.nn-drag-ghost-featured-image { padding: 0; overflow: hidden; width: 44px; height: 44px; border-radius: 50%; border: 2px solid #000000; } /* Dark mode: use dark gray border for featured image */ .theme-dark .nn-drag-ghost-icon.nn-drag-ghost-featured-image { border-color: var(--background-modifier-border); } .nn-drag-ghost-icon.nn-drag-ghost-featured-image img { width: 100%; height: 100%; object-fit: cover; object-position: center; } /* Header actions layout variations Different layouts are needed for mobile vs desktop views: - space-between: Mobile file pane (back button + folder name + actions) - flex-end: Mobile folder pane (actions only, aligned right) */ .nn-header-actions--space-between { width: 100%; justify-content: space-between; } .nn-header-actions--flex-end { width: 100%; justify-content: flex-end; } /* ======================================================================== Context Menu States ======================================================================== */ /* Context menu active folder - prepares for outline */ .nn-navitem.nn-context-menu-active { position: relative; } /* Context menu outline for folders - shows which item menu affects */ .nn-navitem.nn-context-menu-active:not(.nn-selected)::after { content: ''; position: absolute; top: 0; inset-inline-start: 0; inset-inline-end: 0; bottom: 0; border: 2px solid var(--nn-theme-navitem-selected-bg); border-radius: min(14px, var(--nn-theme-navitem-border-radius)); pointer-events: none; z-index: 10; } /* Context menu active file - prepares for outline */ .nn-file.nn-context-menu-active .nn-file-content { position: relative; } /* Context menu outline for files - shows which item menu affects */ .nn-file.nn-context-menu-active:not(.nn-selected) .nn-file-content::after { content: ''; position: absolute; top: 0; inset-inline-start: 0; inset-inline-end: 0; bottom: 0; /* Extend to bottom edge to cover separator space */ border: 2px solid var(--nn-theme-navitem-selected-bg); border-radius: min(16px, var(--nn-theme-file-border-radius)); pointer-events: none; z-index: 10; } /* ======================================================================== Hidden Items - Dimmed appearance for hidden folders and tags ======================================================================== */ /* Hidden items (folders and tags) - dimmed appearance */ .nn-navitem.nn-excluded .nn-navitem-chevron, .nn-navitem.nn-excluded .nn-navitem-icon, .nn-navitem.nn-excluded .nn-navitem-name, .nn-navitem.nn-excluded .nn-navitem-count { opacity: 0.5; } /* ======================================================================== Modal Styles ======================================================================== */ /* Modal input field - used in rename/create dialogs */ .nn-input { width: 100%; padding: 8px 12px; border: 1px solid var(--background-modifier-border); border-radius: var(--radius-s); background-color: var(--background-primary); color: var(--text-normal); font-size: 14px; margin: 16px 0; } /* Modal input focus state */ .nn-input:focus { outline: none; border-color: var(--interactive-accent); } /* Modal button container - right-aligned button group */ .nn-button-container { display: flex; justify-content: flex-end; gap: 8px; margin-top: 16px; } /* ======================================================================== What's New Modal ======================================================================== */ /* What's new modal width */ .modal.nn-whats-new-modal { width: 600px; max-width: calc(100vw - 40px); } /* What's new content layout */ .modal.nn-whats-new-modal .modal-content { padding: 16px; } .modal.nn-whats-new-modal .modal-close-button { z-index: 10; pointer-events: auto; } /* What's new header */ .nn-whats-new-header { margin-bottom: 16px; } /* What's new scrollable container */ .nn-whats-new-scroll { max-height: 400px; overflow-y: auto; margin-bottom: 0; padding-right: 8px; padding-bottom: 16px; } /* Version container */ .nn-whats-new-version { margin-bottom: 16px; padding-bottom: 16px; border-bottom: 1px solid var(--background-modifier-border); } /* Version container - last child no border */ .nn-whats-new-version:last-child { border-bottom: none; padding-bottom: 0; } /* Version header */ .nn-whats-new-version h3 { font-size: 14px; font-weight: 600; color: var(--text-normal); margin: 0 0 4px 0; } /* Feature list */ .nn-whats-new-features { margin-left: 16px; } /* Category headers */ .nn-whats-new-category { font-weight: bold; margin-top: 8px; margin-bottom: 4px; } /* Info text */ .nn-whats-new-info { margin-bottom: 12px; color: var(--text-normal); line-height: 1.5; /* Match list item text size on desktop */ font-size: 14px; } /* What's new divider */ .nn-whats-new-divider { border-top: 1px solid var(--background-modifier-border); margin-top: 0; margin-bottom: 16px; } /* Version date */ .nn-whats-new-date { color: var(--text-muted); font-size: 12px; display: block; margin-bottom: 8px; } /* Feature list */ .nn-whats-new-version ul { list-style: disc; margin: 0; padding-left: 16px; } /* Feature list item */ .nn-whats-new-version li { margin-bottom: 4px; color: var(--text-normal); font-size: 14px; line-height: 1.5; } /* Highlight emphasis */ .nn-highlight { background-color: var(--text-highlight-bg); color: var(--text-normal); padding: 0 2px; border-radius: 3px; font-weight: 600; } /* Support container */ .nn-whats-new-support { margin-top: 0; padding-top: 0; } /* Support text */ .nn-whats-new-support-text { color: var(--text-muted); font-size: 14px; margin-bottom: 12px; } /* Button container */ .nn-whats-new-buttons { display: flex; gap: 8px; margin-top: 12px; justify-content: center; } /* Support button styling */ .nn-support-button-small { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; } .nn-support-button-icon { display: inline-flex; font-size: 14px; line-height: 1; } /* Mobile adjustments */ @media (max-width: 768px) { .modal.nn-whats-new-modal { width: calc(100vw - 40px); max-width: calc(100vw - 40px); margin: 0 auto; } .modal.nn-whats-new-modal .modal-content { padding: 12px; } .nn-whats-new-scroll { max-height: 300px; padding-right: 4px; } /* Use standard text sizing for readability on mobile */ .nn-whats-new-info, .nn-whats-new-version li, .nn-whats-new-category { font-size: 15px; line-height: 1.6; } /* Mobile header size for the modal title */ .nn-whats-new-header { font-size: 16px; } /* Version header and date sizes on mobile */ .nn-whats-new-version h3 { font-size: 15px; } .nn-whats-new-date { font-size: 14px; } } /* Obsidian mobile app adjustments */ .is-mobile { /* Modal title */ .nn-whats-new-header { font-size: 16px; } /* Body text and labels */ .nn-whats-new-info, .nn-whats-new-version li, .nn-whats-new-category { font-size: 15px; line-height: 1.6; } /* Version header */ .nn-whats-new-version h3 { font-size: 15px; } /* Date line */ .nn-whats-new-date { font-size: 14px; } } /* ======================================================================== Icon Picker Modal ======================================================================== */ /* Icon picker modal width - adjust for mobile */ .modal.nn-icon-picker-modal { width: 480px; max-width: calc(100vw - 40px); } /* Icon picker content layout */ .modal.nn-icon-picker-modal .modal-content { padding: 0; height: 100%; display: flex; flex-direction: column; } /* Icon picker modal height control */ .modal.nn-icon-picker-modal { height: auto; } /* Prevent icon picker content overflow */ .modal.nn-icon-picker-modal .modal-content { overflow: hidden; } .modal.nn-icon-picker-modal .modal-close-button { z-index: 10; pointer-events: auto; } /* Icon search container with bottom border */ .nn-icon-search-container { padding: 12px; border-bottom: 1px solid var(--background-modifier-border); } /* Icon search input field */ .nn-icon-search-input { width: 100%; padding: 8px 12px; font-size: 14px; background: var(--background-primary); border: 1px solid var(--background-modifier-border); border-radius: var(--radius-s); } /* Icon search input focus */ .nn-icon-search-input:focus { outline: none; border-color: var(--interactive-accent); } /* Icon results scrollable container */ .nn-icon-results-container { height: 280px; min-height: 280px; overflow-y: auto; padding: 8px; flex: 0 0 auto; } .nn-icon-button-container { display: flex; justify-content: center; gap: 12px; margin-top: 16px; padding-top: 12px; border-top: 1px solid var(--background-modifier-border); } /* Icon category headers */ .nn-icon-section-header { font-size: 13px; font-weight: 400; color: var(--text-muted); letter-spacing: 0.5px; margin-bottom: 12px; } /* Icon grid layout - 5 columns */ .nn-icon-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 4px; } /* Individual icon item */ .nn-icon-item { display: flex; flex-direction: column; align-items: center; padding: 8px 8px; border-radius: var(--radius-s); } /* Icon item hover/focus states */ .nn-icon-item:hover, .nn-icon-item:focus { background-color: var(--background-modifier-hover); outline: none; } /* Icon item keyboard focus indicator */ .nn-icon-item:focus-visible { box-shadow: 0 0 0 2px var(--interactive-accent); } /* Icon preview container */ .nn-icon-item-preview { display: flex; align-items: center; justify-content: center; width: 32px; height: 32px; margin-bottom: 4px; color: var(--text-muted); } /* Icon SVG size */ .nn-icon-item-preview svg { width: 24px; height: 24px; } .nn-icon-item-preview.nn-iconfont { font-size: 28px; line-height: 1; } .nn-icon-item-preview.nn-emoji-icon { font-size: 24px; line-height: 1; } /* Icon name label */ .nn-icon-item-name { font-size: 11px; color: var(--text-muted); text-align: center; word-break: break-word; line-height: 1.2; max-width: 100%; } /* Empty search and additional icons messages */ .nn-icon-empty-message, .nn-icon-more-message { text-align: center; color: var(--text-muted); padding: 24px; font-size: 14px; } /* ======================================================================== Virtual List Styles ======================================================================== */ /* Virtual container wrapper - ensures proper absolute positioning context */ .nn-navigation-pane-scroller > .nn-virtual-container, .nn-list-pane-scroller > .nn-virtual-container { position: relative; } /* Virtual list container - holds all virtual items */ .nn-virtual-container { width: 100%; position: relative; } /* Virtual items container */ .nn-navigation-pane-scroller [data-index], .nn-list-pane-scroller [data-index] { position: absolute; top: 0; left: 0; width: 100%; } /* Virtual navigation item (folders and tags) */ .nn-virtual-nav-item { position: absolute; top: 0; left: 0; width: 100%; } /* Virtual file item wrapper - position relative for separator positioning */ .nn-virtual-file-item { position: relative; contain: paint; /* Isolate per-item painting */ } /* ======================================================================== Settings Page Styles ======================================================================== */ /* Settings page indentation for sub-settings */ .nn-sub-settings { margin-inline-start: 20px; padding-left: 1em; border-left: 2px solid var(--background-modifier-border); } /* Settings tabs layout and navigation */ .nn-settings-tabs { display: flex; flex-direction: column; gap: var(--size-4-4); } .nn-settings-tabs-nav { display: flex; flex-wrap: wrap; gap: var(--size-2-3); } .nn-settings-tab-button { display: inline-flex; align-items: center; justify-content: center; padding: 6px 12px; font-size: var(--font-ui-small); } .nn-settings-tabs-content { position: relative; } /* Hide tabs by default, show only active tab */ .nn-settings-tab { display: none; } .nn-settings-tab.is-active { display: block; } /* Settings section header spacing */ .setting-item-heading { margin-top: 30px; } /* First settings header - no top margin */ .setting-item-heading:first-child { margin-top: 0; } /* Utility class for conditionally hidden settings */ .nn-setting-hidden { display: none; } /* Informational text in settings */ .nn-setting-info { margin-top: 4px; font-size: var(--font-ui-smaller); color: var(--text-normal); font-weight: var(--font-semibold); line-height: 1.4; } /* Container for additional info below settings */ .nn-setting-info-container { margin-top: 8px; margin-bottom: 8px; } /* Wider text inputs for settings that benefit from more space */ .nn-setting-wide-input input[type='text'] { width: 300px; max-width: 100%; } /* ======================================================================== Sponsor Button Styles ======================================================================== */ /* Support button hover - subtle opacity change */ .nn-support-button:hover { opacity: 0.8; } /* ======================================================================== Mobile Styles ======================================================================== */ /* Mobile-specific wide input fields - full width on mobile */ .is-mobile .nn-setting-wide-input input[type='text'] { width: 100%; } /* ======================================================================== Database Statistics Section ======================================================================== */ /* Container for database statistics */ .nn-database-stats { margin-top: 30px; padding-top: 20px; border-top: 1px solid var(--background-modifier-border); } /* Statistics text styling */ .nn-stats-text { font-size: var(--font-ui-smaller); color: var(--text-muted); text-align: center; line-height: 1.5; } /* Remove duplicate borders when statistics are displayed */ .nn-stats-section { border: none !important; padding: 0 !important; } /* Ensure proper spacing from previous sections */ .nn-stats-section.setting-item { margin-top: 0; } /* Platform-specific safe area definitions */ .notebook-navigator-ios { /* iOS uses env() for dynamic safe areas (notch, home indicator) */ --nn-mobile-safe-area-bottom: env(safe-area-inset-bottom, 8px); } /* Mobile container - use grid for consistent structure while allowing sliding */ .notebook-navigator-mobile .nn-split-container { display: grid; grid-template-columns: 100%; grid-template-rows: 100%; position: relative; overflow: hidden; height: 100%; } /* Mobile panes - maintain flex structure like desktop but positioned in grid */ .notebook-navigator-mobile .nn-navigation-pane, .notebook-navigator-mobile .nn-list-pane { width: 100% !important; max-width: 100% !important; height: 100%; grid-column: 1; grid-row: 1; overflow: hidden; display: flex; flex-direction: column; transition: transform 0.2s ease-out; will-change: transform; } /* Make navigation pane flexible on mobile to handle resize gracefully */ .notebook-navigator-mobile .nn-navigation-pane { flex: 1; background-color: var(--nn-theme-mobile-nav-bg) !important; } /* Hide resize handle on mobile */ .notebook-navigator-mobile .nn-resize-handle { display: none !important; } /* Mobile view states - show navigation view */ .notebook-navigator-mobile .nn-split-container.show-navigation .nn-navigation-pane { transform: translateX(0%); } .notebook-navigator-mobile .nn-split-container.show-navigation .nn-list-pane { transform: translateX(100%); } /* Mobile view states - show files view */ .notebook-navigator-mobile .nn-split-container.show-files .nn-navigation-pane { transform: translateX(-100%); } .notebook-navigator-mobile .nn-split-container.show-files .nn-list-pane { transform: translateX(0%); } /* Add touch-action to prevent browser gestures interfering */ .notebook-navigator-mobile .nn-split-container { touch-action: pan-y; } /* Mobile header - adjust for back button */ .notebook-navigator-mobile .nn-pane-header { flex-shrink: 0; min-height: 48px; display: flex; align-items: center; padding: 0 var(--nn-file-item-padding-horizontal); background-color: var(--nn-theme-list-bg); } /* Simplified mobile headers */ .notebook-navigator-mobile .nn-pane-header-simple { justify-content: center; text-align: center; } .notebook-navigator-mobile .nn-pane-header-simple .nn-pane-header-title { font-size: var(--nn-mobile-header-font-size); font-weight: var(--nn-theme-mobile-list-header-breadcrumb-font-weight); color: var(--nn-theme-mobile-list-header-breadcrumb-color); width: 100%; text-align: center; } /* Mobile header container */ .notebook-navigator-mobile .nn-mobile-header { position: relative; display: flex; align-items: center; width: 100%; height: 100%; } /* Scrollable breadcrumb container */ .notebook-navigator-mobile .nn-breadcrumb-scroll { flex: 1; overflow-x: auto; overflow-y: hidden; scroll-behavior: smooth; -webkit-overflow-scrolling: touch; margin-left: 44px; /* Start right after the arrow button */ } /* Add right margin when no icon for centering */ .notebook-navigator-mobile .nn-mobile-header-no-icon .nn-breadcrumb-scroll { margin-right: 44px; } .notebook-navigator-mobile .nn-breadcrumb-scroll::-webkit-scrollbar { display: none; } /* Fade overlay positioned just right of back arrow */ .notebook-navigator-mobile .nn-breadcrumb-fade { position: absolute; left: 44px; /* Position just right of the back arrow */ top: 0; bottom: 0; width: 24px; background: linear-gradient(to right, var(--background-primary) 0%, transparent 100%); pointer-events: none; z-index: 1; } /* Mobile back button */ .notebook-navigator-mobile .nn-back-button { position: absolute; left: 0; width: 44px; height: 44px; min-width: 44px; min-height: 44px; padding: 10px; z-index: 1; opacity: 1 !important; } /* Increase stroke width for back button arrow and apply link color */ .notebook-navigator-mobile .nn-back-button svg { stroke: var(--nn-theme-mobile-list-header-link-color) !important; width: 20px !important; /* Default size for Android */ height: 20px !important; } /* iOS/iPadOS-specific back button adjustments */ .notebook-navigator-mobile:not(.notebook-navigator-android) .nn-back-button { padding: 4px !important; /* Reduce padding to allow larger icon (44px - 8px padding = 36px space) */ } /* iOS/iPadOS-specific back button chevron styling (36px actual, ~32px visual due to Lucide padding) */ .notebook-navigator-mobile:not(.notebook-navigator-android) .nn-back-button svg { width: 36px !important; height: 36px !important; } /* Mobile header title */ .notebook-navigator-mobile .nn-mobile-title { font-weight: var(--nn-theme-mobile-list-header-breadcrumb-font-weight); font-size: var(--nn-mobile-header-font-size); color: var(--nn-theme-mobile-list-header-breadcrumb-color); white-space: nowrap; padding-left: 12px; /* Standard padding for snap position */ } /* Mobile breadcrumb icon */ .notebook-navigator-mobile .nn-mobile-breadcrumb-icon { display: inline-block; margin-right: 8px; color: var(--nn-theme-navitem-name-color); vertical-align: middle; } /* Breadcrumb current segment - desktop uses list header color, mobile uses navitem color */ .nn-path-current { color: var(--nn-theme-list-header-breadcrumb-color); } /* Mobile breadcrumb current segment - use mobile-specific theme color */ .notebook-navigator-mobile .nn-path-current { color: var(--nn-theme-mobile-list-header-breadcrumb-color); } /* Mobile breadcrumb separator - use same color as current segment */ .notebook-navigator-mobile .nn-path-separator { color: var(--nn-theme-mobile-list-header-breadcrumb-color); } /* Ensure scrollers fill available space on mobile */ .notebook-navigator-mobile .nn-navigation-pane-scroller, .notebook-navigator-mobile .nn-list-pane-scroller { flex: 1; overflow-y: auto; -webkit-overflow-scrolling: touch; } /* Hide navigation pane border on mobile and use mobile background */ .notebook-navigator-mobile .nn-navigation-pane-scroller { border-right: none; background-color: var( --nn-theme-mobile-nav-bg ); /* Opaque background on scroller for GPU scroll layer (see .nn-navigation-pane-scroller) */ } /* Note: Bottom spacing is handled by a spacer item in the virtualized list */ /* Desktop single-pane mode styles */ /* Desktop single-pane - show navigation view (hide files) */ .nn-desktop.nn-single-pane.show-navigation .nn-list-pane { position: absolute; contain: layout style paint; /* Exclude 'size' to allow virtualizer to measure properly */ content-visibility: hidden; /* Modern optimization */ } /* Desktop single-pane - show files view (hide navigation) */ .nn-desktop.nn-single-pane.show-files .nn-navigation-pane { position: absolute; contain: layout style paint; /* Exclude 'size' to allow virtualizer to measure properly */ content-visibility: hidden; /* Modern optimization */ } /* Disable drag and drop cursors on mobile */ .notebook-navigator-mobile [draggable='true'] { cursor: default !important; } /* Disable drag-over states on mobile */ .notebook-navigator-mobile .nn-drag-over { background-color: transparent !important; } /* Touch-friendly tap targets on mobile */ .notebook-navigator-mobile .nn-navitem { height: var(--nn-setting-nav-item-height-mobile); /* Fixed height instead of min-height */ } /* Larger touch targets for chevrons on mobile */ .notebook-navigator-mobile .nn-navitem-chevron { width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; } /* ======================================================================== Color Picker Modal - Compact Mobile-Friendly Design ======================================================================== */ /* Modal size - use natural width */ .modal.nn-color-picker-modal { max-height: 80vh; } /* Modal content padding */ .modal.nn-color-picker-modal .modal-content { padding: 16px; width: 100%; box-sizing: border-box; display: flex; flex-direction: column; gap: 16px; overflow: hidden; } .modal.nn-color-picker-modal .modal-close-button { z-index: 10; pointer-events: auto; } /* Header */ .nn-color-picker-header, .nn-icon-picker-header { margin-bottom: 16px; text-align: center; } .nn-color-picker-header h3, .nn-icon-picker-header h3 { margin: 0; font-size: 16px; font-weight: 600; color: var(--text-normal); } /* Two column layout */ .nn-color-picker-content { display: flex; gap: 20px; flex: 1 1 auto; overflow-y: auto; padding-bottom: 8px; } .nn-color-picker-left, .nn-color-picker-right { display: flex; flex-direction: column; } .nn-color-picker-left { flex: 0 0 250px; } .nn-color-picker-right { flex: 1; min-width: 200px; } /* Preview section */ .nn-color-preview-section { margin-bottom: auto; /* Push preset colors to bottom */ } .nn-color-preview-container { display: flex; align-items: center; gap: 12px; } .nn-preview-current, .nn-preview-new { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 6px; } .nn-preview-label, .nn-rgb-label, .nn-rgb-title, .nn-hex-title { font-size: 11px; color: var(--text-muted); font-weight: 500; } .nn-preview-color { width: 100%; height: 50px; border-radius: var(--radius-m); border: 1px solid var(--background-modifier-border); } .nn-color-swatch { position: relative; overflow: hidden; } .nn-color-swatch::after { content: ''; position: absolute; inset: 0; border-radius: inherit; background: var(--nn-color-swatch-color, transparent); pointer-events: none; } .nn-checkerboard, .nn-preview-color.nn-no-color { background-image: linear-gradient(45deg, #ccc 25%, transparent 25%, transparent 75%, #ccc 75%, #ccc), linear-gradient(45deg, #ccc 25%, transparent 25%, transparent 75%, #ccc 75%, #ccc); background-size: 10px 10px; background-position: 0 0, 5px 5px; background-color: #fff; } .theme-dark .nn-checkerboard, .theme-dark .nn-preview-color.nn-no-color { background-image: linear-gradient(45deg, #444 25%, transparent 25%, transparent 75%, #444 75%, #444), linear-gradient(45deg, #444 25%, transparent 25%, transparent 75%, #444 75%, #444); background-color: #222; } .nn-preview-arrow { width: 20px; height: 20px; color: var(--text-muted); flex-shrink: 0; margin-top: 18px; } .nn-preview-arrow svg { width: 16px; height: 16px; } /* RGB sliders section */ .nn-rgb-section, .nn-color-preview-section { padding-bottom: 15px; } .nn-rgb-section { margin-bottom: auto; /* Push everything below to the bottom */ } .nn-rgb-title { margin-bottom: 6px; } .nn-rgb-row { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; } .nn-rgb-row:last-child { margin-bottom: 0; } .nn-rgb-label { width: 16px; } .nn-rgb-slider { flex: 1; height: 4px; -webkit-appearance: none; appearance: none; background: var(--background-modifier-border); border-radius: 2px; outline: none; cursor: pointer; } /* Slider thumb */ .nn-rgb-slider::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 16px; height: 16px; border-radius: 50%; background: var(--interactive-accent); cursor: pointer; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); } .nn-rgb-slider::-moz-range-thumb { width: 16px; height: 16px; border-radius: 50%; background: var(--interactive-accent); cursor: pointer; border: none; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); } /* RGB value display */ .nn-rgb-value { width: 32px; text-align: right; font-size: 11px; color: var(--text-muted); font-family: var(--font-monospace); } /* Color gradients for sliders */ .nn-rgb-slider-r { background: linear-gradient(to right, #000000, #ff0000); } .nn-rgb-slider-g { background: linear-gradient(to right, #000000, #00ff00); } .nn-rgb-slider-b { background: linear-gradient(to right, #000000, #0000ff); } /* Hex input section */ .nn-hex-section { margin-bottom: 20px; } .nn-hex-title { display: block; margin-bottom: 6px; height: 17px; /* Match the preview label height for alignment */ } .nn-hex-container { display: flex; align-items: center; gap: 6px; } .nn-hex-label { font-size: 14px; color: var(--text-normal); font-weight: 500; } .nn-hex-input { flex: 1; padding: 6px 8px; border: 1px solid var(--background-modifier-border); border-radius: var(--radius-s); background: var(--background-primary); color: var(--text-normal); font-family: var(--font-monospace); font-size: 13px; } .nn-hex-input:focus { outline: none; border-color: var(--interactive-accent); box-shadow: 0 0 0 2px var(--interactive-accent-hover); } /* Recent colors header */ .nn-recent-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; } .nn-section-label { font-size: 12px; color: var(--text-muted); font-weight: 500; } .nn-clear-recent { width: 20px; height: 20px; padding: 0; background: transparent; color: var(--text-muted); border: 1px solid var(--background-modifier-border); border-radius: 3px; cursor: pointer; display: flex; align-items: center; justify-content: center; font-size: 14px; line-height: 1; } .nn-clear-recent:hover { background: var(--background-modifier-hover); color: var(--text-normal); border-color: var(--background-modifier-border-hover); } /* Preset and Recent colors sections */ .nn-preset-section, .nn-recent-section { margin-top: auto; /* Align to bottom */ } .nn-preset-colors, .nn-recent-colors { display: grid; grid-template-columns: repeat(5, 1fr); gap: 6px; } .nn-preset-colors { margin-top: 8px; } /* Color dots */ .nn-color-dot { aspect-ratio: 1; border-radius: var(--radius-s); cursor: pointer; border: 1px solid var(--background-modifier-border); transition: transform 0.1s ease; position: relative; } .nn-recent-remove-button { position: absolute; top: 2px; right: 2px; width: 16px; height: 16px; padding: 0; border-radius: 999px; border: 1px solid var(--background-modifier-border); background: var(--background-primary); color: var(--text-muted); display: flex; align-items: center; justify-content: center; cursor: pointer; } .nn-recent-remove-button:hover { color: var(--text-normal); border-color: var(--interactive-accent); } .nn-recent-remove-button:focus-visible { outline: 2px solid var(--interactive-accent); outline-offset: 1px; } .nn-recent-remove-glyph { font-size: 11px; line-height: 1; transform: translateY(-1px); pointer-events: none; } /* Touch target enhancement for mobile */ .nn-color-dot::before { content: ''; position: absolute; top: -4px; left: -4px; right: -4px; bottom: -4px; } .nn-color-dot:hover { transform: scale(1.1); border-color: var(--interactive-accent); } .nn-color-dot:active { transform: scale(0.95); } /* Empty color slot */ .nn-color-dot.nn-color-empty { background: var(--background-secondary); border-style: dashed; cursor: default; opacity: 0.3; } .nn-color-dot.nn-color-empty:hover { transform: none; border-color: var(--background-modifier-border); } /* Button container */ .nn-color-button-container { display: flex; gap: 12px; margin-top: 20px; padding-top: 16px; border-top: 1px solid var(--background-modifier-border); justify-content: center; } /* Dark theme adjustments */ .theme-dark .nn-preview-color, .theme-dark .nn-color-dot { border-color: rgba(255, 255, 255, 0.1); } .theme-dark .nn-color-dot:hover { border-color: var(--interactive-accent); } /* Mobile responsiveness */ @media (max-width: 600px) { .nn-color-picker-content { flex-direction: column; gap: 16px; padding-bottom: 0; overflow-y: hidden; overflow-x: hidden; touch-action: none; } .nn-color-picker-left, .nn-color-picker-right { flex: 1 1 auto; width: 100%; } .nn-preset-colors, .nn-recent-colors { grid-template-columns: repeat(8, 1fr); } .modal.nn-color-picker-modal .modal-content { padding: 16px 16px 12px; gap: 12px; } .nn-color-button-container { margin-top: 12px; padding-top: 12px; } } /* ======================================================================== Folder Color Styles ======================================================================== */ /* ======================================================================== Mobile-specific Folder Text Size ======================================================================== */ /* Mobile root variables */ .notebook-navigator-mobile { --nn-nav-icon-size: 20px; } /* Folder text size on mobile */ .notebook-navigator-mobile .nn-navitem-name { font-size: var(--nn-setting-nav-font-size-mobile); } /* Increase folder count size on mobile to match folder text */ .notebook-navigator-mobile .nn-navitem-count { font-size: 13px; } /* Mobile folder content padding adjustment for proper selection height */ .notebook-navigator-mobile .nn-navitem-content { padding: var(--nn-setting-nav-padding-vertical-mobile) var(--nn-nav-item-padding-horizontal); padding-inline-start: 4px; height: 100%; display: flex; align-items: center; } .notebook-navigator-mobile .nn-root-reorder-remove { font-size: var(--nn-setting-nav-font-size-mobile); } /* ======================================================================== Mobile Tab Bars - iOS-style bottom navigation ======================================================================== */ /* Mobile toolbar container */ .nn-mobile-toolbar { display: flex; justify-content: space-around; align-items: center; background-color: var(--nn-theme-list-bg); border-top: 1px solid var(--nn-theme-mobile-toolbar-border-color); flex-shrink: 0; padding: 0 8px; /* Use platform-specific safe area variable */ padding-bottom: var(--nn-mobile-safe-area-bottom); /* Adjust height to include safe area padding */ height: calc(49px + var(--nn-mobile-safe-area-bottom)); min-height: calc(49px + var(--nn-mobile-safe-area-bottom)); } /* Mobile toolbar buttons */ .nn-mobile-toolbar-button { display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; min-width: 44px; min-height: 44px; background: transparent !important; background-color: transparent !important; border: none; border-radius: var(--radius-m); color: var(--nn-theme-mobile-toolbar-button-icon-color); transition: background-color 0.15s ease, color 0.15s ease; cursor: pointer; padding: 0; box-shadow: none !important; } /* Mobile toolbar button icons */ .nn-mobile-toolbar-button svg { width: 24px; height: 24px; stroke-width: 1.5; stroke: var(--nn-theme-mobile-toolbar-button-icon-color); } /* Mobile toolbar button tap feedback */ .nn-mobile-toolbar-button:active { opacity: 0.7; } /* Active mobile toolbar button state - toggled on */ .nn-mobile-toolbar-button-active { color: var(--nn-theme-mobile-toolbar-button-active-icon-color) !important; background-color: var(--nn-theme-mobile-toolbar-button-active-bg) !important; } .nn-mobile-toolbar-button-active svg { stroke: var(--nn-theme-mobile-toolbar-button-active-icon-color) !important; stroke-width: 1.5; } /* Disabled mobile toolbar button */ .nn-mobile-toolbar-button:disabled { opacity: 0.4; cursor: not-allowed; } /* ======================================================================== Android Toolbar Positioning Android displays toolbar at top, iOS at bottom ======================================================================== */ /* Android: toolbar at top with reduced height */ .notebook-navigator-android .nn-mobile-toolbar { background-color: var(--nn-theme-list-bg); border-top: none; border-bottom: 1px solid var(--nn-theme-mobile-toolbar-border-color); padding-bottom: 0; height: 44px; min-height: 44px; } /* Android: smaller toolbar buttons */ .notebook-navigator-android .nn-mobile-toolbar-button { width: 40px; height: 40px; min-width: 40px; min-height: 40px; } /* Make panes flex containers on mobile to accommodate tab bars */ .notebook-navigator-mobile .nn-navigation-pane, .notebook-navigator-mobile .nn-list-pane { display: flex; flex-direction: column; height: 100%; } /* Ensure scrollers take remaining space */ .notebook-navigator-mobile .nn-navigation-pane-scroller, .notebook-navigator-mobile .nn-list-pane-scroller { flex: 1; min-height: 0; /* Important for proper scrolling */ } /* Mobile list pane scroller - use mobile background */ .notebook-navigator-mobile .nn-list-pane-scroller { background-color: var(--nn-theme-list-bg); /* Opaque background on scroller for GPU scroll layer (see .nn-list-pane-scroller) */ } /* Mobile slim file items - larger touch targets */ .notebook-navigator-mobile .nn-file.nn-slim .nn-file-content { padding: var(--nn-file-padding-vertical-slim-mobile) var(--nn-file-item-padding-horizontal); } /* Mobile slim mode file names - larger font for better readability */ .notebook-navigator-mobile .nn-file.nn-slim .nn-file-name { font-size: 15px; } /* ======================================================================== RTL (Right-to-Left) Support ======================================================================== */ /* Mobile slide animations for RTL */ .mod-rtl .notebook-navigator-mobile .nn-split-container.show-navigation .nn-navigation-pane { transform: translateX(0%); } .mod-rtl .notebook-navigator-mobile .nn-split-container.show-navigation .nn-list-pane { transform: translateX(-100%); } .mod-rtl .notebook-navigator-mobile .nn-split-container.show-files .nn-navigation-pane { transform: translateX(100%); } .mod-rtl .notebook-navigator-mobile .nn-split-container.show-files .nn-list-pane { transform: translateX(0%); } /* Ensure proper text direction for file preview and dates */ .nn-file-preview, .nn-file-date, .nn-file-folder, .nn-date-group-header { unicode-bidi: plaintext; } /* Fix icon mirroring - Obsidian auto-mirrors icons, but we may need to prevent it for some icons */ /* Currently, all our icons (chevrons, folders, etc.) should be mirrored in RTL, so no overrides needed */ /* ================================================================================= Icon System ================================================================================= */ /* Emoji icon styles */ .nn-emoji-icon { font-family: 'Apple Color Emoji', 'Segoe UI Emoji', 'Noto Color Emoji', sans-serif; line-height: 1; display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; text-align: center; /* Prevent text selection of emoji icons */ user-select: none; -webkit-user-select: none; } /* Ensure emojis in navigation items display properly */ .nn-navitem-icon.nn-emoji-icon, .nn-tag-icon.nn-emoji-icon { font-size: var(--nn-nav-icon-size); width: var(--nn-nav-icon-size); height: var(--nn-nav-icon-size); line-height: var(--nn-nav-icon-size); text-align: center; display: flex; align-items: center; justify-content: center; } /* Prevent emoji icons from being affected by text styles */ .nn-emoji-icon { font-style: normal; font-weight: normal; text-decoration: none; } /* Ensure proper sizing when used in buttons */ .nn-icon-button .nn-emoji-icon { width: 1em; height: 1em; font-size: inherit; } /* Icon Picker Modal Styles */ .modal.nn-icon-picker-modal .modal-content { min-height: 380px; } /* Icon font styles */ .nn-iconfont { display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; user-select: none; -webkit-user-select: none; text-rendering: optimizeLegibility; } .nn-iconfont-fa-solid, .nn-iconfont-rpg-awesome, .nn-iconfont-bootstrap-icons, .nn-iconfont-material-icons, .nn-iconfont-phosphor, .nn-iconfont-simple-icons { font-style: normal; } .nn-iconfont-fa-solid { font-weight: 900; font-family: 'NotebookNavigatorFontAwesomeSolid', 'Font Awesome 7 Free', sans-serif; } .nn-iconfont-rpg-awesome, .nn-iconfont-bootstrap-icons, .nn-iconfont-material-icons, .nn-iconfont-phosphor, .nn-iconfont-simple-icons { font-weight: 400; } .nn-iconfont-rpg-awesome { font-family: 'NotebookNavigatorRpgAwesome', 'RPG Awesome', sans-serif; } .nn-iconfont-bootstrap-icons { font-family: 'NotebookNavigatorBootstrapIcons', 'Bootstrap Icons', sans-serif; } .nn-iconfont-material-icons { font-family: 'NotebookNavigatorMaterialIcons', 'Material Icons', sans-serif; } .nn-iconfont-phosphor { font-family: 'NotebookNavigatorPhosphorIcons', 'Phosphor', sans-serif; } .nn-iconfont-simple-icons { font-family: 'NotebookNavigatorSimpleIcons', 'Simple Icons', sans-serif; } .nn-icon-provider-tabs { display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: 8px; border-bottom: 1px solid var(--background-modifier-border); padding-bottom: 2px; } .nn-icon-provider-tab { padding: 4px 12px; border-radius: var(--radius-s); color: var(--text-muted); white-space: nowrap; } .nn-icon-provider-tab:hover { background-color: var(--background-modifier-hover); color: var(--text-normal); } .nn-icon-provider-tab.nn-active { background-color: var(--interactive-accent); color: var(--text-on-accent); } /* Emoji preview in icon picker */ .nn-icon-item-preview.nn-emoji-preview { font-size: 24px; } /* Icon section headers for categories */ .nn-icon-section-header { font-size: var(--font-ui-small); font-weight: 600; color: var(--text-muted); margin-top: 12px; margin-bottom: 4px; } .nn-icon-section-header:first-child { margin-top: 0; } /* ======================================================================== Metadata Info Styles ======================================================================== */ /* Container for metadata parsing info - flex row layout */ .nn-metadata-info-row { display: flex; justify-content: space-between; align-items: center; gap: 16px; } /* Text container - takes up available space */ .nn-metadata-info-text { flex: 1; } /* Error text styling */ .nn-metadata-error-text { color: var(--text-error); font-weight: bold; } /* Export button - stays on the right */ .nn-metadata-export-button { flex-shrink: 0; } /* Settings subsetting indentation */ .notebook-navigator-subsetting { margin-left: 20px; } /* Make delete menu items red (items with trash icon) */ .menu-item:has(.menu-item-icon svg.lucide-trash) { color: var(--text-error); } .menu-item:has(.menu-item-icon svg.lucide-trash) .menu-item-icon { color: var(--text-error); } /* ======================================================================== Transparency Toggles ======================================================================== */ /* Navigation pane transparency - applied when toggle is enabled */ body.nn-navigation-pane-transparent .notebook-navigator { background-color: transparent !important; } body.nn-navigation-pane-transparent .nn-navigation-pane { background-color: transparent !important; } body.nn-navigation-pane-transparent .nn-navigation-pane .nn-pane-header { background-color: transparent !important; } body.nn-navigation-pane-transparent .nn-shortcut-pinned { background-color: transparent !important; } body.nn-navigation-pane-transparent .nn-navigation-pane-scroller { background-color: transparent !important; } /* List pane transparency - applied when toggle is enabled */ body.nn-list-pane-transparent .notebook-navigator { background-color: transparent !important; } body.nn-list-pane-transparent .nn-list-pane { background-color: transparent !important; } body.nn-list-pane-transparent .nn-list-pane .nn-pane-header { background-color: transparent !important; } body.nn-list-pane-transparent .nn-list-pane-scroller { background-color: transparent !important; } body.nn-list-pane-transparent .nn-list-title-area { background-color: transparent !important; } body.nn-list-pane-transparent .nn-search-bar-container, body.nn-list-pane-transparent .nn-search-input-wrapper { background-color: transparent !important; } /* @settings name: Notebook Navigator id: notebook-navigator-style-settings settings: - - id: nn-nav-pane-heading title: Navigation pane (folders & tags) description: Customize the background, items, and interactions within the navigation pane. type: heading level: 1 collapsed: true - - id: nn-theme-nav-bg title: Navigation pane background description: Background color of the navigation pane. See Mobile navigation background for mobile. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-navigation-pane-transparent title: Navigation pane transparency description: Make the navigation pane transparent (removes background). type: class-toggle - - id: nn-nav-pane-items-heading title: Folder & tag items type: heading level: 2 collapsed: false - - id: nn-theme-navitem-chevron-color title: Expand/collapse arrow color description: Color for expand/collapse arrows. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-navitem-icon-color title: Icon color description: Icon color for folders and tags. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-navitem-name-color title: Text color description: Text color for folder and tag names. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-navitem-count-color title: File count text color description: Text color for file count badges. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-navitem-count-bg title: File count background description: Background color for file count badges. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-navitem-count-border-radius title: File count border radius description: Corner radius for file count badges. type: variable-number-slider default: 8 format: px min: 0 max: 8 step: 1 - - id: nn-theme-navitem-border-radius title: Item border radius description: Corner radius for folder and tag items. type: variable-number-slider default: 4 format: px min: 0 max: 14 step: 1 - - id: nn-theme-navitem-hover-bg title: Hover background description: Item hover background color. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-navitem-selected-bg title: Selection background description: Selected item background color. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-navitem-selected-chevron-color title: Selected chevron color description: Expand/collapse arrow color when item is selected. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-navitem-selected-icon-color title: Selected icon color description: Icon color when item is selected. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-navitem-selected-name-color title: Selected name color description: Folder/tag name color when selected. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-navitem-selected-count-color title: Selected count text color description: File count text color when item is selected. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-navitem-selected-count-bg title: Selected count background description: File count background color when selected. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-navitem-selected-inactive-bg title: Selection background (inactive) description: Selected item background color when pane is inactive. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-navitem-text-styling-heading title: Text styling description: Font weight and text decoration for navigation items. Values 100-900 (400 = regular, 600 = bold). Priority - folder notes > custom colors > default. type: heading level: 2 collapsed: false - - id: nn-theme-navitem-file-name-font-weight title: Default file name weight description: Default font weight for file names in shortcuts and recent notes. type: variable-number-slider default: 400 min: 100 max: 900 step: 100 - - id: nn-theme-navitem-name-font-weight title: Default folder/tag weight description: Default font weight for folder and tag names. type: variable-number-slider default: 400 min: 100 max: 900 step: 100 - - id: nn-theme-navitem-count-font-weight title: File count font weight description: Font weight for file count badges. type: variable-number-slider default: 400 min: 100 max: 900 step: 100 - - id: nn-theme-navitem-custom-color-file-name-font-weight title: Custom color file name weight description: Font weight for file names with custom colors (overrides default file weight). type: variable-number-slider default: 600 min: 100 max: 900 step: 100 - - id: nn-theme-navitem-custom-color-name-font-weight title: Custom color folder/tag weight description: Font weight for folders and tags with custom colors (overrides default folder/tag weight). type: variable-number-slider default: 600 min: 100 max: 900 step: 100 - - id: nn-theme-navitem-folder-note-name-font-weight title: Folder note weight description: Font weight for folders with notes (overrides all others). type: variable-number-slider default: 600 min: 100 max: 900 step: 100 - - id: nn-theme-navitem-folder-note-name-decoration title: Folder note decoration description: Text decoration for folders with notes. type: variable-select default: underline options: - label: None value: none - label: Underline value: underline - label: Dotted underline value: underline dotted - - id: nn-theme-pane-divider-heading title: Pane divider description: Vertical divider between navigation and file list panes. type: heading level: 1 collapsed: true - - id: nn-theme-divider-border-color title: Divider border color description: Color of the vertical border between panes. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-divider-resize-handle-hover-bg title: Resize handle hover background description: Background color when hovering the pane divider to resize. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-file-list-heading title: List pane (files) description: Customize the file list appearance. type: heading level: 1 collapsed: true - - id: nn-theme-list-bg title: List pane background description: Background color of the list pane. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-list-pane-transparent title: List pane transparency description: Make the list pane transparent (removes background). type: class-toggle - - id: nn-theme-list-search-active-bg title: Search field active background description: Background color for the search field when a search query is active (desktop only). type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-list-search-border-color title: Search border color description: Border and focus ring color for the search field. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-list-heading-color title: List heading text color description: Text color for the list pane overlay heading. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-list-heading-font-weight title: List heading font weight description: Font weight for the list pane overlay heading. type: variable-number-slider default: 600 min: 100 max: 900 step: 100 - - id: nn-theme-list-header-icon-color title: List header icon color description: Color for the folder/tag icon shown beside the desktop list header breadcrumb. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-list-header-breadcrumb-color title: List header breadcrumb color description: Text color for the breadcrumb path in the desktop list header. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-list-header-breadcrumb-font-weight title: List header breadcrumb font weight description: Font weight for breadcrumb text in the desktop list header. type: variable-number-slider default: 600 min: 100 max: 900 step: 100 - - id: nn-theme-list-group-header-color title: Group header text color description: Text color for date groups and pinned section. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-list-separator-color title: List separator color description: Divider line color between files. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-file-list-items-heading title: File items type: heading level: 2 collapsed: false - - id: nn-theme-file-name-color title: File name color description: Text color for file names. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-file-preview-color title: File preview text color description: Text color for content preview. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-file-feature-border-radius title: Feature image border radius description: Corner radius for feature images. type: variable-number-slider default: 4 format: px min: 0 max: 32 step: 1 - - id: nn-theme-file-date-color title: File date color description: Text color for creation or modification dates. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-file-parent-color title: File parent folder color description: Text color for parent folder path (when showing subfolders). type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-file-tag-color title: File tag text color description: Text color for tag pills. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-file-tag-custom-color-text-color title: Custom tag text color description: Text color for tags with custom colors. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-file-tag-bg title: File tag background description: Background color for tag pills. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-file-tag-border-radius title: Tag pill border radius description: Corner radius for tag pills. type: variable-number-slider default: 10 format: px min: 0 max: 10 step: 1 - - id: nn-theme-file-border-radius title: File item border radius description: Corner radius for file items. type: variable-number-slider default: 8 format: px min: 0 max: 16 step: 1 - - id: nn-theme-file-selected-bg title: Selection background description: Selected file background color. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-file-selected-name-color title: Selected file name color description: Text color for file names when selected. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-file-selected-preview-color title: Selected file preview color description: Text color for content preview when selected. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-file-selected-date-color title: Selected file date color description: Text color for file dates when selected. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-file-selected-parent-color title: Selected file parent folder color description: Text color for parent folder path when selected. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-file-selected-tag-color title: Selected file tag text color description: Text color for tag pills when selected. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-file-selected-tag-bg title: Selected file tag background description: Background color for tag pills when selected. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-file-selected-inactive-bg title: Selection background (inactive) description: Selected file background color when pane is inactive. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-file-text-styling-heading title: Text styling type: heading level: 2 collapsed: false - id: nn-theme-list-group-header-font-weight title: Group header font weight description: Font weight for date groups and pinned section. type: variable-number-slider default: 600 min: 100 max: 900 step: 100 - - id: nn-theme-file-name-font-weight title: File name font weight description: Font weight for file names. type: variable-number-slider default: 600 min: 100 max: 900 step: 100 - - id: nn-theme-file-slim-name-font-weight title: File name font weight (slim mode) description: Font weight for file names in slim mode. type: variable-number-slider default: 400 min: 100 max: 900 step: 100 - - id: nn-theme-file-preview-font-weight title: File preview font weight description: Font weight for file preview text. type: variable-number-slider default: 400 min: 100 max: 900 step: 100 - - id: nn-theme-file-date-font-weight title: Date font weight description: Font weight for file dates. type: variable-number-slider default: 400 min: 100 max: 900 step: 100 - - id: nn-theme-file-parent-font-weight title: Parent folder font weight description: Font weight for parent folder path. type: variable-number-slider default: 400 min: 100 max: 900 step: 100 - - id: nn-theme-file-tag-font-weight title: Tag text font weight description: Font weight for tag pill text. type: variable-number-slider default: 400 min: 100 max: 900 step: 100 - - id: nn-theme-quick-actions-heading title: Quick actions description: Hover toolbar for file actions. type: heading level: 2 collapsed: false - - id: nn-theme-quick-actions-bg title: Toolbar background description: Background color of quick actions toolbar (supports transparency). type: variable-themed-color opacity: true format: rgb default-light: '#' default-dark: '#' - - id: nn-theme-quick-actions-border title: Toolbar border color description: Border color of quick actions toolbar. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-quick-actions-border-radius title: Toolbar border radius description: Corner radius for quick actions panel. type: variable-number-slider default: 4 format: px min: 0 max: 12 step: 1 - - id: nn-theme-quick-actions-icon-color title: Icon color description: Icon color for quick action buttons. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-quick-actions-icon-hover-color title: Icon hover color description: Icon color when hovering quick action buttons. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-quick-actions-separator-color title: Separator color description: Divider color between quick action buttons. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-header-heading title: Headers description: Customize pane header appearance. type: heading level: 1 collapsed: true - id: nn-header-actions-heading title: Header action buttons type: heading level: 2 collapsed: false - - id: nn-theme-header-button-icon-color title: Button icon color description: Default icon color for header buttons. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-header-button-hover-bg title: Button hover background description: Background color when hovering header buttons. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-header-button-active-bg title: Button active background description: Background color for active/toggled header buttons. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-header-button-active-icon-color title: Button active icon color description: Icon color for active/toggled header buttons. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-header-button-disabled-icon-color title: Button disabled icon color description: Icon color for disabled header buttons. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-mobile-heading title: Mobile styles description: Customize mobile interface elements. type: heading level: 1 collapsed: true - - id: nn-theme-mobile-list-header-link-color title: Mobile header link color description: Color for back button and clickable breadcrumb segments on mobile. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-mobile-list-header-breadcrumb-color title: Mobile header breadcrumb color description: Color for current folder and separators in breadcrumb on mobile. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-mobile-list-header-breadcrumb-font-weight title: Mobile breadcrumb font weight description: Font weight for mobile header breadcrumb. type: variable-number-slider default: 600 min: 100 max: 900 step: 100 - id: nn-theme-mobile-toolbar-bg title: Mobile toolbar background description: Background color of the mobile toolbar. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-mobile-toolbar-border-color title: Mobile toolbar border color description: Border color of the mobile toolbar. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-mobile-toolbar-button-icon-color title: Toolbar button icon color description: Icon color in mobile toolbar. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-mobile-toolbar-button-active-bg title: Toolbar button active background description: Background color for active toolbar button. type: variable-themed-color format: hex default-light: '#' default-dark: '#' - - id: nn-theme-mobile-toolbar-button-active-icon-color title: Toolbar button active icon color description: Icon color for active toolbar button. type: variable-themed-color format: hex default-light: '#' default-dark: '#' */