/*
Notebook Navigator - Plugin for Obsidian
Copyright (c) 2025-2026 Johan Sanneblad

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.

=========================================================================
GENERATED FILE - DO NOT EDIT styles.css
=========================================================================

Edit the CSS sources instead:
- src/styles/index.css (import order + per-file descriptions)
- src/styles/sections/*

Generated by: scripts/build-styles.mjs
*/
/* Source: src/styles/sections/core-variables.css */

/* ========================================================================
   CSS Variables - Defined at body level for Style Settings compatibility
   ======================================================================== */

/* Utility class for text that should only be exposed to assistive tech */
.nn-visually-hidden {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

/**
 * Hidden element used to resolve CSS variable colors to computed RGBA values.
 * Positioned offscreen and invisible to avoid layout impact while allowing getComputedStyle access.
 */
.nn-color-resolver {
    position: absolute;
    width: 0;
    height: 0;
    opacity: 0;
    pointer-events: none;
    visibility: hidden;
    z-index: -1;
    margin: 0;
    padding: 0;
    color: var(--nn-color-resolver-value, transparent);
    background-color: var(--nn-color-resolver-value, transparent);
}

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 */
    --nn-file-row-gap: 4px; /* Gap between columns inside a file row */
    --nn-file-icon-size: 16px; /* Leading icon size for file rows and pinned headers */
    --nn-file-icon-slot-width: var(--nn-file-icon-size); /* Leading icon slot width */
    --nn-file-icon-slot-gap: 6px; /* Space between leading icon slot and text (matches pinned header) */
    --nn-file-name-size-mobile: var(--nn-file-name-size); /* Mobile font size override */
    --nn-file-small-size-mobile: var(--nn-file-small-size); /* Mobile small font override */
    --nn-file-padding-vertical-mobile: var(--nn-file-padding-vertical); /* Mobile padding per side */
    --nn-file-padding-total-mobile: var(--nn-file-padding-total); /* Mobile total padding */
    --nn-file-icon-size-mobile: var(--nn-file-icon-size); /* Mobile icon size */
    --nn-file-icon-slot-width-mobile: var(--nn-file-icon-slot-width); /* Mobile icon slot width */

    /* ========================================================================
       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-compact: 4px; /* Desktop compact mode padding */
    --nn-file-padding-vertical-compact-mobile: 8px; /* Mobile compact mode padding */
    --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-file-title-line-height-mobile: 21px; /* Mobile title text height */
    --nn-file-single-text-line-height-mobile: 20px; /* Mobile single-line text height */
    --nn-file-multiline-text-line-height-mobile: 19px; /* Mobile preview text height */
    --nn-file-thumbnail-min-size: 42px; /* Minimum size for file thumbnails */
    --nn-file-thumbnail-max-size: 64px; /* Maximum size for file thumbnails */

    /* 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 */
    --nn-compact-font-size: 13px; /* Compact mode desktop font size */
    --nn-compact-font-size-mobile: 15px; /* Compact mode mobile font size */

    /* List group header heights and spacing */
    --nn-list-group-header-height: 27px; /* Header row and sticky header */
    --nn-list-group-progress-gap-after: 5px; /* Space below manual sort progress bars */
    --nn-list-group-goal-header-height: calc(var(--nn-list-group-header-height) + var(--nn-list-group-progress-gap-after));
    --nn-list-group-header-spacer-before: 20px; /* Spacer before subsequent headers */
    --nn-list-group-header-height-mobile: var(--nn-list-group-header-height);
    --nn-list-group-goal-header-height-mobile: var(--nn-list-group-goal-header-height);

    /* Navigation item heights - fixed pixel values to prevent fractional rendering */
    --nn-nav-line-height: 18px; /* Fixed line height for folder/tag names */
    --nn-navitem-count-font-size: 11px; /* Desktop count font size */
    --nn-navitem-count-font-size-mobile: 13px; /* Mobile count font size */
    /* Note: The following are dynamically set by JavaScript based on user settings:
       --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: 8px; /* Vertical padding around list title */
    --nn-list-title-font-size: 16px; /* Desktop list title text size */
    --nn-file-tag-row-height-base: 22px;
    --nn-file-tag-row-gap-base: 4px;
    --nn-file-tag-row-height: var(--nn-file-tag-row-height-base);
    --nn-file-tag-row-gap: var(--nn-file-tag-row-gap-base);

    /* ========================================================================
       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 */
    --nn-root-reorder-hint-font-size: var(--font-ui-smaller);
    --nn-root-reorder-hint-font-size-mobile: var(--font-ui-small);

    /* ========================================================================
       Pane Width Constraints
       ======================================================================== */

    /* Minimum widths for panes */
    --nn-navigation-pane-min-width: 150px; /* Minimum width for navigation pane */
    --nn-list-pane-min-width: 150px; /* Minimum width for list pane */
    --nn-navigation-pane-min-height: 160px; /* Minimum height for navigation pane (vertical split) */
    --nn-list-pane-min-height: 250px; /* Minimum height for list pane (vertical split) */

    /* ========================================================================
       Notebook Navigator Theme Variables
       ======================================================================== */

    /* -- Foreground colors -- */
    --nn-theme-foreground: var(--text-normal);
    --nn-theme-foreground-muted: color-mix(in srgb, var(--nn-theme-foreground) 70%, transparent);
    --nn-theme-foreground-faded: color-mix(in srgb, var(--nn-theme-foreground) 50%, transparent);
    --nn-theme-foreground-faint: color-mix(in srgb, var(--nn-theme-foreground) 10%, transparent);

    /* -- Navigation pane -- */
    --nn-theme-nav-bg: var(--background-secondary);
    --nn-theme-nav-separator-color: var(--nn-theme-foreground);
    --nn-theme-nav-separator-background: linear-gradient(
        90deg,
        transparent 0%,
        var(--nn-theme-nav-separator-color) 15%,
        var(--nn-theme-nav-separator-color) 85%,
        transparent 100%
    );
    --nn-theme-nav-separator-height: 1px;
    --nn-theme-nav-separator-opacity: 0.3;
    --nn-theme-nav-indent-guide-color: var(--nn-theme-foreground-faded);
    --nn-theme-nav-leader-color: var(--nn-theme-foreground-faded);
    --nn-theme-pinned-shortcut-shadow-color: rgba(0, 0, 0, 0.03);

    /* -- Navigation items -- */
    --nn-theme-navitem-chevron-color: var(--nn-theme-foreground-muted);
    --nn-theme-navitem-icon-color: var(--nn-theme-foreground-muted);
    --nn-theme-navitem-name-color: var(--nn-theme-foreground);
    --nn-theme-navitem-file-name-color: var(--nn-theme-navitem-name-color);
    --nn-theme-navitem-name-font-weight: 400;
    --nn-theme-navitem-custom-color-name-font-weight: 600;
    --nn-theme-navitem-folder-note-name-decoration: underline;
    --nn-theme-navitem-folder-note-name-hover-decoration: underline;
    --nn-theme-navitem-border-radius: 4px;
    --nn-theme-navitem-border-width: 0px;
    --nn-theme-navitem-custom-border-color: transparent;
    --nn-theme-navitem-hover-bg: var(--background-modifier-hover);
    --nn-theme-navitem-hover-border-color: transparent;
    --nn-theme-tag-positive-bg: #00800033;
    --nn-theme-tag-negative-bg: #ff000033;

    /* -- Navigation selection -- */
    --nn-theme-navitem-selected-bg: var(--text-selection);
    --nn-theme-navitem-selected-border-color: transparent;
    --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-inactive-bg: var(--background-modifier-hover);
    --nn-theme-navitem-selected-inactive-border-color: var(--nn-theme-navitem-selected-border-color);
    --nn-theme-navitem-selected-inactive-chevron-color: var(--nn-theme-navitem-selected-chevron-color);
    --nn-theme-navitem-selected-inactive-icon-color: var(--nn-theme-navitem-selected-icon-color);
    --nn-theme-navitem-selected-inactive-name-color: var(--nn-theme-navitem-name-color);

    /* -- File counts -- */
    --nn-theme-navitem-count-color: var(--nn-theme-foreground-muted);
    --nn-theme-navitem-count-font-weight: 400;
    --nn-theme-navitem-count-bg: transparent;
    --nn-theme-navitem-count-border-radius: 8px;
    --nn-theme-navitem-count-border-width: 0px;
    --nn-theme-navitem-count-border-color: transparent;
    --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-count-border-color: var(--nn-theme-navitem-count-border-color);
    --nn-theme-navitem-selected-inactive-count-color: var(--nn-theme-navitem-selected-count-color);
    --nn-theme-navitem-selected-inactive-count-bg: var(--nn-theme-navitem-selected-count-bg);
    --nn-theme-navitem-selected-inactive-count-border-color: var(--nn-theme-navitem-selected-count-border-color);

    /* -- List pane -- */
    --nn-theme-list-bg: var(--background-primary);
    --nn-theme-list-search-active-bg: var(--text-highlight-bg);
    --nn-theme-list-search-border-color: var(--background-modifier-border);
    --nn-theme-list-separator-color: var(--background-modifier-border);

    /* -- Group headers -- */
    --nn-theme-list-group-header-color: var(--nn-theme-foreground-muted);
    --nn-theme-list-group-header-font-weight: 600;

    /* -- File items -- */
    --nn-theme-file-name-color: var(--nn-theme-foreground);
    --nn-theme-file-name-font-weight: 600;
    --nn-theme-file-compact-name-font-weight: 400;
    --nn-theme-file-preview-color: var(--nn-theme-foreground-muted);
    --nn-theme-file-preview-font-weight: 400;
    /* --nn-theme-file-task-color and --nn-theme-file-task-complete-color are
       intentionally not declared here: task progress and replacement icon rules use var() fallbacks
       to detect whether a theme or Style Settings set them, so customized colors can persist on selected rows. */
    --nn-theme-file-task-font-weight: 400;
    --nn-theme-file-task-complete-font-weight: 400;
    --nn-theme-file-date-color: var(--nn-theme-foreground-faded);
    --nn-theme-file-date-font-weight: 400;
    --nn-theme-file-word-count-color: var(--nn-theme-foreground-faded);
    --nn-theme-file-word-count-font-weight: 400;
    --nn-theme-file-parent-color: var(--nn-theme-foreground-faded);
    --nn-theme-file-parent-font-weight: 400;
    --nn-theme-file-feature-border-radius: 4px;
    --nn-theme-file-border-radius: 8px;

    /* -- File selection -- */
    --nn-theme-file-selected-bg: var(--text-selection);
    --nn-theme-file-border-width: 0px;
    --nn-theme-file-selected-border-color: transparent;
    --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-foreground-muted);
    --nn-theme-file-selected-word-count-color: var(--nn-theme-foreground-muted);
    --nn-theme-file-selected-parent-color: var(--nn-theme-foreground-muted);
    --nn-theme-file-selected-inactive-bg: var(--background-modifier-hover);
    --nn-theme-file-selected-inactive-border-color: var(--nn-theme-file-selected-border-color);
    --nn-theme-file-selected-inactive-name-color: var(--nn-theme-file-selected-name-color);
    --nn-theme-file-selected-inactive-preview-color: var(--nn-theme-file-selected-preview-color);
    --nn-theme-file-selected-inactive-date-color: var(--nn-theme-file-selected-date-color);
    --nn-theme-file-selected-inactive-word-count-color: var(--nn-theme-file-selected-word-count-color);
    --nn-theme-file-selected-inactive-parent-color: var(--nn-theme-file-selected-parent-color);

    /* -- Tag and property pills -- */
    --nn-theme-file-tag-color: var(--nn-theme-foreground-faded);
    --nn-theme-file-tag-custom-color-text-color: var(--nn-theme-navitem-name-color);
    --nn-theme-file-property-color: var(--nn-theme-foreground-faded);
    --nn-theme-file-tag-font-weight: 400;
    --nn-theme-file-tag-bg: transparent;
    --nn-theme-file-tag-border-radius: 10px;
    --nn-theme-file-property-bg: transparent;
    --nn-theme-file-property-border-radius: 10px;
    --nn-theme-file-pill-border-width: 1px;
    --nn-theme-file-tag-border-color: color-mix(in srgb, var(--nn-theme-foreground) 30%, transparent);
    --nn-theme-file-property-border-color: var(--nn-theme-file-tag-border-color);
    --nn-theme-file-selected-tag-color: var(--nn-theme-foreground-muted);
    --nn-theme-file-selected-tag-bg: var(--nn-theme-file-tag-bg);
    --nn-theme-file-selected-tag-border-color: var(--nn-theme-file-tag-border-color);
    --nn-theme-file-selected-property-color: var(--nn-theme-foreground-muted);
    --nn-theme-file-selected-property-bg: var(--nn-theme-file-property-bg);
    --nn-theme-file-selected-property-border-color: var(--nn-theme-file-property-border-color);
    --nn-theme-file-selected-inactive-tag-color: var(--nn-theme-file-selected-tag-color);
    --nn-theme-file-selected-inactive-tag-bg: var(--nn-theme-file-tag-bg);
    --nn-theme-file-selected-inactive-property-color: var(--nn-theme-file-selected-property-color);
    --nn-theme-file-selected-inactive-property-bg: var(--nn-theme-file-property-bg);

    /* -- 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(--nn-theme-foreground-muted);
    --nn-theme-quick-actions-icon-hover-color: var(--nn-theme-foreground);
    --nn-theme-quick-actions-separator-color: var(--background-modifier-border);

    /* -- Pane headers and titles -- */

    /* Pane titles */
    --nn-theme-list-heading-color: var(--nn-theme-foreground-muted);
    --nn-theme-list-heading-font-weight: 600;

    /* Pane headers */
    --nn-theme-list-header-icon-color: var(--nn-theme-foreground-muted);
    --nn-theme-list-header-breadcrumb-color: var(--nn-theme-foreground-muted);
    --nn-theme-list-header-breadcrumb-font-weight: 600;

    /* Header buttons */
    --nn-theme-header-button-icon-color: var(--icon-color);
    --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(--icon-color);

    /* -- Calendar -- */

    /* Calendar labels */
    --nn-theme-calendar-header-color: var(--nn-theme-foreground);
    --nn-theme-calendar-weekday-color: var(--nn-theme-foreground-muted);
    --nn-theme-calendar-week-color: var(--nn-theme-foreground-muted);
    --nn-theme-calendar-day-in-month-color: var(--nn-theme-foreground);
    --nn-theme-calendar-day-outside-month-color: var(--nn-theme-foreground-faded);

    /* Day states */
    --nn-theme-calendar-weekend-bg: color-mix(in srgb, var(--nn-theme-foreground) 10%, transparent);
    --nn-theme-calendar-hover-bg: var(--background-modifier-hover);
    --nn-theme-calendar-day-today-color: var(--nn-theme-calendar-day-in-month-color);
    --nn-theme-calendar-day-today-bg: var(--text-selection);
    --nn-theme-calendar-day-active-border-color: var(--interactive-accent);
    --nn-theme-calendar-day-active-border-width: 3px;

    /* Indicators and feature images */
    --nn-theme-calendar-note-indicator-color: var(--nn-theme-foreground-faded);
    --nn-theme-calendar-unfinished-task-indicator-color: var(--nn-theme-calendar-note-indicator-color);
    --nn-theme-calendar-feature-image-text-color: white;
    --nn-theme-calendar-feature-image-overlay-color: rgb(0 0 0 / 0.05);

    /* -- Pane divider -- */
    --nn-theme-divider-border-color: var(--divider-color);
    --nn-theme-divider-resize-handle-hover-bg: var(--interactive-accent);

    /* -- Mobile -- */
    --nn-theme-mobile-bg: var(--mobile-sidebar-background);
    --nn-theme-mobile-list-header-link-color: var(--link-color);
    --nn-theme-mobile-list-header-breadcrumb-color: var(--nn-theme-foreground);
    --nn-theme-mobile-list-header-breadcrumb-font-weight: 600;
    --nn-theme-mobile-toolbar-glass-bg: var(--background-primary);
    --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.18);
    --nn-theme-calendar-feature-image-overlay-color: rgb(0 0 0 / 0.3);
}
/* Source: src/styles/sections/layout-base.css */

/* ========================================================================
   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;
    padding: 0;
    font-weight: 600;
}

/* 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);
}

.nn-svg-filters {
    position: absolute;
    width: 0;
    height: 0;
    pointer-events: none;
    opacity: 0;
}

/* 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;
    --nn-pane-transition-duration: 0.15s;
    --nn-pane-transition-timing: ease-in-out;
    --nn-selected-file-bg-color: var(--nn-computed-file-selected-bg, var(--nn-theme-file-selected-bg));
    --nn-selected-file-name-color: var(--nn-theme-file-selected-name-color);
    --nn-selected-file-preview-color: var(--nn-theme-file-selected-preview-color);
    --nn-selected-file-date-color: var(--nn-theme-file-selected-date-color);
    --nn-selected-file-word-count-color: var(--nn-theme-file-selected-word-count-color);
    --nn-selected-file-parent-color: var(--nn-theme-file-selected-parent-color);
    --nn-selected-file-tag-color: var(--nn-theme-file-selected-tag-color);
    --nn-selected-file-tag-bg: var(--nn-theme-file-selected-tag-bg);
    --nn-selected-file-property-color: var(--nn-theme-file-selected-property-color);
    --nn-selected-file-property-bg: var(--nn-theme-file-selected-property-bg);
    --nn-selected-file-border-color: var(--nn-theme-file-selected-border-color);
    --nn-selected-navitem-bg-color: var(--nn-computed-navitem-selected-bg, var(--nn-theme-navitem-selected-bg));
    --nn-selected-navitem-name-color: var(--nn-theme-navitem-selected-name-color);
    --nn-selected-navitem-chevron-color: var(--nn-theme-navitem-selected-chevron-color);
    --nn-selected-navitem-icon-color: var(--nn-theme-navitem-selected-icon-color);
    --nn-selected-navitem-count-color: var(--nn-theme-navitem-selected-count-color);
    --nn-selected-navitem-count-bg: var(--nn-theme-navitem-selected-count-bg);
    --nn-selected-navitem-border-color: var(--nn-theme-navitem-selected-border-color);
    --nn-selected-navitem-count-border-color: var(--nn-theme-navitem-selected-count-border-color);
}

.nn-split-container:is([data-navigator-focused='false'], [data-focus-pane='navigation'], [data-focus-pane='search']) {
    --nn-selected-file-bg-color: var(--nn-computed-file-selected-inactive-bg, var(--nn-theme-file-selected-inactive-bg));
    --nn-selected-file-name-color: var(--nn-theme-file-selected-inactive-name-color);
    --nn-selected-file-preview-color: var(--nn-theme-file-selected-inactive-preview-color);
    --nn-selected-file-date-color: var(--nn-theme-file-selected-inactive-date-color);
    --nn-selected-file-word-count-color: var(--nn-theme-file-selected-inactive-word-count-color);
    --nn-selected-file-parent-color: var(--nn-theme-file-selected-inactive-parent-color);
    --nn-selected-file-tag-color: var(--nn-theme-file-selected-inactive-tag-color);
    --nn-selected-file-tag-bg: var(--nn-theme-file-selected-inactive-tag-bg);
    --nn-selected-file-property-color: var(--nn-theme-file-selected-inactive-property-color);
    --nn-selected-file-property-bg: var(--nn-theme-file-selected-inactive-property-bg);
    --nn-selected-file-border-color: var(--nn-theme-file-selected-inactive-border-color);
}

.nn-split-container:is([data-navigator-focused='false'], [data-focus-pane='files'], [data-focus-pane='search']) {
    --nn-selected-navitem-bg-color: var(--nn-computed-navitem-selected-inactive-bg, var(--nn-theme-navitem-selected-inactive-bg));
    --nn-selected-navitem-name-color: var(--nn-theme-navitem-selected-inactive-name-color);
    --nn-selected-navitem-chevron-color: var(--nn-theme-navitem-selected-inactive-chevron-color);
    --nn-selected-navitem-icon-color: var(--nn-theme-navitem-selected-inactive-icon-color);
    --nn-selected-navitem-count-color: var(--nn-theme-navitem-selected-inactive-count-color);
    --nn-selected-navitem-count-bg: var(--nn-theme-navitem-selected-inactive-count-bg);
    --nn-selected-navitem-border-color: var(--nn-theme-navitem-selected-inactive-border-color);
    --nn-selected-navitem-count-border-color: var(--nn-theme-navitem-selected-inactive-count-border-color);
}

.nn-scale-wrapper {
    width: 100%;
    height: 100%;
    overflow: hidden;
}

.nn-scale-wrapper > .nn-split-container {
    width: 100%;
    height: 100%;
    transform-origin: top left;
}

.nn-scale-wrapper[data-ui-scale] > .nn-split-container {
    width: calc(100% / var(--nn-ui-scale, 1));
    height: calc(100% / var(--nn-ui-scale, 1));
    transform: scale(var(--nn-ui-scale, 1));
}
/* Source: src/styles/sections/ui-update-notice.css */

/* ========================================================================
   Update notice banner
   ======================================================================== */

.nn-update-banner {
    position: absolute;
    top: calc(var(--nn-list-group-header-height-mobile, var(--nn-list-group-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: 12px 20px;
    height: auto;
    border-radius: 10px;
    border: none;
    cursor: pointer;
    box-shadow: 0 8px 18px rgba(0, 0, 0, 0.18);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    font: inherit;
    text-align: left;
    opacity: 1;
    transition:
        opacity 0.4s ease,
        transform 0.4s ease;
}

.nn-split-container .nn-update-banner {
    background: var(--interactive-accent);
    border: none;
    color: var(--text-on-accent);
    padding: 12px 20px;
    appearance: none;
}

.nn-update-banner:focus-visible {
    outline: none;
    box-shadow:
        0 0 0 2px var(--background-primary),
        0 0 0 4px var(--interactive-accent),
        0 8px 18px rgba(0, 0, 0, 0.18);
}

.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);
    }
}
/* Source: src/styles/sections/ui-notices.css */

/* ========================================================================
   Notices
   ======================================================================== */

.nn-cache-rebuild-notice {
    display: flex;
    flex-direction: column;
    gap: 4px;
    width: 100%;
    box-sizing: border-box;
}

.nn-cache-rebuild-notice-container {
    width: 100%;
    box-sizing: border-box;
}

.nn-cache-rebuild-notice-message {
    width: 100%;
    min-width: 0;
    flex: 1 1 auto;
    box-sizing: border-box;
}

.nn-cache-rebuild-notice-title {
    font-weight: 600;
    line-height: 1.25;
}

.nn-cache-rebuild-notice-description {
    font-size: 13px;
    line-height: 1.25;
    opacity: 0.85;
}

.nn-cache-rebuild-notice-progress-bar {
    display: block;
    width: 100%;
    max-width: none;
    height: 6px;
    border-radius: 999px;
    overflow: hidden;
}

.nn-cache-rebuild-notice-progress-bar::-webkit-progress-bar {
    background-color: var(--background-modifier-border);
    border-radius: 999px;
}

.nn-cache-rebuild-notice-progress-bar::-webkit-progress-value {
    background-color: var(--interactive-accent);
    border-radius: 999px;
}

@media (max-width: 600px) {
    .nn-cache-rebuild-notice-description {
        font-size: 14px;
    }
}
/* Source: src/styles/sections/layout-panes.css */

/* ========================================================================
   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);
    border-right: 1px solid var(--nn-theme-divider-border-color);
    position: relative; /* Enables absolute positioning for resize handles */

    /* 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;
}

/* Override backgrounds when desktop background mode is set to primary or secondary */
/* Primary mode: use list background for navigation pane */
.nn-split-container.nn-desktop.nn-bg-primary {
    --nn-theme-nav-bg: var(--nn-theme-list-bg);
}

/* Secondary mode: use navigation background for list pane */
.nn-split-container.nn-desktop.nn-bg-secondary {
    --nn-theme-list-bg: var(--nn-theme-nav-bg);
}

/* Mobile pane backgrounds follow --nn-theme-mobile-bg */
.nn-split-container.nn-mobile {
    --nn-theme-nav-bg: var(--nn-theme-mobile-bg);
    --nn-theme-list-bg: var(--nn-theme-mobile-bg);
}

.nn-split-container.nn-orientation-vertical {
    flex-direction: column;
}

.nn-split-container.nn-orientation-vertical .nn-navigation-pane {
    width: 100%;
    min-width: 0;
    min-height: var(--nn-navigation-pane-min-height);
    flex: 0 1 auto;
    border-right: none;
}

.nn-split-container.nn-orientation-vertical .nn-list-pane {
    min-width: 0;
    width: 100%;
    min-height: var(--nn-list-pane-min-height);
}

.nn-split-container.nn-orientation-vertical:not(.nn-single-pane) .nn-navigation-pane {
    border-bottom: 1px solid var(--nn-theme-divider-border-color);
}

/* 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: 300;
    touch-action: none;
    -webkit-tap-highlight-color: transparent;
}

.nn-split-container.nn-orientation-vertical .nn-resize-handle {
    width: 100%;
    height: 3px;
    cursor: row-resize;
    bottom: auto;
    right: 0;
}

/* 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);
}

/* ========================================================================
   Single-pane Layout
   ======================================================================== */

/* Single-pane container - use grid for consistent structure while allowing sliding */
.nn-split-container.nn-single-pane {
    display: grid;
    grid-template-columns: 100%;
    grid-template-rows: minmax(0, 1fr) auto;
    position: relative;
    overflow: hidden;
    height: 100%;
}

/* Single-pane panes - positioned in grid and animated with transforms */
.nn-split-container.nn-single-pane .nn-navigation-pane,
.nn-split-container.nn-single-pane .nn-list-pane {
    width: 100%;
    max-width: 100%;
    height: 100%;
    grid-column: 1;
    grid-row: 1;
    min-height: 0;
    transition: transform var(--nn-pane-transition-duration) var(--nn-pane-transition-timing);
}

.nn-split-container.nn-single-pane .nn-single-pane-calendar {
    grid-column: 1;
    grid-row: 2;
}

/* Disable transitions for one-frame mode changes (dual-pane -> single-pane) */
.nn-split-container.nn-single-pane.nn-suppress-pane-transitions .nn-navigation-pane,
.nn-split-container.nn-single-pane.nn-suppress-pane-transitions .nn-list-pane {
    transition: none;
}

.nn-split-container.nn-single-pane.nn-pane-transitioning .nn-navigation-pane,
.nn-split-container.nn-single-pane.nn-pane-transitioning .nn-list-pane {
    will-change: transform;
}

/* Single-pane view states - show navigation view */
.nn-split-container.nn-single-pane.show-navigation .nn-navigation-pane {
    transform: none;
}

.nn-split-container.nn-single-pane.show-navigation .nn-list-pane {
    transform: translateX(100%);
}

/* Single-pane view states - show files view */
.nn-split-container.nn-single-pane.show-files .nn-navigation-pane {
    transform: translateX(-100%);
}

.nn-split-container.nn-single-pane.show-files .nn-list-pane {
    transform: none;
}

/* ========================================================================
   Mobile Layout
   ======================================================================== */

/* Widen the divider hit area for touch dragging. The handle only renders in
   dual pane mode, which is limited to tablets on mobile. */
.notebook-navigator-mobile .nn-resize-handle {
    width: 12px;
}

.notebook-navigator-mobile .nn-split-container.nn-orientation-vertical .nn-resize-handle {
    width: 100%;
    height: 12px;
}

/* Add touch-action to prevent browser gestures interfering */
.notebook-navigator-mobile .nn-split-container {
    touch-action: pan-y;
}
/* Source: src/styles/sections/ui-headers.css */

/* ========================================================================
   Header Styles
   ======================================================================== */

/* Pane headers - consistent header styling for both panes */
.nn-pane-header {
    padding: 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);
}

/* 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-header-actions-profile {
    gap: 8px;
    flex: 1 1 auto;
    overflow: hidden;
}

.nn-pane-header-profile {
    gap: 4px;
    padding-right: 0;
    justify-content: flex-start;
    display: inline-flex;
    align-items: center;
}

.nn-pane-header-profile[role='button'] {
    cursor: pointer;
}

.nn-pane-header-profile:focus-visible {
    outline: 1px solid var(--interactive-accent);
    outline-offset: 1px;
    border-radius: 6px;
}

.nn-pane-header-profile-chevron {
    width: var(--nn-nav-icon-size);
    height: var(--nn-nav-icon-size);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--nn-theme-list-header-breadcrumb-color);
}

.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-pane-header-title.nn-pane-header-profile {
    padding-left: 0;
}

.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-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;
}

.nn-pane-header-profile .nn-pane-header-text {
    flex: 0 1 auto;
}

.nn-pane-header .nn-pane-header-folder-note {
    text-decoration: var(--nn-theme-navitem-folder-note-name-decoration);
}

.nn-pane-header .nn-pane-header-folder-note:hover {
    cursor: pointer;
    text-decoration: var(--nn-theme-navitem-folder-note-name-hover-decoration);
}

/* ========================================================================
   Mobile Headers + Breadcrumb
   ======================================================================== */

/* Simplified mobile headers. Keyed on the phone chrome header class so the desktop
   headers rendered on tablets keep the desktop height and per-pane backgrounds. */
.notebook-navigator-mobile .nn-pane-header-simple {
    flex-shrink: 0;
    min-height: 48px;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding: 0 var(--nn-file-item-padding-horizontal);
    background-color: var(--nn-theme-list-bg);
}

.notebook-navigator-mobile .nn-pane-header-simple .nn-pane-header-profile {
    width: 100%;
    flex: 1 1 auto;
    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;
}

.notebook-navigator-mobile .nn-pane-header-simple .nn-pane-header-profile .nn-pane-header-text {
    color: var(--nn-theme-mobile-list-header-breadcrumb-color);
}

/* 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(--nn-theme-list-bg) 0%, transparent 100%);
    pointer-events: none;
    z-index: 1;
}

/* Mobile back button */
.notebook-navigator-mobile button.nn-back-button {
    position: absolute;
    left: 0;
    width: 44px;
    height: 44px;
    min-width: 44px;
    min-height: 44px;
    padding: 10px;
    z-index: 1;
    opacity: 1;
}

/* Increase stroke width for back button arrow and apply link color */
.notebook-navigator-mobile button.nn-back-button svg {
    stroke: var(--nn-theme-mobile-list-header-link-color);
    width: 20px; /* Default size for Android */
    height: 20px;
}

/* iOS/iPadOS-specific back button adjustments */
.notebook-navigator-mobile:not(.notebook-navigator-android) button.nn-back-button {
    padding: 4px; /* 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) button.nn-back-button svg {
    width: 36px;
    height: 36px;
}

/* 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 */
}

/* 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);
}

/* 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;
    background-color: var(--nn-theme-list-bg);
}

/* Search input container */
.nn-search-input-container {
    position: relative;
    width: 100%;
    height: 32px;
}

/* Search icon (clickable toggle between search providers) */
.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);
    cursor: pointer;
    z-index: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.nn-search-input-icon:focus-visible {
    outline: 2px solid var(--interactive-accent);
    outline-offset: 2px;
}

.nn-search-input-icon svg {
    width: 16px;
    height: 16px;
    display: block;
}

/* Search input field */
input.nn-search-input {
    width: 100%;
    height: 32px;
    padding: 4px 60px 4px 36px;
    font-size: 13px;
    color: var(--nn-theme-file-selected-name-color);
    background: var(--nn-theme-list-bg);
    border: 1px solid var(--nn-theme-list-search-border-color);
    border-radius: 999px;
    outline: none;
    box-sizing: border-box;
}

.nn-search-input-container--has-shortcut input.nn-search-input {
    padding-right: 84px;
}

/* Active search state - when there's a search query */
input.nn-search-input.nn-search-active {
    background: var(--nn-theme-list-search-active-bg);
}

/* Maintain highlight background on hover when search is active */
input.nn-search-input.nn-search-active:hover {
    background: var(--nn-theme-list-search-active-bg);
}

/* Focus state */
input.nn-search-input:focus {
    border-color: var(--nn-theme-list-search-border-color);
    box-shadow: 0 0 0 2px var(--nn-theme-list-search-border-color);
}

input.nn-search-input::placeholder {
    color: var(--nn-theme-list-header-breadcrumb-color);
}

/* Search tag suggestion popover */
.nn-search-tag-suggestion {
    display: flex;
    align-items: center;
    padding: 4px 10px;
    min-height: 28px;
}

.nn-search-tag-suggestion__label {
    display: flex;
    align-items: baseline;
    width: 100%;
    min-width: 0;
    font-size: var(--nn-file-name-size-mobile, var(--nn-file-name-size));
    color: var(--nn-theme-file-name-color);
    gap: 6px;
}

.nn-search-tag-suggestion__prefix {
    font-size: var(--nn-file-small-size-mobile, var(--nn-file-small-size));
    color: var(--nn-theme-list-header-breadcrumb-color);
    flex-shrink: 0;
}

.nn-search-tag-suggestion__text {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
}

.nn-search-tag-suggestion__text .suggestion-highlight {
    background-color: var(--nn-theme-list-search-active-bg);
    color: var(--nn-theme-file-name-color);
    border-radius: 3px;
    padding: 0 1px;
}

/* Clear button */
/* Hide webkit search cancel button */
.nn-search-input::-webkit-search-cancel-button {
    display: none;
}
/* Source: src/styles/sections/ui-search.css */

/* ========================================================================
   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 input.nn-search-input {
    height: 36px;
    font-size: 16px; /* Prevent zoom on iOS */
    padding: 4px 60px 4px 36px;
    border-radius: 999px;
}

.nn-search-clear-button,
.nn-search-star-button,
.nn-search-help-button {
    position: absolute;
    top: 8px;
    cursor: pointer;
    color: var(--nn-theme-foreground-muted);
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.nn-search-clear-button:focus-visible,
.nn-search-star-button:focus-visible,
.nn-search-help-button:focus-visible {
    outline: 2px solid var(--interactive-accent);
    outline-offset: 2px;
}

.nn-search-clear-button > span,
.nn-search-star-button > span,
.nn-search-help-button > span {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 0;
}

.nn-search-clear-button svg,
.nn-search-star-button svg,
.nn-search-help-button svg {
    width: 16px;
    height: 16px;
    display: block;
}

.nn-search-clear-button {
    right: 10px;
}

.nn-search-star-button {
    right: 34px;
}

.nn-search-help-button {
    right: 10px;
}

.nn-search-star-button--active {
    color: var(--interactive-accent);
}

.notebook-navigator-mobile .nn-search-clear-button {
    top: 0;
    height: 36px;
    right: 10px;
}

.notebook-navigator-mobile .nn-search-star-button {
    top: 0;
    height: 36px;
    right: 44px;
}

.notebook-navigator-mobile .nn-search-help-button {
    top: 0;
    height: 36px;
    right: 10px;
}

.notebook-navigator-mobile .nn-search-input-container--has-shortcut input.nn-search-input {
    padding-right: 94px;
}

/* Clickable path segments in header */
.nn-path-segment {
    cursor: pointer;
}

/* 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;
}

/* Mobile search icon touch target */
.notebook-navigator-mobile .nn-search-input-icon {
    top: 0;
    height: 36px;
    width: 36px;
    left: 0;
}

/* Hover effects only apply on hover-capable devices (prevents "stuck hover" on touch). */
@media (hover: hover) and (pointer: fine) {
    .nn-search-input-icon:hover {
        color: var(--nn-theme-header-button-active-icon-color);
    }

    .nn-search-clear-button:hover,
    .nn-search-star-button:hover,
    .nn-search-help-button:hover {
        color: var(--nn-theme-header-button-active-icon-color);
        opacity: 1;
    }

    .nn-path-segment:hover {
        text-decoration: underline;
    }
}
/* Source: src/styles/sections/ui-buttons.css */

/* ========================================================================
   Button Styles
   ======================================================================== */

/* Icon button base style - transparent buttons matching Obsidian's design */
button.nn-icon-button {
    background: transparent;
    background-color: transparent;
    border: none;
    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;
    outline: none;
}

/* Desktop pane header buttons - enforce Obsidian-muted icon color */
.nn-desktop .nn-pane-header .nn-icon-button {
    color: var(--nn-theme-header-button-icon-color);
}

.nn-desktop .nn-pane-header .nn-icon-button svg:not(.nn-vault-icon-svg) {
    stroke: currentColor;
}

/* Header buttons - match Obsidian's standard dimensions */
.nn-header-actions button.nn-icon-button {
    padding: 0 8px;
    width: auto;
    min-width: 34px;
    height: 25px;
}

/* Icon button hover state - subtle background on hover - desktop only */
.nn-desktop button.nn-icon-button:hover {
    background-color: var(--nn-theme-header-button-hover-bg);
    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" */
button.nn-icon-button.nn-icon-button-active {
    background-color: var(--nn-theme-header-button-active-bg);
    color: var(--nn-theme-header-button-active-icon-color);
}

/* Active button icon color */
button.nn-icon-button.nn-icon-button-active svg:not(.nn-vault-icon-svg) {
    stroke: var(--nn-theme-header-button-active-icon-color);
}

/* 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:not(.nn-vault-icon-svg) {
    stroke: currentColor;
}

/* 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:not(.nn-vault-icon-svg) {
    stroke: currentColor;
}

/* Icon styling - consistent size and appearance for all button icons */
.nn-icon-button > span {
    color: inherit;
}

.nn-icon-button > span > svg {
    color: inherit;
}

.nn-icon-button svg {
    width: 16px;
    height: 16px;
}

.nn-icon-button svg:not(.nn-vault-icon-svg) {
    stroke: currentColor;
    stroke-width: 2;
    fill: none;
}
/* Source: src/styles/sections/layout-spacers.css */

/* ========================================================================
   Pane Spacers
   ======================================================================== */

/* Navigation pane spacers - provide visual breathing room in the list */
.nn-nav-top-spacer {
    height: 8px;
    flex-shrink: 0;
    position: relative;
}

.nn-nav-bottom-spacer {
    height: 20px;
    flex-shrink: 0;
}

.nn-nav-list-spacer {
    height: 8px;
    flex-shrink: 0;
    position: relative;
}

.nn-nav-root-spacer {
    height: var(--nn-nav-root-spacing, 0px);
    flex-shrink: 0;
    pointer-events: none;
}

.nn-nav-spacer--with-separator::after {
    content: '';
    position: absolute;
    left: calc(-1 * var(--nn-scroller-padding));
    right: calc(-1 * var(--nn-scroller-padding));
    top: calc(50% - (var(--nn-theme-nav-separator-height, 1px) / 2));
    height: var(--nn-theme-nav-separator-height, 1px);
    background: var(
        --nn-theme-nav-separator-background,
        linear-gradient(
            90deg,
            transparent 0%,
            var(--nn-theme-nav-separator-color) 15%,
            var(--nn-theme-nav-separator-color) 85%,
            transparent 100%
        )
    );
    opacity: var(--nn-theme-nav-separator-opacity, 0.3);
}

/* List pane spacers - match navigation pane for consistency */
.nn-list-top-spacer {
    height: 8px;
}

.nn-list-bottom-spacer {
    height: 20px;
}
/* Source: src/styles/sections/navigation-scroller.css */

/* ========================================================================
   Navigation Pane Scroller
   ======================================================================== */

/* Scroller container for both folder tree and tag list */

.nn-navigation-pane-chrome {
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
}

.nn-navigation-pane-panel {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

.nn-navigation-pane-scroller {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
    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 */
    background-color: var(--nn-theme-nav-bg); /* Opaque background for GPU scroll layer optimization */

    /* Ensure scroll events work properly with virtualization */
    position: relative;
}

.nn-navigation-pane-content {
    flex: 1 0 auto;
}

.nn-navigation-pane-scroller[data-banner='true'] {
    /* Classic Windows scrollbars consume layout width when they appear. Setting a stable gutter
       keeps the width constant so TanStack Virtual's ResizeObserver doesn't retrigger endlessly
       when the navigation banner forces the content to overflow during resizing. */
    scrollbar-gutter: stable;
}

/* Container for pinned shortcuts displayed above the scrollable navigation tree */
.nn-shortcut-pinned {
    flex: 0 1 auto;
    border-bottom: 1px solid var(--nn-theme-divider-border-color);
    background-color: var(--nn-theme-nav-bg);
    position: relative;
    z-index: 1;
    overflow: visible;
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
}

.nn-shortcut-pinned-scroll {
    flex: 0 1 auto;
    min-height: 0;
    padding: 8px var(--nn-scroller-padding) 4px;
    overflow-x: hidden;
    overflow-y: hidden;
}

.nn-shortcut-pinned[data-scroll='true'] .nn-shortcut-pinned-scroll {
    overflow-y: auto;
    overscroll-behavior: contain;
}

/* Remove top padding when banner is present to avoid double spacing */
.nn-shortcut-pinned[data-has-banner='true'] .nn-shortcut-pinned-scroll {
    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: 4px;
    pointer-events: none;
    background: linear-gradient(to bottom, var(--nn-theme-pinned-shortcut-shadow-color) 0%, transparent 100%);
}

.nn-shortcuts-resize-handle {
    height: 3px;
    cursor: row-resize;
    background-color: transparent;
    touch-action: none;
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    width: 100%;
    user-select: none;
    -webkit-tap-highlight-color: transparent;
    z-index: 2;
}

.nn-shortcuts-resize-handle:hover {
    background-color: var(--nn-theme-divider-resize-handle-hover-bg);
}

.nn-navigation-pane[data-shortcuts-resizing='true'] .nn-shortcuts-resize-handle {
    background-color: var(--nn-theme-divider-resize-handle-hover-bg);
}

.notebook-navigator-mobile .nn-shortcuts-resize-handle {
    height: 14px;
    position: relative;
    left: auto;
    right: auto;
    bottom: auto;
    width: 100%;
    flex-shrink: 0;
    z-index: 0;
}

.notebook-navigator-mobile .nn-navigation-pane[data-shortcuts-resizing='true'] .nn-shortcuts-resize-handle {
    background-color: transparent;
}

.notebook-navigator-mobile .nn-shortcuts-resize-handle:hover {
    background-color: transparent;
}

@media (hover: none) {
    .nn-shortcuts-resize-handle:hover {
        background-color: transparent;
    }
}

.notebook-navigator-mobile .nn-shortcuts-resize-handle::before {
    content: '';
    position: absolute;
    left: 20%;
    right: 20%;
    bottom: 3px;
    height: 5px;
    background-color: var(--nn-theme-divider-border-color);
    border-radius: 3px;
    pointer-events: none;
}

.notebook-navigator-mobile .nn-shortcut-pinned {
    background-color: var(--nn-theme-nav-bg);
    border-bottom: none;
}

/* Vault title displayed below the navigation header (desktop only). */
.nn-vault-title-area {
    background-color: var(--nn-theme-nav-bg);
    padding: var(--nn-list-title-padding-block) var(--nn-scroller-padding) 8px;
}

.nn-vault-title-content {
    display: inline-flex;
    align-items: center;
    padding: 0 var(--nn-nav-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);
    gap: 4px;
    max-width: 100%;
}

.nn-vault-title-trigger {
    cursor: pointer;
}

.nn-vault-title-trigger:focus-visible {
    outline: 1px solid var(--interactive-accent);
    outline-offset: 1px;
    border-radius: 6px;
}

.nn-vault-title-text {
    line-height: 1.2;
    flex: 0 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.nn-vault-title-chevron {
    width: var(--nn-nav-icon-size);
    height: var(--nn-nav-icon-size);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    color: var(--nn-theme-list-heading-color);
}

/* Mobile-only: hide the pinned shortcuts shadow overlay. */
.notebook-navigator-mobile .nn-shortcut-pinned::after {
    content: 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-navigation-pane-banner {
    margin-inline-start: calc(-1 * var(--nn-scroller-padding));
    margin-inline-end: calc(-1 * var(--nn-scroller-padding));
}

.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);
}
/* Source: src/styles/sections/navigation-tree.css */

/* ========================================================================
   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 {
    --nn-navitem-background-bottom-overdraw: 0px;
    -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));
    /* Isolate layout and style calculations per item while allowing ::before/::after to extend beyond bounds */
    contain: layout style;
}

/* Touch-friendly tap targets on mobile */
.notebook-navigator-mobile .nn-navitem {
    height: var(--nn-setting-nav-item-height-mobile); /* Fixed height for virtualizer accuracy */
}

/* Nav rows that display a background overlay need positioning for the pseudo elements */
.nn-navitem.nn-has-custom-background,
.nn-navitem.nn-has-search-match,
.nn-navitem.nn-selected {
    position: relative;
}

.nn-navigation-pane[data-shortcut-sorting='true'] .nn-navitem:not(.nn-shortcut-item) {
    pointer-events: none;
}

/* Render the custom background color behind the nav item content */
.nn-navitem.nn-has-custom-background::before {
    content: '';
    position: absolute;
    top: 0px;
    inset-inline-start: 0;
    inset-inline-end: 0;
    bottom: var(--nn-navitem-background-bottom-overdraw);
    background-color: var(--nn-navitem-custom-bg-color);
    border-top-left-radius: var(--nn-navitem-top-left-radius, min(14px, var(--nn-theme-navitem-border-radius)));
    border-top-right-radius: var(--nn-navitem-top-right-radius, min(14px, var(--nn-theme-navitem-border-radius)));
    border-bottom-left-radius: var(--nn-navitem-bottom-left-radius, min(14px, var(--nn-theme-navitem-border-radius)));
    border-bottom-right-radius: var(--nn-navitem-bottom-right-radius, min(14px, var(--nn-theme-navitem-border-radius)));
    box-shadow: inset 0 0 0 var(--nn-theme-navitem-border-width) var(--nn-theme-navitem-custom-border-color);
    z-index: 0;
    pointer-events: none;
}

.nn-navitem.nn-has-custom-background > .nn-navitem-content {
    position: relative;
    z-index: 2;
}

/* Overdraw and zero shared corners only between adjacent filled backgrounds */
.nn-navitem.nn-navitem-has-filled-next {
    --nn-navitem-background-bottom-overdraw: -0.5px;
    --nn-navitem-bottom-left-radius: 0;
    --nn-navitem-bottom-right-radius: 0;
}

.nn-navitem.nn-navitem-has-filled-previous {
    --nn-navitem-top-left-radius: 0;
    --nn-navitem-top-right-radius: 0;
}

/* Folder content - contains folder UI elements */
.nn-navitem-content {
    display: flex;
    align-items: center;
    height: 100%;
    padding: 0 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;
}

/* Indent guide columns shown on rows inside expanded subtrees */
.nn-navitem-indent-guide {
    --nn-indent-guide-line-width: 0.5px;
    --nn-indent-guide-padding-inline-start: var(--nn-nav-item-padding-horizontal);
    --nn-indent-guide-chevron-slot-width: var(--nn-nav-icon-size);
    --nn-indent-guide-chevron-center-origin: calc(
        var(--nn-indent-guide-padding-inline-start) + (var(--nn-indent-guide-chevron-slot-width) / 2)
    );
    position: absolute;
    top: 0;
    bottom: 0;
    inset-inline-start: calc(
        (var(--nn-indent-guide-level, 0) - var(--level, 0)) * var(--nn-setting-nav-indent) + var(--nn-indent-guide-chevron-center-origin)
    );
    width: var(--nn-indent-guide-line-width);
    transform: translateX(-50%);
    background-color: var(--nn-theme-nav-indent-guide-color);
    pointer-events: none;
    z-index: 0;
}

.mod-rtl .nn-navitem-indent-guide {
    inset-inline-start: auto;
    inset-inline-end: calc(
        (var(--level, 0) - var(--nn-indent-guide-level, 0)) * var(--nn-setting-nav-indent) + var(--nn-indent-guide-chevron-center-origin)
    );
}

.nn-navitem-content--search-include,
.nn-navitem-content--search-exclude {
    position: relative;
    z-index: 1;
}

.nn-navitem-content--search-include::before,
.nn-navitem-content--search-exclude::before {
    content: '';
    position: absolute;
    top: 0px;
    bottom: var(--nn-navitem-background-bottom-overdraw);
    inset-inline-end: 0;
    inset-inline-start: calc(var(--level, 0) * var(--nn-setting-nav-indent) * -1);
    border-top-left-radius: var(--nn-navitem-top-left-radius, min(14px, var(--nn-theme-navitem-border-radius)));
    border-top-right-radius: var(--nn-navitem-top-right-radius, min(14px, var(--nn-theme-navitem-border-radius)));
    border-bottom-left-radius: var(--nn-navitem-bottom-left-radius, min(14px, var(--nn-theme-navitem-border-radius)));
    border-bottom-right-radius: var(--nn-navitem-bottom-right-radius, min(14px, var(--nn-theme-navitem-border-radius)));
    pointer-events: none;
    z-index: -1;
}

/* Pre-composited solid color prevents hairlines by blending alpha with pane background */
.nn-navitem-content--search-include::before {
    background-color: var(--nn-computed-tag-positive-bg, var(--nn-theme-tag-positive-bg));
}

/* Pre-composited solid color prevents hairlines by blending alpha with pane background */
.nn-navitem-content--search-exclude::before {
    background-color: var(--nn-computed-tag-negative-bg, var(--nn-theme-tag-negative-bg));
}

/* Folder hover state - desktop only, using pseudo-element for padding control */
.nn-desktop .nn-navitem:hover {
    position: relative;
}

.nn-desktop .nn-navitem:not([data-search-match]):hover::after {
    content: '';
    position: absolute;
    top: 0px;
    bottom: var(--nn-navitem-background-bottom-overdraw);
    inset-inline-start: 0;
    inset-inline-end: 0;
    background-color: var(--nn-theme-navitem-hover-bg);
    border-top-left-radius: var(--nn-navitem-top-left-radius, min(14px, var(--nn-theme-navitem-border-radius)));
    border-top-right-radius: var(--nn-navitem-top-right-radius, min(14px, var(--nn-theme-navitem-border-radius)));
    border-bottom-left-radius: var(--nn-navitem-bottom-left-radius, min(14px, var(--nn-theme-navitem-border-radius)));
    border-bottom-right-radius: var(--nn-navitem-bottom-right-radius, min(14px, var(--nn-theme-navitem-border-radius)));
    box-shadow: inset 0 0 0 var(--nn-theme-navitem-border-width) var(--nn-theme-navitem-hover-border-color);
    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;
}

.nn-split-container.nn-resizing .nn-navitem:hover::after {
    content: none;
    background-color: transparent;
}

/* 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);
}

/* 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;
}

/* 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 {
    font-size: var(--nn-nav-icon-size);
    line-height: var(--nn-nav-icon-size);
}

/* 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);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    line-height: normal;
    color: var(--nn-theme-navitem-name-color);
}

.nn-navitem[data-nav-item-type='note'] .nn-navitem-name {
    color: var(--nn-theme-navitem-file-name-color);
}

/* Custom colored folder names */
.nn-navitem-name.nn-has-custom-color {
    font-weight: var(--nn-theme-navitem-custom-color-name-font-weight);
}

/* Folder with folder note */
.nn-navitem-name.nn-has-folder-note {
    text-decoration: var(--nn-theme-navitem-folder-note-name-decoration);
}

/* Folder with folder note - show pointer cursor on hover */
.nn-navitem-name.nn-has-folder-note:hover {
    cursor: pointer;
    text-decoration: var(--nn-theme-navitem-folder-note-name-hover-decoration);
}

/* Spacer element to push count to the end */
.nn-navitem-spacer {
    --nn-nav-leader-color: var(--nn-theme-nav-leader-color);
    --nn-nav-count-leader-bottom-offset: calc((var(--nn-setting-nav-item-height) - var(--nn-nav-line-height)) / 2 + 4px);
    flex: 1;
    min-width: 8px; /* Minimum space between name and count */
}

.notebook-navigator-mobile .nn-navitem-spacer {
    --nn-nav-count-leader-bottom-offset: calc((var(--nn-setting-nav-item-height-mobile) - var(--nn-nav-line-height)) / 2 + 5px);
}

[data-nav-count-leader-style='dots'] .nn-navitem-spacer--leader,
[data-nav-count-leader-style='dashes'] .nn-navitem-spacer--leader,
[data-nav-count-leader-style='line'] .nn-navitem-spacer--leader {
    position: relative;
    align-self: stretch;
    margin-inline: 8px;
    min-width: 16px;
}

[data-nav-count-leader-style='dots'] .nn-navitem-spacer--leader::after,
[data-nav-count-leader-style='dashes'] .nn-navitem-spacer--leader::after,
[data-nav-count-leader-style='line'] .nn-navitem-spacer--leader::after {
    content: '';
    position: absolute;
    inset-inline: 0;
    bottom: var(--nn-nav-count-leader-bottom-offset);
    pointer-events: none;
}

[data-nav-count-leader-style='dots'] .nn-navitem-spacer--leader::after {
    height: 2px;
    background-image: radial-gradient(circle, var(--nn-nav-leader-color) 0, var(--nn-nav-leader-color) 1px, transparent 1px);
    background-repeat: repeat-x;
    background-position: center;
    background-size: 6px 2px;
}

[data-nav-count-leader-style='dashes'] .nn-navitem-spacer--leader::after {
    height: 1px;
    background-image: repeating-linear-gradient(
        to right,
        var(--nn-nav-leader-color) 0,
        var(--nn-nav-leader-color) 6px,
        transparent 6px,
        transparent 10px
    );
}

[data-nav-count-leader-style='line'] .nn-navitem-spacer--leader::after {
    height: 1px;
    background-color: var(--nn-nav-leader-color);
}

/* Folder file count - shows number of files in folder */
.nn-navitem-count {
    font-size: var(--nn-navitem-count-font-size);
    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;
    box-shadow: inset 0 0 0 var(--nn-theme-navitem-count-border-width) var(--nn-theme-navitem-count-border-color);
}

.nn-navitem-operator-indicator {
    padding-inline: 4px;
}

.nn-navitem-operator-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 0;
}

.nn-navitem-operator-icon svg {
    width: 12px;
    height: 12px;
}

/* Hover action button - replaces badge/count on hover */
.nn-navitem-hover-action-slot {
    position: relative;
    flex-shrink: 0;
}

.nn-navitem-hover-action-slot--overlay {
    width: 0;
    min-width: 0;
    overflow: visible;
}

button.nn-icon-button.nn-navitem-hover-action-button {
    position: absolute;
    top: 50%;
    inset-inline-end: 0;
    transform: translateY(-50%);
    visibility: hidden;
    pointer-events: none;
    cursor: pointer;
    height: 18px;
    width: 18px;
    min-height: 0;
    min-width: 0;
    padding: 0;
    border-radius: 50%;
    z-index: 1;
}

.nn-navitem-hover-action-button svg {
    width: 14px;
    height: 14px;
}

.nn-navitem-hover-action-placeholder {
    visibility: hidden;
}

.nn-desktop .nn-shortcut-item--removable:hover .nn-navitem-hover-action-button,
.nn-desktop .nn-shortcut-header-item:hover .nn-navitem-hover-action-button,
.nn-desktop .nn-properties-header-item:hover .nn-navitem-hover-action-button {
    visibility: visible;
    pointer-events: auto;
}

.nn-desktop .nn-shortcut-item--removable:hover .nn-navitem-hover-action-slot--overlay,
.nn-desktop .nn-shortcut-header-item:hover .nn-navitem-hover-action-slot--overlay,
.nn-desktop .nn-properties-header-item:hover .nn-navitem-hover-action-slot--overlay {
    width: 18px;
}

.nn-desktop .nn-shortcut-item--removable:hover .nn-navitem-hover-action-count,
.nn-desktop .nn-shortcut-header-item:hover .nn-navitem-hover-action-count,
.nn-desktop .nn-properties-header-item:hover .nn-navitem-hover-action-count {
    opacity: 0;
}

/* Shortcut section styling */
.nn-shortcut-header-item .nn-navitem-count {
    font-size: var(--nn-navitem-count-font-size);
}

.nn-drag-item {
    position: relative;
}

.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--missing .nn-shortcut-label {
    text-decoration: line-through;
}

/* Underline only the label, not the trailing description, for shortcuts with folder notes. */
.nn-shortcut-item .nn-navitem-name.nn-has-folder-note .nn-shortcut-label {
    text-decoration: var(--nn-theme-navitem-folder-note-name-decoration);
}

/* 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;
    text-decoration: var(--nn-theme-navitem-folder-note-name-hover-decoration);
}

.nn-drag-item .nn-shortcut-description {
    flex-shrink: 0;
}

.nn-navitem-accessory {
    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 {
    color: var(--nn-theme-header-button-disabled-icon-color);
    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(--nn-root-reorder-hint-font-size);
    color: var(--nn-theme-foreground-muted);
    line-height: 1.25;
}

.notebook-navigator-mobile .nn-root-reorder-hint {
    font-size: var(--nn-root-reorder-hint-font-size-mobile);
}

.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-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);
}

.nn-root-reorder-item--missing .nn-shortcut-label {
    text-decoration: line-through;
    color: var(--nn-theme-foreground-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-root-reorder-section-controls {
    display: flex;
    gap: 0.25rem;
}

.nn-root-reorder-section-button {
    width: 28px;
    height: 28px;
    padding: 0;
    border-radius: 6px;
    color: var(--nn-theme-header-button-icon-color);
    flex-shrink: 0;
}

.nn-root-reorder-section-button svg {
    width: 16px;
    height: 16px;
}

.nn-desktop .nn-root-reorder-section-button:hover {
    background-color: var(--nn-theme-header-button-hover-bg);
}

.nn-root-reorder-section-button:disabled {
    color: var(--nn-theme-header-button-disabled-icon-color);
    opacity: 0.4;
    cursor: not-allowed;
}

.nn-shortcut-disabled {
    --nn-theme-navitem-chevron-color: var(--nn-theme-foreground);
    --nn-theme-navitem-icon-color: var(--nn-theme-foreground);
    --nn-theme-navitem-name-color: var(--nn-theme-foreground);
    --nn-theme-navitem-file-name-color: var(--nn-theme-foreground);
    --nn-theme-navitem-count-color: var(--nn-theme-foreground);
    opacity: 0.5;
    pointer-events: none;
}
/* Source: src/styles/sections/navigation-properties.css */

/* ========================================================================
   Navigation Properties
   ======================================================================== */

/* Property tree rows reuse the shared navigation row layout from navigation-tree.css. */
.nn-navitem.nn-property .nn-navitem-name {
    unicode-bidi: plaintext;
}
/* Source: src/styles/sections/calendar.css */

/* ========================================================================
   Section index
   1. Shared tokens and shell (overlay + right sidebar)
   2. Header controls (shared)
   3. Header mode: split
   4. Year panel (shared)
   5. Month grid and day cells
   6. Hover and day-state styling
   7. Hover tooltip
   8. Right sidebar shell
   9. Header mode: compact yearly (right sidebar)
   ======================================================================== */

/* ========================================================================
   Shared tokens and shell (overlay + right sidebar)
   ======================================================================== */

:is(.nn-navigation-pane, .nn-list-pane, .nn-single-pane-calendar) {
    /* Shared calendar sizing and spacing tokens for overlay and sidebar layouts. */
    --nn-calendar-week-count: 6;
    --nn-calendar-scrollbar-gap: var(--scrollbar-size, 12px);
    --nn-calendar-week-gap: 1px;
    --nn-calendar-weekday-row-height: 14px;
    --nn-calendar-header-row-height: 28px;
    --nn-calendar-header-font-size: 12px;
    --nn-calendar-nav-button-size: 28px;
    --nn-calendar-nav-icon-size: 18px;
    --nn-calendar-today-height: 28px;
    --nn-calendar-today-font-size: 12px;
    --nn-calendar-weekday-font-size: 11px;
    --nn-calendar-weeknumber-font-size: var(--nn-calendar-day-font-size);
    --nn-calendar-day-font-size: 12px;
    --nn-calendar-section-gap: 6px;
    --nn-calendar-year-panel-padding-top: 8px;
    --nn-calendar-padding: 8px;
    --nn-calendar-safe-area: 0px;
    --nn-calendar-border-width: 1px;
    --nn-calendar-weeknumber-column-width: 28px;
    --nn-calendar-weeknumber-padding-right: 4px;
    --nn-calendar-note-indicator-size: 15%;
    --nn-calendar-note-indicator-max-size: 5px;
    --nn-calendar-note-indicator-center-offset: clamp(6px, calc(var(--nn-calendar-day-font-size) * 0.65), 12px);
    --nn-calendar-task-indicator-offset-x: clamp(5px, calc(var(--nn-calendar-day-font-size) * 0.42), 9px);
    --nn-calendar-weekend-corner-radius: 6px;
    --nn-calendar-cell-radius: 6px;
    --nn-calendar-header-chip-bg: var(--nn-theme-nav-bg);
    --nn-calendar-note-indicator-color: var(--nn-theme-calendar-note-indicator-color);
    --nn-calendar-task-indicator-color: var(--nn-theme-calendar-unfinished-task-indicator-color);
    --nn-calendar-active-editor-border-color: var(--nn-theme-calendar-day-active-border-color);
    --nn-calendar-active-editor-border-width: var(--nn-theme-calendar-day-active-border-width);
    --nn-calendar-active-editor-gap-color: var(--nn-theme-nav-bg);
    /* Opaque surface behind day cells; underlays translucent cell fills so overdrawn neighbors composite identically */
    --nn-calendar-cell-surface-bg: var(--nn-theme-nav-bg);
}

.notebook-navigator-mobile :is(.nn-navigation-pane, .nn-list-pane, .nn-single-pane-calendar) {
    --nn-calendar-safe-area: var(--nn-mobile-safe-area-bottom);
    --nn-calendar-scrollbar-gap: 0px;
    --nn-calendar-border-width: 0px;
    --nn-calendar-weekday-row-height: 16px;
    --nn-calendar-header-row-height: 32px;
    --nn-calendar-header-font-size: 14px;
    --nn-calendar-nav-button-size: 32px;
    --nn-calendar-nav-icon-size: 18px;
    --nn-calendar-today-height: 32px;
    --nn-calendar-today-font-size: 14px;
    --nn-calendar-weekday-font-size: 12px;
    --nn-calendar-weeknumber-font-size: var(--nn-calendar-day-font-size);
    --nn-calendar-day-font-size: 13px;
}

.nn-single-pane-calendar,
.nn-navigation-calendar-overlay {
    flex-shrink: 0;
    box-sizing: border-box;
    padding: var(--nn-calendar-padding) calc(var(--nn-scroller-padding) + var(--nn-calendar-scrollbar-gap))
        calc(var(--nn-calendar-padding) + var(--nn-calendar-safe-area)) var(--nn-scroller-padding);
    border-top: var(--nn-calendar-border-width) solid var(--nn-theme-divider-border-color);
    background-color: var(--nn-theme-nav-bg);
}

.nn-navigation-calendar {
    height: auto;
    container-type: inline-size;
    --nn-calendar-day-font-size: clamp(9px, 4.6cqw, 12px);
    --nn-calendar-weekday-font-size: clamp(8px, 3.6cqw, 12px);
    --nn-calendar-weeknumber-font-size: var(--nn-calendar-day-font-size);
    --nn-calendar-weeknumber-column-width: clamp(20px, 9cqw, 44px);
    --nn-calendar-weeknumber-padding-right: clamp(2px, 1.2cqw, 8px);
    --nn-calendar-note-indicator-center-offset: clamp(4px, calc(var(--nn-calendar-day-font-size) * 0.65), 12px);
    display: flex;
    flex-direction: column;
    gap: var(--nn-calendar-section-gap);
    user-select: none;
}

.nn-navigation-calendar-grid {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: var(--nn-calendar-section-gap);
}

/* ========================================================================
   Header controls (shared)
   ======================================================================== */

.nn-navigation-calendar-header {
    height: var(--nn-calendar-header-row-height);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}

.nn-navigation-calendar-month {
    font-size: var(--nn-calendar-header-font-size);
    font-weight: 600;
    color: var(--nn-theme-calendar-header-color);
    flex: 0 1 auto;
    display: inline-flex;
    align-items: center;
    justify-content: flex-start;
    gap: 2px;
    line-height: 1;
    white-space: nowrap;
    min-width: 0;
    overflow: hidden;
    position: relative;
    z-index: 1;
}

.nn-navigation-calendar-month .nn-navigation-calendar-period-month {
    flex: 0 1 auto;
    display: block;
    max-width: 100%;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    text-align: left;
}

.nn-navigation-calendar-month .nn-navigation-calendar-period-year {
    flex: 0 0 auto;
}

.nn-navigation-calendar-month .nn-navigation-calendar-quarter-button {
    flex: 0 0 auto;
}

:is(.nn-navigation-pane, .nn-list-pane, .nn-single-pane-calendar) .nn-navigation-calendar-month {
    flex-wrap: nowrap;
    white-space: nowrap;
    overflow: visible;
    z-index: 0;
}

:is(.nn-navigation-pane, .nn-list-pane, .nn-single-pane-calendar) .nn-navigation-calendar-month .nn-navigation-calendar-period-month {
    max-width: none;
    overflow: visible;
    text-overflow: clip;
    white-space: nowrap;
}

button.nn-navigation-calendar-period-button,
button.nn-navigation-calendar-nav-button,
button.nn-navigation-calendar-today,
button.nn-navigation-calendar-year-month,
button.nn-navigation-calendar-weeknumber-button,
button.nn-navigation-calendar-day {
    -webkit-appearance: none;
    appearance: none;
    border: none;
    border-radius: var(--nn-calendar-cell-radius);
    cursor: pointer;
    box-shadow: none;
    outline: none;
}

.nn-navigation-calendar-period-button,
.nn-navigation-calendar-weeknumber {
    position: relative;
}

button.nn-navigation-calendar-period-button {
    background: var(--nn-calendar-header-chip-bg);
    color: var(--nn-theme-calendar-header-color);
    font: inherit;
    box-sizing: border-box;
    height: var(--nn-calendar-today-height);
    padding: 0 1px;
    line-height: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.nn-navigation-calendar-period-button.has-period-note::after {
    content: '';
    position: absolute;
    left: 3px;
    right: 3px;
    bottom: 2px;
    height: 1px;
    background-color: currentColor;
    pointer-events: none;
    z-index: 1;
}

.nn-navigation-calendar-period-button.is-active-editor-file .nn-navigation-calendar-active-outline,
.nn-navigation-calendar-weeknumber.is-active-editor-file .nn-navigation-calendar-active-outline {
    display: block;
}

.nn-navigation-calendar button.nn-navigation-calendar-period-button {
    color: var(--nn-theme-calendar-header-color);
}

.nn-navigation-calendar-nav {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    position: relative;
}

:is(.nn-navigation-pane, .nn-list-pane, .nn-single-pane-calendar) .nn-navigation-calendar-nav {
    flex: 0 0 auto;
    margin-left: auto;
    position: relative;
    z-index: 2;
}

.nn-navigation-calendar-help-inline {
    position: static;
    right: auto;
    top: auto;
    transform: none;
    color: var(--nn-theme-foreground-muted);
    z-index: 0;
    flex: 0 0 auto;
}

.nn-navigation-calendar-month-help {
    position: absolute;
    right: 0;
    top: 50%;
    transform: translateY(-50%);
    color: var(--nn-theme-foreground-muted);
    z-index: 0;
}

.nn-navigation-calendar-month.has-inline-month-nav {
    display: grid;
    grid-template-columns: var(--nn-calendar-nav-button-size) minmax(0, 1fr) var(--nn-calendar-nav-button-size);
    align-items: center;
    gap: 0;
}

.nn-navigation-calendar-inline-month-center {
    display: inline-flex;
    align-items: center;
    gap: 2px;
    min-width: 0;
}

.nn-navigation-calendar-month.has-inline-month-nav .nn-navigation-calendar-inline-month-center {
    grid-column: 2;
    justify-self: center;
}

.nn-navigation-calendar-month.has-inline-help .nn-navigation-calendar-inline-month-center {
    position: relative;
    overflow: visible;
}

.nn-navigation-calendar-month.has-inline-help:not(.has-inline-month-nav) .nn-navigation-calendar-inline-help {
    position: static;
    right: auto;
    top: auto;
    transform: none;
    width: 0;
    min-width: 0;
    height: 20px;
    margin-left: 0;
    padding: 0;
    overflow: hidden;
    flex: 0 0 auto;
}

.nn-navigation-calendar-month.has-inline-month-nav .nn-navigation-calendar-inline-month-center .nn-navigation-calendar-period-month {
    padding-inline: 1px;
}

.nn-navigation-calendar-month.has-inline-help.has-inline-month-nav .nn-navigation-calendar-inline-help {
    position: absolute;
    left: calc(100% + 2px);
    right: auto;
    top: 50%;
    transform: translateY(-50%);
    width: 20px;
    height: 20px;
}

.nn-navigation-calendar-quarter-inline {
    flex: 0 0 auto;
}

.nn-navigation-calendar-month.has-inline-month-nav .nn-navigation-calendar-year-nav-button {
    position: static;
    top: auto;
    transform: none;
    z-index: 1;
}

.nn-navigation-calendar-month.has-inline-month-nav .nn-navigation-calendar-inline-month-nav-prev {
    grid-column: 1;
    justify-self: start;
}

.nn-navigation-calendar-month.has-inline-month-nav .nn-navigation-calendar-inline-month-nav-next {
    grid-column: 3;
    justify-self: end;
}

button.nn-navigation-calendar-nav-button.nn-navigation-calendar-nav-prev {
    width: 24px;
    justify-content: flex-start;
}

button.nn-navigation-calendar-nav-button.nn-navigation-calendar-nav-next {
    width: 24px;
    justify-content: flex-end;
}

button.nn-navigation-calendar-nav-button {
    width: var(--nn-calendar-nav-button-size);
    height: var(--nn-calendar-nav-button-size);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: transparent;
    color: var(--nn-theme-foreground-muted);
    padding: 0;
    line-height: 0;
}

button.nn-navigation-calendar-today {
    background: transparent;
    color: var(--nn-theme-foreground-muted);
    font: inherit;
    font-size: var(--nn-calendar-today-font-size);
    font-weight: 600;
    height: var(--nn-calendar-today-height);
    padding: 0 1px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
}

.nn-navigation-calendar button:is(.nn-navigation-calendar-nav-button, .nn-navigation-calendar-today) {
    color: var(--nn-theme-foreground-muted);
}

/* ========================================================================
   Header mode: split
   ======================================================================== */

.nn-navigation-calendar[data-split-header='true'] .nn-navigation-calendar-header {
    position: relative;
    height: var(--nn-calendar-header-row-height);
    min-height: var(--nn-calendar-header-row-height);
    flex-wrap: nowrap;
    flex-direction: row;
    justify-content: flex-start;
    overflow: hidden;
}

.nn-navigation-calendar[data-split-header='true'] .nn-navigation-calendar-nav {
    position: absolute;
    right: 0;
    top: 50%;
    transform: translateY(-50%);
    margin-left: 0;
    z-index: 3;
    background-color: var(--nn-calendar-header-chip-bg);
    border-radius: 8px;
    padding: 0 2px;
}

.nn-navigation-calendar[data-split-header='true'] .nn-navigation-calendar-month {
    flex: 1 1 auto;
    max-width: none;
    overflow: hidden;
    z-index: 1;
}

.nn-navigation-calendar[data-split-header='true'] .nn-navigation-calendar-month .nn-navigation-calendar-period-month {
    flex: 0 0 auto;
    max-width: none;
    overflow: visible;
    text-overflow: clip;
}

/* ========================================================================
   Year panel (shared)
   ======================================================================== */

.nn-navigation-calendar-year-panel {
    display: flex;
    flex-direction: column;
    gap: var(--nn-calendar-section-gap);
    padding-top: var(--nn-calendar-year-panel-padding-top);
}

.nn-navigation-calendar-year-nav {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 4px;
}

button.nn-navigation-calendar-nav-button.nn-navigation-calendar-year-nav-button {
    width: 24px;
    height: var(--nn-calendar-nav-button-size);
}

button.nn-navigation-calendar-year-label {
    color: var(--nn-theme-foreground-muted);
    font-size: var(--nn-calendar-today-font-size);
    font-weight: 600;
    height: var(--nn-calendar-today-height);
    line-height: 1;
    min-width: 64px;
    padding: 0 8px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-variant-numeric: tabular-nums;
}

.nn-navigation-calendar-year-label.nn-navigation-calendar-period-button {
    color: var(--nn-theme-calendar-header-color);
}

.nn-navigation-calendar-year-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    grid-template-rows: repeat(3, minmax(0, 1fr));
    gap: 1px;
    aspect-ratio: 16 / 9;
}

button.nn-navigation-calendar-year-month {
    position: relative;
    background-color: transparent;
    color: var(--nn-theme-calendar-day-in-month-color);
    font: inherit;
    font-size: var(--nn-calendar-day-font-size);
    line-height: 1;
    min-height: 0;
    padding: 6px;
    text-align: center;
    white-space: nowrap;
    text-overflow: ellipsis;
    overflow: hidden;
    font-variant-numeric: tabular-nums;
    display: flex;
    align-items: center;
    justify-content: center;
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
}

.nn-navigation-calendar-day.has-feature-image::before,
.nn-navigation-calendar-year-month.has-feature-image::before {
    content: '';
    position: absolute;
    /* Extends 0.5px past the cell so the highlight ring covers the antialiased edge of the background image. */
    inset: -0.5px;
    border-radius: calc(var(--nn-calendar-cell-radius) + 0.5px);
    background:
        linear-gradient(to bottom, rgba(255, 255, 255, 0.08), rgba(255, 255, 255, 0.03) 24%, rgba(255, 255, 255, 0) 48%),
        linear-gradient(
            var(--nn-theme-calendar-feature-image-overlay-color, rgb(0 0 0 / 0.05)),
            var(--nn-theme-calendar-feature-image-overlay-color, rgb(0 0 0 / 0.05))
        );
    box-shadow:
        inset 0 0 0 1px rgba(255, 255, 255, 0.14),
        inset 0 1px 0 rgba(255, 255, 255, 0.24),
        inset 0 -1px 0 rgba(255, 255, 255, 0.05);
    pointer-events: none;
    z-index: 0;
}

.nn-navigation-calendar-active-outline {
    display: none;
    position: absolute;
    /* Extends 0.5px past the cell so the border covers the antialiased edge of the background image. */
    inset: -0.5px;
    box-sizing: border-box;
    border: var(--nn-calendar-active-editor-border-width) solid var(--nn-calendar-active-editor-border-color);
    border-radius: calc(var(--nn-calendar-cell-radius) + 0.5px);
    box-shadow: inset 0 0 0 1px var(--nn-calendar-active-editor-gap-color);
    pointer-events: none;
    z-index: 2;
}

.nn-navigation-calendar-year-month-label {
    position: relative;
    z-index: 1;
    display: block;
    max-width: 100%;
    /* Keeps Windows interface-font descenders inside the clipped label used for horizontal ellipsis. */
    line-height: 1.2;
    overflow: hidden;
    text-overflow: ellipsis;
}

.nn-navigation-calendar-year-month.has-daily-note:not(.has-feature-image):not(.has-feature-image-key)::after {
    content: '';
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, var(--nn-calendar-note-indicator-center-offset));
    height: min(var(--nn-calendar-note-indicator-size), var(--nn-calendar-note-indicator-max-size));
    aspect-ratio: 1 / 1;
    width: auto;
    border-radius: 999px;
    background-color: var(--nn-calendar-note-indicator-color);
    z-index: 1;
    pointer-events: none;
}

.nn-navigation-calendar-year-month.has-daily-note.has-unfinished-tasks:not(.has-feature-image):not(.has-feature-image-key)::after {
    transform: translate(calc(-50% - (var(--nn-calendar-task-indicator-offset-x) / 2)), var(--nn-calendar-note-indicator-center-offset));
}

.nn-navigation-calendar-year-month-unfinished-task-indicator {
    display: none;
}

.nn-navigation-calendar-year-month.has-unfinished-tasks .nn-navigation-calendar-year-month-unfinished-task-indicator {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, var(--nn-calendar-note-indicator-center-offset));
    height: min(var(--nn-calendar-note-indicator-size), var(--nn-calendar-note-indicator-max-size));
    aspect-ratio: 1 / 1;
    width: auto;
    border-radius: 999px;
    border: 1px solid var(--nn-calendar-task-indicator-color);
    background-color: transparent;
    z-index: 1;
    pointer-events: none;
    display: block;
}

.nn-navigation-calendar-year-month.has-daily-note.has-unfinished-tasks:not(.has-feature-image):not(.has-feature-image-key)
    .nn-navigation-calendar-year-month-unfinished-task-indicator {
    transform: translate(calc(-50% + (var(--nn-calendar-task-indicator-offset-x) / 2)), var(--nn-calendar-note-indicator-center-offset));
}

.nn-navigation-calendar-year-month.has-unfinished-tasks.has-feature-image .nn-navigation-calendar-year-month-unfinished-task-indicator,
.nn-navigation-calendar-year-month.has-unfinished-tasks.has-feature-image-key .nn-navigation-calendar-year-month-unfinished-task-indicator {
    border-color: currentColor;
}

.nn-navigation-calendar-year-month.is-selected-month {
    color: var(--nn-theme-calendar-day-in-month-color);
}

.nn-navigation-calendar-year-month.is-selected-month .nn-navigation-calendar-active-outline {
    display: block;
}

.nn-navigation-calendar-year-month.is-selected-month.has-feature-image {
    color: var(--nn-theme-calendar-feature-image-text-color);
}

.nn-navigation-calendar[data-highlight-today='true']
    .nn-navigation-calendar-year-month.is-current-month:not(.has-feature-image):not(.has-feature-image-key) {
    background-color: var(--nn-theme-calendar-day-today-bg);
    color: var(--nn-theme-calendar-day-today-color);
}

.nn-navigation-calendar button.nn-navigation-calendar-year-month {
    color: var(--nn-theme-calendar-day-in-month-color);
}

.nn-navigation-calendar button.nn-navigation-calendar-year-month.has-feature-image {
    color: var(--nn-theme-calendar-feature-image-text-color);
}

.nn-navigation-calendar button.nn-navigation-calendar-year-month.is-selected-month {
    color: var(--nn-theme-calendar-day-in-month-color);
}

.nn-navigation-calendar button.nn-navigation-calendar-year-month.is-selected-month.has-feature-image {
    color: var(--nn-theme-calendar-feature-image-text-color);
}

.nn-navigation-calendar[data-highlight-today='true']
    button.nn-navigation-calendar-year-month.is-current-month:not(.has-feature-image):not(.has-feature-image-key) {
    color: var(--nn-theme-calendar-day-today-color);
}

.nn-navigation-calendar[data-highlight-today='true']
    button.nn-navigation-calendar-year-month.is-current-month.is-selected-month:not(.has-feature-image):not(.has-feature-image-key) {
    color: var(--nn-theme-calendar-day-today-color);
}

/* Calendar month navigation icon sizing (ServiceIcon renders an SVG). */
.nn-navigation-calendar-nav-button svg {
    width: var(--nn-calendar-nav-icon-size);
    height: var(--nn-calendar-nav-icon-size);
    stroke-width: 2.5;
}

.nn-navigation-calendar-help svg,
.nn-navigation-calendar-month-help svg {
    width: 16px;
    height: 16px;
    stroke-width: 2;
}

/* ========================================================================
   Month grid and day cells
   ======================================================================== */

.nn-navigation-calendar-weekdays {
    min-height: var(--nn-calendar-weekday-row-height);
    display: grid;
    align-items: center;
    gap: 0 1px;
    grid-template-columns: repeat(7, minmax(0, 1fr));
    color: var(--nn-theme-calendar-weekday-color);
    font-size: var(--nn-calendar-weekday-font-size);
    line-height: 1;
}

.nn-navigation-calendar-weekdays[data-weeknumbers='true'] {
    grid-template-columns: var(--nn-calendar-weeknumber-column-width) 1px repeat(7, minmax(0, 1fr));
}

.nn-navigation-calendar-weekday,
.nn-navigation-calendar-weeknumber-spacer {
    text-align: center;
}

.nn-navigation-calendar-weekdays[data-weeknumbers='true'] .nn-navigation-calendar-weeknumber-spacer {
    text-align: right;
    padding-right: var(--nn-calendar-weeknumber-padding-right);
}

.nn-navigation-calendar-weeks {
    display: flex;
    flex-direction: column;
    gap: var(--nn-calendar-week-gap);
}

.nn-navigation-calendar-week {
    display: grid;
    grid-template-columns: repeat(7, minmax(0, 1fr));
    gap: 0 1px;
    align-items: center;
}

.nn-navigation-calendar-weeks[data-weeknumbers='true'] .nn-navigation-calendar-week {
    grid-template-columns: var(--nn-calendar-weeknumber-column-width) 1px repeat(7, minmax(0, 1fr));
}

.nn-navigation-calendar-week-spacer {
    pointer-events: none;
}

.nn-navigation-calendar-weeknumber-divider {
    width: 1px;
    height: 100%;
    background-color: var(--nn-theme-calendar-hover-bg);
    pointer-events: none;
}

.nn-navigation-calendar-week.has-next-week .nn-navigation-calendar-weeknumber-divider {
    position: relative;
}

.nn-navigation-calendar-week.has-next-week .nn-navigation-calendar-weeknumber-divider::after {
    content: '';
    position: absolute;
    inset-inline: 0;
    top: 100%;
    height: var(--nn-calendar-week-gap);
    background-color: var(--nn-theme-calendar-hover-bg);
    pointer-events: none;
}

.nn-navigation-calendar-weekdays .nn-navigation-calendar-weeknumber-divider {
    background-color: transparent;
}

.nn-navigation-calendar-weeknumber {
    height: auto;
    align-self: stretch;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    padding-right: var(--nn-calendar-weeknumber-padding-right);
    color: var(--nn-theme-calendar-week-color);
    font-size: var(--nn-calendar-weeknumber-font-size);
    font-weight: 400;
    line-height: 1;
    font-variant-numeric: tabular-nums;
}

button.nn-navigation-calendar-weeknumber-button {
    width: 100%;
    background-color: transparent;
}

.nn-navigation-calendar button.nn-navigation-calendar-weeknumber {
    color: var(--nn-theme-calendar-week-color);
}

.nn-navigation-calendar-weeknumber-button.has-period-note {
    text-decoration: none;
}

.nn-navigation-calendar-weeknumber-spacer-row {
    visibility: hidden;
}

.nn-navigation-calendar-weeknumber-value {
    display: inline-block;
    position: relative;
}

.nn-navigation-calendar-weeknumber.has-period-note .nn-navigation-calendar-weeknumber-value::after {
    content: '';
    position: absolute;
    left: 50%;
    top: 100%;
    transform: translateX(-50%);
    margin-top: 2px;
    width: clamp(2px, 1.9cqw, var(--nn-calendar-note-indicator-max-size));
    height: clamp(2px, 1.9cqw, var(--nn-calendar-note-indicator-max-size));
    border-radius: 999px;
    background-color: var(--nn-calendar-note-indicator-color);
    pointer-events: none;
}

.nn-navigation-calendar-weeknumber.has-period-note.has-unfinished-tasks .nn-navigation-calendar-weeknumber-value::after {
    transform: translateX(calc(-50% - (var(--nn-calendar-task-indicator-offset-x) / 2)));
}

.nn-navigation-calendar-weeknumber.has-unfinished-tasks .nn-navigation-calendar-weeknumber-value::before {
    content: '';
    position: absolute;
    left: 50%;
    top: 100%;
    transform: translateX(calc(-50% + (var(--nn-calendar-task-indicator-offset-x) / 2)));
    margin-top: 2px;
    width: clamp(2px, 1.9cqw, var(--nn-calendar-note-indicator-max-size));
    height: clamp(2px, 1.9cqw, var(--nn-calendar-note-indicator-max-size));
    box-sizing: border-box;
    border-radius: 999px;
    border: 1px solid var(--nn-calendar-task-indicator-color);
    background-color: transparent;
    pointer-events: none;
}

.nn-navigation-calendar-day-cell {
    position: relative;
    min-width: 0;
    width: 100%;
    height: auto;
    aspect-ratio: 1 / 1;
}

.nn-navigation-calendar-day-cell.is-weekend::before {
    content: '';
    position: absolute;
    inset: 0;
    /* Opaque surface underlay with the translucent weekend color layered on top. This makes the
       painted result opaque, so the 1px overdraw into gaps shared with adjacent weekend cells
       overlaps invisibly. Without the underlay, overlapping translucent fills double-composite
       into darker seams, and half-pixel overdraw leaves hairline gaps on fractional-DPR displays. */
    background-color: var(--nn-calendar-cell-surface-bg);
    background-image: linear-gradient(var(--nn-theme-calendar-weekend-bg), var(--nn-theme-calendar-weekend-bg));
    border-radius: 0;
    pointer-events: none;
    z-index: 0;
}

.nn-navigation-calendar-day-cell.is-weekend.has-weekend-before::before {
    inset-inline-start: -1px;
}

.nn-navigation-calendar-day-cell.is-weekend.has-weekend-after::before {
    inset-inline-end: -1px;
}

.nn-navigation-calendar-day-cell.is-weekend.has-weekend-above::before {
    inset-block-start: -1px;
}

.nn-navigation-calendar-day-cell.is-weekend.has-weekend-below::before {
    inset-block-end: -1px;
}

.nn-navigation-calendar-day-cell.is-weekend.round-weekend-top-left::before {
    border-top-left-radius: var(--nn-calendar-weekend-corner-radius);
}

.nn-navigation-calendar-day-cell.is-weekend.round-weekend-top-right::before {
    border-top-right-radius: var(--nn-calendar-weekend-corner-radius);
}

.nn-navigation-calendar-day-cell.is-weekend.round-weekend-bottom-left::before {
    border-bottom-left-radius: var(--nn-calendar-weekend-corner-radius);
}

.nn-navigation-calendar-day-cell.is-weekend.round-weekend-bottom-right::before {
    border-bottom-right-radius: var(--nn-calendar-weekend-corner-radius);
}

button.nn-navigation-calendar-day {
    position: relative;
    height: auto;
    aspect-ratio: 1 / 1;
    box-sizing: border-box;
    min-width: 0;
    width: 100%;
    padding: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: transparent;
    color: var(--nn-theme-calendar-day-in-month-color);
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    z-index: 1;
}

.nn-navigation-calendar-day-spacer {
    min-width: 0;
    width: 100%;
    aspect-ratio: 1 / 1;
    pointer-events: none;
}

/* ========================================================================
   Hover and day-state styling
   ======================================================================== */

/* Hover effects only apply on hover-capable devices (prevents "stuck hover" on touch). */
@media (hover: hover) and (pointer: fine) {
    .nn-navigation-calendar-nav-button:hover {
        background-color: var(--nn-theme-calendar-hover-bg);
    }

    .nn-navigation-calendar-help:hover {
        background-color: transparent;
    }

    .nn-navigation-calendar-month-help:hover {
        background-color: transparent;
    }

    .nn-navigation-calendar-month.has-inline-help .nn-navigation-calendar-inline-help {
        opacity: 0;
        visibility: hidden;
        pointer-events: none;
    }

    .nn-navigation-calendar-month.has-inline-help:hover .nn-navigation-calendar-inline-help,
    .nn-navigation-calendar-month.has-inline-help:focus-within .nn-navigation-calendar-inline-help {
        opacity: 1;
        visibility: visible;
        pointer-events: auto;
    }

    .nn-navigation-calendar-month.has-inline-help:not(.has-inline-month-nav):hover .nn-navigation-calendar-inline-help,
    .nn-navigation-calendar-month.has-inline-help:not(.has-inline-month-nav):focus-within .nn-navigation-calendar-inline-help {
        width: 20px;
        min-width: 20px;
        margin-left: 2px;
    }

    :is(.nn-navigation-pane, .nn-list-pane, .nn-single-pane-calendar) .nn-navigation-calendar-header .nn-navigation-calendar-help-inline {
        opacity: 0;
        visibility: hidden;
        pointer-events: none;
    }

    :is(.nn-navigation-pane, .nn-list-pane, .nn-single-pane-calendar)
        .nn-navigation-calendar-header:is(:hover, :focus-within)
        .nn-navigation-calendar-help-inline {
        opacity: 1;
        visibility: visible;
        pointer-events: auto;
    }

    .nn-navigation-calendar[data-split-header='true'] .nn-navigation-calendar-header .nn-navigation-calendar-help-inline {
        width: 0;
        min-width: 0;
        padding: 0;
        margin: 0;
        overflow: hidden;
    }

    .nn-navigation-calendar[data-split-header='true'] .nn-navigation-calendar-header:hover .nn-navigation-calendar-help-inline,
    .nn-navigation-calendar[data-split-header='true'] .nn-navigation-calendar-header:focus-within .nn-navigation-calendar-help-inline {
        width: var(--nn-calendar-nav-button-size);
        min-width: var(--nn-calendar-nav-button-size);
    }

    .nn-navigation-calendar-today:hover {
        background-color: var(--nn-theme-calendar-hover-bg);
    }

    .nn-navigation-calendar-period-button:hover,
    .nn-navigation-calendar-weeknumber-button:hover {
        filter: brightness(1.05);
        background-color: var(--nn-theme-calendar-hover-bg);
    }

    .nn-navigation-calendar-day:hover {
        filter: brightness(1.05);
    }

    .nn-navigation-calendar-day:hover:not(.has-feature-image):not(.has-feature-image-key) {
        background-color: var(--nn-theme-calendar-hover-bg);
    }

    .nn-navigation-calendar-year-month:hover {
        filter: brightness(1.05);
    }

    .nn-navigation-calendar-year-month:hover:not(.is-selected-month):not(.has-feature-image):not(.has-feature-image-key) {
        background-color: var(--nn-theme-calendar-hover-bg);
    }
}

.nn-navigation-calendar-day.is-outside-month:not(.has-feature-image):not(.has-feature-image-key) {
    color: var(--nn-theme-calendar-day-outside-month-color);
}

.nn-navigation-calendar[data-highlight-today='true']
    .nn-navigation-calendar-day.is-today:not(.has-feature-image):not(.has-feature-image-key) {
    color: var(--nn-theme-calendar-day-today-color);
}

.nn-navigation-calendar[data-highlight-today='true']
    .nn-navigation-calendar-day.is-today:not(.has-feature-image):not(.has-feature-image-key)::before {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background-color: var(--nn-theme-calendar-day-today-bg);
    z-index: 0;
}

.nn-navigation-calendar-day.has-daily-note:not(.has-feature-image):not(.has-feature-image-key)::after {
    content: '';
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, var(--nn-calendar-note-indicator-center-offset));
    height: min(var(--nn-calendar-note-indicator-size), var(--nn-calendar-note-indicator-max-size));
    aspect-ratio: 1 / 1;
    width: auto;
    border-radius: 999px;
    background-color: var(--nn-calendar-note-indicator-color);
    z-index: 1;
    pointer-events: none;
}

.nn-navigation-calendar-day.is-active-editor-file .nn-navigation-calendar-active-outline {
    display: block;
}

/* Center the two-indicator group horizontally when both note and unfinished-task indicators are visible. */
.nn-navigation-calendar-day.has-daily-note.has-unfinished-tasks:not(.has-feature-image):not(.has-feature-image-key)::after {
    transform: translate(calc(-50% - (var(--nn-calendar-task-indicator-offset-x) / 2)), var(--nn-calendar-note-indicator-center-offset));
}

.nn-navigation-calendar-day-unfinished-task-indicator {
    display: none;
}

.nn-navigation-calendar-day.has-unfinished-tasks .nn-navigation-calendar-day-unfinished-task-indicator {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, var(--nn-calendar-note-indicator-center-offset));
    height: min(var(--nn-calendar-note-indicator-size), var(--nn-calendar-note-indicator-max-size));
    aspect-ratio: 1 / 1;
    width: auto;
    border-radius: 999px;
    border: 1px solid var(--nn-calendar-task-indicator-color);
    background-color: transparent;
    z-index: 1;
    pointer-events: none;
    display: block;
}

.nn-navigation-calendar-day.has-daily-note.has-unfinished-tasks:not(.has-feature-image):not(.has-feature-image-key)
    .nn-navigation-calendar-day-unfinished-task-indicator {
    transform: translate(calc(-50% + (var(--nn-calendar-task-indicator-offset-x) / 2)), var(--nn-calendar-note-indicator-center-offset));
}

.nn-navigation-calendar-day.has-unfinished-tasks.has-feature-image .nn-navigation-calendar-day-unfinished-task-indicator,
.nn-navigation-calendar-day.has-unfinished-tasks.has-feature-image-key .nn-navigation-calendar-day-unfinished-task-indicator {
    border-color: currentColor;
}

.nn-navigation-calendar-day.is-today .nn-navigation-calendar-day-number,
.nn-navigation-calendar-day.has-feature-image .nn-navigation-calendar-day-number,
.nn-navigation-calendar-day.has-feature-image-key .nn-navigation-calendar-day-number {
    font-weight: 600;
}

.nn-navigation-calendar-day.has-feature-image {
    color: var(--nn-theme-calendar-feature-image-text-color);
}

.nn-navigation-calendar-year-month.has-feature-image {
    color: var(--nn-theme-calendar-feature-image-text-color);
}

.nn-navigation-calendar-day.has-feature-image .nn-navigation-calendar-day-number {
    text-shadow:
        0 1px 2px rgba(0, 0, 0, 0.88),
        0 2px 8px rgba(0, 0, 0, 0.65);
}

.nn-navigation-calendar-year-month.has-feature-image .nn-navigation-calendar-year-month-label {
    font-weight: 600;
    overflow: visible;
    text-overflow: clip;
    text-shadow:
        0 1px 2px rgba(0, 0, 0, 0.88),
        0 2px 8px rgba(0, 0, 0, 0.65);
}

.nn-navigation-calendar-year-month.has-feature-image-key .nn-navigation-calendar-year-month-label {
    font-weight: 600;
}

.nn-navigation-calendar-day-number {
    font-size: var(--nn-calendar-day-font-size);
    line-height: 1;
    font-variant-numeric: tabular-nums;
    position: relative;
    z-index: 1;
}

/* ========================================================================
   Hover tooltip
   ======================================================================== */

.nn-navigation-calendar-hover-tooltip {
    position: fixed;
    z-index: 1000;
    pointer-events: none;
    width: 240px;
    max-width: min(260px, calc(100vw - 16px));
    padding: 8px;
    display: flex;
    flex-direction: column;
    border-radius: 10px;
    background: var(--background-secondary);
    border: 1px solid var(--background-modifier-border);
    box-shadow: var(--shadow-s, 0 6px 18px rgba(0, 0, 0, 0.2));
}

.nn-navigation-calendar-hover-tooltip-image {
    width: 100%;
    height: auto;
    aspect-ratio: 4 / 3;
    border-radius: 8px;
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
}

/* ========================================================================
   Right sidebar shell
   ======================================================================== */

.nn-calendar-right-sidebar {
    --nn-calendar-right-sidebar-bg: var(--background-secondary);
    overflow: auto;
    background-color: var(--nn-calendar-right-sidebar-bg);
}

.nn-calendar-right-sidebar .nn-navigation-calendar {
    --nn-calendar-header-chip-bg: var(--nn-calendar-right-sidebar-bg);
    --nn-calendar-active-editor-gap-color: var(--nn-calendar-right-sidebar-bg);
    --nn-calendar-cell-surface-bg: var(--nn-calendar-right-sidebar-bg);
    --nn-calendar-header-font-size: 16px;
    --nn-calendar-today-font-size: 13px;
}

.notebook-navigator-mobile .nn-calendar-right-sidebar .nn-navigation-calendar {
    --nn-calendar-header-font-size: 18px;
    --nn-calendar-today-font-size: 14px;
}

.nn-calendar-right-sidebar .nn-navigation-calendar-year-grid {
    width: 100%;
}

.nn-calendar-right-sidebar .nn-navigation-calendar-year-month {
    width: 100%;
    height: 100%;
}

.is-mobile .nn-calendar-right-sidebar {
    --nn-calendar-right-sidebar-bg: var(--mobile-sidebar-background);
}

.nn-calendar-right-sidebar-content {
    padding: 10px 12px;
}
/* Source: src/styles/sections/list-files.css */

/* ========================================================================
   File List Styles
   ======================================================================== */

/* File list container - scrollable area for files */
.nn-list-pane-chrome {
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
}

.nn-list-pane-panel {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

.nn-list-pane-scroller {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
    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-pane-content {
    flex: 1 0 auto;
}

.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;
}

.nn-list-title-label--folder-note {
    text-decoration: var(--nn-theme-navitem-folder-note-name-decoration);
}

.nn-list-title-label--folder-note:hover {
    cursor: pointer;
    text-decoration: var(--nn-theme-navitem-folder-note-name-hover-decoration);
}

/* File - container for each file in the list */
.nn-file {
    --nn-file-item-border-radius: min(16px, var(--nn-theme-file-border-radius));
    background: transparent;
    padding: 0;
    -webkit-user-select: none;
    user-select: none;
    position: relative;
    height: 100%;

    /* CSS Custom Properties for file items - themes can override these */
    contain: layout style paint;
}

/* 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-mobile, var(--nn-file-padding-vertical)) var(--nn-file-item-padding-horizontal);
    margin: 0;
    border-radius: var(--nn-file-item-border-radius);
    background: transparent;
    position: relative; /* For absolute positioning of reveal overlay */
    height: 100%;
    box-sizing: border-box;
}

.nn-file.nn-has-custom-background::before {
    content: '';
    position: absolute;
    top: 0px;
    inset-inline-start: 0;
    inset-inline-end: 0;
    bottom: 0;
    background-color: var(--nn-file-custom-bg-color);
    border-top-left-radius: var(--nn-file-top-left-radius, var(--nn-file-item-border-radius));
    border-top-right-radius: var(--nn-file-top-right-radius, var(--nn-file-item-border-radius));
    border-bottom-left-radius: var(--nn-file-bottom-left-radius, var(--nn-file-item-border-radius));
    border-bottom-right-radius: var(--nn-file-bottom-right-radius, var(--nn-file-item-border-radius));
    box-shadow: inset 0 0 0 var(--nn-theme-file-border-width) transparent;
    z-index: 0;
    pointer-events: none;
}

.nn-file.nn-has-custom-background > .nn-file-content {
    z-index: 2;
}

.nn-virtual-file-item-has-filled-background-previous > .nn-file,
.nn-virtual-file-item-has-custom-background-previous > .nn-file.nn-has-custom-background {
    --nn-file-top-left-radius: 0;
    --nn-file-top-right-radius: 0;
}

.nn-virtual-file-item-has-filled-background-next > .nn-file,
.nn-virtual-file-item-has-custom-background-next > .nn-file.nn-has-custom-background {
    --nn-file-bottom-left-radius: 0;
    --nn-file-bottom-right-radius: 0;
}

/* File inner content - flex container for actual content */
.nn-file-inner-content {
    display: flex;
    flex-direction: row;
    gap: var(--nn-file-row-gap);
    align-items: flex-start;
    position: relative;
    height: 100%;
}

.nn-file-icon-slot {
    width: var(--nn-file-icon-slot-width-mobile, var(--nn-file-icon-slot-width));
    flex: 0 0 var(--nn-file-icon-slot-width-mobile, var(--nn-file-icon-slot-width));
    display: flex;
    align-items: center;
    align-self: flex-start;
    justify-content: center;
    margin-inline-end: max(0px, calc(var(--nn-file-icon-slot-gap) - var(--nn-file-row-gap)));
    margin-top: max(0px, calc((var(--nn-file-title-line-height) - var(--nn-file-icon-size-mobile, var(--nn-file-icon-size))) / 2));
}

.nn-file-icon-rectangle {
    min-width: 18px;
    height: 14px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding-inline: 4px;
    border-radius: 4px;
    background-color: var(--background-secondary);
    box-sizing: border-box;
}

.nn-file-icon-rectangle-text {
    font-family: var(--font-monospace);
    font-size: 9px;
    font-weight: 700;
    color: var(--nn-theme-foreground-muted);
    text-transform: uppercase;
    letter-spacing: 0.1px;
    line-height: 1;
}

/* Virtual list file separator */

.nn-virtual-file-item:not(.nn-last-file)::after {
    content: '';
    position: absolute;
    bottom: 0;
    inset-inline-start: calc(
        var(--nn-file-item-padding-horizontal) + var(--nn-file-icon-slot-width-mobile, var(--nn-file-icon-slot-width)) +
            var(--nn-file-icon-slot-gap)
    );
    inset-inline-end: var(--nn-file-item-padding-horizontal);
    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,
.nn-virtual-file-item.nn-virtual-file-item-has-filled-background::after,
.nn-virtual-file-item.nn-virtual-file-item-has-filled-background-next::after,
.nn-virtual-file-item.nn-virtual-file-item-has-custom-background::after,
.nn-virtual-file-item.nn-virtual-file-item-has-custom-background-next::after {
    display: none;
}

/* Hide separators in compact mode */
.nn-compact-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 */
    height: 100%;
    min-height: 0;
    justify-content: flex-start;
}

/* Compact mode file text content - same as above but without min-height */
.nn-compact-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 */
}

/* Manual property sort editing */
.nn-manual-sort-scroller {
    padding: 0 var(--nn-scroller-padding);
}

.nn-manual-sort-panel {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    padding: 0.75rem 0 1rem;
}

.nn-manual-sort-header {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    padding: 0 var(--nn-file-item-padding-horizontal);
}

.nn-manual-sort-header-text {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.nn-manual-sort-title {
    font-size: var(--nn-desktop-header-font-size);
    font-weight: var(--nn-theme-list-header-breadcrumb-font-weight);
    line-height: 1.3;
    color: var(--nn-theme-list-heading-color);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.nn-manual-sort-hint {
    font-size: var(--nn-root-reorder-hint-font-size);
    color: var(--nn-theme-foreground-muted);
    line-height: 1.25;
}

.nn-manual-sort-done {
    flex-shrink: 0;
    padding: 0 0.75rem;
    cursor: pointer;
}

.nn-manual-sort-done:disabled {
    cursor: default;
}

.nn-manual-sort-list {
    display: flex;
    flex-direction: column;
    position: relative;
    width: 100%;
}

.nn-manual-sort-section-header {
    margin-top: var(--nn-list-group-header-spacer-before);
}

.nn-manual-sort-list > .nn-manual-sort-section-header:first-child {
    margin-top: 0;
}

.nn-manual-sort-sortable-item {
    position: relative;
    width: 100%;
}

.nn-manual-sort-sortable-item-sorting {
    z-index: 2;
}

.nn-manual-sort-row {
    display: flex;
    align-items: stretch;
    min-width: 0;
    cursor: grab;
    position: relative;
    width: 100%;
    box-sizing: border-box;
}

.nn-manual-sort-row-sorting {
    z-index: 2;
}

.nn-manual-sort-row-sorting::after {
    display: none;
}

.nn-manual-sort-row-has-filled-background-previous .nn-file,
.nn-manual-sort-row-has-custom-background-previous .nn-file.nn-has-custom-background {
    --nn-file-top-left-radius: 0;
    --nn-file-top-right-radius: 0;
}

.nn-manual-sort-row-has-filled-background-next .nn-file,
.nn-manual-sort-row-has-custom-background-next .nn-file.nn-has-custom-background {
    --nn-file-bottom-left-radius: 0;
    --nn-file-bottom-right-radius: 0;
}

.nn-manual-sort-row-drag-block .nn-file.nn-selected .nn-file-content::before {
    box-shadow: inset 0 0 0 2px var(--interactive-accent);
}

.nn-manual-sort-row-disabled {
    cursor: default;
}

.nn-manual-sort-row:not(.nn-manual-sort-row-last)::after {
    content: '';
    position: absolute;
    bottom: 0;
    inset-inline-start: calc(
        var(--nn-file-item-padding-horizontal) + var(--nn-file-icon-slot-width-mobile, var(--nn-file-icon-slot-width)) +
            var(--nn-file-icon-slot-gap)
    );
    inset-inline-end: var(--nn-file-item-padding-horizontal);
    height: var(--nn-separator-height);
    background-color: var(--nn-theme-list-separator-color);
    z-index: 100;
    pointer-events: none;
}

.nn-manual-sort-row.nn-manual-sort-row-hide-separator::after,
.nn-manual-sort-row.nn-manual-sort-row-has-filled-background::after,
.nn-manual-sort-row.nn-manual-sort-row-has-filled-background-next::after,
.nn-manual-sort-row.nn-manual-sort-row-has-custom-background::after,
.nn-manual-sort-row.nn-manual-sort-row-has-custom-background-next::after {
    display: none;
}

.nn-manual-sort-file {
    flex: 1;
    min-width: 0;
}

.nn-manual-sort-file .nn-file,
.nn-manual-sort-file .nn-file-content,
.nn-manual-sort-file .nn-file-inner-content {
    height: auto;
}

.nn-file-manual-sort-disabled {
    opacity: 0.55;
}

.notebook-navigator-mobile .nn-manual-sort-title {
    font-size: var(--nn-mobile-header-font-size);
}

.notebook-navigator-mobile .nn-manual-sort-hint {
    font-size: var(--nn-root-reorder-hint-font-size-mobile);
}

.notebook-navigator-mobile .nn-manual-sort-row {
    cursor: default;
}

.notebook-navigator-mobile .nn-manual-sort-row-draggable:not(.nn-manual-sort-row-last)::after {
    inset-inline-start: calc(
        var(--nn-file-item-padding-horizontal) + var(--nn-file-icon-slot-width-mobile, var(--nn-file-icon-slot-width)) +
            var(--nn-file-icon-slot-gap)
    );
    inset-inline-end: calc(var(--nn-file-item-padding-horizontal) + 28px + var(--nn-file-item-padding-horizontal));
}

.notebook-navigator-mobile .nn-manual-sort-row .nn-drag-handle {
    align-self: center;
    width: calc(28px + var(--nn-file-item-padding-horizontal));
    padding-inline-end: var(--nn-file-item-padding-horizontal);
    box-sizing: border-box;
}

/* File name - primary text with ellipsis overflow */
.nn-file-name {
    font-size: var(--nn-file-name-size-mobile, 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;
    max-height: calc(var(--nn-file-title-line-height) * var(--filename-rows, 1));
}

.nn-file-name[data-title-rows='1'] {
    display: block;
    white-space: nowrap;
    word-break: normal;
}

.nn-file-name[data-has-color='true'] {
    color: var(--nn-file-name-custom-color);
}

.nn-file-name-suffix {
    color: var(--nn-theme-file-word-count-color);
    font-weight: var(--nn-theme-file-word-count-font-weight);
}

/* Keep aliases in normal text flow so title clamping can reveal or wrap each value independently. */
.nn-file-alias-match {
    display: inline;
    margin-inline-start: 5px;
    color: var(--nn-theme-foreground-muted);
    font-size: 0.85em;
    font-weight: normal;
    vertical-align: baseline;
}

.nn-file-alias-match-icon {
    display: inline-flex;
    width: 1em;
    height: 1em;
    margin-inline-end: 2px;
    vertical-align: -0.125em;
}

.nn-file-alias-match-icon svg {
    width: 1em;
    height: 1em;
}

/* Property evidence appears only while an internal property search is active. */
.nn-file-property-search-evidence {
    display: inline;
    margin-inline-start: 5px;
    color: var(--nn-theme-foreground-muted);
    font-size: 0.85em;
    font-weight: normal;
    vertical-align: baseline;
}

.nn-file-property-search-evidence-key {
    font-weight: 600;
}

.nn-file-property-search-evidence-icon {
    display: inline-flex;
    width: 1em;
    height: 1em;
    margin-inline-end: 2px;
    vertical-align: -0.125em;
}

.nn-file-property-search-evidence-icon svg {
    width: 1em;
    height: 1em;
}

.nn-file-icon {
    width: var(--nn-file-icon-size-mobile, var(--nn-file-icon-size));
    height: var(--nn-file-icon-size-mobile, var(--nn-file-icon-size));
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    color: var(--nn-theme-navitem-icon-color);
}

.nn-file-icon svg {
    width: var(--nn-file-icon-size-mobile, var(--nn-file-icon-size));
    height: var(--nn-file-icon-size-mobile, var(--nn-file-icon-size));
}

.nn-file-icon.nn-emoji-icon,
.nn-file-icon .nn-emoji-icon {
    font-size: var(--nn-file-icon-size-mobile, var(--nn-file-icon-size));
    width: var(--nn-file-icon-size-mobile, var(--nn-file-icon-size));
    height: var(--nn-file-icon-size-mobile, var(--nn-file-icon-size));
    line-height: var(--nn-file-icon-size-mobile, var(--nn-file-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);
}

/* A configured task color remains stable across selection states. Without one, the replacement
   follows the same normal and selected colors as the file icon it replaces. */
.nn-file-icon.nn-file-icon-unfinished-task[data-has-color='false'] {
    color: var(--nn-theme-file-task-color, var(--nn-theme-navitem-icon-color));
}

.nn-file.nn-selected .nn-file-icon.nn-file-icon-unfinished-task[data-has-color='false'] {
    color: var(--nn-theme-file-task-color, var(--nn-theme-navitem-selected-icon-color));
}

/* 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: 20px;
    display: flex;
    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;
}

/* Compact mode with 1 title row and no tags: center vertically */
.nn-quick-actions-panel.nn-compact-mode[data-title-rows='1'][data-has-tags='false'] {
    top: max(0px, calc((var(--nn-file-title-line-height) + var(--nn-file-padding-vertical-compact) * 2 - 20px) / 2));
}

/* Compact mode with tags or more than 1 title row: align with compact padding */
.nn-quick-actions-panel.nn-compact-mode:not([data-title-rows='1']),
.nn-quick-actions-panel.nn-compact-mode[data-has-tags='true'] {
    top: var(--nn-file-padding-vertical-compact);
}

/* 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-mobile, 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: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    min-width: auto;
    line-height: var(--nn-file-single-text-line-height);
}

/* Task progress - task icon with optional fixed-width bar and completed/total task count.
   The container color drives the dot separator, icon, and count; track and fill read the same variable.
   The task color variables are intentionally unset by default: the var() fallbacks detect whether a
   theme or Style Settings customized them. Customized colors persist on selected rows (see list-tags.css),
   while the uncustomized default follows the date color in each selection state. */
.nn-file-task-progress {
    --nn-file-task-progress-current-color: var(--nn-theme-file-task-color, var(--nn-theme-file-date-color));
    --nn-file-task-progress-current-weight: var(--nn-theme-file-task-font-weight);
    display: flex;
    align-items: center;
    gap: 4px;
    flex-shrink: 0;
    line-height: var(--nn-file-single-text-line-height);
    color: var(--nn-file-task-progress-current-color);
}

/* All tasks completed: color and weight default to the unfinished values, so completion reads
   only from the count showing equal numbers unless a theme customizes the complete variables. */
.nn-file-task-progress--complete {
    --nn-file-task-progress-current-color: var(
        --nn-theme-file-task-complete-color,
        var(--nn-theme-file-task-color, var(--nn-theme-file-date-color))
    );
    --nn-file-task-progress-current-weight: var(--nn-theme-file-task-complete-font-weight);
}

/* Task icon inherits the current color so it reflects the complete state when bar and count are hidden. */
.nn-file-task-progress-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;
}

/* Emoji and icon-font providers render the glyph on the container instead of adding an SVG,
   so they need an explicit font size to match the task indicator box. */
.nn-file-task-progress-icon.nn-emoji-icon,
.nn-file-task-progress-icon.nn-iconfont {
    font-size: calc(var(--icon-size) * 0.8);
    line-height: calc(var(--icon-size) * 0.8);
}

/* The icon has no font weight, so its stroke width tracks the state weight variable instead:
   weight 400 maps to the lucide default stroke of 2, weight 600 to 2.5, keeping the icon's
   visual boldness in sync with the count text. */
.nn-file-task-progress-icon svg {
    width: 100%;
    height: 100%;
    stroke-width: calc(2px + (var(--nn-file-task-progress-current-weight) - 400) * 0.0025px);
}

/* Bar width stays fixed regardless of task count; only the fill percentage changes. */
.nn-file-task-progress-track {
    position: relative;
    width: 44px;
    height: 4px;
    border-radius: 999px;
    overflow: hidden;
}

/* Track background derives from the current color so themed colors tint track, fill, and count together. */
.nn-file-task-progress-track::before {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background-color: var(--nn-file-task-progress-current-color);
    opacity: 0.25;
}

.nn-file-task-progress-fill {
    position: relative;
    width: var(--nn-file-task-progress-width, 0%);
    height: 100%;
    border-radius: inherit;
    background-color: var(--nn-file-task-progress-current-color);
}

.nn-file-task-progress-count {
    font-size: var(--nn-file-small-size-mobile, var(--nn-file-small-size));
    font-weight: var(--nn-file-task-progress-current-weight);
    white-space: nowrap;
}

/* Task progress followed by the date: trailing dot separator. The dot is a flex item inside
   the task element - the same mechanism as the parent folder's leading dot - so both dots get
   identical box geometry and flex centering. Placing it inside the date's inline text instead
   would tie it to baseline math and misalign it against the flex-centered folder dot. */
.nn-file-task-progress[data-dot-separator='true']::after {
    content: '•';
    flex-shrink: 0;
    font-size: 0.65em;
    color: var(--nn-theme-file-date-color);
}

/* Parent folder after date or task progress (same line): match legacy spacing when dot separator is disabled. */
.nn-file-second-line > .nn-file-date + .nn-parent-folder[data-dot-separator='false'],
.nn-file-second-line > .nn-file-task-progress + .nn-parent-folder[data-dot-separator='false'] {
    margin-inline-start: 8px;
}

/* Parent folder after date or task progress (same line): dot separator */
.nn-file-second-line > .nn-file-date + .nn-parent-folder[data-dot-separator='true']::before,
.nn-file-second-line > .nn-file-task-progress + .nn-parent-folder[data-dot-separator='true']::before {
    content: '•';
    flex-shrink: 0;
    margin-inline-end: 4px;
    font-size: 0.65em;
}

.nn-file-second-line .nn-parent-folder {
    flex: 0 1 auto;
}

/* File preview text - secondary line showing file content */
.nn-file-preview {
    font-size: var(--nn-file-small-size-mobile, 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;
    max-height: calc(var(--nn-file-multiline-text-line-height) * var(--preview-rows, 1));
}

/* Pinned task progress and preview share one secondary row. */
.nn-file-second-line--pinned {
    overflow: hidden;
}

.nn-file-second-line--pinned .nn-file-preview {
    display: block;
    flex: 1 1 auto;
    min-width: 0;
    white-space: nowrap;
}

/* Parent folder indicator shown under file names */
.nn-parent-folder {
    font-size: var(--nn-file-small-size-mobile, 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;
    overflow: hidden;
    line-height: var(--nn-file-single-text-line-height); /* Use second line height for consistent spacing */
    flex: 1;
    min-width: 0;
}

.nn-parent-folder-content {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    flex: 0 1 auto;
    max-width: 100%;
    min-width: 0;
}

.nn-parent-folder-content[data-has-background='true'] {
    box-sizing: border-box;
    height: var(--nn-file-single-text-line-height);
    line-height: calc(var(--nn-file-single-text-line-height) - 2px);
    border-radius: 4px;
    padding: 1px 4px;
}

.nn-parent-folder-content[data-reveal='true'] {
    cursor: pointer;
    user-select: none;
}

.nn-parent-folder-content[data-reveal='true']:hover .nn-parent-folder-label,
.nn-parent-folder-content[data-reveal='true']:focus-visible .nn-parent-folder-label {
    text-decoration: underline;
}

.nn-parent-folder-content[data-reveal='true']:focus-visible {
    outline: 1px solid var(--interactive-accent);
    outline-offset: 2px;
}

/* Folder indicator text */
.nn-parent-folder span {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Folder icon styling */
.nn-parent-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;
}

.nn-parent-folder-label {
    font-weight: var(--nn-theme-file-parent-font-weight);
}

.nn-parent-folder-label.nn-parent-folder-label--colored {
    font-weight: var(--nn-theme-navitem-custom-color-name-font-weight);
}
/* Source: src/styles/sections/list-tags.css */

/* ========================================================================
   Tag & Property Value Display Styles
   ======================================================================== */

/* Tag container */
.nn-file-tags,
.nn-file-property-row {
    display: flex;
    flex-wrap: nowrap;
    gap: var(--nn-file-tag-row-gap);
    margin-top: var(--nn-file-tag-row-gap);
    overflow-x: auto;
    overflow-y: hidden;
    height: var(--nn-file-tag-row-height);
    position: relative;
    scrollbar-width: none;
    -ms-overflow-style: none;
}

.nn-file-tags::-webkit-scrollbar,
.nn-file-property-row::-webkit-scrollbar {
    display: none;
}

/* Individual tag pill */
.nn-file-tag {
    --nn-file-pill-border-color-resolved: var(--nn-theme-file-tag-border-color);
    display: inline-flex;
    align-items: center;
    box-sizing: border-box;
    height: var(--nn-file-tag-row-height);
    line-height: 1;
    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));
    border-style: solid;
    border-width: var(--nn-theme-file-pill-border-width);
    border-color: var(--nn-file-pill-border-color-resolved);
    font-size: 12px;
    font-weight: var(--nn-theme-file-tag-font-weight);
    white-space: nowrap;
    flex-shrink: 0;
}

.nn-file-pill-inline-icon {
    width: 12px;
    height: 12px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin-right: 4px;
    color: currentColor;
    flex-shrink: 0;
}

.nn-file-pill-inline-icon svg {
    width: 12px;
    height: 12px;
}

.nn-file-tag[data-has-color='true'],
.nn-file-tag[data-has-background='true'] {
    --nn-file-pill-border-color-resolved: color-mix(in srgb, currentColor 30%, transparent);
}

.nn-file-property {
    --nn-file-pill-border-color-resolved: var(--nn-theme-file-property-border-color);
    background-color: var(--nn-theme-file-property-bg);
    color: var(--nn-theme-file-property-color);
    border-radius: min(10px, var(--nn-theme-file-property-border-radius));
}

.nn-file-tag[data-has-background='true'] {
    background-color: var(--nn-theme-nav-bg);
    background-image: linear-gradient(var(--nn-file-tag-custom-bg, transparent), var(--nn-file-tag-custom-bg, transparent));
}

.nn-file-tag[data-has-color='true'] {
    font-weight: var(--nn-theme-navitem-custom-color-name-font-weight);
}

.nn-file-tag[data-has-color='true']:not([data-has-background='true']) {
    background-color: var(--nn-theme-list-bg);
    background-image: linear-gradient(color-mix(in srgb, currentColor 10%, transparent), color-mix(in srgb, currentColor 10%, transparent));
}

.nn-file-tag[data-has-background='true']:not([data-has-color='true']) {
    color: var(--nn-theme-file-tag-custom-color-text-color);
}

/* Tag pill hover effect - darken/lighten all tags on hover */
.nn-file-tag.nn-clickable-tag:hover {
    filter: brightness(0.9);
}

/* Clickable tag styling */
.nn-file-tag.nn-clickable-tag {
    cursor: pointer;
}

/* Underline property pills that render clickable link values */
.nn-file-tag.nn-file-property.nn-file-property-link {
    text-decoration: underline;
    text-underline-offset: 2px;
}

/* Dark mode tag hover - lighten instead of darken */
.theme-dark .nn-file-tag.nn-clickable-tag:hover {
    filter: brightness(1.05);
}

/* Selected file tag styles - only for tags without custom colors */
.nn-file.nn-selected .nn-file-tag:not(.nn-file-property):not([data-has-color='true']):not([data-has-background='true']) {
    --nn-file-pill-border-color-resolved: var(--nn-theme-file-selected-tag-border-color);
    background-color: var(--nn-selected-file-tag-bg);
    color: var(--nn-selected-file-tag-color);
}

.nn-file.nn-selected .nn-file-tag.nn-file-property:not([data-has-color='true']):not([data-has-background='true']) {
    --nn-file-pill-border-color-resolved: var(--nn-theme-file-selected-property-border-color);
    background-color: var(--nn-selected-file-property-bg);
    color: var(--nn-selected-file-property-color);
}

/* Selected file text colors */
.nn-file.nn-selected .nn-file-name {
    color: var(--nn-selected-file-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-selected-file-preview-color);
}

.nn-file.nn-selected .nn-file-date {
    color: var(--nn-selected-file-date-color);
}

/* Selected rows: customized task colors persist (like custom tag colors); only the
   uncustomized default falls back to the selected date color. */
.nn-file.nn-selected .nn-file-task-progress {
    --nn-file-task-progress-current-color: var(--nn-theme-file-task-color, var(--nn-selected-file-date-color));
}

/* The trailing dot separator stays neutral like the date, not the task color. */
.nn-file.nn-selected .nn-file-task-progress[data-dot-separator='true']::after {
    color: var(--nn-selected-file-date-color);
}

.nn-file.nn-selected .nn-file-task-progress--complete {
    --nn-file-task-progress-current-color: var(
        --nn-theme-file-task-complete-color,
        var(--nn-theme-file-task-color, var(--nn-selected-file-date-color))
    );
}

.nn-file.nn-selected .nn-file-name-suffix {
    color: var(--nn-selected-file-word-count-color);
}

.nn-file.nn-selected .nn-parent-folder {
    color: var(--nn-selected-file-parent-color);
}
/* Source: src/styles/sections/list-compact-mode.css */

/* ========================================================================
   Compact Mode Styles
   ======================================================================== */

/* Compact file item - more compact list appearance */
.nn-file.nn-compact {
    --nn-file-item-border-radius: min(14px, var(--nn-theme-navitem-border-radius));
}

.nn-file.nn-compact .nn-file-content {
    padding: var(--nn-file-padding-vertical-compact) var(--nn-file-item-padding-horizontal); /* Reduced vertical padding */
}

/* Mobile compact file items use larger touch targets. */
.notebook-navigator-mobile .nn-file.nn-compact .nn-file-content {
    padding: var(--nn-file-padding-vertical-compact-mobile) var(--nn-file-item-padding-horizontal);
}

/* Compact file name - no bold, smaller font like folder items */
.nn-file.nn-compact .nn-file-name {
    font-size: var(--nn-compact-font-size, var(--nn-file-small-size-mobile, var(--nn-file-small-size)));
    font-weight: var(--nn-theme-file-compact-name-font-weight);
    margin-bottom: 0;
    line-height: var(--nn-file-title-line-height);
}

/* Mobile compact mode file names use the mobile compact font variable. */
.notebook-navigator-mobile .nn-file.nn-compact .nn-file-name {
    font-size: var(--nn-compact-font-size-mobile, var(--nn-compact-font-size, 15px));
}

/* Apply standard font weight to colored file names in compact mode */
.nn-file.nn-compact .nn-file-name[data-has-color='true'] {
    font-weight: var(--nn-theme-file-name-font-weight);
}

.nn-compact-file-header {
    display: flex;
    align-items: center;
    gap: 8px;
}

.nn-compact-file-header .nn-file-name {
    flex: 1;
    min-width: 0;
}

.nn-compact-extension-badge {
    margin-left: auto;
    display: flex;
}

/* Selected compact file - maintain selection styles */
.nn-file.nn-compact.nn-selected .nn-file-name {
    color: var(--nn-selected-file-name-color);
}

/* Preserve custom color for colored file names even when selected in compact mode */
.nn-file.nn-compact.nn-selected .nn-file-name[data-has-color='true'] {
    color: var(--nn-file-name-custom-color);
}
/* Source: src/styles/sections/list-file-thumbnails.css */

/* ========================================================================
   File Thumbnail Styles
   ======================================================================== */

/* File thumbnail container - right-aligned thumbnail slot */
.nn-file-thumbnail {
    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 */
    align-self: center;
}

.nn-file-thumbnail--square {
    width: var(--nn-file-thumbnail-min-size);
    height: var(--nn-file-thumbnail-min-size);
}

.nn-file-thumbnail--natural {
    width: auto;
    height: var(--nn-file-thumbnail-min-size);
    aspect-ratio: var(--nn-file-thumbnail-aspect-ratio, 1);
}

.nn-file-thumbnail--hidden {
    display: none;
}

/* Dynamic sizing based on calculated item height */
.nn-virtual-file-item .nn-file-thumbnail {
    /* Size based on the same padded content box as the text stack. */
    --image-size: clamp(
        var(--nn-file-thumbnail-min-size),
        calc(var(--item-height) - var(--nn-file-padding-total-mobile, var(--nn-file-padding-total))),
        var(--nn-file-thumbnail-max-size)
    );
}

.nn-virtual-file-item .nn-file-thumbnail--square {
    width: var(--image-size);
    height: var(--image-size);
}

.nn-virtual-file-item .nn-file-thumbnail--extension-badge {
    width: var(--nn-file-thumbnail-min-size);
    height: var(--nn-file-thumbnail-min-size);
}

.nn-virtual-file-item .nn-file-thumbnail--natural {
    height: var(--image-size);
    max-height: var(--image-size);
}

/* Thumbnail image element - covers container with proper aspect ratio */
.nn-file-thumbnail-img {
    width: 100%;
    height: 100%;
}

/* Inset highlight overlay - masked by the thumbnail image so it only covers opaque pixels */
.nn-file-thumbnail--inset-highlight::before {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: inherit;
    box-shadow:
        inset 0 0 0 1px rgba(255, 255, 255, 0.14),
        inset 0 1px 0 rgba(255, 255, 255, 0.24),
        inset 0 -1px 0 rgba(255, 255, 255, 0.05);
    pointer-events: none;
    z-index: 1;
    mask-image: var(--nn-file-thumbnail-mask-image, none);
    mask-repeat: no-repeat;
}

/* Mask geometry mirrors the img object-fit and object-position per variant */
.nn-file-thumbnail--square.nn-file-thumbnail--inset-highlight::before {
    mask-size: cover;
    mask-position: center top;
}

.nn-file-thumbnail--natural.nn-file-thumbnail--inset-highlight::before {
    mask-size: contain;
    mask-position: center;
}

.nn-file-thumbnail--square .nn-file-thumbnail-img {
    object-fit: cover;
    object-position: center top;
}

.nn-file-thumbnail--natural .nn-file-thumbnail-img {
    object-fit: contain;
    object-position: center;
}

/* Selected file image - slightly transparent when selected */
.nn-file.nn-selected .nn-file-thumbnail {
    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(--nn-theme-foreground-muted);
    text-transform: uppercase;
    letter-spacing: 0.1px;
}

.nn-file-extension-icon {
    width: min(24px, 42%);
    height: min(24px, 42%);
    color: var(--nn-theme-foreground-muted);
}
/* Source: src/styles/sections/list-group-headers.css */

/* ========================================================================
   List Group Headers
   ======================================================================== */

/* List group headers for grouped files */
.nn-list-group-header {
    height: var(--nn-list-group-header-height-mobile, var(--nn-list-group-header-height));
    box-sizing: border-box;
    padding: 0 var(--nn-file-item-padding-horizontal);
    font-size: var(--nn-file-small-size-mobile, 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;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    display: flex;
    align-items: center;
    gap: 6px;
}

/* The whole header row toggles collapse, not just the chevron button */
.nn-list-group-header--collapsible {
    cursor: pointer;
}

.nn-list-group-header-spacer {
    height: var(--item-height);
}

.nn-list-sticky-header {
    position: sticky;
    top: 0;
    /* Keep the sticky copy out of layout so it overlays the virtualized list rows. */
    height: 0;
    flex: 0 0 0;
    overflow: visible;
    z-index: 200;
    pointer-events: none;
}

.nn-list-pane-scroller .nn-virtual-list-group-header:not(.nn-hide-list-group-header-separator)::after {
    content: '';
    position: absolute;
    bottom: 0;
    inset-inline-start: var(--nn-file-item-padding-horizontal);
    inset-inline-end: var(--nn-file-item-padding-horizontal);
    height: var(--nn-separator-height);
    background-color: var(--nn-theme-list-separator-color);
    z-index: 100;
    pointer-events: none;
}

.nn-list-pane-scroller .nn-virtual-list-group-header.nn-hide-separator-selection::after {
    display: none;
}

.nn-list-sticky-header .nn-list-group-header {
    position: relative;
    overflow: visible;
    background-color: var(--nn-theme-list-bg);
    pointer-events: auto;
}

.nn-list-sticky-header .nn-list-group-header::before {
    content: '';
    position: absolute;
    top: -1px;
    bottom: 0;
    inset-inline-start: calc(-1 * var(--nn-scroller-padding));
    inset-inline-end: calc(-1 * var(--nn-scroller-padding));
    background-color: var(--nn-theme-list-bg);
    z-index: -1;
}

.nn-list-sticky-header .nn-manual-sort-group-header-shell {
    overflow: visible;
    background-color: var(--nn-theme-list-bg);
    pointer-events: auto;
}

.nn-list-sticky-header .nn-manual-sort-group-header-shell::before {
    content: '';
    position: absolute;
    top: -1px;
    bottom: 0;
    inset-inline-start: calc(-1 * var(--nn-scroller-padding));
    inset-inline-end: calc(-1 * var(--nn-scroller-padding));
    background-color: var(--nn-theme-list-bg);
    z-index: -1;
}

.nn-list-sticky-header .nn-manual-sort-group-header-shell .nn-list-group-header {
    background-color: transparent;
}

.nn-list-sticky-header .nn-manual-sort-group-header-shell .nn-list-group-header::before {
    content: none;
}

.nn-list-group-header-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: var(--nn-list-group-header-icon-size, var(--nn-file-icon-size-mobile, var(--nn-file-icon-size)));
    height: var(--nn-list-group-header-icon-size, var(--nn-file-icon-size-mobile, var(--nn-file-icon-size)));
    color: var(--nn-theme-list-group-header-color);
    flex: 0 0 auto;
}

.nn-list-group-header-icon svg {
    width: 100%;
    height: 100%;
}

.nn-list-group-header--manual-sort {
    --nn-manual-sort-group-header-accent: var(--interactive-accent);
}

.nn-manual-sort-group-header-shell {
    --nn-manual-sort-group-header-accent: var(--interactive-accent);
    height: var(--nn-list-group-goal-header-height-mobile, var(--nn-list-group-goal-header-height));
    position: relative;
    overflow: hidden;
    background-color: var(--nn-theme-list-bg);
}

.nn-manual-sort-group-header-content {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    align-items: center;
    gap: 5px;
}

.nn-manual-sort-group-header-content--accent-all {
    color: var(--nn-manual-sort-group-header-accent);
}

.nn-manual-sort-group-header-custom-icon {
    flex: 0 0 auto;
    width: var(--nn-list-group-header-icon-size, var(--nn-file-icon-size-mobile, var(--nn-file-icon-size)));
    height: var(--nn-list-group-header-icon-size, var(--nn-file-icon-size-mobile, var(--nn-file-icon-size)));
    color: currentColor;
}

.nn-manual-sort-group-header-content--accent-icon .nn-manual-sort-group-header-custom-icon {
    color: var(--nn-manual-sort-group-header-accent);
}

.nn-manual-sort-group-header-custom-icon svg {
    width: 100%;
    height: 100%;
}

.nn-manual-sort-group-header-title {
    flex: 0 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
}

.nn-manual-sort-group-header-count {
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    font-weight: 400;
    color: var(--nn-theme-foreground-muted);
}

.nn-manual-sort-group-header-content--accent-all .nn-manual-sort-group-header-count {
    color: inherit;
}

.nn-manual-sort-group-header-percent {
    flex: 0 0 auto;
    margin-inline-start: auto;
    font-weight: 600;
    color: var(--nn-manual-sort-group-header-accent);
}

.nn-manual-sort-group-header-progress {
    position: relative;
    width: 100%;
    height: 3px;
    overflow: hidden;
    border-radius: 999px;
}

.nn-manual-sort-group-header-progress::before {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background-color: var(--nn-manual-sort-group-header-accent);
    opacity: 0.1;
}

.nn-manual-sort-group-header-progress-fill {
    position: relative;
    width: var(--nn-manual-sort-group-header-progress);
    height: 100%;
    border-radius: inherit;
    background-color: var(--nn-manual-sort-group-header-accent);
}

.nn-manual-sort-group-header-progress-row {
    box-sizing: border-box;
    position: absolute;
    z-index: 1;
    inset-inline-start: 0;
    inset-inline-end: 0;
    bottom: var(--nn-list-group-progress-gap-after);
    height: 3px;
    display: flex;
    align-items: center;
    padding: 0 var(--nn-file-item-padding-horizontal);
    pointer-events: none;
}

.nn-list-group-header-text {
    flex: 0 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
}

.nn-list-group-header-text--custom-color {
    font-weight: var(--nn-theme-navitem-custom-color-name-font-weight);
}

.nn-list-group-header-item-count {
    flex: 0 0 auto;
    font-weight: 400;
    color: var(--nn-theme-foreground-muted);
}

.nn-list-group-header-path {
    display: inline-flex;
    align-items: center;
}

.nn-list-group-header-folder-segment {
    flex: 0 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
}

.nn-list-group-header-folder-segment:not(:last-child) {
    flex-shrink: 0;
}

.nn-list-group-header-folder-segment:last-child {
    flex: 1 1 auto;
}

.nn-list-group-header-path-separator {
    flex: 0 0 auto;
    padding-inline: 4px;
}

button.nn-list-group-header-collapse-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    width: var(--nn-list-group-header-height-mobile, var(--nn-list-group-header-height));
    height: var(--nn-list-group-header-height-mobile, var(--nn-list-group-header-height));
    margin-inline-start: auto;
    margin-inline-end: -6px;
    padding: 0;
    border: 0;
    border-radius: 4px;
    color: var(--nn-theme-list-group-header-color);
    background: transparent;
    box-shadow: none;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
}

button.nn-list-group-header-collapse-button:focus-visible {
    color: var(--text-normal);
    background-color: var(--background-modifier-hover);
}

button.nn-list-group-header-collapse-button .nn-list-group-header-icon {
    width: var(--nn-list-group-header-icon-size, var(--nn-file-icon-size-mobile, var(--nn-file-icon-size)));
    height: var(--nn-list-group-header-icon-size, var(--nn-file-icon-size-mobile, var(--nn-file-icon-size)));
}

.nn-list-group-header-text--folder-note {
    text-decoration: var(--nn-theme-navitem-folder-note-name-decoration);
}

.nn-list-group-header-text--folder-note:hover {
    cursor: pointer;
    text-decoration: var(--nn-theme-navitem-folder-note-name-hover-decoration);
}

.nn-pinned-section-header {
    align-items: center;
    user-select: none;
}

/* 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-navigation-pane-vertical {
    width: 100%;
    min-height: var(--nn-navigation-pane-min-height);
    flex: 0 1 auto;
}

.nn-skeleton-list-pane-vertical {
    min-height: var(--nn-list-pane-min-height);
}

.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 */
.nn-split-container.nn-orientation-horizontal:not(.nn-single-pane) .nn-skeleton-nav-header {
    border-right: 1px solid var(--nn-theme-divider-border-color);
}

.nn-split-container.nn-orientation-vertical:not(.nn-single-pane) .nn-skeleton-nav-header {
    border-right: none;
    border-bottom: 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 */
.nn-split-container.nn-orientation-horizontal:not(.nn-single-pane) .nn-skeleton-navigation-pane .nn-skeleton-content {
    border-right: 1px solid var(--nn-theme-divider-border-color);
}

.nn-split-container.nn-orientation-vertical:not(.nn-single-pane) .nn-skeleton-navigation-pane .nn-skeleton-content {
    border-right: none;
    border-bottom: 1px solid var(--nn-theme-divider-border-color);
}
/* Source: src/styles/sections/inline-rename.css */

/* ========================================================================
   Inline Rename Styles
   ======================================================================== */

.nn-inline-rename-input {
    flex: 1 1 auto;
    min-width: 0;
    width: 100%;
    box-sizing: border-box;
    padding: 0 6px;
    border: 1px solid var(--interactive-accent);
    border-radius: 4px;
    background-color: var(--background-primary);
    color: var(--text-normal);
    font: inherit;
    line-height: normal;
}

.nn-inline-rename-input:focus {
    outline: 2px solid var(--interactive-accent);
    outline-offset: -2px;
}

.nn-inline-rename-input:disabled {
    opacity: 0.75;
}

.nn-navitem-inline-rename {
    height: calc(var(--nn-setting-nav-item-height) - 8px);
    font-size: var(--nn-setting-nav-font-size);
    font-weight: var(--nn-theme-navitem-name-font-weight);
}

.notebook-navigator-mobile .nn-navitem-inline-rename {
    height: calc(var(--nn-setting-nav-item-height-mobile) - 10px);
}

.nn-file-name--inline-renaming {
    display: flex;
    align-items: center;
    gap: 0;
    max-height: none;
    overflow: visible;
    white-space: nowrap;
    word-break: normal;
}

.nn-file-name--inline-renaming .nn-file-ext-suffix {
    flex-shrink: 0;
}

.nn-file-inline-rename {
    height: var(--nn-file-title-line-height);
    font-size: var(--nn-file-name-size-mobile, var(--nn-file-name-size));
    font-weight: var(--nn-theme-file-name-font-weight);
}
/* Source: src/styles/sections/ui-empty-state.css */

/* ========================================================================
   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(--nn-theme-foreground-muted);
    font-size: 14px;
}

/* Empty state message text */
.nn-empty-message {
    text-align: center;
}
/* Source: src/styles/sections/state-selection.css */

/* ========================================================================
   Selection States
   ======================================================================== */

/* Selected file background pseudo-element - better control over styling */
.nn-file.nn-selected .nn-file-content::before {
    content: '';
    position: absolute;
    top: 0px;
    inset-inline-start: 0;
    inset-inline-end: 0;
    bottom: 0;
    /* Pre-composited solid color prevents hairlines by blending alpha with pane background */
    background-color: var(--nn-selected-file-bg-color);
    border-top-left-radius: var(--nn-file-top-left-radius, var(--nn-file-item-border-radius));
    border-top-right-radius: var(--nn-file-top-right-radius, var(--nn-file-item-border-radius));
    border-bottom-left-radius: var(--nn-file-bottom-left-radius, var(--nn-file-item-border-radius));
    border-bottom-right-radius: var(--nn-file-bottom-right-radius, var(--nn-file-item-border-radius));
    box-shadow: inset 0 0 0 var(--nn-theme-file-border-width) var(--nn-selected-file-border-color);
    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;
}

.nn-navitem.nn-selected > .nn-navitem-content:not(.nn-navitem-content--search-include):not(.nn-navitem-content--search-exclude) {
    background: transparent;
}

/* Selection overlay lives above the custom background while mirroring trimmed corners */
.nn-navitem.nn-selected::after {
    content: '';
    position: absolute;
    top: 0px;
    inset-inline-start: 0;
    inset-inline-end: 0;
    bottom: var(--nn-navitem-background-bottom-overdraw);
    /* Pre-composited solid color prevents hairlines by blending alpha with pane background */
    background-color: var(--nn-selected-navitem-bg-color);
    border-top-left-radius: var(--nn-navitem-top-left-radius, min(14px, var(--nn-theme-navitem-border-radius)));
    border-top-right-radius: var(--nn-navitem-top-right-radius, min(14px, var(--nn-theme-navitem-border-radius)));
    border-bottom-left-radius: var(--nn-navitem-bottom-left-radius, min(14px, var(--nn-theme-navitem-border-radius)));
    border-bottom-right-radius: var(--nn-navitem-bottom-right-radius, min(14px, var(--nn-theme-navitem-border-radius)));
    box-shadow: inset 0 0 0 var(--nn-theme-navitem-border-width) var(--nn-selected-navitem-border-color);
    z-index: 1;
    pointer-events: none;
}

.nn-navitem.nn-selected > .nn-navitem-content {
    position: relative;
    z-index: 2;
}

/* 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 */
}
/* Source: src/styles/sections/state-focus.css */

/* ========================================================================
   Focus States
   ======================================================================== */

/* Navigation selection adornments follow the container focus state */
.nn-navitem.nn-selected .nn-navitem-chevron {
    color: var(--nn-selected-navitem-chevron-color);
}

.nn-navitem.nn-selected .nn-navitem-icon {
    color: var(--nn-selected-navitem-icon-color);
}

.nn-navitem.nn-selected .nn-navitem-name {
    color: var(--nn-selected-navitem-name-color);
}

.nn-navitem.nn-selected[data-nav-item-type='note'] .nn-navitem-name {
    color: var(--nn-selected-file-name-color);
}

.nn-navitem.nn-selected .nn-navitem-count {
    color: var(--nn-selected-navitem-count-color);
    background-color: var(--nn-selected-navitem-count-bg);
    box-shadow: inset 0 0 0 var(--nn-theme-navitem-count-border-width) var(--nn-selected-navitem-count-border-color);
}
/* Source: src/styles/sections/state-hover.css */

/* ========================================================================
   Hover States
   ======================================================================== */

/* File rows intentionally keep their existing styling on hover. */
/* Source: src/styles/sections/state-drag-and-drop.css */

/* ========================================================================
   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 - uses pre-composited solid color */
[data-drop-zone='tag'].nn-drag-over {
    background-color: var(--nn-computed-tag-positive-bg, var(--nn-theme-tag-positive-bg));
    border-radius: min(14px, var(--nn-theme-navitem-border-radius));
}

[data-drop-zone='tag-root'].nn-drag-over {
    background-color: var(--nn-computed-tag-positive-bg, var(--nn-theme-tag-positive-bg));
    border-radius: min(14px, var(--nn-theme-navitem-border-radius));
}

/* Different style for untagged drop zone - uses pre-composited solid color */
[data-drop-zone='tag'][data-tag='__untagged__'].nn-drag-over {
    background-color: var(--nn-computed-tag-negative-bg, var(--nn-theme-tag-negative-bg));
    border-radius: min(14px, var(--nn-theme-navitem-border-radius));
}

/* Disable drag and drop feedback on mobile */
.notebook-navigator-mobile [draggable='true'] {
    cursor: default;
}

.notebook-navigator-mobile .nn-navitem.nn-drag-over,
.notebook-navigator-mobile [data-drop-zone].nn-drag-over {
    background-color: transparent;
}

.notebook-navigator-mobile .nn-list-pane-scroller.nn-drag-over {
    outline: none;
}

/* Offscreen element used as the browser-native drag image */
.nn-drag-native-preview {
    position: fixed;
    left: -1000px;
    top: -1000px;
    display: inline-flex;
    padding: 10px 0 0 12px;
    pointer-events: none;
    z-index: 999999;
    opacity: 0.9;
}

/* Badge shown in the native drag image for multiple files */
.nn-drag-preview-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 in the native drag image for single items */
.nn-drag-preview-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-preview-icon {
    background-color: var(--background-modifier-border-hover);
}

/* Style the Lucide icon inside the drag preview */
.nn-drag-preview-icon svg {
    width: 16px;
    height: 16px;
    color: #ffffff;
    stroke: #ffffff;
    stroke-width: 2.5;
    fill: none;
}

/* Header actions layout variations 
   Different layouts are needed for mobile vs desktop views:
   - space-between: Mobile file pane (back button + folder name + actions)
*/
.nn-header-actions--space-between {
    width: 100%;
    justify-content: space-between;
}
/* Source: src/styles/sections/state-context-menu.css */

/* ========================================================================
   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;
    /* Use pre-composited solid color for consistent border appearance */
    border: 2px solid var(--nn-computed-navitem-selected-bg, 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 */
    /* Use pre-composited solid color for consistent border appearance */
    border: 2px solid var(--nn-computed-navitem-selected-bg, var(--nn-theme-navitem-selected-bg));
    border-radius: min(16px, var(--nn-theme-file-border-radius));
    pointer-events: none;
    z-index: 10;
}

.nn-file.nn-compact.nn-context-menu-active:not(.nn-selected) .nn-file-content::after {
    border-radius: min(14px, var(--nn-theme-navitem-border-radius));
}

/* Appearance menu entries holding a per-selection custom value are marked in bold */
.nn-menu-title-custom {
    font-weight: 600;
}
/* Source: src/styles/sections/state-hidden-items.css */

/* ========================================================================
   Hidden Items - Dimmed appearance for hidden folders and tags
   ======================================================================== */

/* Hidden items (folders and tags) - dimmed appearance */
.nn-navitem.nn-excluded {
    --nn-theme-navitem-chevron-color: var(--nn-theme-foreground);
    --nn-theme-navitem-icon-color: var(--nn-theme-foreground);
    --nn-theme-navitem-count-color: var(--nn-theme-foreground);
    --nn-theme-navitem-selected-chevron-color: var(--nn-theme-foreground);
    --nn-theme-navitem-selected-icon-color: var(--nn-theme-foreground);
    --nn-theme-navitem-selected-count-color: var(--nn-theme-foreground);
    --nn-theme-navitem-selected-inactive-chevron-color: var(--nn-theme-foreground);
    --nn-theme-navitem-selected-inactive-icon-color: var(--nn-theme-foreground);
    --nn-theme-navitem-selected-inactive-count-color: var(--nn-theme-foreground);
}

.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;
}

/* Hidden files surfaced via "show hidden" toggle */
.nn-file.nn-hidden-file {
    --nn-theme-file-name-color: var(--nn-theme-foreground);
    --nn-theme-file-preview-color: var(--nn-theme-foreground);
    --nn-theme-file-date-color: var(--nn-theme-foreground);
    --nn-theme-file-word-count-color: var(--nn-theme-foreground);
    --nn-theme-file-parent-color: var(--nn-theme-foreground);
    --nn-theme-file-tag-color: var(--nn-theme-foreground);
    --nn-theme-file-property-color: var(--nn-theme-foreground);
    --nn-theme-file-selected-name-color: var(--nn-theme-foreground);
    --nn-theme-file-selected-preview-color: var(--nn-theme-foreground);
    --nn-theme-file-selected-date-color: var(--nn-theme-foreground);
    --nn-theme-file-selected-word-count-color: var(--nn-theme-foreground);
    --nn-theme-file-selected-parent-color: var(--nn-theme-foreground);
    --nn-theme-file-selected-tag-color: var(--nn-theme-foreground);
    --nn-theme-file-selected-property-color: var(--nn-theme-foreground);
    --nn-theme-file-selected-inactive-name-color: var(--nn-theme-foreground);
    --nn-theme-file-selected-inactive-preview-color: var(--nn-theme-foreground);
    --nn-theme-file-selected-inactive-date-color: var(--nn-theme-foreground);
    --nn-theme-file-selected-inactive-word-count-color: var(--nn-theme-foreground);
    --nn-theme-file-selected-inactive-parent-color: var(--nn-theme-foreground);
    --nn-theme-file-selected-inactive-tag-color: var(--nn-theme-foreground);
    --nn-theme-file-selected-inactive-property-color: var(--nn-theme-foreground);
    --nn-theme-navitem-icon-color: var(--nn-theme-foreground);
    --nn-theme-navitem-selected-icon-color: var(--nn-theme-foreground);
    --nn-theme-navitem-selected-inactive-icon-color: var(--nn-theme-foreground);
    opacity: 0.5;
}
/* Source: src/styles/sections/modal-base.css */

/* ========================================================================
   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(--nn-theme-foreground);
    font-size: 14px;
    margin: 16px 0;
}

/* Modal input focus state */
.nn-input:focus {
    outline: none;
    border-color: var(--interactive-accent);
}

.nn-input-description {
    color: var(--nn-theme-foreground-muted);
    font-size: var(--font-ui-small);
    margin-top: 12px;
}

.nn-merge-notes-summary {
    margin-bottom: 8px;
}

.nn-merge-notes-details {
    color: var(--nn-theme-foreground-muted);
    font-size: var(--font-ui-small);
    unicode-bidi: plaintext;
}

.nn-merge-notes-warning {
    color: var(--text-error);
    font-weight: 700;
    unicode-bidi: plaintext;
}

.nn-input-checkbox-row {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 12px;
    cursor: pointer;
    font-size: var(--font-ui-small);
}

.nn-input-checkbox-row input[type='checkbox'] {
    margin: 0;
}

/* Modal button container - right-aligned button group */
.nn-button-container {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    margin-top: 16px;
}

/* YouTube play overlay shared by modal thumbnail links */
.nn-youtube-play {
    position: absolute;
    top: var(--nn-youtube-play-y, 50%);
    left: var(--nn-youtube-play-x, 50%);
    width: 52px;
    height: 36px;
    transform: translate(-50%, -50%) scale(var(--nn-youtube-play-scale, 1));
    border-radius: 8px;
    background-color: #ff0000;
    opacity: 0.9;
    pointer-events: none;
}

.nn-youtube-play::before {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-40%, -50%);
    width: 0;
    height: 0;
    border-style: solid;
    border-width: 8px 0 8px 14px;
    border-color: transparent transparent transparent #ffffff;
}

.nn-folder-note-type-modal .modal-content {
    padding-top: 16px;
}

.nn-folder-note-type-modal .modal-title {
    width: 100%;
    text-align: center;
}

.nn-folder-note-type-info {
    margin-bottom: 4px;
    color: var(--nn-theme-foreground-muted);
    text-align: center;
}

.nn-folder-note-type-buttons {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-top: 12px;
}

.nn-folder-note-type-buttons button {
    width: 100%;
}

/* ========================================================================
   Search help modal
   ======================================================================== */

.modal.nn-search-help-modal {
    /* Desktop layout with bounded width while keeping viewport margins */
    width: min(600px, calc(100vw - 80px));
    max-width: min(600px, calc(100vw - 80px));
    /* Shorter desktop layout so the modal does not dominate vertical space */
    max-height: min(70vh, 640px);
}

.modal.nn-search-help-modal .modal-content {
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.modal.nn-search-help-modal .nn-search-help-scroll {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    padding-right: 8px;
}

.modal.nn-search-help-modal strong {
    font-size: inherit;
    font-weight: 600;
}

.is-mobile .modal.nn-search-help-modal {
    max-height: min(560px, calc(100vh - 24px));
    max-width: calc(100vw - 24px);
}

.is-mobile .modal.nn-search-help-modal .modal-content {
    padding-right: 12px;
}
/* Source: src/styles/sections/modal-select-vault-profile.css */

/* ========================================================================
   Select Vault Profile Modal
   ======================================================================== */

.modal.nn-select-profile-modal .modal-content {
    display: flex;
    flex-direction: column;
    gap: var(--size-2-3);
    padding: var(--size-4-4);
}

.nn-select-profile-list {
    display: flex;
    flex-direction: column;
    gap: var(--size-2-2);
    width: 100%;
}

.nn-select-profile-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    padding: var(--size-2-3) var(--size-4-2);
    border-radius: var(--radius-m);
    background-color: transparent;
    color: var(--nn-theme-foreground);
    cursor: pointer;
    transition: background-color 120ms ease;
}

.nn-select-profile-item:focus {
    outline: none;
}

.nn-select-profile-item:focus-visible {
    box-shadow: 0 0 0 2px var(--interactive-accent);
}

.nn-select-profile-item:hover {
    background-color: var(--background-modifier-hover);
}

.nn-select-profile-item.is-selected {
    background-color: var(--background-modifier-hover);
}

.nn-select-profile-item.is-current .nn-select-profile-item-name {
    color: var(--interactive-accent);
}

.nn-select-profile-item-name {
    font-size: var(--font-ui-medium);
}

.nn-select-profile-item-badge {
    font-size: var(--font-ui-small);
    color: var(--nn-theme-foreground-muted);
    font-weight: var(--font-semibold);
}

.nn-select-profile-empty {
    margin: 0;
    padding: var(--size-4-4) 0;
    color: var(--nn-theme-foreground-muted);
    font-size: var(--font-ui-small);
    text-align: center;
}
/* Source: src/styles/sections/modal-action-button.css */

/* ========================================================================
   Shared Modal Action Button
   ======================================================================== */

.nn-action-btn {
    width: 32px;
    height: 32px;
    padding: 0;
    background-color: transparent;
    color: var(--nn-theme-foreground-muted);
    border: 1px solid var(--background-modifier-border);
    border-radius: var(--radius-s);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    flex-shrink: 0;
}

.nn-action-btn:hover:not(:disabled):not(.mod-warning) {
    background: var(--background-modifier-hover);
    color: var(--nn-theme-foreground);
    border-color: var(--background-modifier-border-hover);
}

.nn-action-btn:disabled {
    color: var(--nn-theme-foreground);
    opacity: 0.4;
    cursor: not-allowed;
}

.nn-action-btn.mod-warning:disabled {
    color: var(--text-error);
}

.nn-action-btn.mod-warning {
    background: transparent;
    color: var(--text-error);
    border-color: var(--background-modifier-border);
}

.nn-action-btn.mod-warning:hover:not(:disabled) {
    background: var(--background-modifier-error);
    color: var(--text-error);
    border-color: var(--background-modifier-error-hover);
}

.nn-action-btn svg {
    width: 16px;
    height: 16px;
}
/* Source: src/styles/sections/modal-edit-vault-profiles.css */

/* ========================================================================
   Edit Vault Profiles Modal
   ======================================================================== */

.modal.nn-edit-profiles-modal .modal-content {
    display: flex;
    flex-direction: column;
    gap: var(--size-2-2);
    padding: var(--size-4-4);
}

.nn-edit-profiles-list {
    display: flex;
    flex-direction: column;
    gap: var(--size-1-5);
    width: 100%;
}

.nn-edit-profiles-row {
    display: flex;
    align-items: center;
    gap: var(--size-2-1);
}

.nn-edit-profiles-row .nn-input {
    flex: 1;
    min-width: 0;
}

.nn-edit-profiles-actions {
    display: flex;
    gap: var(--size-1-5);
    flex-shrink: 0;
}
/* Source: src/styles/sections/modal-file-icon-rule-editor.css */

/* ========================================================================
   File Icon Rule Editor Modal
   ======================================================================== */

.modal.nn-file-icon-rule-editor-modal {
    width: 420px;
    max-width: calc(100vw - 40px);
    max-height: 500px;
}

.modal.nn-file-icon-rule-editor-modal .modal-content {
    display: flex;
    flex-direction: column;
    gap: var(--size-2-2);
    padding: var(--size-4-4);
    overflow: hidden;
}

.nn-file-icon-rule-editor-scroll {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    padding-right: 4px;
    padding-bottom: var(--size-1-5);
}

.nn-file-icon-rule-editor-list {
    display: flex;
    flex-direction: column;
    gap: var(--size-1-5);
    width: 100%;
}

.nn-file-icon-rule-editor-footer {
    flex-shrink: 0;
    margin-top: 0;
    padding-top: var(--size-2-2);
    border-top: 1px solid var(--background-modifier-border);
}

.nn-file-icon-rule-row {
    display: flex;
    align-items: center;
    gap: var(--size-2-2);
}

.nn-file-icon-rule-key {
    flex: 1;
    min-width: 0;
}

.nn-file-icon-rule-row-invalid .nn-file-icon-rule-key {
    border-color: var(--background-modifier-error);
}
/* Source: src/styles/sections/modal-ux-icon-map.css */

/* ========================================================================
   UX Icon Map Modal
   ======================================================================== */

.modal.nn-ux-icon-map-modal {
    width: 520px;
    max-width: calc(100vw - 40px);
    max-height: 500px;
}

.is-mobile .modal.nn-ux-icon-map-modal {
    width: 560px;
    max-width: calc(100vw - 24px);
    max-height: min(560px, calc(100vh - 24px));
}

.modal.nn-ux-icon-map-modal .modal-content {
    display: flex;
    flex-direction: column;
    gap: var(--size-2-2);
    padding: var(--size-4-4);
    overflow: hidden;
}

.is-mobile .modal.nn-ux-icon-map-modal .modal-content {
    gap: var(--size-2-3);
    padding: var(--size-4-6);
}

.nn-ux-icon-map-scroll {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    padding-right: 4px;
    padding-bottom: var(--size-1-5);
}

.is-mobile .modal.nn-ux-icon-map-modal .nn-ux-icon-map-scroll {
    padding-bottom: var(--size-2-2);
}

.nn-ux-icon-map-list {
    display: flex;
    flex-direction: column;
    gap: var(--size-1-5);
    width: 100%;
}

.is-mobile .modal.nn-ux-icon-map-modal .nn-ux-icon-map-list {
    gap: var(--size-2-2);
}

.nn-ux-icon-map-footer {
    flex-shrink: 0;
    margin-top: 0;
    padding-top: var(--size-2-2);
    border-top: 1px solid var(--background-modifier-border);
}

.is-mobile .modal.nn-ux-icon-map-modal .nn-ux-icon-map-footer {
    padding-top: var(--size-2-3);
}

.nn-ux-icon-map-row {
    display: flex;
    align-items: center;
    gap: var(--size-2-2);
}

.is-mobile .modal.nn-ux-icon-map-modal .nn-ux-icon-map-row {
    gap: var(--size-2-3);
}

.nn-ux-icon-map-label {
    flex: 1;
    min-width: 0;
}

.is-mobile .modal.nn-ux-icon-map-modal .nn-ux-icon-map-label {
    font-size: 1.05em;
}

.is-mobile .modal.nn-ux-icon-map-modal .nn-action-btn {
    min-width: 36px;
    min-height: 36px;
}

.nn-ux-icon-map-group-heading {
    margin: 0;
    font-size: 0.95em;
    font-weight: 600;
    color: var(--nn-theme-foreground);
}

.is-mobile .modal.nn-ux-icon-map-modal .nn-ux-icon-map-group-heading {
    font-size: 1em;
}

.nn-ux-icon-map-group-heading--spaced {
    margin-top: var(--size-4-4);
}
/* Source: src/styles/sections/modal-welcome.css */

/* ========================================================================
   Welcome Modal
   ======================================================================== */

.modal.nn-welcome-modal {
    width: 620px;
    max-width: calc(100vw - 40px);
}

.modal.nn-welcome-modal .modal-content {
    padding: 16px;
}

.modal.nn-welcome-modal .modal-title {
    width: 100%;
    text-align: center;
}

.modal.nn-welcome-modal .modal-close-button {
    z-index: 10;
    pointer-events: auto;
}

.nn-welcome-body {
    display: flex;
    flex-direction: column;
    gap: 12px;
    align-items: stretch;
    text-align: left;
}

.nn-welcome-text {
    margin: 0;
    color: var(--nn-theme-foreground);
    line-height: 1.5;
    font-size: 14px;
}

.nn-welcome-thumbnail-link {
    display: block;
    width: 100%;
    max-width: 560px;
    align-self: center;
}

.nn-welcome-thumbnail-frame {
    position: relative;
    display: block;
    width: 100%;
    aspect-ratio: 16 / 9;
    background: var(--background-secondary);
    border-radius: var(--radius-m);
    border: 1px solid var(--background-modifier-border);
    overflow: hidden;
}

.nn-welcome-thumbnail {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.nn-welcome-youtube-play {
    --nn-youtube-play-x: 80%;
    --nn-youtube-play-y: 49%;
    --nn-youtube-play-scale: 1.8;
}

.nn-welcome-thumbnail-link:hover .nn-welcome-youtube-play {
    background-color: #cc0000;
}

.nn-welcome-buttons {
    display: flex;
    justify-content: center;
    gap: 8px;
    margin-top: 16px;
}

@media (max-width: 768px) {
    .modal.nn-welcome-modal {
        width: calc(100vw - 40px);
        max-width: calc(100vw - 40px);
        margin: 0 auto;
    }

    .modal.nn-welcome-modal .modal-content {
        padding: 12px;
    }

    .nn-welcome-text {
        font-size: 15px;
        line-height: 1.6;
    }
}
/* Source: src/styles/sections/modal-whats-new.css */

/* ========================================================================
   What's New Modal
   ======================================================================== */

/* What's new modal width */
.modal.nn-whats-new-modal {
    width: 600px;
    max-width: calc(100vw - 40px);
    overflow: hidden;
}

/* What's new content layout */
.modal.nn-whats-new-modal .modal-content {
    display: flex;
    flex-direction: column;
    min-height: 0;
    overflow: hidden;
    padding: 16px;
}

.modal.nn-whats-new-modal .modal-close-button {
    z-index: 10;
    pointer-events: auto;
}

/* What's new scrollable container */
.nn-whats-new-scroll {
    flex: 1 1 auto;
    min-height: 0;
    max-height: min(70vh, 520px);
    overflow-y: auto;
    margin-bottom: 0;
    padding-right: 8px;
    padding-bottom: 16px;
}

/* Version container */
.nn-whats-new-version {
    margin-bottom: 16px;
}

/* Version container - last child no margin */
.nn-whats-new-version:last-child {
    margin-bottom: 0;
}

/* Version header */
.nn-whats-new-version h3 {
    display: block;
    font-size: 14px;
    font-weight: 600;
    color: var(--nn-theme-foreground);
    background: var(--background-secondary);
    margin: 0 0 4px;
    padding: 6px 10px;
    border-radius: 6px;
}

/* 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(--nn-theme-foreground);
    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;
}

/* Release banner image */
.nn-whats-new-banner {
    position: relative;
    display: block;
    width: 100%;
    aspect-ratio: 16 / 9;
    overflow: hidden;
    border-radius: 8px;
    background: var(--background-secondary);
    border: 1px solid var(--background-modifier-border);
    margin-bottom: 12px;
    text-decoration: none;
}

.nn-whats-new-banner:focus-visible {
    outline: 2px solid var(--interactive-accent);
    outline-offset: 2px;
}

.nn-whats-new-banner-image {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* Release video */
.nn-whats-new-video-frame {
    position: relative;
    display: block;
    width: 100%;
    aspect-ratio: 16 / 9;
    overflow: hidden;
    border-radius: 8px;
    background: var(--background-secondary);
    border: 1px solid var(--background-modifier-border);
    margin-bottom: 12px;
}

.nn-whats-new-video {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    background: #000000;
}

.nn-whats-new-video-open {
    position: absolute;
    top: 8px;
    right: 8px;
    z-index: 2;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    color: var(--text-normal);
    background: var(--background-primary);
    border: 1px solid var(--background-modifier-border);
    border-radius: 6px;
    opacity: 0.9;
    text-decoration: none;
}

.nn-whats-new-video-open:hover {
    color: var(--text-normal);
    background: var(--background-secondary);
}

.nn-whats-new-video-open:focus-visible {
    outline: 2px solid var(--interactive-accent);
    outline-offset: 2px;
}

.nn-whats-new-video-open svg {
    width: 16px;
    height: 16px;
}

/* YouTube link preview */
.nn-whats-new-youtube-link {
    display: block;
    width: 100%;
    margin-bottom: 12px;
    text-decoration: none;
}

.nn-whats-new-youtube-link:focus-visible .nn-whats-new-youtube-thumbnail {
    outline: 2px solid var(--interactive-accent);
    outline-offset: 2px;
}

.nn-whats-new-youtube-thumbnail {
    position: relative;
    width: 100%;
    aspect-ratio: 16 / 9;
    overflow: hidden;
    border-radius: 8px;
    background: var(--background-secondary);
    border: 1px solid var(--background-modifier-border);
}

.nn-whats-new-youtube-image {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.nn-whats-new-youtube-placeholder {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--nn-theme-foreground-muted);
    font-size: 13px;
}

.nn-whats-new-youtube-link:hover .nn-youtube-play {
    background-color: #cc0000;
}

/* 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(--nn-theme-foreground);
    font-size: 14px;
    line-height: 1.5;
}

/* Highlight emphasis */
.nn-highlight {
    background-color: var(--text-highlight-bg);
    color: var(--nn-theme-foreground);
    padding: 0 2px;
    border-radius: 3px;
    font-weight: 600;
}

.nn-whats-new-info code,
.nn-whats-new-version li code {
    color: var(--code-normal);
    background-color: var(--code-background);
    padding: 0.1em 0.35em;
    border-radius: 4px;
    font-size: 0.9em;
}

/* Support container */
.nn-whats-new-support {
    margin-top: 0;
    padding-top: 0;
}

/* Support text */
.nn-whats-new-support-text {
    color: var(--nn-theme-foreground-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: min(60vh, 360px);
        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;
    }

    /* Version header size on mobile */
    .nn-whats-new-version h3 {
        font-size: 15px;
    }
}

/* Obsidian mobile app adjustments */
.is-mobile {
    /* 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;
    }
}
/* Source: src/styles/sections/modal-icon-picker.css */

/* ========================================================================
   Icon Picker Modal
   ======================================================================== */

/* Icon picker modal width - adjust for mobile */
.modal.nn-icon-picker-modal {
    width: 480px;
    max-width: calc(100vw - 40px);
    height: auto;
}

/* Icon picker content layout */
.modal.nn-icon-picker-modal .modal-content {
    padding: 0;
    height: 100%;
    min-height: 380px;
    display: flex;
    flex-direction: column;
    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: 240px;
    min-height: 240px;
    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: var(--font-ui-small);
    font-weight: 600;
    color: var(--nn-theme-foreground-muted);
    letter-spacing: 0.5px;
    margin-top: 12px;
    margin-bottom: 4px;
}

.nn-icon-section-header:first-child {
    margin-top: 0;
}

/* Icon grid layout - 5 columns */
.nn-icon-grid {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: 4px;
}

/* Individual icon item */
.nn-icon-item {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 8px;
    border-radius: var(--radius-s);
}

.nn-icon-recent-remove-button {
    position: absolute;
    top: 2px;
    right: 2px;
    z-index: 1;
    width: 16px;
    height: 16px;
    padding: 0;
    border-radius: 999px;
    border: 1px solid var(--background-modifier-border);
    background: var(--background-primary);
    color: var(--nn-theme-foreground-muted);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
}

@media (hover: hover) and (pointer: fine) {
    .nn-icon-recent-remove-button {
        opacity: 0;
        visibility: hidden;
        pointer-events: none;
        transition: opacity 120ms ease;
    }

    .nn-icon-item:hover .nn-icon-recent-remove-button,
    .nn-icon-item:focus-within .nn-icon-recent-remove-button {
        opacity: 1;
        visibility: visible;
        pointer-events: auto;
    }
}

.nn-icon-recent-remove-button:hover {
    color: var(--nn-theme-foreground);
    border-color: var(--interactive-accent);
}

.nn-icon-recent-remove-button:focus-visible {
    outline: 2px solid var(--interactive-accent);
    outline-offset: 1px;
}

.nn-icon-recent-remove-glyph {
    font-size: 11px;
    line-height: 1;
    transform: translateY(-1px);
    pointer-events: none;
}

/* 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(--nn-theme-foreground-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(--nn-theme-foreground-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(--nn-theme-foreground-muted);
    padding: 24px;
    font-size: 14px;
}
/* Source: src/styles/sections/modal-property-keys.css */

/* ========================================================================
   Property Keys Modal
   ======================================================================== */

.modal.nn-property-keys-modal {
    width: 560px;
    max-width: calc(100vw - 40px);
    height: min(580px, calc(100vh - 40px));
}

.is-mobile .modal.nn-property-keys-modal {
    max-width: calc(100vw - 24px);
    height: min(520px, calc(100vh - 24px));
}

.modal.nn-property-keys-modal .modal-content {
    display: flex;
    flex-direction: column;
    padding: var(--size-4-4);
    gap: var(--size-2-2);
    overflow: hidden;
}

.modal.nn-property-keys-modal .modal-title {
    width: 100%;
    text-align: center;
}

.nn-property-keys-description {
    text-align: center;
    color: var(--nn-theme-foreground-muted);
    font-size: var(--font-smallest);
    margin: var(--size-4-2) 0 0;
    line-height: 1.4;
}

.is-mobile .modal.nn-property-keys-modal .modal-content {
    gap: var(--size-2-3);
    padding: var(--size-4-6);
}

.modal.nn-property-keys-modal .nn-property-keys-search-container {
    position: relative;
}

.modal.nn-property-keys-modal input.nn-property-keys-search {
    margin: 0;
    height: 32px;
    padding: 4px 36px 4px 12px;
    border-radius: 999px;
    border: 1px solid var(--nn-theme-list-search-border-color);
}

.modal.nn-property-keys-modal input.nn-property-keys-search.is-active {
    background: var(--nn-theme-list-search-active-bg);
}

.modal.nn-property-keys-modal input.nn-property-keys-search:focus {
    border-color: var(--nn-theme-list-search-border-color);
    box-shadow: 0 0 0 2px var(--nn-theme-list-search-border-color);
}

.modal.nn-property-keys-modal .nn-property-keys-search-clear {
    position: absolute;
    top: 50%;
    right: 10px;
    transform: translateY(-50%);
    width: 16px;
    height: 16px;
    border: 0;
    background: transparent;
    box-shadow: none;
    padding: 0;
    color: var(--nn-theme-foreground-muted);
    display: none;
    align-items: center;
    justify-content: center;
    z-index: 1;
    cursor: pointer;
}

.modal.nn-property-keys-modal .nn-property-keys-search-clear.is-visible {
    display: inline-flex;
}

.modal.nn-property-keys-modal .nn-property-keys-search-clear:focus-visible {
    outline: 2px solid var(--interactive-accent);
    outline-offset: 2px;
}

.modal.nn-property-keys-modal .nn-property-keys-search-clear svg {
    width: 16px;
    height: 16px;
}

.modal.nn-property-keys-modal .nn-property-keys-search-clear:hover:not(:disabled) {
    color: var(--nn-theme-foreground);
}

.nn-property-keys-scroll {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    margin-top: var(--size-4-2);
    padding-right: 4px;
    padding-bottom: var(--size-1-5);
}

.is-mobile .modal.nn-property-keys-modal .nn-property-keys-scroll {
    padding-bottom: var(--size-2-2);
}

.nn-property-keys-list {
    display: flex;
    flex-direction: column;
    gap: var(--size-1-5);
    width: 100%;
}

.is-mobile .modal.nn-property-keys-modal .nn-property-keys-list {
    gap: var(--size-2-2);
}

.nn-property-keys-row {
    display: flex;
    align-items: center;
    gap: var(--size-2-2);
    padding-left: var(--size-2-2);
    padding-right: var(--size-2-2);
    border-radius: var(--radius-s);
    transition: background-color 120ms ease;
}

.is-mobile .modal.nn-property-keys-modal .nn-property-keys-row {
    gap: var(--size-2-3);
}

.modal.nn-property-keys-modal .nn-property-keys-list .nn-property-keys-row:hover {
    background: var(--nn-theme-foreground-faint);
}

.nn-property-keys-label {
    flex: 1;
    min-width: 0;
    color: var(--nn-theme-foreground-muted);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.nn-property-keys-row.is-enabled .nn-property-keys-label {
    color: var(--nn-theme-foreground);
}

.nn-property-keys-row.is-enabled {
    font-weight: var(--font-semibold);
}

.nn-property-keys-row.is-enabled .nn-property-keys-count {
    color: var(--nn-theme-foreground);
}

.nn-property-keys-header-row {
    margin-bottom: var(--size-1-2);
    background: var(--nn-theme-foreground-faint);
    border-radius: var(--radius-s);
}

.nn-property-keys-select-all-row {
    margin-top: var(--size-1-2);
    padding-top: var(--size-2-2);
    border-top: 1px solid var(--background-modifier-border);
}

.nn-property-keys-count {
    color: var(--nn-theme-foreground-muted);
}

.nn-property-keys-actions {
    display: flex;
    align-items: center;
    gap: var(--size-1-3);
}

.is-mobile .modal.nn-property-keys-modal .nn-property-keys-toggle {
    min-width: 36px;
    min-height: 36px;
}

.modal.nn-property-keys-modal .nn-property-keys-toggle {
    border: 0;
    background: transparent;
    box-shadow: none;
    color: var(--nn-theme-foreground-muted);
}

.modal.nn-property-keys-modal .nn-property-keys-toggle:focus-visible {
    outline: 1px solid var(--interactive-accent);
    outline-offset: 1px;
}

.modal.nn-property-keys-modal .nn-property-keys-toggle:hover:not(:disabled) {
    background: var(--background-modifier-hover);
}

.modal.nn-property-keys-modal .nn-property-keys-toggle.is-enabled {
    color: var(--nn-theme-foreground);
    background: transparent;
}

.nn-property-keys-header-icon {
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    pointer-events: none;
}

.nn-property-keys-header-icon svg {
    width: 16px;
    height: 16px;
}

.nn-property-keys-empty {
    padding: var(--size-2-3);
    text-align: center;
    color: var(--nn-theme-foreground-muted);
}

.nn-property-keys-footer {
    flex-shrink: 0;
    margin-top: var(--size-2-2);
    padding-top: var(--size-2-2);
    border-top: 1px solid var(--background-modifier-border);
}

.is-mobile .modal.nn-property-keys-modal .nn-property-keys-footer {
    padding-top: var(--size-2-3);
}
/* Source: src/styles/sections/modal-manual-sort-group-header.css */

/* ========================================================================
   Manual Sort Group Header Modal
   ======================================================================== */

.modal.nn-manual-sort-group-header-modal {
    width: min(360px, calc(100vw - 32px));
}

.modal.nn-manual-sort-group-header-modal .modal-content {
    display: flex;
    flex-direction: column;
    gap: 18px;
}

.nn-manual-sort-header-description {
    margin: 0;
}

.nn-manual-sort-header-section {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.nn-manual-sort-header-field {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.nn-manual-sort-header-field-label {
    color: var(--text-muted);
    font-size: var(--font-ui-smaller);
}

.nn-manual-sort-header-input {
    width: 100%;
}

.nn-manual-sort-header-appearance-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 12px;
}

.nn-manual-sort-header-action-row {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    min-width: 0;
}

.nn-manual-sort-header-style-button {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
}

.nn-manual-sort-header-style-preview {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    color: var(--text-muted);
}

.nn-manual-sort-header-style-preview svg {
    width: 16px;
    height: 16px;
}

.nn-manual-sort-header-style-preview.nn-color-swatch {
    width: 16px;
    height: 16px;
    border-radius: 50%;
    border: 1px solid var(--background-modifier-border);
    background-color: var(--nn-manual-sort-header-preview-color);
}

.nn-manual-sort-header-style-preview.is-empty.nn-color-swatch {
    background-color: transparent;
}

.nn-manual-sort-header-style-text {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.nn-manual-sort-header-toggle-setting {
    border: 0;
    padding: 0;
}
/* Source: src/styles/sections/modal-settings-transfer.css */

/* ========================================================================
   Settings transfer modal
   ======================================================================== */

.modal.nn-settings-transfer-modal {
    width: min(720px, calc(100vw - 80px));
    max-width: min(720px, calc(100vw - 80px));
}

.modal.nn-settings-transfer-modal .modal-content {
    display: flex;
    flex-direction: column;
}

.nn-settings-transfer-editor-setting {
    margin-bottom: 0;
}

.nn-settings-transfer-editor {
    min-height: 280px;
    margin-top: 8px;
    margin-bottom: 0;
    resize: vertical;
    font-family: var(--font-monospace);
    line-height: 1.5;
}

.is-mobile .modal.nn-settings-transfer-modal {
    max-width: calc(100vw - 24px);
}

.is-mobile .modal.nn-settings-transfer-modal .nn-settings-transfer-editor {
    min-height: 220px;
}
/* Source: src/styles/sections/layout-virtual-list.css */

/* ========================================================================
   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;
    height: var(--item-height);
    contain: layout style paint;
}
/* Source: src/styles/sections/settings-page.css */

/* ========================================================================
   Settings Page Styles
   ======================================================================== */

/* Settings layout root */
.nn-settings-tab-root {
    display: block;
    min-height: 0;
}

.nn-settings-tab-root .setting-group.nn-settings-lifecycle-group {
    display: none;
}

.nn-settings-tab-root .setting-group.nn-settings-lifecycle-group + .setting-group {
    margin-top: 0;
    padding-top: 0;
    border-top: none;
}

/* Settings section header spacing */
.nn-settings-tab-root .setting-item-heading {
    margin-top: 30px;
}

/* First settings header - no top margin */
.nn-settings-tab-root .setting-item-heading:first-child {
    margin-top: 0;
}

.nn-settings-legacy-titlebar {
    padding-inline: 0;
}

.nn-settings-legacy-titlebar .setting-item-name {
    display: flex;
    align-items: center;
    gap: var(--size-2-2);
}

.nn-settings-legacy-page-link:focus-visible {
    outline: 2px solid var(--background-modifier-border-focus);
    outline-offset: -2px;
}

/* Utility class for conditionally hidden settings */
.nn-setting-hidden {
    display: none;
}

.nn-setting-warning {
    color: var(--text-error);
    font-weight: 600;
}

.nn-setting-calendar-pattern-example-text {
    font-size: inherit;
    font-weight: var(--font-semibold);
}

.nn-setting-property-keys-count-line {
    margin-top: var(--size-2-1);
}

.nn-setting-property-keys-summary-text {
    font-size: inherit;
    font-weight: var(--font-semibold);
}

/* Sync mode toggle button (cloud/device) */
.nn-setting-sync-toggle {
    color: var(--text-muted);
    opacity: 0.85;
}

.nn-setting-sync-toggle:hover {
    color: var(--text-normal);
    opacity: 1;
}

/* Container for additional info below settings */
.nn-setting-info-container {
    margin-top: 8px;
    margin-bottom: 8px;
}

.nn-setting-info-list ol {
    margin: 6px 0 0 1.5em;
    padding: 0;
}

.nn-setting-info-list li + li {
    margin-top: 4px;
}

/* Wider text inputs for settings that benefit from more space */
.nn-setting-wide-input input[type='text'],
.nn-setting-wide-input textarea {
    width: 300px;
    max-width: 100%;
}

.nn-toolbar-visibility-control {
    width: 100%;
}

.nn-setting-color-preview {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-inline-end: var(--size-2-2);
}

.nn-setting-color-swatch-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    min-width: 32px;
    padding: 0;
    border: 1px solid var(--background-modifier-border);
    border-radius: 6px;
    background: transparent;
    cursor: pointer;
}

.nn-setting-color-swatch-button:hover {
    border-color: var(--text-muted);
}

.nn-setting-color-swatch-button.nn-setting-color-swatch-button-dark {
    background: #111827;
    border-color: #374151;
}

.nn-setting-color-swatch-button.nn-setting-color-swatch-button-dark:hover {
    border-color: #4b5563;
}

.nn-setting-color-copy-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    min-width: 28px;
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--text-muted);
    cursor: pointer;
}

.nn-setting-color-copy-button:hover {
    color: var(--text-normal);
}

.nn-setting-color-swatch {
    width: 24px;
    height: 24px;
    border-radius: 4px;
    border: 1px solid var(--background-modifier-border);
    box-sizing: border-box;
}

.nn-toolbar-visibility-grid {
    display: flex;
    flex-wrap: wrap;
    gap: var(--size-2-3);
}

.nn-quick-actions-control {
    display: flex;
    align-items: center;
    gap: 0;
}

.nn-quick-actions-buttons,
.nn-toolbar-visibility-grid-scroll {
    flex-wrap: nowrap;
    overflow-x: auto;
}

.nn-toolbar-visibility-grid-scroll {
    justify-content: flex-end;
}

.nn-quick-actions-buttons.is-disabled {
    opacity: 0.4;
    pointer-events: none;
}

.nn-quick-actions-master-toggle {
    margin-inline-start: auto;
}

button.nn-toolbar-visibility-toggle.nn-mobile-toolbar-button {
    position: relative;
    padding: 0;
    width: 32px;
    height: 32px;
    min-width: 32px;
    min-height: 32px;
}

button.nn-toolbar-visibility-toggle.nn-mobile-toolbar-button:not(.nn-mobile-toolbar-button-active) {
    opacity: 0.6;
}

button.nn-toolbar-visibility-toggle.nn-mobile-toolbar-button.nn-mobile-toolbar-button-active {
    color: var(--nn-theme-mobile-toolbar-button-active-icon-color);
    background-color: var(--nn-theme-mobile-toolbar-button-active-bg);
}

button.nn-toolbar-visibility-toggle.nn-mobile-toolbar-button.nn-mobile-toolbar-button-active .nn-toolbar-visibility-icon {
    color: var(--nn-theme-mobile-toolbar-button-active-icon-color);
}

button.nn-toolbar-visibility-toggle.nn-mobile-toolbar-button.nn-mobile-toolbar-button-active svg:not(.nn-vault-icon-svg) {
    stroke: var(--nn-theme-mobile-toolbar-button-active-icon-color);
    stroke-width: 2;
}

.nn-toolbar-visibility-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 18px;
    height: 18px;
    color: var(--nn-theme-foreground);
}

.nn-toolbar-visibility-icon svg:not(.nn-vault-icon-svg) {
    width: 18px;
    height: 18px;
    stroke-width: 1.5;
}

.nn-toolbar-visibility-icon svg.nn-vault-icon-svg {
    width: 18px;
    height: 18px;
}

/* Mobile-specific toolbar visibility button styles */
.is-mobile .nn-toolbar-visibility-control {
    width: 100%;
}

.is-mobile .nn-toolbar-visibility-sections {
    width: 100%;
}

.is-mobile .nn-toolbar-visibility-group {
    width: 100%;
}

.is-mobile .nn-toolbar-visibility-group-label {
    text-align: center;
}

.is-mobile .nn-toolbar-visibility-grid {
    width: 100%;
    display: flex;
    flex-wrap: nowrap;
    gap: 0;
    justify-content: space-between;
}

/* YouTube-style play button used in settings */
button.nn-youtube-button {
    background-color: #ff0000;
    border: none;
    color: #ffffff;
    min-width: 54px;
}

button.nn-youtube-button:hover {
    background-color: #cc0000;
}

button.nn-youtube-button svg {
    color: #ffffff;
    fill: #ffffff;
    stroke: none;
}

.is-mobile button.nn-toolbar-visibility-toggle.nn-mobile-toolbar-button {
    width: 44px;
    height: 44px;
    min-width: 44px;
    min-height: 44px;
}

.is-mobile .nn-toolbar-visibility-icon {
    width: 24px;
    height: 24px;
}

.is-mobile .nn-toolbar-visibility-icon svg {
    width: 24px;
    height: 24px;
}

/* Android-specific adjustments for smaller buttons */
.notebook-navigator-android button.nn-toolbar-visibility-toggle.nn-mobile-toolbar-button {
    width: 40px;
    height: 40px;
    min-width: 40px;
    min-height: 40px;
}

.notebook-navigator-android .nn-toolbar-visibility-icon {
    width: 22px;
    height: 22px;
}

.notebook-navigator-android .nn-toolbar-visibility-icon svg {
    width: 22px;
    height: 22px;
}

.nn-setting-profile-dropdown select {
    width: 160px;
    max-width: 100%;
}

.is-mobile .nn-setting-profile-dropdown select {
    width: 100%;
    max-width: none;
}

.nn-slider-control {
    display: flex;
    align-items: center;
    gap: 8px;
}

.nn-slider-control input[type='range'] {
    flex: 0 0 100px;
}

.nn-slider-value {
    flex: 0 0 48px;
    font-size: var(--font-ui-smaller);
    color: var(--nn-theme-foreground-muted);
    text-align: right;
    font-variant-numeric: tabular-nums;
}

/* Cards linking to the author's other plugins on the settings start page */
.setting-item.nn-plugin-cards {
    display: block;
}

/* One column when the settings pane is narrow, because the description needs the width */
.nn-plugin-card-list {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(16em, 1fr));
    gap: var(--size-4-2);
    margin-top: var(--size-4-2);
}

/* A button so the whole card can be reached from the keyboard. The declarations before the
   layout undo the button styling a theme applies. */
.nn-plugin-card {
    height: auto;
    padding: var(--size-4-3);
    background-color: var(--background-secondary);
    box-shadow: none;
    text-align: start;
    white-space: normal;
    display: flex;
    align-items: flex-start;
    gap: var(--size-4-3);
    width: 100%;
    border: 1px solid var(--background-modifier-border);
    border-radius: var(--radius-m);
    cursor: pointer;
}

.nn-plugin-card:hover {
    border-color: var(--background-modifier-border-hover);
    background-color: var(--background-modifier-hover);
}

.nn-plugin-card-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    width: var(--size-4-8);
    height: var(--size-4-8);
    border-radius: var(--radius-m);
    background-color: var(--background-primary);
    color: var(--text-accent);
}

/* min-width lets a long word wrap instead of stretching the card past its column */
.nn-plugin-card-details {
    display: flex;
    flex-direction: column;
    gap: var(--size-2-1);
    min-width: 0;
}

.nn-plugin-card-name {
    color: var(--text-normal);
    font-size: var(--font-ui-small);
    font-weight: var(--font-semibold);
    line-height: 1.3;
}

/* One line whatever the language, cut with an ellipsis, so every card is the same height */
.nn-plugin-card-description {
    color: var(--text-muted);
    font-size: var(--font-ui-smaller);
    line-height: 1.4;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Sits at the far edge, the way Obsidian marks a row that opens somewhere else. It keeps to
   the middle of the card while the icon and the name line up at the top. */
.nn-plugin-card-arrow {
    display: flex;
    align-items: center;
    align-self: center;
    flex: 0 0 auto;
    margin-inline-start: auto;
    color: var(--text-faint);
}

.nn-plugin-card-arrow .svg-icon {
    width: var(--icon-s);
    height: var(--icon-s);
}

.nn-plugin-card:hover .nn-plugin-card-arrow {
    color: var(--text-muted);
}
/* Source: src/styles/sections/settings-sponsor-button.css */

/* ========================================================================
   Sponsor Button Styles
   ======================================================================== */

/* Support button hover - subtle opacity change */
.nn-support-button:hover {
    opacity: 0.8;
}
/* Source: src/styles/sections/settings-mobile.css */

/* ========================================================================
   Mobile Styles
   ======================================================================== */

/* Mobile-specific wide input fields - full width on mobile */
.is-mobile .nn-setting-wide-input input[type='text'],
.is-mobile .nn-setting-wide-input textarea {
    width: 100%;
}
/* Source: src/styles/sections/settings-database-statistics.css */

/* ========================================================================
   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(--nn-theme-foreground-muted);
    line-height: 1.5;
}

/* Remove default setting item chrome when statistics are displayed */
.nn-stats-section.setting-item {
    border: none;
    padding: 0;
    margin-top: 0;
}
/* Source: src/styles/sections/modal-color-picker.css */

/* ========================================================================
   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(--nn-theme-foreground);
}

/* 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 1 250px;
    min-width: 180px;
}

.nn-color-picker-right {
    flex: 1 1 200px;
    min-width: 0;
}

/* 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-hex-title {
    font-size: 11px;
    color: var(--nn-theme-foreground-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, #cccccc 25%, transparent 25%, transparent 75%, #cccccc 75%, #cccccc),
        linear-gradient(45deg, #cccccc 25%, transparent 25%, transparent 75%, #cccccc 75%, #cccccc);
    background-size: 10px 10px;
    background-position:
        0 0,
        5px 5px;
    background-color: #ffffff;
}

.theme-dark .nn-checkerboard,
.theme-dark .nn-preview-color.nn-no-color {
    background-image:
        linear-gradient(45deg, #444444 25%, transparent 25%, transparent 75%, #444444 75%, #444444),
        linear-gradient(45deg, #444444 25%, transparent 25%, transparent 75%, #444444 75%, #444444);
    background-color: #222222;
}

.nn-preview-arrow {
    width: 20px;
    height: 20px;
    color: var(--nn-theme-foreground-muted);
    flex-shrink: 0;
    margin-top: 18px;
}

.nn-preview-arrow svg {
    width: 16px;
    height: 16px;
}

/* Visual color picker section */
.nn-color-area-section,
.nn-color-preview-section {
    padding-bottom: 15px;
}

.nn-color-area-section {
    display: flex;
    flex-direction: column;
    gap: 14px;
    margin-bottom: auto; /* Push everything below to the bottom */
}

.nn-color-controls {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

/* Header above the saturation/value area; matches the preset header height so the picker
   lines up with the swatch grid in the left column. Hidden on mobile where the area sits
   beside the sliders. */
.nn-sv-header {
    display: flex;
    align-items: center;
    min-height: 20px;
    margin-bottom: 8px;
}

.nn-sv-area {
    position: relative;
    width: 100%;
    height: 150px;
    border: 1px solid var(--background-modifier-border);
    border-radius: var(--radius-m);
    background-color: var(--nn-sv-hue, #ff0000);
    background-image: linear-gradient(to top, #000000, rgba(0, 0, 0, 0)), linear-gradient(to right, #ffffff, rgba(255, 255, 255, 0));
    cursor: crosshair;
    touch-action: none;
}

.nn-sv-thumb {
    position: absolute;
    width: 14px;
    height: 14px;
    border: 2px solid #ffffff;
    border-radius: 50%;
    background: var(--nn-thumb-color, #ffffff);
    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.5);
    pointer-events: none;
    transform: translate(-50%, -50%);
}

.nn-color-slider {
    position: relative;
    width: calc(100% - 16px);
    height: 14px;
    margin: 0 8px;
    border-radius: 7px;
    cursor: pointer;
    touch-action: none;
}

.nn-hue-slider {
    background: linear-gradient(
        to right,
        #ff0000 0%,
        #ffff00 16.66%,
        #00ff00 33.33%,
        #00ffff 50%,
        #0000ff 66.66%,
        #ff00ff 83.33%,
        #ff0000 100%
    );
}

.nn-alpha-gradient {
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background: linear-gradient(to right, rgba(0, 0, 0, 0), var(--nn-alpha-color, #000000));
    pointer-events: none;
}

.nn-color-slider .nn-slider-thumb {
    position: absolute;
    top: 50%;
    z-index: 1;
    width: 16px;
    height: 16px;
    border: 2px solid #ffffff;
    border-radius: 50%;
    background: transparent;
    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.5);
    pointer-events: none;
    transform: translate(-50%, -50%);
}

/* Hex input section - sits at the bottom of the picker, below the alpha slider */
.nn-hex-section {
    margin-bottom: 0;
}

.nn-hex-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 6px;
}

.nn-hex-title {
    display: block;
    height: 17px; /* Match the preview label height for alignment */
    margin-bottom: 0;
}

.nn-hex-container {
    display: flex;
    align-items: center;
    gap: 6px;
}

.nn-hex-label {
    font-size: 14px;
    color: var(--nn-theme-foreground);
    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(--nn-theme-foreground);
    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-preset-header,
.nn-recent-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 8px;
}

.nn-section-label {
    font-size: 12px;
    color: var(--nn-theme-foreground-muted);
    font-weight: 500;
}

.nn-preset-buttons {
    display: flex;
    gap: 4px;
}

.nn-preset-toggle {
    display: flex;
    align-items: center;
    gap: 6px;
}

.nn-preset-toggle-label {
    background: none;
    border: none;
    padding: 0;
    font-size: 12px;
    color: var(--nn-theme-foreground-muted);
    cursor: pointer;
    font-weight: 500;
}

.nn-preset-toggle-label.nn-preset-toggle-active {
    color: var(--nn-theme-foreground);
    font-weight: 700;
}

.nn-preset-toggle-separator {
    color: var(--nn-theme-foreground-muted);
    font-size: 12px;
    line-height: 1;
}

.nn-preset-action-button,
.nn-clear-recent {
    width: 20px;
    height: 20px;
    padding: 0;
    background: transparent;
    color: var(--nn-theme-foreground-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-preset-action-disabled {
    opacity: 0.4;
    cursor: not-allowed;
}

.nn-preset-action-hidden {
    display: none;
}

.nn-preset-action-button:hover,
.nn-clear-recent:hover {
    background: var(--background-modifier-hover);
    color: var(--nn-theme-foreground);
    border-color: var(--background-modifier-border-hover);
}

.nn-preset-action-button svg {
    width: 14px;
    height: 14px;
}

/* Preset and Recent colors sections */
.nn-preset-section {
    margin-top: auto; /* Align to bottom */
}

.nn-recent-section {
    margin-top: 0;
}

.nn-preset-colors,
.nn-recent-colors {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: 6px;
    overflow: hidden;
}

.nn-recent-colors {
    grid-template-columns: repeat(10, 36px);
}

.nn-recent-colors .nn-color-dot {
    width: 36px;
    height: 36px;
    aspect-ratio: auto;
}

.nn-preset-colors {
    margin-top: 8px;
}

/* Color dots */
.nn-color-dot {
    aspect-ratio: 1;
    border-radius: var(--radius-s);
    cursor: pointer;
    box-sizing: border-box;
    position: relative;
    overflow: hidden;
}

.nn-recent-remove-button {
    position: absolute;
    top: 2px;
    right: 2px;
    z-index: 1;
    width: 16px;
    height: 16px;
    padding: 0;
    border-radius: 999px;
    border: 1px solid var(--background-modifier-border);
    background: var(--background-primary);
    color: var(--nn-theme-foreground-muted);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
}

@media (hover: hover) and (pointer: fine) {
    .nn-recent-remove-button {
        opacity: 0;
        visibility: hidden;
        pointer-events: none;
        transition: opacity 120ms ease;
    }

    .nn-color-dot:hover .nn-recent-remove-button,
    .nn-color-dot:focus-within .nn-recent-remove-button {
        opacity: 1;
        visibility: visible;
        pointer-events: auto;
    }
}

.nn-recent-remove-button:hover {
    color: var(--nn-theme-foreground);
    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::after {
    outline: 3px solid var(--interactive-accent);
    outline-offset: -3px;
}

.nn-user-color-selected::after {
    outline: 2px solid var(--interactive-accent);
    outline-offset: -2px;
}

/* Empty color slot */
.nn-color-dot.nn-color-empty {
    background: var(--background-secondary);
    border: 1px dashed var(--background-modifier-border);
    cursor: default;
    opacity: 0.3;
}

.nn-color-dot.nn-color-empty:hover::after {
    outline: none;
}

.nn-color-dot.nn-drop-hover {
    outline: 3px solid var(--interactive-accent);
    outline-offset: -3px;
}

.nn-drag-preview {
    width: 36px;
    height: 36px;
    filter: drop-shadow(0 4px 10px rgba(0, 0, 0, 0.25));
}

/* 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 {
    border-color: rgba(255, 255, 255, 0.1);
}

/* 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);
    }

    .nn-sv-header {
        display: none;
    }

    /* Saturation/value area on the left, hue + transparency + hex stacked on the right.
       The SV area stretches to match the height of that stack. */
    .nn-color-area-section {
        flex-direction: row;
        align-items: stretch;
        gap: 14px;
    }

    .nn-sv-area {
        flex: 1 1 0;
        width: auto;
        height: auto;
    }

    .nn-color-controls {
        flex: 1 1 0;
        min-width: 0;
    }

    .modal.nn-color-picker-modal .modal-content {
        padding: 16px 16px 12px;
        gap: 12px;
    }

    .nn-color-button-container {
        margin-top: 12px;
        padding-top: 12px;
    }
}
/* Source: src/styles/sections/modal-appearance.css */

/* ========================================================================
   Appearance Modal - icon, foreground color, and background color editor
   ======================================================================== */

.modal.nn-appearance-modal {
    width: 620px;
    max-width: calc(100vw - 40px);
    max-height: 86vh;
}

.modal.nn-appearance-modal .modal-content {
    display: flex;
    flex-direction: column;
    gap: 12px;
    box-sizing: border-box;
    width: 100%;
    padding: 16px;
    overflow: hidden;
}

.modal.nn-appearance-modal .modal-close-button {
    z-index: 10;
    pointer-events: auto;
}

.nn-appearance-header {
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 0;
    padding: 14px 16px;
    border: 1px solid var(--background-modifier-border);
    border-radius: var(--radius-m);
    background: var(--background-secondary);
}

@media (hover: hover) and (pointer: fine) {
    .nn-appearance-preview-item:hover .nn-appearance-clear-button,
    .nn-appearance-preview-item:focus-within .nn-appearance-clear-button {
        opacity: 1;
        visibility: visible;
        pointer-events: auto;
    }
}

.nn-appearance-clear-button.nn-appearance-clear-hidden {
    display: none;
}

.nn-appearance-preview-item {
    position: relative;
    display: inline-flex;
    align-items: center;
    max-width: 100%;
    gap: 8px;
    padding: 6px 14px;
    border-radius: var(--radius-s);
    background: var(--nn-preview-bg, var(--background-secondary));
    color: var(--nn-preview-fg, var(--nn-theme-foreground));
    font-size: 14px;
    font-weight: 600;
}

.nn-appearance-preview-icon {
    display: inline-flex;
    align-items: center;
    flex: 0 0 auto;
}

.nn-appearance-preview-icon svg {
    width: 18px;
    height: 18px;
}

.nn-appearance-preview-icon-empty {
    display: none;
}

.nn-appearance-preview-name {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.nn-appearance-tabs {
    display: flex;
    gap: 4px;
    border-bottom: 1px solid var(--background-modifier-border);
}

.nn-appearance-tab {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
    padding: 7px 12px;
    margin: 0 0 -1px;
    border: 0;
    border-bottom: 2px solid transparent;
    border-radius: 0;
    background: transparent;
    color: var(--nn-theme-foreground-muted);
    font-size: 13px;
    font-weight: 500;
    cursor: pointer;
}

.nn-appearance-tab:hover {
    color: var(--nn-theme-foreground);
}

.nn-appearance-tab.nn-active {
    border-bottom-color: var(--interactive-accent);
    color: var(--nn-theme-foreground);
}

.nn-appearance-tab-chip {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    overflow: hidden;
    border: 1px solid var(--background-modifier-border);
}

.nn-appearance-tab-icon-chip {
    width: 24px;
    height: 24px;
    border-radius: var(--radius-s);
    color: var(--nn-theme-foreground);
}

.nn-appearance-tab-icon-chip svg {
    width: 16px;
    height: 16px;
}

.nn-appearance-tab-color-chip {
    width: 32px;
    height: 18px;
    border-radius: 4px;
}

.nn-appearance-tab-chip-empty {
    opacity: 0.55;
}

.nn-appearance-tab-label {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.nn-appearance-body {
    flex: 1 1 auto;
    height: 360px;
    overflow-y: auto;
    overflow-x: hidden;
}

.nn-appearance-panel {
    display: flex;
    flex-direction: column;
    gap: 10px;
    height: 100%;
    min-height: 0;
}

.nn-appearance-panel-hidden {
    display: none;
}

.nn-appearance-reset-button {
    padding: 4px 10px;
    border: 1px solid var(--background-modifier-border);
    border-radius: var(--radius-s);
    background: transparent;
    color: var(--nn-theme-foreground-muted);
    font-size: 12px;
    cursor: pointer;
}

.nn-appearance-reset-button:hover {
    border-color: var(--background-modifier-border-hover);
    color: var(--nn-theme-foreground);
}

.nn-appearance-reset-button.nn-appearance-reset-active {
    border-color: var(--interactive-accent);
    color: var(--interactive-accent);
}

.nn-appearance-picker-host {
    display: flex;
    flex-direction: column;
    gap: 12px;
    flex: 1 1 auto;
    min-height: 0;
}

.nn-appearance-picker-host .nn-icon-provider-tabs {
    margin-bottom: 0;
}

.nn-appearance-picker-host .nn-icon-search-container {
    padding: 0 8px;
    border-bottom: 0;
}

.nn-appearance-picker-host .nn-icon-results-container {
    flex: 1 1 auto;
    height: auto;
    min-height: 0;
}

.nn-appearance-picker-host .nn-color-picker-content {
    gap: 16px;
    padding-bottom: 0;
    overflow: visible;
}

.nn-appearance-picker-host .nn-color-picker-left {
    flex-basis: 220px;
}

.nn-appearance-picker-host .nn-color-picker-left-no-preview .nn-preset-section {
    margin-top: 0;
}

.nn-appearance-picker-host .nn-recent-section {
    margin-top: 4px;
}

.nn-appearance-picker-host .nn-preset-header,
.nn-appearance-picker-host .nn-hex-header,
.nn-appearance-picker-host .nn-recent-header {
    justify-content: flex-start;
    gap: 8px;
}

.nn-appearance-picker-host .nn-recent-colors {
    grid-template-columns: repeat(5, 1fr);
}

.nn-appearance-picker-host .nn-recent-colors .nn-color-dot {
    width: auto;
    height: auto;
    aspect-ratio: 1;
}

.nn-icon-item.nn-icon-item-selected {
    outline: 2px solid var(--interactive-accent);
    outline-offset: -2px;
}

.nn-appearance-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding-top: 12px;
    border-top: 1px solid var(--background-modifier-border);
}

.nn-appearance-footer-actions {
    display: flex;
    gap: 8px;
}

@media (max-width: 600px) {
    .modal.nn-appearance-modal {
        width: 100%;
        max-width: calc(100vw - 20px);
    }

    .nn-appearance-tabs {
        overflow-x: auto;
    }

    .nn-appearance-tab {
        flex: 0 0 auto;
    }

    /* Size the body to its content rather than a fixed height so the modal adapts to large
       fonts and display scaling. The base max-height caps it to the viewport and the body
       scrolls instead of clipping. The modal resizes between tabs because each tab fits its
       own content. */
    .nn-appearance-body {
        height: auto;
        min-height: 0;
    }

    .nn-appearance-picker-host .nn-icon-results-container {
        flex: 0 0 auto;
        height: 240px;
        min-height: 240px;
    }

    .nn-appearance-picker-host .nn-recent-colors {
        grid-template-columns: repeat(8, 1fr);
    }
}
/* Source: src/styles/sections/theme-folder-colors.css */

/* ========================================================================
   Folder Color Styles
   ======================================================================== */
/* Source: src/styles/sections/mobile-variables.css */

/* ========================================================================
   Mobile-specific Folder Text Size
   ======================================================================== */

/* Mobile root variables */
.nn-mobile {
    --nn-nav-icon-size: 20px;
    --nn-file-name-size-mobile: 16px;
    --nn-file-small-size-mobile: 15px;
    --nn-file-padding-vertical-mobile: calc(var(--nn-file-padding-vertical) + 4px);
    --nn-file-padding-total-mobile: calc(var(--nn-file-padding-vertical-mobile) * 2);
    --nn-file-icon-size-mobile: calc(var(--nn-file-icon-size) + 4px);
    --nn-file-icon-slot-width-mobile: var(--nn-file-icon-size-mobile);
    --nn-file-title-line-height: var(--nn-file-title-line-height-mobile);
    --nn-file-single-text-line-height: var(--nn-file-single-text-line-height-mobile);
    --nn-file-multiline-text-line-height: var(--nn-file-multiline-text-line-height-mobile);
    --nn-list-group-header-height-mobile: calc(var(--nn-list-group-header-height) + 8px);
    --nn-list-group-goal-header-height-mobile: calc(var(--nn-list-group-header-height-mobile) + var(--nn-list-group-progress-gap-after));
}

/* 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: var(--nn-navitem-count-font-size-mobile);
}

/* Mobile folder content padding adjustment for proper selection height */
.notebook-navigator-mobile .nn-navitem-content {
    padding: 0 var(--nn-nav-item-padding-horizontal);
    padding-inline-start: 4px;
    height: 100%;
}

.notebook-navigator-mobile .nn-navitem-indent-guide {
    --nn-indent-guide-padding-inline-start: 4px;
    --nn-indent-guide-chevron-slot-width: 32px;
}

.notebook-navigator-mobile .nn-root-reorder-remove {
    font-size: var(--nn-setting-nav-font-size-mobile);
}
/* Source: src/styles/sections/mobile-panes.css */

/* ========================================================================
   Mobile Pane Layout
   ======================================================================== */

/* Make panes flex containers on mobile to accommodate mobile toolbars. */
.notebook-navigator-mobile .nn-navigation-pane {
    display: flex;
    flex-direction: column;
    flex: 1;
    height: 100%;
    border-right: none;
    background-color: var(--nn-theme-nav-bg);
}

/* Horizontal dual pane on tablets sizes the navigation pane from the dragged divider width.
   Without restoring flex: 0 0 auto, the flex: 1 above zeroes the flex basis so both panes
   stay evenly split regardless of the stored width. The divider border returns because the
   resize handle is transparent when idle. */
.notebook-navigator-mobile .nn-dual-pane.nn-orientation-horizontal .nn-navigation-pane {
    flex: 0 0 auto;
    border-right: 1px solid var(--nn-theme-divider-border-color);
}

.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 {
    flex: 1;
    min-height: 0; /* Important for proper scrolling */
    -webkit-overflow-scrolling: touch;
    /* Keep horizontal pane bounce/chaining disabled while allowing native vertical edge feedback. */
    overscroll-behavior-x: none;
    overscroll-behavior-y: contain;
}

/* Mobile list pane scroller uses the mobile list surface. */
.notebook-navigator-mobile .nn-list-pane-scroller {
    flex: 1;
    min-height: 0; /* Important for proper scrolling */
    -webkit-overflow-scrolling: touch;
    /* Keep horizontal pane bounce/chaining disabled while allowing native vertical edge feedback. */
    overscroll-behavior-x: none;
    overscroll-behavior-y: contain;
    background-color: var(--nn-theme-list-bg); /* Opaque background on scroller for GPU scroll layer (see .nn-list-pane-scroller) */
}
/* Source: src/styles/sections/mobile-tab-bars.css */

/* ========================================================================
   Mobile Tab Bars - iOS-style bottom navigation
   ======================================================================== */

/* Mobile toolbar container */
.nn-mobile-toolbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    background-color: var(--nn-theme-list-bg);
    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 toolbars: distribute buttons evenly; iOS floating toolbars override this via platform stylesheet. */
.notebook-navigator-mobile .nn-mobile-toolbar {
    justify-content: space-evenly;
}

.nn-pane-bottom-toolbar {
    flex-shrink: 0;
}

/* Mobile toolbar grouping containers */
.nn-mobile-toolbar-left {
    display: flex;
    flex: 1;
    min-width: 0;
}

.nn-mobile-toolbar-right {
    display: flex;
    flex: 0 0 auto;
}

/* Mobile toolbar button grouping container */
.nn-mobile-toolbar-pill {
    display: flex;
    width: 100%;
    justify-content: space-around;
    align-items: center;
}

.nn-mobile-toolbar-circle {
    display: flex;
    align-items: center;
    justify-content: center;
}

/* Mobile toolbar buttons */
button.nn-mobile-toolbar-button {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    min-width: 44px;
    min-height: 44px;
    background: transparent;
    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;
}

.nn-mobile-toolbar-button-circle {
    border-radius: 999px;
}

/* Mobile toolbar button icons */
.nn-mobile-toolbar-button svg {
    width: 24px;
    height: 24px;
}

.nn-mobile-toolbar-button svg:not(.nn-vault-icon-svg) {
    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 */
.notebook-navigator-mobile button.nn-mobile-toolbar-button.nn-mobile-toolbar-button-active {
    color: var(--nn-theme-mobile-toolbar-button-active-icon-color);
    background-color: var(--nn-theme-mobile-toolbar-button-active-bg);
}

.notebook-navigator-mobile button.nn-mobile-toolbar-button.nn-mobile-toolbar-button-active svg:not(.nn-vault-icon-svg) {
    stroke: var(--nn-theme-mobile-toolbar-button-active-icon-color);
    stroke-width: 2;
}

/* Disabled mobile toolbar button */
.nn-mobile-toolbar-button:disabled {
    opacity: 0.4;
    cursor: not-allowed;
}
/* Source: src/styles/sections/platform-ios.css */

/* ========================================================================
   iOS Platform Overrides
   ======================================================================== */

.notebook-navigator-ios {
    /* Obsidian accounts for iOS safe areas in the view chrome. */
    --nn-mobile-safe-area-bottom: 0px;
}

/* iOS: view container background */
/* Targets Obsidian's `.view-content` wrapper to ensure the area behind the navigator matches the mobile pane background. */
.view-content.notebook-navigator.notebook-navigator-ios {
    background-color: var(--nn-theme-mobile-bg);
}

/* iOS: bottom padding inside the navigator viewport */
/* Applied to the internal split container so the bottom edge doesn't touch the view chrome and the toolbar shadow can render into the padding (8px matches the top spacer). */
/* Scoped to body.is-phone (Obsidian keeps the class current on resize) because tablets render the desktop headers and no floating toolbars. */
body.is-phone .notebook-navigator-ios.notebook-navigator-ios-floating-toolbars .nn-split-container {
    padding-bottom: 8px;
    box-sizing: border-box;
}

/* iOS: allow the glass toolbar shadow to render into the split container padding */
body.is-phone .notebook-navigator-ios.notebook-navigator-ios-floating-toolbars .nn-navigation-pane,
body.is-phone .notebook-navigator-ios.notebook-navigator-ios-floating-toolbars .nn-list-pane {
    overflow: visible;
}

/* iOS: anchor floating toolbar to the panel (above the calendar). */
.notebook-navigator-ios.notebook-navigator-ios-floating-toolbars .nn-navigation-pane-panel,
.notebook-navigator-ios.notebook-navigator-ios-floating-toolbars .nn-list-pane-panel {
    position: relative;
}

/* iOS: bottom overlays are positioned above the scroller. */
.notebook-navigator-ios.notebook-navigator-ios-floating-toolbars .nn-pane-bottom-toolbar {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 5;
}

/* iOS: reserve scroll space for the floating toolbar so rows can scroll under it. */
/* Scoped to body.is-phone because tablets never render the floating toolbars. */
body.is-phone .notebook-navigator-ios.notebook-navigator-ios-floating-toolbars .nn-navigation-pane-scroller,
body.is-phone .notebook-navigator-ios.notebook-navigator-ios-floating-toolbars .nn-list-pane-scroller {
    padding-bottom: var(--nn-ios-pane-bottom-overlay-height);
}

/* iOS: navigation pane calendar safe area */
.notebook-navigator-ios .nn-navigation-pane,
.notebook-navigator-ios .nn-list-pane {
    /* Obsidian accounts for iOS safe areas in the view chrome. */
    --nn-calendar-safe-area: 0px;
}

/* iOS glass toolbar */
.notebook-navigator-ios.notebook-navigator-ios-floating-toolbars .nn-mobile-toolbar {
    pointer-events: none;
    justify-content: space-between;
    align-items: flex-start;
    background-color: transparent;
    border-top: none;
    /* 2px for border effect + 2px to match Obsidian view selector dropdown */
    padding-left: calc(var(--nn-scroller-padding) + 4px); /* 4px horizontal spacer for glass pill */
    padding-right: calc(var(--nn-scroller-padding) + 4px); /* 4px horizontal spacer for glass pill */
    padding-bottom: 0; /* No extra bottom padding in iOS */
    /* The glass outline is painted via box-shadow and extends outside the pill/circle box. Add a small top spacer so
       auto-revealed rows are not positioned behind the outline. */
    padding-top: var(--nn-ios-toolbar-glass-visual-overlap-top);
    /* Adds an invisible spacer under the glass pills to create the visual bottom gap without shifting sticky positioning. */
    height: calc(
        var(--nn-ios-toolbar-height) + var(--nn-ios-toolbar-bottom-offset) + var(--nn-ios-toolbar-glass-visual-overlap-top)
    ); /* Includes bottom offset spacer + top overlap */
    min-height: calc(
        var(--nn-ios-toolbar-height) + var(--nn-ios-toolbar-bottom-offset) + var(--nn-ios-toolbar-glass-visual-overlap-top)
    ); /* Match toolbar box height */
}

.notebook-navigator-ios.notebook-navigator-ios-floating-toolbars .nn-mobile-toolbar-left,
.notebook-navigator-ios.notebook-navigator-ios-floating-toolbars .nn-mobile-toolbar-right {
    display: flex;
    pointer-events: auto;
    flex: 0 0 auto;
}

.notebook-navigator-ios.notebook-navigator-ios-floating-toolbars {
    --nn-theme-mobile-toolbar-button-icon-color: var(--nn-theme-foreground);
    --nn-ios-toolbar-glass-bg: color-mix(in srgb, var(--nn-theme-mobile-toolbar-glass-bg) 45%, transparent);
    --nn-ios-toolbar-glass-outline: rgba(255, 255, 255, 0.6);
    --nn-ios-toolbar-glass-shadow: 0 0 0 2px var(--nn-ios-toolbar-glass-outline), 0 16px 32px rgba(0, 0, 0, 0.09);
    --nn-ios-toolbar-glass-filter: blur(3px) saturate(160%);
    --nn-theme-mobile-toolbar-button-active-bg: transparent;
    /* Visual overflow above the pills caused by the glass outline (box-shadow spread). */
    --nn-ios-toolbar-glass-visual-overlap-top: 2px;
    /* Visual bottom gap between the glass pills and the view edge (implemented via toolbar height + fade, not sticky offset). */
    --nn-ios-toolbar-bottom-offset: 12px;
    --nn-ios-toolbar-height: 44px; /* 38px button + (1px padding + 2px border) * 2 */
    --nn-ios-pane-bottom-fade-height: 64px; /* Fade height behind the toolbar */
    --nn-ios-pane-bottom-fade-opacity: 0.8; /* Fade opacity behind the toolbar */
    --nn-ios-pane-bottom-overlay-height: calc(
        var(--nn-ios-toolbar-height) + var(--nn-ios-toolbar-bottom-offset) + var(--nn-ios-toolbar-glass-visual-overlap-top)
    );
}

.theme-dark .notebook-navigator-ios.notebook-navigator-ios-floating-toolbars {
    --nn-ios-toolbar-glass-outline: rgba(255, 255, 255, 0.1);
    --nn-ios-toolbar-glass-shadow: 0 0 0 2px var(--nn-ios-toolbar-glass-outline), 0 16px 32px rgba(0, 0, 0, 0.3);
}

.notebook-navigator-ios.notebook-navigator-ios-floating-toolbars .nn-mobile-toolbar-pill,
.notebook-navigator-ios.notebook-navigator-ios-floating-toolbars .nn-mobile-toolbar-circle {
    display: flex;
    position: relative;
    z-index: 0;
    border-radius: 999px;
    background: var(--nn-ios-toolbar-glass-bg);
    border: 2px solid transparent; /* Glass outline thickness */
    -webkit-backdrop-filter: var(--nn-ios-toolbar-glass-filter);
    backdrop-filter: var(--nn-ios-toolbar-glass-filter);
    box-shadow: var(--nn-ios-toolbar-glass-shadow);
    overflow: hidden;

    /*
     * Warped glass (disabled)
     * Enable when WebKit supports SVG `url(#...)` values for `-webkit-backdrop-filter`.
     *
     * Requirements:
     * - Inject the SVG filter defs into the document (filter id: `notebook-navigator-frosted`)
     * - Set:
     *   -webkit-backdrop-filter: url(#notebook-navigator-frosted);
     *   backdrop-filter: url(#notebook-navigator-frosted);
     */
}

.notebook-navigator-ios.notebook-navigator-ios-floating-toolbars .nn-mobile-toolbar-pill > .nn-mobile-toolbar-button,
.notebook-navigator-ios.notebook-navigator-ios-floating-toolbars .nn-mobile-toolbar-circle > .nn-mobile-toolbar-button {
    position: relative;
    z-index: 1;
}

.notebook-navigator-ios.notebook-navigator-ios-floating-toolbars .nn-mobile-toolbar-pill {
    width: auto;
    justify-content: flex-start;
    gap: 6px; /* Spacing between buttons inside the pill */
    padding: 1px 10px; /* 1px vertical + 10px horizontal pill inset */
}

.notebook-navigator-ios.notebook-navigator-ios-floating-toolbars .nn-mobile-toolbar-circle {
    padding: 1px; /* 1px inset around the circular button */
}

.notebook-navigator-ios.notebook-navigator-ios-floating-toolbars .nn-mobile-toolbar-button {
    width: 38px; /* Button diameter inside the glass pill */
    height: 38px; /* Button diameter inside the glass pill */
    min-width: 38px; /* Prevent button shrink */
    min-height: 38px; /* Prevent button shrink */
    border-radius: 999px;
}

.notebook-navigator-ios.notebook-navigator-ios-floating-toolbars .nn-mobile-toolbar-button svg:not(.nn-vault-icon-svg) {
    stroke-width: 2;
}

.notebook-navigator-ios.notebook-navigator-ios-floating-toolbars .nn-navigation-pane-content,
.notebook-navigator-ios.notebook-navigator-ios-floating-toolbars .nn-list-pane-content {
    position: relative;
    z-index: 1;
}

/* iOS: bottom fade layer */
.notebook-navigator-ios.notebook-navigator-ios-floating-toolbars .nn-pane-bottom-toolbar::before {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    /* Covers the toolbar height plus the visual bottom gap so the fade reaches the edge below. */
    height: calc(var(--nn-ios-pane-bottom-fade-height) + var(--nn-ios-toolbar-bottom-offset));
    pointer-events: none;
    background: linear-gradient(
        to bottom,
        color-mix(in srgb, var(--nn-theme-mobile-bg) 0%, transparent),
        color-mix(in srgb, var(--nn-theme-mobile-bg) calc(var(--nn-ios-pane-bottom-fade-opacity) * 100%), transparent)
    );
    z-index: -1;
}

/*
 * iOS: WebKit paint workaround for virtualized lists.
 *
 * Symptom:
 * - The list can render blank (rows not visible) after preview text / feature image updates when the list is short
 *   enough that the scroller does not overflow (scrollHeight === clientHeight).
 * - The DOM still contains the virtualized row elements and TanStack Virtual still reports virtual items, but the
 *   scroll layer does not repaint until a user interaction (tap) or a layout-triggering event (rotation).
 *
 * Workaround:
 * - Force each rendered virtual row wrapper onto its own composited layer. This makes WebKit repaint the rows
 *   reliably when the virtualizer remeasures and updates absolute positioning.
 */
.notebook-navigator-ios .nn-list-pane .nn-virtual-item {
    transform: translateZ(0);
}

/*
 * iOS/iPadOS: WebKit paint workaround for pinned navigation shortcuts.
 *
 * Pinned shortcuts can remain mounted and measurable while their row contents stop repainting after the mobile
 * single-pane transform finishes. Keep the pinned shortcut surface and its rows on composited layers.
 */
.notebook-navigator-ios .nn-shortcut-pinned,
.notebook-navigator-ios .nn-shortcut-pinned-scroll,
.notebook-navigator-ios .nn-shortcut-pinned .nn-navitem {
    transform: translateZ(0);
}
/* Source: src/styles/sections/platform-android.css */

/* ========================================================================
   Android Platform Overrides
   ======================================================================== */

.notebook-navigator-android {
    /* Declared so calc() uses of the variable stay valid; an undefined variable drops the
       whole padding/height declaration at computed-value time. Obsidian accounts for
       Android safe areas in the view chrome. */
    --nn-mobile-safe-area-bottom: 0px;
}

/* Android: match the view container background to mobile pane surfaces */
.view-content.notebook-navigator.notebook-navigator-android {
    background-color: var(--nn-theme-mobile-bg);
}

/* Android: match the split container background to mobile pane surfaces */
.notebook-navigator-android .nn-split-container {
    background-color: var(--nn-theme-mobile-bg);
}

/* Android: bottom padding inside the navigator viewport */
/* Applied to the internal split container so the bottom edge doesn't touch the view chrome (8px matches the top spacer). */
/* Scoped to body.is-phone to match the iOS rule; tablets render the desktop chrome without the inset. */
body.is-phone .notebook-navigator-android .nn-split-container {
    padding-bottom: 8px;
    box-sizing: border-box;
}
/* Source: src/styles/sections/android-toolbar.css */

/* ========================================================================
   Android Toolbar Positioning
   Android displays toolbar at top, iOS at bottom
   ======================================================================== */

/* Android: toolbar at top with reduced height */
.notebook-navigator-mobile.notebook-navigator-android .nn-mobile-toolbar {
    background-color: var(--nn-theme-list-bg);
    border: none;
    padding-bottom: 0;
    justify-content: center;
    gap: 16px;
    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;
}
/* Source: src/styles/sections/android-textzoom.css */

/* ========================================================================
   Android textZoom Compensation

   Android WebView scales text via textZoom property. This affects font-size
   and line-height at the rendering level. We detect the scale factor in JS
   and set --nn-android-font-scale, then CSS compensates by dividing values
   by that factor so Android scaling produces correct final sizes.

   Font-size compensation is handled via inline styles in androidFontScale.ts.
   Line-height compensation is handled here in CSS because the .nn-mobile class
   redefines variables and would override inline styles on the outer container.
   ======================================================================== */

/* Override line-height variables with compensated values
   Note: We use a reciprocal variable for division since calc(x / var) can have issues */
.notebook-navigator-android .nn-mobile {
    --nn-android-font-scale-reciprocal: calc(1 / var(--nn-android-font-scale, 1));
    --nn-file-title-line-height: calc(var(--nn-file-title-line-height-mobile) * var(--nn-android-font-scale-reciprocal, 1));
    --nn-file-single-text-line-height: calc(var(--nn-file-single-text-line-height-mobile) * var(--nn-android-font-scale-reciprocal, 1));
    --nn-file-multiline-text-line-height: calc(
        var(--nn-file-multiline-text-line-height-mobile) * var(--nn-android-font-scale-reciprocal, 1)
    );
    /* Note: Do NOT compensate icon size variables - they're used for SVG width/height
       which Android doesn't scale. Only compensate font-size on emoji elements directly. */
}

/* Note counts in navigation pane */
.notebook-navigator-android .nn-mobile .nn-navitem-count {
    font-size: calc(
        var(--nn-navitem-count-font-size-mobile, var(--nn-navitem-count-font-size)) * var(--nn-android-font-scale-reciprocal, 1)
    );
}

/* Root reorder panel text */
.notebook-navigator-android .nn-mobile .nn-root-reorder-hint {
    font-size: calc(
        var(--nn-root-reorder-hint-font-size-mobile, var(--nn-root-reorder-hint-font-size)) * var(--nn-android-font-scale-reciprocal, 1)
    );
}

/* Emoji and webfont icons - Android scales font-size but not SVG dimensions.
   Only apply to .nn-emoji-icon and .nn-iconfont to avoid breaking Lucide SVG icons. */
.notebook-navigator-android .nn-mobile .nn-emoji-icon,
.notebook-navigator-android .nn-mobile .nn-iconfont {
    font-size: calc(var(--nn-file-icon-size-mobile, var(--nn-file-icon-size)) * var(--nn-android-font-scale-reciprocal, 1));
}

/* Task indicators are smaller than file icons, so preserve their 80% size while compensating
   for Android textZoom. Without this override, the general icon rule above enlarges them. */
.notebook-navigator-android .nn-mobile .nn-file-task-progress-icon.nn-emoji-icon,
.notebook-navigator-android .nn-mobile .nn-file-task-progress-icon.nn-iconfont {
    font-size: calc(var(--icon-size) * 0.8 * var(--nn-android-font-scale-reciprocal, 1));
}

/* Clamp height compensation - Android doesn't scale max-height, so match the compensated line-height after textZoom applies. */
.notebook-navigator-android .nn-file-name {
    max-height: calc(var(--nn-file-title-line-height) * var(--filename-rows, 1) * var(--nn-android-font-scale, 1));
}

.notebook-navigator-android .nn-file-preview {
    max-height: calc(var(--nn-file-multiline-text-line-height) * var(--preview-rows, 1) * var(--nn-android-font-scale, 1));
}

/* Icon vertical centering - line-height is pre-compensated, icon size is not */
.notebook-navigator-android .nn-file-icon-slot {
    margin-top: max(
        0px,
        calc(
            (
                    var(--nn-file-title-line-height) * var(--nn-android-font-scale, 1) -
                        var(--nn-file-icon-size-mobile, var(--nn-file-icon-size))
                ) /
                2
        )
    );
}
/* Source: src/styles/sections/rtl-support.css */

/* ========================================================================
   RTL (Right-to-Left) Support
   ======================================================================== */

/* Single-pane slide animations for RTL */
.mod-rtl .nn-split-container.nn-single-pane.show-navigation .nn-list-pane {
    transform: translateX(-100%);
}

.mod-rtl .nn-split-container.nn-single-pane.show-files .nn-navigation-pane {
    transform: translateX(100%);
}

.mod-rtl .nn-file-name,
.mod-rtl .nn-file-preview {
    text-align: right;
}

/* Bidi-safe text runs */
.nn-navitem-name,
.nn-file-name,
.nn-file-preview,
.nn-file-date,
.nn-parent-folder,
.nn-list-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 */
/* Source: src/styles/sections/icons-system.css */

/* =================================================================================
   Icon System
   ================================================================================= */

/* Plugin icon - ensure transparent background */
.svg-icon.notebook-navigator {
    background: transparent;
    overflow: visible;
}

/* Emoji icon styles */
.nn-emoji-icon {
    font-family: 'Apple Color Emoji', 'Segoe UI Emoji', 'Noto Color Emoji', sans-serif;
    font-style: normal;
    font-weight: normal;
    line-height: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    text-align: center;
    text-decoration: none;

    /* 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 {
    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;
}

/* Ensure proper sizing when used in buttons */
.nn-icon-button .nn-emoji-icon {
    width: 1em;
    height: 1em;
    font-size: inherit;
}

/* ========================================================================
   ServiceIcon Alignment
   ======================================================================== */

/*
 * `ServiceIcon` renders into a `<span>` container and injects an inline SVG.
 * Ensure the span/SVG don't participate in baseline alignment, so icons stay vertically centered inside flex buttons.
 */
.nn-icon-button > span,
.nn-mobile-toolbar-button > span,
.nn-navigation-calendar-nav-button > span {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 0;
}

.nn-icon-button > span > svg,
.nn-mobile-toolbar-button > span > svg,
.nn-navigation-calendar-nav-button > span > svg {
    display: block;
}

/* 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-vault-icon-svg {
    display: block;
    width: 100%;
    height: 100%;
}

.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-link-row {
    padding: 8px 12px 0;
    text-align: center;
}

.nn-icon-provider-link-row-hidden {
    display: none;
}

.nn-icon-provider-link-row a {
    display: inline-flex;
    align-items: center;
    color: var(--text-accent);
    font-size: 12px;
    text-decoration: none;
}

.nn-icon-provider-link-row a:hover {
    text-decoration: underline;
}

.nn-icon-provider-tab {
    padding: 4px 12px;
    border-radius: var(--radius-s);
    color: var(--nn-theme-foreground-muted);
    white-space: nowrap;
}

.nn-icon-provider-tab:hover {
    background-color: var(--background-modifier-hover);
    color: var(--nn-theme-foreground);
}

.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;
}
/* Source: src/styles/sections/settings-metadata-info.css */

/* ========================================================================
   Metadata Info Styles
   ======================================================================== */

/* Error text styling */
.nn-metadata-error-text {
    color: var(--text-error);
    font-weight: bold;
}
/* Source: src/styles/sections/settings-style-settings.css */

/* @settings

name: Notebook Navigator
id: notebook-navigator-style-settings
settings:
    -
        id: nn-theme-foreground-heading
        title: Foreground colors
        description: Base colors for text, icons, and lines. Most other colors default to these.
        type: heading
        level: 1
        collapsed: true
    -
        id: nn-theme-foreground
        title: Base foreground color
        description: Base foreground color.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-foreground-muted
        title: Muted foreground color
        description: Muted foreground color.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-foreground-faded
        title: Faded foreground color
        description: Faded foreground color.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-foreground-faint
        title: Faint foreground color
        description: Faint foreground color.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-nav-pane-heading
        title: Navigation pane
        description: Customize the background and items 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 (desktop only).
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-nav-separator-color
        title: Navigation separator color
        description: Line color for separators rendered inside navigation spacers.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-nav-indent-guide-color
        title: Indent guide color
        description: Line color for navigation indent guides.
        type: variable-themed-color
        opacity: true
        format: rgb
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-nav-leader-color
        title: Leader color
        description: Color for leaders between item names and trailing values.
        type: variable-themed-color
        opacity: true
        format: rgb
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-pinned-shortcut-shadow-color
        title: Pinned shortcut shadow color
        description: Gradient overlay color rendered beneath pinned shortcuts.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-nav-pane-items-heading
        title: Navigation items
        description: Custom-color weight and folder-note decoration also apply when these items appear in the list pane.
        type: heading
        level: 2
        collapsed: false
    -
        id: nn-theme-navitem-chevron-color
        title: Item 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: Item icon color
        description: Icon color for navigation items.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-navitem-name-color
        title: Item name color
        description: Text color for navigation item names.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-navitem-file-name-color
        title: File name color
        description: Text color for file shortcuts and recent files. Defaults to the navigation item text color.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-navitem-name-font-weight
        title: Item name font weight
        description: Font weight of folder, tag, property, note, and section names, including shortcuts and recent files.
        type: variable-number-slider
        default: 400
        min: 100
        max: 900
        step: 100
    -
        id: nn-theme-navitem-custom-color-name-font-weight
        title: Custom color text weight
        description: Font weight for custom or rainbow-colored names, group headers, parent folders, and tag pills.
        type: variable-number-slider
        default: 600
        min: 100
        max: 900
        step: 100
    -
        id: nn-theme-navitem-folder-note-name-decoration
        title: Folder note text decoration
        description: Text decoration for folder note names wherever they are shown.
        type: variable-select
        default: underline
        options:
          -
            label: None
            value: none
          -
            label: Underline
            value: underline
          -
            label: Dotted underline
            value: underline dotted
    -
        id: nn-theme-navitem-folder-note-name-hover-decoration
        title: Folder note text decoration (hover)
        description: Text decoration when hovering folder note names.
        type: variable-select
        default: underline
        options:
          -
            label: None
            value: none
          -
            label: Underline
            value: underline
          -
            label: Dotted underline
            value: underline dotted
    -
        id: nn-theme-navitem-border-radius
        title: Item border radius
        description: Corner radius for navigation items.
        type: variable-number-slider
        default: 4
        format: px
        min: 0
        max: 14
        step: 1
    -
        id: nn-theme-navitem-border-width
        title: Item border width
        description: Border width on navigation item backgrounds, hover state, and selection.
        type: variable-number-slider
        default: 0
        format: px
        min: 0
        max: 4
        step: 1
    -
        id: nn-theme-navitem-custom-border-color
        title: Item border color (custom background)
        description: Border color on navigation items with custom backgrounds.
        type: variable-themed-color
        opacity: true
        format: rgb
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-navitem-hover-bg
        title: Item background (hover)
        description: Item hover background color (desktop only).
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-navitem-hover-border-color
        title: Item border color (hover)
        description: Border color on hovered navigation items.
        type: variable-themed-color
        opacity: true
        format: rgb
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-tag-positive-bg
        title: Tag highlight background (include)
        description: Background color for positive tag highlights and tag drop targets.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-tag-negative-bg
        title: Tag highlight background (exclude)
        description: Background color for negative tag highlights and the untagged drop target.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-nav-selection-heading
        title: Navigation selection
        type: heading
        level: 2
        collapsed: false
    -
        id: nn-theme-navitem-selected-bg
        title: Selected item background
        description: Selected item background color.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-navitem-selected-border-color
        title: Selected item border color
        description: Border color on selected navigation items.
        type: variable-themed-color
        opacity: true
        format: rgb
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-navitem-selected-chevron-color
        title: Selected item expand/collapse arrow 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 item 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 item name color
        description: Name color when selected.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-navitem-selected-inactive-bg
        title: Selected item background (inactive)
        description: Selected item background color when pane is inactive.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-navitem-selected-inactive-border-color
        title: Selected item border color (inactive)
        description: Border color on selected navigation items when pane is inactive.
        type: variable-themed-color
        opacity: true
        format: rgb
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-navitem-selected-inactive-chevron-color
        title: Selected item expand/collapse arrow color (inactive)
        description: Expand/collapse arrow color when item is selected and pane is inactive.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-navitem-selected-inactive-icon-color
        title: Selected item icon color (inactive)
        description: Icon color when item is selected and pane is inactive.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-navitem-selected-inactive-name-color
        title: Selected item name color (inactive)
        description: Name color when selected and pane is inactive.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-nav-file-counts-heading
        title: File counts
        type: heading
        level: 2
        collapsed: false
    -
        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-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-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-count-border-width
        title: File count border width
        description: Border width on navigation file count badges.
        type: variable-number-slider
        default: 0
        format: px
        min: 0
        max: 4
        step: 1
    -
        id: nn-theme-navitem-count-border-color
        title: File count border color
        description: Border color on navigation file count badges.
        type: variable-themed-color
        opacity: true
        format: rgb
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-navitem-selected-count-color
        title: Selected file 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 file count background
        description: File count background color when selected.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-navitem-selected-count-border-color
        title: Selected file count border color
        description: Border color on file count badges when selected.
        type: variable-themed-color
        opacity: true
        format: rgb
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-navitem-selected-inactive-count-color
        title: Selected file count text color (inactive)
        description: File count text color when item is selected and pane is inactive.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-navitem-selected-inactive-count-bg
        title: Selected file count background (inactive)
        description: File count background color when item is selected and pane is inactive.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-navitem-selected-inactive-count-border-color
        title: Selected file count border color (inactive)
        description: Border color on file count badges when selected and pane is inactive.
        type: variable-themed-color
        opacity: true
        format: rgb
        default-light: '#'
        default-dark: '#'
    -
        id: nn-file-list-heading
        title: List pane
        description: Customize the file list appearance. Search icon and supporting text are under Pane headers and titles.
        type: heading
        level: 1
        collapsed: true
    -
        id: nn-theme-list-bg
        title: List pane background
        description: Background color of the list pane (desktop only).
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-list-search-active-bg
        title: Search field background (active)
        description: Background color for the search field when a search query is active.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-list-search-border-color
        title: Search field border color
        description: Border and focus ring color for the search field.
        type: variable-themed-color
        opacity: true
        format: rgb
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-list-separator-color
        title: File separator color
        description: Divider line color between files.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-list-group-headers-heading
        title: Group headers
        type: heading
        level: 2
        collapsed: false
    -
        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-group-header-font-weight
        title: Group header text 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-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-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-compact-name-font-weight
        title: File name font weight (compact mode)
        description: Font weight for file names in compact mode.
        type: variable-number-slider
        default: 400
        min: 100
        max: 900
        step: 100
    -
        id: nn-theme-file-preview-color
        title: File preview color
        description: Text color for content preview.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        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-task-color
        title: File task color
        description: Color for the task display and replacement file icon in notes with unfinished tasks.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-file-task-font-weight
        title: File task weight
        description: Weight for task counts and icons in notes with unfinished tasks.
        type: variable-number-slider
        default: 400
        min: 100
        max: 900
        step: 100
    -
        id: nn-theme-file-task-complete-color
        title: File task color (complete)
        description: Icon, bar, and count color when all tasks in a note are completed.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-file-task-complete-font-weight
        title: File task weight (complete)
        description: Weight for task counts and icons when all tasks in a note are completed.
        type: variable-number-slider
        default: 400
        min: 100
        max: 900
        step: 100
    -
        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-date-font-weight
        title: File 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-word-count-color
        title: File word count color
        description: Text color for word count suffixes.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-file-word-count-font-weight
        title: File word count font weight
        description: Font weight for word count suffixes.
        type: variable-number-slider
        default: 400
        min: 100
        max: 900
        step: 100
    -
        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-parent-font-weight
        title: File 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-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-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-list-selection-heading
        title: File selection
        type: heading
        level: 2
        collapsed: false
    -
        id: nn-theme-file-selected-bg
        title: Selected file background
        description: Selected file background color.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-file-border-width
        title: Selected file border width
        description: Border width on selected file items.
        type: variable-number-slider
        default: 0
        format: px
        min: 0
        max: 4
        step: 1
    -
        id: nn-theme-file-selected-border-color
        title: Selected file border color
        description: Border color on selected file items.
        type: variable-themed-color
        opacity: true
        format: rgb
        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-word-count-color
        title: Selected file word count color
        description: Text color for word count suffixes 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-inactive-bg
        title: Selected file background (inactive)
        description: Selected file background color when pane is inactive.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-file-selected-inactive-border-color
        title: Selected file border color (inactive)
        description: Border color on selected file items when pane is inactive.
        type: variable-themed-color
        opacity: true
        format: rgb
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-file-selected-inactive-name-color
        title: Selected file name color (inactive)
        description: File name color when selected and pane is inactive.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-file-selected-inactive-preview-color
        title: Selected file preview color (inactive)
        description: Content preview color when file is selected and pane is inactive.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-file-selected-inactive-date-color
        title: Selected file date color (inactive)
        description: File date color when selected and pane is inactive.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-file-selected-inactive-word-count-color
        title: Selected file word count color (inactive)
        description: Word count suffix color when file is selected and pane is inactive.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-file-selected-inactive-parent-color
        title: Selected file parent folder color (inactive)
        description: Parent folder color when file is selected and pane is inactive.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-list-pills-heading
        title: Tag and property pills
        type: heading
        level: 2
        collapsed: false
    -
        id: nn-theme-file-tag-color
        title: Tag pill text color
        description: Default text color for tag pills without custom colors.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-file-tag-custom-color-text-color
        title: Tag pill text color (custom background)
        description: Text color for tag pills with a custom background but no custom text color.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-file-property-color
        title: Property pill text color
        description: Default text color for property pills.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-file-tag-font-weight
        title: Tag and property pill text font weight
        description: Font weight for tag and property pill text without custom text colors.
        type: variable-number-slider
        default: 400
        min: 100
        max: 900
        step: 100
    -
        id: nn-theme-file-tag-bg
        title: Tag pill background
        description: Default background color for tag pills without custom backgrounds.
        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-property-bg
        title: Property pill background
        description: Default background color for property pills.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-file-property-border-radius
        title: Property pill border radius
        description: Corner radius for custom property pills.
        type: variable-number-slider
        default: 10
        format: px
        min: 0
        max: 10
        step: 1
    -
        id: nn-theme-file-pill-border-width
        title: Tag and property pill border width
        description: Border width on tag and custom property pills.
        type: variable-number-slider
        default: 1
        format: px
        min: 0
        max: 4
        step: 1
    -
        id: nn-theme-file-tag-border-color
        title: Tag pill border color
        description: Border color on tag pills without custom colors.
        type: variable-themed-color
        opacity: true
        format: rgb
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-file-property-border-color
        title: Property pill border color
        description: Border color on property pills without custom colors.
        type: variable-themed-color
        opacity: true
        format: rgb
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-file-selected-tag-color
        title: Selected tag pill 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 tag pill background
        description: Background color for tag pills when selected.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-file-selected-tag-border-color
        title: Selected tag pill border color
        description: Border color on tag pills without custom colors in selected files.
        type: variable-themed-color
        opacity: true
        format: rgb
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-file-selected-property-color
        title: Selected property pill text color
        description: Text color for property pills when selected.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-file-selected-property-bg
        title: Selected property pill background
        description: Background color for property pills when selected.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-file-selected-property-border-color
        title: Selected property pill border color
        description: Border color on property pills without custom colors in selected files.
        type: variable-themed-color
        opacity: true
        format: rgb
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-file-selected-inactive-tag-color
        title: Selected tag pill text color (inactive)
        description: Tag text color when file is selected and pane is inactive.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-file-selected-inactive-tag-bg
        title: Selected tag pill background (inactive)
        description: Tag background color when file is selected and pane is inactive.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-file-selected-inactive-property-color
        title: Selected property pill text color (inactive)
        description: Text color for property pills when file is selected and pane is inactive.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-file-selected-inactive-property-bg
        title: Selected property pill background (inactive)
        description: Background color for property pills when file is selected and pane is inactive.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-quick-actions-heading
        title: Quick actions
        description: Quick actions are shown on desktop.
        type: heading
        level: 2
        collapsed: false
    -
        id: nn-theme-quick-actions-bg
        title: Quick actions 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: Quick actions toolbar border color
        description: Border color of quick actions toolbar.
        type: variable-themed-color
        opacity: true
        format: rgb
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-quick-actions-border-radius
        title: Quick actions 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: Quick actions toolbar 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: Quick actions toolbar icon color (hover)
        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: Quick actions toolbar separator color
        description: Divider color between quick action buttons.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-pane-headings-heading
        title: Pane headers and titles
        description: Shared titles, headers, and header buttons in the navigation and list panes.
        type: heading
        level: 1
        collapsed: true
    -
        id: nn-pane-titles-heading
        title: Pane titles
        type: heading
        level: 2
        collapsed: false
    -
        id: nn-theme-list-heading-color
        title: Pane title text color
        description: Text color for the list pane title and navigation pane vault title.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-list-heading-font-weight
        title: Pane title font weight
        description: Font weight for the list pane title and navigation pane vault title.
        type: variable-number-slider
        default: 600
        min: 100
        max: 900
        step: 100
    -
        id: nn-list-header-heading
        title: Pane headers
        type: heading
        level: 2
        collapsed: false
    -
        id: nn-theme-list-header-icon-color
        title: Pane header icon color
        description: Color for folder, tag, and property icons in pane headers and for the search field icon.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-list-header-breadcrumb-color
        title: Pane header text color
        description: Text color for pane header titles, breadcrumbs, and search field supporting text.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-list-header-breadcrumb-font-weight
        title: Pane header text font weight
        description: Font weight for pane header titles and breadcrumbs.
        type: variable-number-slider
        default: 600
        min: 100
        max: 900
        step: 100
    -
        id: nn-header-heading
        title: Header buttons
        type: heading
        level: 2
        collapsed: false
    -
        id: nn-theme-header-button-icon-color
        title: Header 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: Header button background (hover)
        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: Header button background (active)
        description: Background color for active header buttons.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-header-button-active-icon-color
        title: Header button icon color (active)
        description: Icon color for active header buttons.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-header-button-disabled-icon-color
        title: Header button icon color (disabled)
        description: Icon color for disabled header buttons.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-calendar-heading
        title: Calendar
        description: Customize the daily notes calendar.
        type: heading
        level: 1
        collapsed: true
    -
        id: nn-calendar-labels-heading
        title: Calendar labels
        type: heading
        level: 2
        collapsed: false
    -
        id: nn-theme-calendar-header-color
        title: Header text color
        description: Text color for month/year and header buttons.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-calendar-weekday-color
        title: Weekday label text color
        description: Text color for weekday labels (Mon, Tue, Wed...).
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-calendar-week-color
        title: Week number text color
        description: Text color for week numbers.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-calendar-day-in-month-color
        title: Day text color (current month)
        description: Text color for days within the current month.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-calendar-day-outside-month-color
        title: Day text color (outside month)
        description: Text color for days outside the current month.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-calendar-day-states-heading
        title: Day states
        type: heading
        level: 2
        collapsed: false
    -
        id: nn-theme-calendar-weekend-bg
        title: Weekend day background
        description: Background color for weekend day cells.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-calendar-hover-bg
        title: Hover background
        description: Background color when hovering calendar buttons and days.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-calendar-day-today-color
        title: Day text color (today)
        description: Text color for today's date.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-calendar-day-today-bg
        title: Today highlight background
        description: Background color for today's date highlight.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-calendar-day-active-border-color
        title: Selection outline color
        description: Border color for active calendar outlines.
        type: variable-themed-color
        opacity: true
        format: rgb
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-calendar-day-active-border-width
        title: Selection outline thickness
        description: Border width for active calendar outlines.
        type: variable-number-slider
        default: 3
        format: px
        min: 1
        max: 4
        step: 1
    -
        id: nn-calendar-indicators-heading
        title: Indicators and feature images
        type: heading
        level: 2
        collapsed: false
    -
        id: nn-theme-calendar-note-indicator-color
        title: Daily note indicator color
        description: Color for the dot indicator shown on dates with a daily note.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-calendar-unfinished-task-indicator-color
        title: Unfinished task indicator color
        description: Color for the hollow indicator shown on dates with unfinished tasks.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-calendar-feature-image-text-color
        title: Feature image text color
        description: Text color for dates with feature images.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-calendar-feature-image-overlay-color
        title: Feature image overlay color
        description: Adds a color overlay to darken or tint feature images in calendar days and months. Set separate colors for light and dark mode.
        type: variable-themed-color
        opacity: true
        format: rgb
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-pane-divider-heading
        title: Pane divider
        description: Divider between navigation and file list panes in dual-pane layouts.
        type: heading
        level: 1
        collapsed: true
    -
        id: nn-theme-divider-border-color
        title: Pane divider border color
        description: Border color between panes in horizontal and vertical split layouts.
        type: variable-themed-color
        opacity: true
        format: rgb
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-divider-resize-handle-hover-bg
        title: Pane divider resize handle background (hover)
        description: Background color when hovering the pane divider to resize.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-mobile-heading
        title: Mobile
        description: Customize mobile interface elements.
        type: heading
        level: 1
        collapsed: true
    -
        id: nn-theme-mobile-bg
        title: Pane background
        description: Background color of navigation and list panes on mobile.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
    -
        id: nn-theme-mobile-list-header-link-color
        title: 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: 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: Header 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-glass-bg
        title: iOS glass toolbar background
        description: Background color of the iOS glass toolbar (used for border and background, supports transparency).
        type: variable-themed-color
        opacity: true
        format: rgb
        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 background (active)
        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 icon color (active)
        description: Icon color for active toolbar button.
        type: variable-themed-color
        format: hex
        default-light: '#'
        default-dark: '#'
*/
