/* TaskNotes Plugin Styles */ /* This file is automatically generated by the build process. To modify styles, edit the source files in the styles/ directory. Source files: Core System: - styles/variables.css: CSS custom properties and design system variables - styles/utilities.css: Scoped utility classes for layout, spacing, typography, and states - styles/base.css: Basic styles, animations, card components, and layout BEM Component Files: - styles/task-card-bem.css: TaskCard component with proper BEM scoping - styles/task-inline-widget.css: Inline task widget for editor with proper BEM scoping - styles/note-card-bem.css: NoteCard component with proper BEM scoping - styles/filter-bar-bem.css: FilterBar component with proper BEM scoping - styles/modal-bem.css: Modal components with proper BEM scoping BEM View Files: - styles/task-list-view.css: TaskListView component with proper BEM scoping - styles/calendar-view.css: CalendarView component with proper BEM scoping - styles/kanban-view.css: KanbanView component with proper BEM scoping - styles/agenda-view.css: AgendaView component with proper BEM scoping - styles/pomodoro-view.css: PomodoroView component with proper BEM scoping - styles/pomodoro-stats-view.css: PomodoroStatsView component with proper BEM scoping - styles/settings-view.css: SettingsView component with proper BEM scoping Run 'npm run build-css' to regenerate this file. */ /* ===== VARIABLES.CSS ===== */ /* Material 3 Expressive Design System Variables (2025) */ :root { /* ================================================ SPACING SYSTEM - Optimized 4dp Grid Base for Compact Design ================================================ */ /* Material 3 Expressive spacing tokens - more compact for desktop */ --cs-spacing-xs: 2px; /* 0.5 units - tighter for compact design */ --cs-spacing-sm: 4px; /* 1 unit - reduced base grid */ --cs-spacing-md: 8px; /* 2 units - more compact */ --cs-spacing-lg: 12px; /* 3 units - reduced from 24px */ --cs-spacing-xl: 16px; /* 4 units - more compact */ --cs-spacing-xxl: 24px; /* 6 units - significantly reduced */ /* ================================================ MATERIAL 3 EXPRESSIVE ELEVATION SYSTEM ================================================ */ /* Enhanced elevation shadows with more personality and depth */ --cs-elevation-0: none; --cs-elevation-1: 0 1px 2px rgba(0, 0, 0, 0.12), 0 1px 3px rgba(0, 0, 0, 0.06); --cs-elevation-2: 0 2px 4px rgba(0, 0, 0, 0.12), 0 2px 6px rgba(0, 0, 0, 0.08); --cs-elevation-3: 0 3px 6px rgba(0, 0, 0, 0.12), 0 3px 9px rgba(0, 0, 0, 0.08); --cs-elevation-4: 0 4px 8px rgba(0, 0, 0, 0.12), 0 4px 12px rgba(0, 0, 0, 0.08); --cs-elevation-5: 0 6px 12px rgba(0, 0, 0, 0.12), 0 6px 18px rgba(0, 0, 0, 0.08); /* Removed expressive shadow variants - rely on standard elevation system */ /* Surface container colors for elevation */ --cs-surface-container-lowest: var(--background-primary); --cs-surface-container-low: var(--background-primary-alt); --cs-surface-container: var(--background-secondary); --cs-surface-container-high: var(--background-secondary-alt); --cs-surface-container-highest: var(--background-modifier-cover); /* ================================================ MATERIAL 3 EXPRESSIVE TYPOGRAPHY SCALE ================================================ */ /* Display - More expressive and compact for desktop use */ --cs-text-display-large: 2.75rem; /* 44px - reduced from 56px */ --cs-text-display-medium: 2.25rem; /* 36px - reduced from 45px */ --cs-text-display-small: 1.875rem; /* 30px - reduced from 36px */ /* Headlines - Optimized for desktop density */ --cs-text-headline-large: 1.75rem; /* 28px - reduced from 32px */ --cs-text-headline-medium: 1.5rem; /* 24px - reduced from 28px */ --cs-text-headline-small: 1.25rem; /* 20px - reduced from 24px */ /* Titles - Compact yet readable */ --cs-text-title-large: 1.125rem; /* 18px - reduced from 22px */ --cs-text-title-medium: 0.875rem; /* 14px - reduced from 16px */ --cs-text-title-small: 0.75rem; /* 12px - reduced from 14px */ /* Body - Optimized for readability and compactness */ --cs-text-body-large: 0.875rem; /* 14px - reduced from 16px */ --cs-text-body-medium: 0.75rem; /* 12px - reduced from 14px */ --cs-text-body-small: 0.6875rem; /* 11px - slightly reduced */ /* Labels - Compact component text */ --cs-text-label-large: 0.75rem; /* 12px - reduced from 14px */ --cs-text-label-medium: 0.6875rem; /* 11px - slightly reduced */ --cs-text-label-small: 0.625rem; /* 10px - more compact */ /* Legacy typography for compatibility */ --cs-text-xs: var(--cs-text-label-small); --cs-text-sm: var(--cs-text-label-medium); --cs-text-base: var(--cs-text-body-medium); --cs-text-md: var(--cs-text-body-large); --cs-text-lg: var(--cs-text-title-medium); --cs-text-xl: var(--cs-text-title-large); --cs-text-2xl: var(--cs-text-headline-small); /* ================================================ EXPRESSIVE BORDER RADIUS SYSTEM ================================================ */ /* Material 3 Expressive corner radius tokens - more dynamic and personality-driven */ --cs-radius-xs: 2px; /* Extra small - more subtle */ --cs-radius-sm: 6px; /* Small - slightly more rounded */ --cs-radius-md: 10px; /* Medium - more organic feel */ --cs-radius-lg: 14px; /* Large - enhanced personality */ --cs-radius-xl: 20px; /* Extra large - more expressive */ --cs-radius-xxl: 28px; /* Extra extra large - bold expression */ --cs-radius-full: 50%; /* Full/pill - unchanged */ /* Removed expressive radius variations - keep consistent radius system */ /* ================================================ COMPACT COMPONENT SIZING ================================================ */ /* Touch targets - Optimized for desktop with compact design */ --cs-touch-target: 36px; /* Reduced from 48px for compactness */ --cs-touch-target-lg: 44px; /* Reduced from 56px */ --cs-touch-target-dense: 28px; /* More compact dense layouts */ /* Button heights - More compact for desktop */ --cs-button-height-sm: 24px; /* Reduced from 32px */ --cs-button-height-md: 32px; /* Reduced from 40px */ --cs-button-height-lg: var(--cs-touch-target); /* Input heights - Compact but usable */ --cs-input-height-sm: 24px; /* Reduced from 32px */ --cs-input-height-md: 32px; /* Reduced from 40px */ --cs-input-height-lg: var(--cs-touch-target); /* Icon sizes - Proportionally adjusted */ --cs-icon-sm: 14px; /* Reduced from 16px */ --cs-icon-md: 20px; /* Reduced from 24px */ --cs-icon-lg: 28px; /* Reduced from 32px */ /* ================================================ EXPRESSIVE MOTION PHYSICS SYSTEM ================================================ */ /* Material 3 Expressive motion tokens - enhanced with spatial springs */ --cs-motion-duration-instant: 25ms; /* Near-instant feedback */ --cs-motion-duration-short1: 75ms; /* Very quick interactions */ --cs-motion-duration-short2: 120ms; /* Quick interactions */ --cs-motion-duration-short3: 180ms; /* Standard interactions */ --cs-motion-duration-short4: 240ms; /* Slightly longer interactions */ --cs-motion-duration-medium1: 300ms; /* Medium duration */ --cs-motion-duration-medium2: 360ms; /* Medium-long duration */ --cs-motion-duration-medium3: 420ms; /* Longer interactions */ --cs-motion-duration-medium4: 480ms; /* Long interactions */ --cs-motion-duration-long1: 540ms; /* Very long interactions */ --cs-motion-duration-long2: 600ms; /* Extra long */ /* Enhanced easing curves for more natural, physics-based motion */ --cs-motion-easing-linear: cubic-bezier(0, 0, 1, 1); --cs-motion-easing-standard: cubic-bezier(0.2, 0, 0, 1); --cs-motion-easing-standard-accelerate: cubic-bezier(0.3, 0, 1, 1); --cs-motion-easing-standard-decelerate: cubic-bezier(0, 0, 0, 1); --cs-motion-easing-emphasized: cubic-bezier(0.2, 0, 0, 1); --cs-motion-easing-emphasized-accelerate: cubic-bezier(0.3, 0, 0.8, 0.15); --cs-motion-easing-emphasized-decelerate: cubic-bezier(0.05, 0.7, 0.1, 1); /* Simplified motion system - keep only essential easing curves */ --cs-motion-easing-spring: cubic-bezier(0.175, 0.885, 0.32, 1.1); /* Simplified transition tokens */ --cs-transition-instant: var(--cs-motion-duration-instant) var(--cs-motion-easing-standard); --cs-transition-fast: var(--cs-motion-duration-short2) var(--cs-motion-easing-standard); --cs-transition-normal: var(--cs-motion-duration-short3) var(--cs-motion-easing-spring); --cs-transition-slow: var(--cs-motion-duration-medium1) var(--cs-motion-easing-emphasized); /* ================================================ STATE SYSTEM ================================================ */ /* Opacity values for different states */ --cs-state-hover: 0.08; --cs-state-focus: 0.12; --cs-state-pressed: 0.16; --cs-state-dragged: 0.16; --cs-state-disabled: 0.38; /* ================================================ Z-INDEX SYSTEM ================================================ */ /* Layer hierarchy for proper stacking */ --cs-z-base: 0; --cs-z-sticky: 100; --cs-z-fixed: 200; --cs-z-overlay: 300; --cs-z-dropdown: 1000; --cs-z-tooltip: 2000; --cs-z-modal: 3000; --cs-z-notification: 4000; /* Simplified Color System - Rely more on theme colors */ /* Only define colors when theme doesn't provide suitable alternatives */ /* Blue scale for notes and information */ --cs-blue-100: rgba(59, 130, 246, 0.1); /* Light blue background for scheduled tasks */ --cs-blue-300: var(--color-blue, #60a5fa); --cs-blue-400: var(--color-blue, #3b82f6); --cs-blue-500: var(--color-blue, #2563eb); /* Purple scale for special items */ --cs-purple-100: rgba(139, 92, 246, 0.1); /* Light purple background for daily notes */ --cs-purple-300: var(--color-purple, #a78bfa); --cs-purple-400: var(--color-purple, #8b5cf6); --cs-purple-500: var(--color-purple, #7c3aed); /* Use theme's muted colors */ --cs-gray-100: rgba(107, 114, 128, 0.1); /* Light gray background for archived tasks */ --cs-gray-300: var(--background-modifier-border); --cs-gray-400: var(--background-modifier-border-hover); --cs-gray-500: var(--text-muted); --cs-gray-600: var(--text-faint); /* Red and green gradient colors for due dates and completed tasks */ --cs-red-100: rgba(239, 68, 68, 0.1); /* Light red background for due tasks */ --cs-green-100: rgba(34, 197, 94, 0.1); /* Light green background for completed tasks */ /* Fixed semantic usage for UI elements (not user-customizable) */ /* Notes heatmap - blue intensities for calendar */ --cs-color-notes-light: var(--cs-blue-300); --cs-color-notes-medium: var(--cs-blue-400); --cs-color-notes-heavy: var(--cs-blue-500); /* Special item colors (daily notes, recurring) */ --cs-color-daily-note: var(--cs-purple-300); --cs-color-recurring: var(--cs-purple-400); /* Archived/inactive content */ --cs-color-archived: var(--cs-gray-500); /* Note: Status and Priority colors are user-customizable via settings */ /* They are injected as CSS variables: --status-{value}-color and --priority-{value}-color */ /* Default fallbacks for when custom colors aren't loaded yet */ --cs-color-status-fallback: var(--text-muted); --cs-color-priority-fallback: var(--text-muted); /* Legacy component sizing - using updated values from above */ /* Z-index scale */ --cs-z-dropdown: 1000; --cs-z-modal: 2000; --cs-z-tooltip: 3000; /* Shadow system */ --cs-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05); --cs-shadow-md: 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 2px rgba(0, 0, 0, 0.1); --cs-shadow-lg: 0 4px 12px rgba(0, 0, 0, 0.15); --cs-shadow-xl: 0 6px 12px rgba(0, 0, 0, 0.25); } /* ================================================ TASKNOTES PLUGIN SCOPED VARIABLES ================================================ */ .tasknotes-plugin { /* ================================================ SCOPED THEME INTEGRATION ================================================ */ /* Base & Text Colors - Map to Obsidian theme variables */ --tn-bg-primary: var(--background-primary); --tn-bg-secondary: var(--background-secondary); --tn-bg-primary-alt: var(--background-primary-alt, var(--background-primary)); --tn-bg-secondary-alt: var(--background-secondary-alt, var(--background-secondary)); --tn-text-normal: var(--text-normal); --tn-text-muted: var(--text-muted); --tn-text-faint: var(--text-faint); --tn-text-accent: var(--interactive-accent); /* Borders & Dividers - Map to Obsidian theme variables */ --tn-border-color: var(--background-modifier-border); --tn-border-color-hover: var(--background-modifier-border-hover); --tn-border-color-focus: var(--background-modifier-border-focus); --tn-border-color-interactive: var(--interactive-accent); /* Interactive States - Map to Obsidian theme variables */ --tn-interactive-normal: var(--interactive-normal); --tn-interactive-hover: color-mix(in srgb, var(--tn-interactive-accent) 8%, transparent); --tn-interactive-accent: var(--interactive-accent); --tn-interactive-accent-hover: var(--interactive-accent-hover); --tn-interactive-success: var(--interactive-success); /* Semantic Colors - Use Obsidian's color palette when available */ --tn-color-success: var(--color-green, #00aa00); --tn-color-warning: var(--color-yellow, #ffa500); --tn-color-error: var(--color-red, #ff0000); --tn-color-info: var(--color-blue, #0066cc); --tn-color-overdue: var(--color-red, #ff0000); /* ================================================ SCOPED SPACING SYSTEM (inherit from design system) ================================================ */ --tn-spacing-xs: var(--cs-spacing-xs); --tn-spacing-sm: var(--cs-spacing-sm); --tn-spacing-md: var(--cs-spacing-md); --tn-spacing-lg: var(--cs-spacing-lg); --tn-spacing-xl: var(--cs-spacing-xl); --tn-spacing-xxl: var(--cs-spacing-xxl); /* ================================================ SCOPED TYPOGRAPHY SYSTEM (inherit from design system) ================================================ */ --tn-font-size-xs: var(--cs-text-label-small); --tn-font-size-sm: var(--cs-text-label-medium); --tn-font-size-md: var(--cs-text-body-medium); --tn-font-size-lg: var(--cs-text-body-large); --tn-font-size-xl: var(--cs-text-title-medium); --tn-font-size-2xl: var(--cs-text-title-large); /* Typography weights and styles */ --tn-font-weight-normal: 400; --tn-font-weight-medium: 500; --tn-font-weight-semibold: 600; --tn-font-weight-bold: 700; /* ================================================ SCOPED BORDERS & SHADOWS (inherit from design system) ================================================ */ --tn-radius-xs: var(--cs-radius-xs); --tn-radius-sm: var(--cs-radius-sm); --tn-radius-md: var(--cs-radius-md); --tn-radius-lg: var(--cs-radius-lg); --tn-radius-xl: var(--cs-radius-xl); --tn-radius-full: var(--cs-radius-full); --tn-shadow-light: var(--cs-elevation-1); --tn-shadow-medium: var(--cs-elevation-2); --tn-shadow-strong: var(--cs-elevation-3); --tn-shadow-hover: var(--cs-elevation-4); /* ================================================ SCOPED MOTION SYSTEM (inherit from design system) ================================================ */ --tn-transition-fast: var(--cs-transition-fast); --tn-transition-normal: var(--cs-transition-normal); --tn-transition-slow: var(--cs-transition-slow); /* ================================================ SCOPED COMPONENT SIZING (inherit from design system) ================================================ */ --tn-button-height-sm: var(--cs-button-height-sm); --tn-button-height-md: var(--cs-button-height-md); --tn-button-height-lg: var(--cs-button-height-lg); --tn-input-height-sm: var(--cs-input-height-sm); --tn-input-height-md: var(--cs-input-height-md); --tn-input-height-lg: var(--cs-input-height-lg); --tn-icon-sm: var(--cs-icon-sm); --tn-icon-md: var(--cs-icon-md); --tn-icon-lg: var(--cs-icon-lg); /* ================================================ SCOPED Z-INDEX SYSTEM (inherit from design system) ================================================ */ --tn-z-base: var(--cs-z-base); --tn-z-sticky: var(--cs-z-sticky); --tn-z-dropdown: var(--cs-z-dropdown); --tn-z-modal: var(--cs-z-modal); --tn-z-tooltip: var(--cs-z-tooltip); --tn-z-notification: var(--cs-z-notification); /* ================================================ PLUGIN-SPECIFIC VARIABLES ================================================ */ /* Status & Priority colors are dynamically injected by StatusManager & PriorityManager */ /* These are fallbacks for when dynamic colors aren't loaded yet */ --tn-color-status-fallback: var(--tn-text-muted); --tn-color-priority-fallback: var(--tn-text-muted); /* Special component colors */ --tn-color-archived: var(--cs-color-archived); --tn-color-daily-note: var(--cs-color-daily-note); --tn-color-recurring: var(--cs-color-recurring); /* Calendar and heatmap colors */ --tn-color-notes-light: var(--cs-color-notes-light); --tn-color-notes-medium: var(--cs-color-notes-medium); --tn-color-notes-heavy: var(--cs-color-notes-heavy); } /* ===== UTILITIES.CSS ===== */ /* ================================================ TASKNOTES SCOPED UTILITY CLASSES ================================================ This file contains a comprehensive set of utility classes for the ChronoSync/TaskNotes plugin. All utilities are properly scoped under .tasknotes-plugin and follow the established naming conventions. Naming Convention: .tn-{property}-{value} All utilities use --tn- CSS variables for consistency Categories: - Layout Utilities (flexbox, grid, positioning) - Spacing Utilities (margin, padding, gap) - Typography Utilities (text alignment, font styles) - Display Utilities (visibility, display types) - Background & Border Utilities - State Utilities (hover, focus, loading) - Animation Utilities ================================================ */ /* ================================================ LAYOUT UTILITIES - FLEXBOX ================================================ */ .tasknotes-plugin .tn-flex { display: flex; } .tasknotes-plugin .tn-flex-inline { display: inline-flex; } /* Flex Direction */ .tasknotes-plugin .tn-flex-row { flex-direction: row; } .tasknotes-plugin .tn-flex-col { flex-direction: column; } .tasknotes-plugin .tn-flex-row-reverse { flex-direction: row-reverse; } .tasknotes-plugin .tn-flex-col-reverse { flex-direction: column-reverse; } /* Flex Wrap */ .tasknotes-plugin .tn-flex-wrap { flex-wrap: wrap; } .tasknotes-plugin .tn-flex-nowrap { flex-wrap: nowrap; } .tasknotes-plugin .tn-flex-wrap-reverse { flex-wrap: wrap-reverse; } /* Justify Content */ .tasknotes-plugin .tn-justify-start { justify-content: flex-start; } .tasknotes-plugin .tn-justify-end { justify-content: flex-end; } .tasknotes-plugin .tn-justify-center { justify-content: center; } .tasknotes-plugin .tn-justify-between { justify-content: space-between; } .tasknotes-plugin .tn-justify-around { justify-content: space-around; } .tasknotes-plugin .tn-justify-evenly { justify-content: space-evenly; } /* Align Items */ .tasknotes-plugin .tn-items-start { align-items: flex-start; } .tasknotes-plugin .tn-items-end { align-items: flex-end; } .tasknotes-plugin .tn-items-center { align-items: center; } .tasknotes-plugin .tn-items-baseline { align-items: baseline; } .tasknotes-plugin .tn-items-stretch { align-items: stretch; } /* Align Self */ .tasknotes-plugin .tn-self-auto { align-self: auto; } .tasknotes-plugin .tn-self-start { align-self: flex-start; } .tasknotes-plugin .tn-self-end { align-self: flex-end; } .tasknotes-plugin .tn-self-center { align-self: center; } .tasknotes-plugin .tn-self-stretch { align-self: stretch; } /* Flex Growth and Shrink */ .tasknotes-plugin .tn-flex-1 { flex: 1 1 0%; } .tasknotes-plugin .tn-flex-auto { flex: 1 1 auto; } .tasknotes-plugin .tn-flex-initial { flex: 0 1 auto; } .tasknotes-plugin .tn-flex-none { flex: none; } .tasknotes-plugin .tn-grow { flex-grow: 1; } .tasknotes-plugin .tn-grow-0 { flex-grow: 0; } .tasknotes-plugin .tn-shrink { flex-shrink: 1; } .tasknotes-plugin .tn-shrink-0 { flex-shrink: 0; } /* Common Flex Combinations */ .tasknotes-plugin .tn-flex-center { display: flex; align-items: center; justify-content: center; } .tasknotes-plugin .tn-flex-between { display: flex; justify-content: space-between; } .tasknotes-plugin .tn-flex-around { display: flex; justify-content: space-around; } .tasknotes-plugin .tn-flex-evenly { display: flex; justify-content: space-evenly; } .tasknotes-plugin .tn-flex-col-center { display: flex; flex-direction: column; align-items: center; } .tasknotes-plugin .tn-flex-col-between { display: flex; flex-direction: column; justify-content: space-between; } /* ================================================ LAYOUT UTILITIES - GRID ================================================ */ .tasknotes-plugin .tn-grid { display: grid; } .tasknotes-plugin .tn-grid-inline { display: inline-grid; } /* Grid Template Columns */ .tasknotes-plugin .tn-grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); } .tasknotes-plugin .tn-grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } .tasknotes-plugin .tn-grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } .tasknotes-plugin .tn-grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); } .tasknotes-plugin .tn-grid-cols-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); } .tasknotes-plugin .tn-grid-cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); } .tasknotes-plugin .tn-grid-cols-7 { grid-template-columns: repeat(7, minmax(0, 1fr)); } .tasknotes-plugin .tn-grid-cols-12 { grid-template-columns: repeat(12, minmax(0, 1fr)); } /* Grid Template Rows */ .tasknotes-plugin .tn-grid-rows-1 { grid-template-rows: repeat(1, minmax(0, 1fr)); } .tasknotes-plugin .tn-grid-rows-2 { grid-template-rows: repeat(2, minmax(0, 1fr)); } .tasknotes-plugin .tn-grid-rows-3 { grid-template-rows: repeat(3, minmax(0, 1fr)); } .tasknotes-plugin .tn-grid-rows-4 { grid-template-rows: repeat(4, minmax(0, 1fr)); } /* Grid Column Span */ .tasknotes-plugin .tn-col-span-1 { grid-column: span 1 / span 1; } .tasknotes-plugin .tn-col-span-2 { grid-column: span 2 / span 2; } .tasknotes-plugin .tn-col-span-3 { grid-column: span 3 / span 3; } .tasknotes-plugin .tn-col-span-4 { grid-column: span 4 / span 4; } .tasknotes-plugin .tn-col-span-full { grid-column: 1 / -1; } /* Grid Row Span */ .tasknotes-plugin .tn-row-span-1 { grid-row: span 1 / span 1; } .tasknotes-plugin .tn-row-span-2 { grid-row: span 2 / span 2; } .tasknotes-plugin .tn-row-span-3 { grid-row: span 3 / span 3; } .tasknotes-plugin .tn-row-span-full { grid-row: 1 / -1; } /* ================================================ LAYOUT UTILITIES - POSITIONING ================================================ */ .tasknotes-plugin .tn-static { position: static; } .tasknotes-plugin .tn-fixed { position: fixed; } .tasknotes-plugin .tn-absolute { position: absolute; } .tasknotes-plugin .tn-relative { position: relative; } .tasknotes-plugin .tn-sticky { position: sticky; } /* Positioning Values */ .tasknotes-plugin .tn-inset-0 { top: 0; right: 0; bottom: 0; left: 0; } .tasknotes-plugin .tn-top-0 { top: 0; } .tasknotes-plugin .tn-right-0 { right: 0; } .tasknotes-plugin .tn-bottom-0 { bottom: 0; } .tasknotes-plugin .tn-left-0 { left: 0; } .tasknotes-plugin .tn-top-auto { top: auto; } .tasknotes-plugin .tn-right-auto { right: auto; } .tasknotes-plugin .tn-bottom-auto { bottom: auto; } .tasknotes-plugin .tn-left-auto { left: auto; } /* ================================================ SPACING UTILITIES - MARGIN ================================================ */ /* All sides */ .tasknotes-plugin .tn-m-0 { margin: 0; } .tasknotes-plugin .tn-m-xs { margin: var(--tn-spacing-xs); } .tasknotes-plugin .tn-m-sm { margin: var(--tn-spacing-sm); } .tasknotes-plugin .tn-m-md { margin: var(--tn-spacing-md); } .tasknotes-plugin .tn-m-lg { margin: var(--tn-spacing-lg); } .tasknotes-plugin .tn-m-xl { margin: var(--tn-spacing-xl); } .tasknotes-plugin .tn-m-auto { margin: auto; } /* Horizontal */ .tasknotes-plugin .tn-mx-0 { margin-left: 0; margin-right: 0; } .tasknotes-plugin .tn-mx-xs { margin-left: var(--tn-spacing-xs); margin-right: var(--tn-spacing-xs); } .tasknotes-plugin .tn-mx-sm { margin-left: var(--tn-spacing-sm); margin-right: var(--tn-spacing-sm); } .tasknotes-plugin .tn-mx-md { margin-left: var(--tn-spacing-md); margin-right: var(--tn-spacing-md); } .tasknotes-plugin .tn-mx-lg { margin-left: var(--tn-spacing-lg); margin-right: var(--tn-spacing-lg); } .tasknotes-plugin .tn-mx-xl { margin-left: var(--tn-spacing-xl); margin-right: var(--tn-spacing-xl); } .tasknotes-plugin .tn-mx-auto { margin-left: auto; margin-right: auto; } /* Vertical */ .tasknotes-plugin .tn-my-0 { margin-top: 0; margin-bottom: 0; } .tasknotes-plugin .tn-my-xs { margin-top: var(--tn-spacing-xs); margin-bottom: var(--tn-spacing-xs); } .tasknotes-plugin .tn-my-sm { margin-top: var(--tn-spacing-sm); margin-bottom: var(--tn-spacing-sm); } .tasknotes-plugin .tn-my-md { margin-top: var(--tn-spacing-md); margin-bottom: var(--tn-spacing-md); } .tasknotes-plugin .tn-my-lg { margin-top: var(--tn-spacing-lg); margin-bottom: var(--tn-spacing-lg); } .tasknotes-plugin .tn-my-xl { margin-top: var(--tn-spacing-xl); margin-bottom: var(--tn-spacing-xl); } .tasknotes-plugin .tn-my-auto { margin-top: auto; margin-bottom: auto; } /* Individual sides */ .tasknotes-plugin .tn-mt-0 { margin-top: 0; } .tasknotes-plugin .tn-mt-xs { margin-top: var(--tn-spacing-xs); } .tasknotes-plugin .tn-mt-sm { margin-top: var(--tn-spacing-sm); } .tasknotes-plugin .tn-mt-md { margin-top: var(--tn-spacing-md); } .tasknotes-plugin .tn-mt-lg { margin-top: var(--tn-spacing-lg); } .tasknotes-plugin .tn-mt-xl { margin-top: var(--tn-spacing-xl); } .tasknotes-plugin .tn-mt-auto { margin-top: auto; } .tasknotes-plugin .tn-mr-0 { margin-right: 0; } .tasknotes-plugin .tn-mr-xs { margin-right: var(--tn-spacing-xs); } .tasknotes-plugin .tn-mr-sm { margin-right: var(--tn-spacing-sm); } .tasknotes-plugin .tn-mr-md { margin-right: var(--tn-spacing-md); } .tasknotes-plugin .tn-mr-lg { margin-right: var(--tn-spacing-lg); } .tasknotes-plugin .tn-mr-xl { margin-right: var(--tn-spacing-xl); } .tasknotes-plugin .tn-mr-auto { margin-right: auto; } .tasknotes-plugin .tn-mb-0 { margin-bottom: 0; } .tasknotes-plugin .tn-mb-xs { margin-bottom: var(--tn-spacing-xs); } .tasknotes-plugin .tn-mb-sm { margin-bottom: var(--tn-spacing-sm); } .tasknotes-plugin .tn-mb-md { margin-bottom: var(--tn-spacing-md); } .tasknotes-plugin .tn-mb-lg { margin-bottom: var(--tn-spacing-lg); } .tasknotes-plugin .tn-mb-xl { margin-bottom: var(--tn-spacing-xl); } .tasknotes-plugin .tn-mb-auto { margin-bottom: auto; } .tasknotes-plugin .tn-ml-0 { margin-left: 0; } .tasknotes-plugin .tn-ml-xs { margin-left: var(--tn-spacing-xs); } .tasknotes-plugin .tn-ml-sm { margin-left: var(--tn-spacing-sm); } .tasknotes-plugin .tn-ml-md { margin-left: var(--tn-spacing-md); } .tasknotes-plugin .tn-ml-lg { margin-left: var(--tn-spacing-lg); } .tasknotes-plugin .tn-ml-xl { margin-left: var(--tn-spacing-xl); } .tasknotes-plugin .tn-ml-auto { margin-left: auto; } /* ================================================ SPACING UTILITIES - PADDING ================================================ */ /* All sides */ .tasknotes-plugin .tn-p-0 { padding: 0; } .tasknotes-plugin .tn-p-xs { padding: var(--tn-spacing-xs); } .tasknotes-plugin .tn-p-sm { padding: var(--tn-spacing-sm); } .tasknotes-plugin .tn-p-md { padding: var(--tn-spacing-md); } .tasknotes-plugin .tn-p-lg { padding: var(--tn-spacing-lg); } .tasknotes-plugin .tn-p-xl { padding: var(--tn-spacing-xl); } /* Horizontal */ .tasknotes-plugin .tn-px-0 { padding-left: 0; padding-right: 0; } .tasknotes-plugin .tn-px-xs { padding-left: var(--tn-spacing-xs); padding-right: var(--tn-spacing-xs); } .tasknotes-plugin .tn-px-sm { padding-left: var(--tn-spacing-sm); padding-right: var(--tn-spacing-sm); } .tasknotes-plugin .tn-px-md { padding-left: var(--tn-spacing-md); padding-right: var(--tn-spacing-md); } .tasknotes-plugin .tn-px-lg { padding-left: var(--tn-spacing-lg); padding-right: var(--tn-spacing-lg); } .tasknotes-plugin .tn-px-xl { padding-left: var(--tn-spacing-xl); padding-right: var(--tn-spacing-xl); } /* Vertical */ .tasknotes-plugin .tn-py-0 { padding-top: 0; padding-bottom: 0; } .tasknotes-plugin .tn-py-xs { padding-top: var(--tn-spacing-xs); padding-bottom: var(--tn-spacing-xs); } .tasknotes-plugin .tn-py-sm { padding-top: var(--tn-spacing-sm); padding-bottom: var(--tn-spacing-sm); } .tasknotes-plugin .tn-py-md { padding-top: var(--tn-spacing-md); padding-bottom: var(--tn-spacing-md); } .tasknotes-plugin .tn-py-lg { padding-top: var(--tn-spacing-lg); padding-bottom: var(--tn-spacing-lg); } .tasknotes-plugin .tn-py-xl { padding-top: var(--tn-spacing-xl); padding-bottom: var(--tn-spacing-xl); } /* Individual sides */ .tasknotes-plugin .tn-pt-0 { padding-top: 0; } .tasknotes-plugin .tn-pt-xs { padding-top: var(--tn-spacing-xs); } .tasknotes-plugin .tn-pt-sm { padding-top: var(--tn-spacing-sm); } .tasknotes-plugin .tn-pt-md { padding-top: var(--tn-spacing-md); } .tasknotes-plugin .tn-pt-lg { padding-top: var(--tn-spacing-lg); } .tasknotes-plugin .tn-pt-xl { padding-top: var(--tn-spacing-xl); } .tasknotes-plugin .tn-pr-0 { padding-right: 0; } .tasknotes-plugin .tn-pr-xs { padding-right: var(--tn-spacing-xs); } .tasknotes-plugin .tn-pr-sm { padding-right: var(--tn-spacing-sm); } .tasknotes-plugin .tn-pr-md { padding-right: var(--tn-spacing-md); } .tasknotes-plugin .tn-pr-lg { padding-right: var(--tn-spacing-lg); } .tasknotes-plugin .tn-pr-xl { padding-right: var(--tn-spacing-xl); } .tasknotes-plugin .tn-pb-0 { padding-bottom: 0; } .tasknotes-plugin .tn-pb-xs { padding-bottom: var(--tn-spacing-xs); } .tasknotes-plugin .tn-pb-sm { padding-bottom: var(--tn-spacing-sm); } .tasknotes-plugin .tn-pb-md { padding-bottom: var(--tn-spacing-md); } .tasknotes-plugin .tn-pb-lg { padding-bottom: var(--tn-spacing-lg); } .tasknotes-plugin .tn-pb-xl { padding-bottom: var(--tn-spacing-xl); } .tasknotes-plugin .tn-pl-0 { padding-left: 0; } .tasknotes-plugin .tn-pl-xs { padding-left: var(--tn-spacing-xs); } .tasknotes-plugin .tn-pl-sm { padding-left: var(--tn-spacing-sm); } .tasknotes-plugin .tn-pl-md { padding-left: var(--tn-spacing-md); } .tasknotes-plugin .tn-pl-lg { padding-left: var(--tn-spacing-lg); } .tasknotes-plugin .tn-pl-xl { padding-left: var(--tn-spacing-xl); } /* ================================================ SPACING UTILITIES - GAP ================================================ */ .tasknotes-plugin .tn-gap-0 { gap: 0; } .tasknotes-plugin .tn-gap-xs { gap: var(--tn-spacing-xs); } .tasknotes-plugin .tn-gap-sm { gap: var(--tn-spacing-sm); } .tasknotes-plugin .tn-gap-md { gap: var(--tn-spacing-md); } .tasknotes-plugin .tn-gap-lg { gap: var(--tn-spacing-lg); } .tasknotes-plugin .tn-gap-xl { gap: var(--tn-spacing-xl); } /* Column Gap */ .tasknotes-plugin .tn-gap-x-0 { column-gap: 0; } .tasknotes-plugin .tn-gap-x-xs { column-gap: var(--tn-spacing-xs); } .tasknotes-plugin .tn-gap-x-sm { column-gap: var(--tn-spacing-sm); } .tasknotes-plugin .tn-gap-x-md { column-gap: var(--tn-spacing-md); } .tasknotes-plugin .tn-gap-x-lg { column-gap: var(--tn-spacing-lg); } .tasknotes-plugin .tn-gap-x-xl { column-gap: var(--tn-spacing-xl); } /* Row Gap */ .tasknotes-plugin .tn-gap-y-0 { row-gap: 0; } .tasknotes-plugin .tn-gap-y-xs { row-gap: var(--tn-spacing-xs); } .tasknotes-plugin .tn-gap-y-sm { row-gap: var(--tn-spacing-sm); } .tasknotes-plugin .tn-gap-y-md { row-gap: var(--tn-spacing-md); } .tasknotes-plugin .tn-gap-y-lg { row-gap: var(--tn-spacing-lg); } .tasknotes-plugin .tn-gap-y-xl { row-gap: var(--tn-spacing-xl); } /* ================================================ DISPLAY UTILITIES ================================================ */ .tasknotes-plugin .tn-block { display: block; } .tasknotes-plugin .tn-inline-block { display: inline-block; } .tasknotes-plugin .tn-inline { display: inline; } .tasknotes-plugin .tn-hidden { display: none !important; } .tasknotes-plugin .tn-table { display: table; } .tasknotes-plugin .tn-table-row { display: table-row; } .tasknotes-plugin .tn-table-cell { display: table-cell; } /* ================================================ VISIBILITY UTILITIES ================================================ */ .tasknotes-plugin .tn-visible { visibility: visible; } .tasknotes-plugin .tn-invisible { visibility: hidden; } .tasknotes-plugin .tn-collapse { visibility: collapse; } /* ================================================ TYPOGRAPHY UTILITIES ================================================ */ /* Text Alignment */ .tasknotes-plugin .tn-text-left { text-align: left; } .tasknotes-plugin .tn-text-center { text-align: center; } .tasknotes-plugin .tn-text-right { text-align: right; } .tasknotes-plugin .tn-text-justify { text-align: justify; } /* Font Weight */ .tasknotes-plugin .tn-font-thin { font-weight: 100; } .tasknotes-plugin .tn-font-light { font-weight: 300; } .tasknotes-plugin .tn-font-normal { font-weight: var(--tn-font-weight-normal); } .tasknotes-plugin .tn-font-medium { font-weight: var(--tn-font-weight-medium); } .tasknotes-plugin .tn-font-semibold { font-weight: var(--tn-font-weight-semibold); } .tasknotes-plugin .tn-font-bold { font-weight: var(--tn-font-weight-bold); } /* Font Size */ .tasknotes-plugin .tn-text-xs { font-size: var(--tn-font-size-xs); } .tasknotes-plugin .tn-text-sm { font-size: var(--tn-font-size-sm); } .tasknotes-plugin .tn-text-base { font-size: var(--tn-font-size-md); } .tasknotes-plugin .tn-text-lg { font-size: var(--tn-font-size-lg); } .tasknotes-plugin .tn-text-xl { font-size: var(--tn-font-size-xl); } .tasknotes-plugin .tn-text-2xl { font-size: var(--tn-font-size-2xl); } /* Text Transform */ .tasknotes-plugin .tn-uppercase { text-transform: uppercase; } .tasknotes-plugin .tn-lowercase { text-transform: lowercase; } .tasknotes-plugin .tn-capitalize { text-transform: capitalize; } .tasknotes-plugin .tn-normal-case { text-transform: none; } /* Text Decoration */ .tasknotes-plugin .tn-underline { text-decoration: underline; } .tasknotes-plugin .tn-line-through { text-decoration: line-through; } .tasknotes-plugin .tn-no-underline { text-decoration: none; } /* Line Height */ .tasknotes-plugin .tn-leading-none { line-height: 1; } .tasknotes-plugin .tn-leading-tight { line-height: 1.25; } .tasknotes-plugin .tn-leading-snug { line-height: 1.375; } .tasknotes-plugin .tn-leading-normal { line-height: 1.5; } .tasknotes-plugin .tn-leading-relaxed { line-height: 1.625; } .tasknotes-plugin .tn-leading-loose { line-height: 2; } /* Text Colors */ .tasknotes-plugin .tn-text-normal { color: var(--tn-text-normal); } .tasknotes-plugin .tn-text-muted { color: var(--tn-text-muted); } .tasknotes-plugin .tn-text-faint { color: var(--tn-text-faint); } .tasknotes-plugin .tn-text-accent { color: var(--tn-text-accent); } .tasknotes-plugin .tn-text-success { color: var(--tn-color-success); } .tasknotes-plugin .tn-text-warning { color: var(--tn-color-warning); } .tasknotes-plugin .tn-text-error { color: var(--tn-color-error); } .tasknotes-plugin .tn-text-info { color: var(--tn-color-info); } /* ================================================ BACKGROUND UTILITIES ================================================ */ .tasknotes-plugin .tn-bg-primary { background-color: var(--tn-bg-primary); } .tasknotes-plugin .tn-bg-secondary { background-color: var(--tn-bg-secondary); } .tasknotes-plugin .tn-bg-accent { background-color: var(--tn-interactive-accent); } .tasknotes-plugin .tn-bg-success { background-color: var(--tn-color-success); } .tasknotes-plugin .tn-bg-warning { background-color: var(--tn-color-warning); } .tasknotes-plugin .tn-bg-error { background-color: var(--tn-color-error); } .tasknotes-plugin .tn-bg-info { background-color: var(--tn-color-info); } .tasknotes-plugin .tn-bg-transparent { background-color: transparent; } /* ================================================ BORDER UTILITIES ================================================ */ /* Border Width */ .tasknotes-plugin .tn-border-0 { border-width: 0; } .tasknotes-plugin .tn-border { border-width: 1px; } .tasknotes-plugin .tn-border-2 { border-width: 2px; } .tasknotes-plugin .tn-border-t { border-top-width: 1px; } .tasknotes-plugin .tn-border-r { border-right-width: 1px; } .tasknotes-plugin .tn-border-b { border-bottom-width: 1px; } .tasknotes-plugin .tn-border-l { border-left-width: 1px; } /* Border Style */ .tasknotes-plugin .tn-border-solid { border-style: solid; } .tasknotes-plugin .tn-border-dashed { border-style: dashed; } .tasknotes-plugin .tn-border-dotted { border-style: dotted; } .tasknotes-plugin .tn-border-none { border-style: none; } /* Border Color */ .tasknotes-plugin .tn-border-normal { border-color: var(--tn-border-color); } .tasknotes-plugin .tn-border-hover { border-color: var(--tn-border-color-hover); } .tasknotes-plugin .tn-border-accent { border-color: var(--tn-interactive-accent); } .tasknotes-plugin .tn-border-success { border-color: var(--tn-color-success); } .tasknotes-plugin .tn-border-warning { border-color: var(--tn-color-warning); } .tasknotes-plugin .tn-border-error { border-color: var(--tn-color-error); } .tasknotes-plugin .tn-border-transparent { border-color: transparent; } /* Border Radius */ .tasknotes-plugin .tn-rounded-none { border-radius: 0; } .tasknotes-plugin .tn-rounded-xs { border-radius: var(--tn-radius-xs); } .tasknotes-plugin .tn-rounded-sm { border-radius: var(--tn-radius-sm); } .tasknotes-plugin .tn-rounded { border-radius: var(--tn-radius-md); } .tasknotes-plugin .tn-rounded-md { border-radius: var(--tn-radius-md); } .tasknotes-plugin .tn-rounded-lg { border-radius: var(--tn-radius-lg); } .tasknotes-plugin .tn-rounded-xl { border-radius: var(--tn-radius-xl); } .tasknotes-plugin .tn-rounded-full { border-radius: var(--tn-radius-full); } /* Individual corner radius */ .tasknotes-plugin .tn-rounded-t-sm { border-top-left-radius: var(--tn-radius-sm); border-top-right-radius: var(--tn-radius-sm); } .tasknotes-plugin .tn-rounded-r-sm { border-top-right-radius: var(--tn-radius-sm); border-bottom-right-radius: var(--tn-radius-sm); } .tasknotes-plugin .tn-rounded-b-sm { border-bottom-left-radius: var(--tn-radius-sm); border-bottom-right-radius: var(--tn-radius-sm); } .tasknotes-plugin .tn-rounded-l-sm { border-top-left-radius: var(--tn-radius-sm); border-bottom-left-radius: var(--tn-radius-sm); } /* ================================================ SHADOW UTILITIES ================================================ */ .tasknotes-plugin .tn-shadow-none { box-shadow: none; } .tasknotes-plugin .tn-shadow-light { box-shadow: var(--tn-shadow-light); } .tasknotes-plugin .tn-shadow { box-shadow: var(--tn-shadow-medium); } .tasknotes-plugin .tn-shadow-medium { box-shadow: var(--tn-shadow-medium); } .tasknotes-plugin .tn-shadow-strong { box-shadow: var(--tn-shadow-strong); } .tasknotes-plugin .tn-shadow-hover { box-shadow: var(--tn-shadow-hover); } /* ================================================ OVERFLOW UTILITIES ================================================ */ .tasknotes-plugin .tn-overflow-auto { overflow: auto; } .tasknotes-plugin .tn-overflow-hidden { overflow: hidden; } .tasknotes-plugin .tn-overflow-visible { overflow: visible; } .tasknotes-plugin .tn-overflow-scroll { overflow: scroll; } .tasknotes-plugin .tn-overflow-x-auto { overflow-x: auto; } .tasknotes-plugin .tn-overflow-x-hidden { overflow-x: hidden; } .tasknotes-plugin .tn-overflow-x-scroll { overflow-x: scroll; } .tasknotes-plugin .tn-overflow-y-auto { overflow-y: auto; } .tasknotes-plugin .tn-overflow-y-hidden { overflow-y: hidden; } .tasknotes-plugin .tn-overflow-y-scroll { overflow-y: scroll; } /* ================================================ SIZE UTILITIES ================================================ */ /* Width */ .tasknotes-plugin .tn-w-auto { width: auto; } .tasknotes-plugin .tn-w-full { width: 100%; } .tasknotes-plugin .tn-w-screen { width: 100vw; } .tasknotes-plugin .tn-w-min { width: min-content; } .tasknotes-plugin .tn-w-max { width: max-content; } .tasknotes-plugin .tn-w-fit { width: fit-content; } /* Specific widths */ .tasknotes-plugin .tn-w-0 { width: 0; } .tasknotes-plugin .tn-w-px { width: 1px; } .tasknotes-plugin .tn-w-1 { width: 0.25rem; } .tasknotes-plugin .tn-w-2 { width: 0.5rem; } .tasknotes-plugin .tn-w-4 { width: 1rem; } .tasknotes-plugin .tn-w-8 { width: 2rem; } .tasknotes-plugin .tn-w-12 { width: 3rem; } .tasknotes-plugin .tn-w-16 { width: 4rem; } .tasknotes-plugin .tn-w-20 { width: 5rem; } .tasknotes-plugin .tn-w-24 { width: 6rem; } /* Height */ .tasknotes-plugin .tn-h-auto { height: auto; } .tasknotes-plugin .tn-h-full { height: 100%; } .tasknotes-plugin .tn-h-screen { height: 100vh; } .tasknotes-plugin .tn-h-min { height: min-content; } .tasknotes-plugin .tn-h-max { height: max-content; } .tasknotes-plugin .tn-h-fit { height: fit-content; } /* Specific heights */ .tasknotes-plugin .tn-h-0 { height: 0; } .tasknotes-plugin .tn-h-px { height: 1px; } .tasknotes-plugin .tn-h-1 { height: 0.25rem; } .tasknotes-plugin .tn-h-2 { height: 0.5rem; } .tasknotes-plugin .tn-h-4 { height: 1rem; } .tasknotes-plugin .tn-h-8 { height: 2rem; } .tasknotes-plugin .tn-h-12 { height: 3rem; } .tasknotes-plugin .tn-h-16 { height: 4rem; } .tasknotes-plugin .tn-h-20 { height: 5rem; } .tasknotes-plugin .tn-h-24 { height: 6rem; } /* Min/Max Width */ .tasknotes-plugin .tn-min-w-0 { min-width: 0; } .tasknotes-plugin .tn-min-w-full { min-width: 100%; } .tasknotes-plugin .tn-max-w-xs { max-width: 20rem; } .tasknotes-plugin .tn-max-w-sm { max-width: 24rem; } .tasknotes-plugin .tn-max-w-md { max-width: 28rem; } .tasknotes-plugin .tn-max-w-lg { max-width: 32rem; } .tasknotes-plugin .tn-max-w-xl { max-width: 36rem; } .tasknotes-plugin .tn-max-w-full { max-width: 100%; } .tasknotes-plugin .tn-max-w-none { max-width: none; } /* Min/Max Height */ .tasknotes-plugin .tn-min-h-0 { min-height: 0; } .tasknotes-plugin .tn-min-h-full { min-height: 100%; } .tasknotes-plugin .tn-max-h-full { max-height: 100%; } .tasknotes-plugin .tn-max-h-screen { max-height: 100vh; } /* ================================================ Z-INDEX UTILITIES ================================================ */ .tasknotes-plugin .tn-z-0 { z-index: 0; } .tasknotes-plugin .tn-z-10 { z-index: 10; } .tasknotes-plugin .tn-z-20 { z-index: 20; } .tasknotes-plugin .tn-z-30 { z-index: 30; } .tasknotes-plugin .tn-z-40 { z-index: 40; } .tasknotes-plugin .tn-z-50 { z-index: 50; } .tasknotes-plugin .tn-z-auto { z-index: auto; } .tasknotes-plugin .tn-z-sticky { z-index: var(--tn-z-sticky); } .tasknotes-plugin .tn-z-dropdown { z-index: var(--tn-z-dropdown); } .tasknotes-plugin .tn-z-modal { z-index: var(--tn-z-modal); } .tasknotes-plugin .tn-z-tooltip { z-index: var(--tn-z-tooltip); } /* ================================================ CURSOR UTILITIES ================================================ */ .tasknotes-plugin .tn-cursor-auto { cursor: auto; } .tasknotes-plugin .tn-cursor-default { cursor: default; } .tasknotes-plugin .tn-cursor-pointer { cursor: var(--cursor); } .tasknotes-plugin .tn-cursor-wait { cursor: wait; } .tasknotes-plugin .tn-cursor-text { cursor: text; } .tasknotes-plugin .tn-cursor-move { cursor: move; } .tasknotes-plugin .tn-cursor-help { cursor: help; } .tasknotes-plugin .tn-cursor-not-allowed { cursor: not-allowed; } .tasknotes-plugin .tn-cursor-grab { cursor: grab; } .tasknotes-plugin .tn-cursor-grabbing { cursor: grabbing; } /* ================================================ USER SELECT UTILITIES ================================================ */ .tasknotes-plugin .tn-select-none { user-select: none; } .tasknotes-plugin .tn-select-text { user-select: text; } .tasknotes-plugin .tn-select-all { user-select: all; } .tasknotes-plugin .tn-select-auto { user-select: auto; } /* ================================================ POINTER EVENTS UTILITIES ================================================ */ .tasknotes-plugin .tn-pointer-events-none { pointer-events: none; } .tasknotes-plugin .tn-pointer-events-auto { pointer-events: auto; } /* ================================================ TRANSITIONS UTILITIES ================================================ */ .tasknotes-plugin .tn-transition-none { transition: none; } .tasknotes-plugin .tn-transition-fast { transition: all var(--tn-transition-fast); } .tasknotes-plugin .tn-transition { transition: all var(--tn-transition-normal); } .tasknotes-plugin .tn-transition-slow { transition: all var(--tn-transition-slow); } .tasknotes-plugin .tn-transition-colors { transition: color var(--tn-transition-normal), background-color var(--tn-transition-normal), border-color var(--tn-transition-normal); } .tasknotes-plugin .tn-transition-opacity { transition: opacity var(--tn-transition-normal); } .tasknotes-plugin .tn-transition-transform { transition: transform var(--tn-transition-normal); } /* ================================================ TRANSFORM UTILITIES ================================================ */ .tasknotes-plugin .tn-transform { transform: var(--tw-transform); } .tasknotes-plugin .tn-transform-none { transform: none; } /* Scale */ .tasknotes-plugin .tn-scale-0 { --tw-scale-x: 0; --tw-scale-y: 0; transform: scale(var(--tw-scale-x), var(--tw-scale-y)); } .tasknotes-plugin .tn-scale-50 { --tw-scale-x: 0.5; --tw-scale-y: 0.5; transform: scale(var(--tw-scale-x), var(--tw-scale-y)); } .tasknotes-plugin .tn-scale-75 { --tw-scale-x: 0.75; --tw-scale-y: 0.75; transform: scale(var(--tw-scale-x), var(--tw-scale-y)); } .tasknotes-plugin .tn-scale-90 { --tw-scale-x: 0.9; --tw-scale-y: 0.9; transform: scale(var(--tw-scale-x), var(--tw-scale-y)); } .tasknotes-plugin .tn-scale-95 { --tw-scale-x: 0.95; --tw-scale-y: 0.95; transform: scale(var(--tw-scale-x), var(--tw-scale-y)); } .tasknotes-plugin .tn-scale-100 { --tw-scale-x: 1; --tw-scale-y: 1; transform: scale(var(--tw-scale-x), var(--tw-scale-y)); } .tasknotes-plugin .tn-scale-105 { --tw-scale-x: 1.05; --tw-scale-y: 1.05; transform: scale(var(--tw-scale-x), var(--tw-scale-y)); } .tasknotes-plugin .tn-scale-110 { --tw-scale-x: 1.1; --tw-scale-y: 1.1; transform: scale(var(--tw-scale-x), var(--tw-scale-y)); } .tasknotes-plugin .tn-scale-125 { --tw-scale-x: 1.25; --tw-scale-y: 1.25; transform: scale(var(--tw-scale-x), var(--tw-scale-y)); } /* ================================================ OPACITY UTILITIES ================================================ */ .tasknotes-plugin .tn-opacity-0 { opacity: 0; } .tasknotes-plugin .tn-opacity-25 { opacity: 0.25; } .tasknotes-plugin .tn-opacity-50 { opacity: 0.5; } .tasknotes-plugin .tn-opacity-75 { opacity: 0.75; } .tasknotes-plugin .tn-opacity-100 { opacity: 1; } /* ================================================ STATE UTILITIES ================================================ */ /* Loading State */ .tasknotes-plugin .tn-loading { opacity: 0.7; pointer-events: none; position: relative; } .tasknotes-plugin .tn-loading::after { content: ''; position: absolute; top: 50%; left: 50%; width: 16px; height: 16px; margin: -8px 0 0 -8px; border: 2px solid currentColor; border-top-color: transparent; border-radius: 50%; animation: tn-spin 0.8s linear infinite; } /* Disabled State */ .tasknotes-plugin .tn-disabled { opacity: 0.5; cursor: not-allowed; pointer-events: none; } /* Interactive States */ .tasknotes-plugin .tn-hover-opacity:hover { opacity: 0.8; } .tasknotes-plugin .tn-hover-scale:hover { transform: scale(1.05); } .tasknotes-plugin .tn-hover-shadow:hover { box-shadow: var(--tn-shadow-hover); } /* Focus States */ .tasknotes-plugin .tn-focus-ring:focus { outline: 2px solid var(--tn-interactive-accent); outline-offset: 2px; } .tasknotes-plugin .tn-focus-ring:focus-visible { outline: 2px solid var(--tn-interactive-accent); outline-offset: 2px; } /* ================================================ ANIMATION UTILITIES ================================================ */ .tasknotes-plugin .tn-animate-spin { animation: tn-spin 1s linear infinite; } .tasknotes-plugin .tn-animate-pulse { animation: tn-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; } .tasknotes-plugin .tn-animate-bounce { animation: tn-bounce 1s infinite; } .tasknotes-plugin .tn-animate-fade-in { animation: tn-fade-in 0.3s ease-out; } .tasknotes-plugin .tn-animate-slide-up { animation: tn-slide-up 0.3s ease-out; } /* Keyframes */ @keyframes tn-spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } @keyframes tn-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } } @keyframes tn-bounce { 0%, 100% { transform: translateY(-25%); animation-timing-function: cubic-bezier(0.8, 0, 1, 1); } 50% { transform: translateY(0); animation-timing-function: cubic-bezier(0, 0, 0.2, 1); } } @keyframes tn-fade-in { 0% { opacity: 0; } 100% { opacity: 1; } } @keyframes tn-slide-up { 0% { opacity: 0; transform: translateY(10px); } 100% { opacity: 1; transform: translateY(0); } } /* ================================================ ACCESSIBILITY UTILITIES ================================================ */ /* Screen Reader Only */ .tasknotes-plugin .tn-sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } .tasknotes-plugin .tn-not-sr-only { position: static; width: auto; height: auto; padding: 0; margin: 0; overflow: visible; clip: auto; white-space: normal; } /* ================================================ RESPONSIVE UTILITIES (MOBILE-FIRST) ================================================ */ /* Small screens (tablets, 768px and up) */ @media (min-width: 768px) { .tasknotes-plugin .tn-sm-block { display: block; } .tasknotes-plugin .tn-sm-hidden { display: none; } .tasknotes-plugin .tn-sm-flex { display: flex; } .tasknotes-plugin .tn-sm-grid { display: grid; } .tasknotes-plugin .tn-sm-flex-row { flex-direction: row; } .tasknotes-plugin .tn-sm-flex-col { flex-direction: column; } .tasknotes-plugin .tn-sm-text-left { text-align: left; } .tasknotes-plugin .tn-sm-text-center { text-align: center; } .tasknotes-plugin .tn-sm-text-right { text-align: right; } } /* Medium screens (desktops, 992px and up) */ @media (min-width: 992px) { .tasknotes-plugin .tn-md-block { display: block; } .tasknotes-plugin .tn-md-hidden { display: none; } .tasknotes-plugin .tn-md-flex { display: flex; } .tasknotes-plugin .tn-md-grid { display: grid; } .tasknotes-plugin .tn-md-flex-row { flex-direction: row; } .tasknotes-plugin .tn-md-flex-col { flex-direction: column; } .tasknotes-plugin .tn-md-text-left { text-align: left; } .tasknotes-plugin .tn-md-text-center { text-align: center; } .tasknotes-plugin .tn-md-text-right { text-align: right; } } /* Large screens (large desktops, 1200px and up) */ @media (min-width: 1200px) { .tasknotes-plugin .tn-lg-block { display: block; } .tasknotes-plugin .tn-lg-hidden { display: none; } .tasknotes-plugin .tn-lg-flex { display: flex; } .tasknotes-plugin .tn-lg-grid { display: grid; } .tasknotes-plugin .tn-lg-flex-row { flex-direction: row; } .tasknotes-plugin .tn-lg-flex-col { flex-direction: column; } .tasknotes-plugin .tn-lg-text-left { text-align: left; } .tasknotes-plugin .tn-lg-text-center { text-align: center; } .tasknotes-plugin .tn-lg-text-right { text-align: right; } } /* ================================================ DARK MODE SUPPORT ================================================ */ /* Dark mode specific utilities */ .theme-dark .tasknotes-plugin .tn-dark-bg-primary { background-color: var(--tn-bg-primary); } .theme-dark .tasknotes-plugin .tn-dark-bg-secondary { background-color: var(--tn-bg-secondary); } .theme-dark .tasknotes-plugin .tn-dark-text-normal { color: var(--tn-text-normal); } .theme-dark .tasknotes-plugin .tn-dark-text-muted { color: var(--tn-text-muted); } .theme-dark .tasknotes-plugin .tn-dark-border-normal { border-color: var(--tn-border-color); } /* ================================================ REDUCED MOTION SUPPORT ================================================ */ @media (prefers-reduced-motion: reduce) { .tasknotes-plugin .tn-transition-fast, .tasknotes-plugin .tn-transition, .tasknotes-plugin .tn-transition-slow, .tasknotes-plugin .tn-transition-colors, .tasknotes-plugin .tn-transition-opacity, .tasknotes-plugin .tn-transition-transform { transition: none !important; } .tasknotes-plugin .tn-animate-spin, .tasknotes-plugin .tn-animate-pulse, .tasknotes-plugin .tn-animate-bounce, .tasknotes-plugin .tn-animate-fade-in, .tasknotes-plugin .tn-animate-slide-up { animation: none !important; } .tasknotes-plugin .tn-hover-scale:hover { transform: none !important; } } /* ================================================ HIGH CONTRAST SUPPORT ================================================ */ @media (prefers-contrast: high) { .tasknotes-plugin .tn-border { border-width: 2px; } .tasknotes-plugin .tn-focus-ring:focus, .tasknotes-plugin .tn-focus-ring:focus-visible { outline-width: 3px; } } /* ================================================ BUTTON UTILITIES - SCOPED FOR SETTINGS ONLY ================================================ */ /* Base Button - Scoped to settings modal */ .mod-settings .tasknotes-plugin .tn-btn { display: inline-flex; align-items: center; justify-content: center; gap: var(--tn-spacing-sm); padding: var(--tn-spacing-sm) var(--tn-spacing-md); border: none; border-radius: var(--tn-radius-md); background: transparent; color: var(--tn-text-normal); font-family: inherit; font-size: var(--tn-font-size-md); font-weight: var(--tn-font-weight-medium); line-height: 1; cursor: var(--cursor); user-select: none; text-decoration: none; outline: none; box-shadow: none; transition: all var(--tn-transition-fast); min-height: var(--tn-button-height-md); } .mod-settings .tasknotes-plugin .tn-btn:hover { background: var(--tn-interactive-hover); border: none; box-shadow: none; } .mod-settings .tasknotes-plugin .tn-btn:active { opacity: 0.8; border: none; box-shadow: none; } .mod-settings .tasknotes-plugin .tn-btn:focus-visible { outline: 2px solid var(--tn-interactive-accent); outline-offset: 2px; border: none; box-shadow: none; } .mod-settings .tasknotes-plugin .tn-btn:disabled { opacity: var(--cs-state-disabled); cursor: not-allowed; pointer-events: none; border: none; box-shadow: none; } /* Button Sizes */ .mod-settings .tasknotes-plugin .tn-btn--sm { padding: var(--tn-spacing-xs) var(--tn-spacing-sm); font-size: var(--tn-font-size-sm); min-height: var(--tn-button-height-sm); border-radius: var(--tn-radius-sm); } .mod-settings .tasknotes-plugin .tn-btn--lg { padding: var(--tn-spacing-md) var(--tn-spacing-lg); font-size: var(--tn-font-size-lg); font-weight: var(--tn-font-weight-semibold); min-height: var(--tn-button-height-lg); border-radius: var(--tn-radius-lg); } /* Button Variants */ .mod-settings .tasknotes-plugin .tn-btn--primary { background: var(--tn-interactive-accent); color: var(--text-on-accent); } .mod-settings .tasknotes-plugin .tn-btn--primary:hover { background: var(--tn-interactive-accent-hover); } .mod-settings .tasknotes-plugin .tn-btn--secondary { background: var(--tn-interactive-normal); color: var(--tn-text-normal); } .mod-settings .tasknotes-plugin .tn-btn--secondary:hover { background: var(--tn-interactive-hover); } .mod-settings .tasknotes-plugin .tn-btn--ghost { background: transparent; color: var(--tn-text-muted); } .mod-settings .tasknotes-plugin .tn-btn--ghost:hover { background: var(--tn-interactive-hover); color: var(--tn-text-normal); } .mod-settings .tasknotes-plugin .tn-btn--danger { background: transparent; color: var(--tn-color-error); } .mod-settings .tasknotes-plugin .tn-btn--danger:hover { background: var(--tn-color-error); color: var(--tn-bg-primary); } .mod-settings .tasknotes-plugin .tn-btn--success { background: transparent; color: var(--tn-color-success); } .mod-settings .tasknotes-plugin .tn-btn--success:hover { background: var(--tn-color-success); color: var(--tn-bg-primary); } /* Icon-only buttons */ .mod-settings .tasknotes-plugin .tn-btn--icon { width: var(--tn-button-height-md); height: var(--tn-button-height-md); padding: 0; border-radius: var(--tn-radius-md); } .mod-settings .tasknotes-plugin .tn-btn--icon.tn-btn--sm { width: var(--tn-button-height-sm); height: var(--tn-button-height-sm); border-radius: var(--tn-radius-sm); } .mod-settings .tasknotes-plugin .tn-btn--icon.tn-btn--lg { width: var(--tn-button-height-lg); height: var(--tn-button-height-lg); border-radius: var(--tn-radius-lg); } /* Pill buttons */ .mod-settings .tasknotes-plugin .tn-btn--pill { border-radius: var(--tn-radius-full); } /* Full width buttons */ .mod-settings .tasknotes-plugin .tn-btn--full { width: 100%; } /* Button Groups */ .mod-settings .tasknotes-plugin .tn-btn-group { display: flex; gap: var(--tn-spacing-xs); } .mod-settings .tasknotes-plugin .tn-btn-group .tn-btn { flex: 1; } .mod-settings .tasknotes-plugin .tn-btn-group--attached { gap: 0; } .mod-settings .tasknotes-plugin .tn-btn-group--attached .tn-btn { border-radius: 0; } .mod-settings .tasknotes-plugin .tn-btn-group--attached .tn-btn:first-child { border-radius: var(--tn-radius-md) 0 0 var(--tn-radius-md); } .mod-settings .tasknotes-plugin .tn-btn-group--attached .tn-btn:last-child { border-radius: 0 var(--tn-radius-md) var(--tn-radius-md) 0; } .mod-settings .tasknotes-plugin .tn-btn-group--attached .tn-btn:only-child { border-radius: var(--tn-radius-md); } /* Loading state */ .mod-settings .tasknotes-plugin .tn-btn--loading { position: relative; color: transparent; pointer-events: none; } .mod-settings .tasknotes-plugin .tn-btn--loading::after { content: ''; position: absolute; top: 50%; left: 50%; width: 16px; height: 16px; margin: -8px 0 0 -8px; border: 2px solid currentColor; border-top-color: transparent; border-radius: 50%; animation: tn-spin 0.8s linear infinite; } /* ================================================ CODEMIRROR WIDGET UTILITIES ================================================ */ /** * Widget Cursor Fix * * Minimal fix for CodeMirror widget artifacts. * Only prevents editing inside widgets and hides visual artifacts. * Does NOT hide the editor cursor to preserve normal editing experience. * * Fixes: * - Prevents text selection inside widgets * - Prevents contenteditable behavior * - Hides widget buffer image artifacts * * Trade-offs: * - Cursor may appear next to widgets (acceptable for normal editing UX) * - Widget buffer artifacts are hidden * * Usage: Add .cm-widget-cursor-fix to your widget container element */ .cm-widget-cursor-fix { /* Prevent text selection and editing inside widget */ user-select: none; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; /* Prevent contenteditable behavior */ -webkit-user-modify: read-only; -moz-user-modify: read-only; /* Ensure no text cursor appears inside widget elements */ caret-color: transparent; } /* Hide CodeMirror widgetBuffer image artifacts only */ .cm-content > .cm-line:has(.cm-widget-cursor-fix) img.cm-widgetBuffer { display: none !important; } /* ===== BASE.CSS ===== */ /* Reduced motion support - scope to TaskNotes components only */ @media (prefers-reduced-motion: reduce) { .tasknotes-container *, .tasknotes-card *, .tasknotes-button * { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } } /* Button click feedback - scope to TaskNotes buttons only */ .tasknotes-container button:active:not(:disabled), .tasknotes-button:active:not(:disabled) { transform: scale(0.98); } /* Performance optimization animations */ @keyframes tn-task-flash { 0% { background-color: var(--interactive-accent-hover); transform: scale(1.02); } 100% { background-color: transparent; transform: scale(1); } } @keyframes tn-task-pulse { 0%, 100% { opacity: 1; transform: scale(1); } 50% { opacity: 0.8; transform: scale(1.01); } } @keyframes tn-task-fade-in { 0% { opacity: 0; transform: translateY(-4px); } 100% { opacity: 1; transform: translateY(0); } } @keyframes tn-tracking-pulse { 0%, 100% { opacity: 0.3; transform: scale(1); } 50% { opacity: 0.6; transform: scale(1.01); } } /* Task update animations */ .tasknotes-plugin .task-flash { animation: tn-task-flash 1500ms ease-out; } .tasknotes-plugin .task-pulse { animation: tn-task-pulse 1000ms ease-in-out; } .tasknotes-plugin .task-fade-in { animation: tn-task-fade-in 300ms ease-out; } /* ===== TASK-CARD-BEM.CSS ===== */ /* ================================================================= TASKCARD COMPONENT - BEM NAMING CONVENTION & PROPER SCOPING ================================================================= */ /* All TaskCard styles are scoped under .tasknotes-plugin for proper isolation */ .tasknotes-plugin .task-card { /* Layout & Structure */ display: flex; flex-direction: column; gap: 0; position: relative; /* Spacing & Sizing - Refined spacing for better visual breathing room */ padding: var(--tn-spacing-md) var(--tn-spacing-lg); margin-bottom: 1px; /* Visual Styling - Subtle depth with minimal shadow */ background-color: transparent; border: none; border-radius: var(--tn-radius-xs); box-shadow: none; /* Interactions & Accessibility - Smooth transitions */ transition: all var(--tn-transition-fast); outline: none; role: listitem; tabindex: 0; } .tasknotes-plugin .task-card:hover { background-color: var(--background-modifier-hover); } /* Prevent parent hover when hovering over subtasks or blocking tasks */ .tasknotes-plugin .task-card:has(.task-card__subtasks:hover, .task-card__blocking:hover) { background-color: transparent; box-shadow: none; } .tasknotes-plugin .task-card:focus { background-color: var(--background-modifier-hover); outline: 2px solid var(--background-modifier-border-focus); outline-offset: -2px; } .tasknotes-plugin .task-card:focus:not(:focus-visible) { outline: none; } .tasknotes-plugin .task-card:last-child { margin-bottom: 0; } /* Remove border radius for cleaner list appearance */ .tasknotes-plugin .task-card:first-child, .tasknotes-plugin .task-card:last-child, .tasknotes-plugin .task-card:first-child:last-child { border-radius: 0; } /* ================================================================= TASKCARD ELEMENTS (BEM __element) ================================================================= */ .tasknotes-plugin .task-card__main-row { display: flex; align-items: center; gap: var(--tn-spacing-sm); width: 100%; position: relative; } .tasknotes-plugin .task-card__content { flex: 1; display: flex; flex-direction: column; gap: 4px; min-width: 0; } .tasknotes-plugin .task-card__title { font-size: var(--tn-font-size-lg); font-weight: 400; line-height: 1.4; color: var(--tn-text-normal); margin: 0; word-wrap: break-word; word-break: break-word; white-space: normal; transition: color var(--tn-transition-fast); display: flex; align-items: center; gap: var(--tn-spacing-sm); } .tasknotes-plugin .task-card__title-text { flex: 1; min-width: 0; } .tasknotes-plugin .task-card__metadata { font-size: var(--tn-font-size-md); color: var(--tn-text-muted); line-height: 1.3; margin: 0; font-weight: 400; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 0; } .tasknotes-plugin .task-card__metadata-item { display: flex; align-items: center; gap: var(--tn-spacing-xs); white-space: nowrap; } .tasknotes-plugin .task-card__metadata-pill { display: inline-flex; align-items: center; gap: var(--tn-spacing-xs); padding: 3px 8px; border-radius: var(--tn-radius-md); font-size: var(--tn-font-size-sm); line-height: 1.2; font-weight: 500; background: var(--background-secondary); color: var(--text-muted); border: 1px solid var(--background-modifier-border); transition: background var(--tn-transition-fast), border-color var(--tn-transition-fast); } .tasknotes-plugin .task-card__metadata-pill:hover { background: var(--background-modifier-hover); border-color: var(--background-modifier-border-hover); } .tasknotes-plugin .task-card__metadata-pill--blocked { background: color-mix(in srgb, var(--tn-color-error) 75%, var(--tn-bg-primary)); color: var(--tn-bg-primary); border-color: color-mix(in srgb, var(--tn-color-error) 85%, var(--tn-bg-primary)); padding-inline: var(--tn-spacing-md); } .tasknotes-plugin .task-card__metadata-pill--blocked:hover { background: var(--tn-color-error); color: var(--tn-bg-primary); border-color: var(--tn-color-error); } .tasknotes-plugin .task-card__metadata-pill--blocking { background: transparent; color: var(--tn-color-error); border-color: color-mix(in srgb, var(--tn-color-error) 70%, transparent); } .tasknotes-plugin .task-card__tag { background: var(--tn-bg-secondary); color: var(--tn-text-muted); padding: var(--tn-spacing-xs) var(--tn-spacing-sm); border-radius: var(--tn-radius-xs); font-size: var(--tn-font-size-sm); font-weight: 400; border: none; white-space: nowrap; } .tasknotes-plugin .task-card__due-date { color: var(--tn-color-success); font-size: var(--tn-font-size-sm); font-weight: 400; padding: var(--tn-spacing-xs) var(--tn-spacing-xs); border-radius: var(--tn-radius-xs); background: color-mix(in srgb, var(--tn-color-success) 15%, var(--tn-bg-primary)); } .tasknotes-plugin .task-card__due-date--overdue { color: var(--tn-color-error); background: color-mix(in srgb, var(--tn-color-error) 15%, var(--tn-bg-primary)); } .tasknotes-plugin .task-card__due-date--today { color: var(--tn-color-warning); background: color-mix(in srgb, var(--tn-color-warning) 15%, var(--tn-bg-primary)); } .tasknotes-plugin .task-card__priority-badge { display: none; /* Hide priority badges in favor of dots */ } /* Simplified info display - no progressive disclosure for Todoist style */ /* Drag handle indicator */ .tasknotes-plugin .task-card__drag-handle { position: absolute; left: 0; top: 50%; transform: translateY(-50%); width: 4px; height: 20px; background: repeating-linear-gradient( to bottom, var(--tn-text-faint) 0px, var(--tn-text-faint) 2px, transparent 2px, transparent 4px ); opacity: 0; transition: opacity var(--tn-transition-fast); border-radius: var(--tn-radius-xs); } .tasknotes-plugin .task-card[draggable="true"]:hover .task-card__drag-handle { opacity: 0.5; } .tasknotes-plugin .task-card[draggable="true"]:active .task-card__drag-handle { opacity: 0.8; } /* Container queries for adaptive layouts */ @container (max-width: 300px) { .tasknotes-plugin .task-card { padding: var(--tn-spacing-sm) var(--tn-spacing-md); } .tasknotes-plugin .task-card__quick-actions { gap: 2px; } .tasknotes-plugin .task-card__quick-action { width: 20px; height: 20px; } .tasknotes-plugin .task-card__metadata { gap: var(--tn-spacing-xs); } } .tasknotes-plugin .task-card__status-dot { display: inline-block; width: 18px; height: 18px; border-radius: 50%; flex-shrink: 0; border: 2px solid color-mix(in srgb, var(--tn-border-color) 80%, transparent); background-color: transparent; transition: all var(--tn-transition-fast); position: relative; box-shadow: none; } .tasknotes-plugin .task-card__status-dot:hover { background-color: color-mix(in srgb, var(--next-status-color, var(--tn-interactive-accent)) 30%, transparent); border-color: var(--next-status-color, var(--tn-interactive-accent)); } /* Completed status - filled circle with status color */ .tasknotes-plugin .task-card--completed > .task-card__main-row .task-card__status-dot { background-color: var(--current-status-color, var(--tn-color-success)); border-color: var(--current-status-color, var(--tn-color-success)); box-shadow: none; position: relative; } .tasknotes-plugin .task-card--completed > .task-card__main-row .task-card__status-dot:hover { background-color: color-mix(in srgb, var(--next-status-color, var(--tn-interactive-accent)) 50%, var(--current-status-color, var(--tn-color-success))); border-color: var(--next-status-color, var(--tn-interactive-accent)); } /* Completion animation - subtle pulse when task is completed */ @keyframes status-complete { 0% { transform: scale(1); box-shadow: 0 0 0 0 color-mix(in srgb, var(--current-status-color, var(--tn-color-success)) 40%, transparent); } 50% { transform: scale(1.2); box-shadow: 0 0 0 6px color-mix(in srgb, var(--current-status-color, var(--tn-color-success)) 0%, transparent); } 100% { transform: scale(1); box-shadow: none; } } .tasknotes-plugin .task-card--completed.task-card--just-completed > .task-card__main-row .task-card__status-dot { animation: status-complete 0.6s cubic-bezier(0.4, 0, 0.2, 1); } /* Status dot with icon mode - uses Lucide icons from theme */ .tasknotes-plugin .task-card__status-dot--icon { border: none; background-color: transparent; display: inline-flex; align-items: center; justify-content: center; } .tasknotes-plugin .task-card__status-dot--icon svg { width: 18px; height: 18px; color: var(--current-status-color, var(--tn-text-muted)); stroke-width: 2; } .tasknotes-plugin .task-card__status-dot--icon:hover svg { color: var(--next-status-color, var(--tn-interactive-accent)); } /* Completed state for icon mode */ .tasknotes-plugin .task-card--completed > .task-card__main-row .task-card__status-dot--icon { background-color: transparent; } .tasknotes-plugin .task-card--completed > .task-card__main-row .task-card__status-dot--icon svg { color: var(--current-status-color, var(--tn-color-success)); } .tasknotes-plugin .task-card--completed > .task-card__main-row .task-card__status-dot--icon:hover svg { color: var(--next-status-color, var(--tn-interactive-accent)); } /* ================================================================= BADGE AREA - Groups secondary indicators (recurring, reminder, project) ================================================================= */ .tasknotes-plugin .task-card__badges { display: flex; align-items: center; gap: var(--tn-spacing-xs); flex-shrink: 0; } /* Hide badges container when empty */ .tasknotes-plugin .task-card__badges:empty { display: none; } .tasknotes-plugin .task-card__recurring-indicator { width: 14px; height: 14px; color: var(--tn-text-muted); opacity: 0.7; display: none; /* Hidden by default, shown via modifier */ align-items: center; justify-content: center; transition: all var(--tn-transition-fast); border-radius: var(--tn-radius-sm); flex-shrink: 0; } .tasknotes-plugin .task-card__recurring-indicator:hover { opacity: 1; color: var(--interactive-accent); background: var(--background-modifier-hover); } .tasknotes-plugin .task-card__recurring-indicator svg { width: 14px; height: 14px; } /* Recurrence instance statistics pills */ .tasknotes-plugin .task-card__metadata-pill--completed-instances { color: var(--text-success); } .tasknotes-plugin .task-card__metadata-pill--skipped-instances { color: var(--text-muted); opacity: 0.7; } /* Reminder indicator */ .tasknotes-plugin .task-card__reminder-indicator { width: 14px; height: 14px; color: var(--tn-text-muted); opacity: 0.7; transition: all var(--tn-transition-fast); display: flex; align-items: center; justify-content: center; border-radius: var(--tn-radius-sm); flex-shrink: 0; } .tasknotes-plugin .task-card__reminder-indicator:hover { opacity: 1; color: var(--interactive-accent); background: var(--background-modifier-hover); } .tasknotes-plugin .task-card__reminder-indicator svg { width: 14px; height: 14px; } /* Project indicator */ .tasknotes-plugin .task-card__project-indicator { width: 14px; height: 14px; color: var(--tn-text-muted); opacity: 0.7; display: flex; align-items: center; justify-content: center; border-radius: var(--tn-radius-sm); transition: all var(--tn-transition-fast); flex-shrink: 0; } .tasknotes-plugin .task-card__project-indicator:hover { opacity: 1; color: var(--interactive-accent); background: var(--background-modifier-hover); } .tasknotes-plugin .task-card__project-indicator svg { width: 14px; height: 14px; } /* Chevron for expandable subtasks */ .tasknotes-plugin .task-card__chevron { width: 14px; height: 14px; color: var(--tn-text-muted); opacity: 0; display: flex; align-items: center; justify-content: center; border-radius: var(--tn-radius-sm); transition: all var(--tn-transition-fast); flex-shrink: 0; } .tasknotes-plugin .task-card__chevron:hover { opacity: 1; color: var(--interactive-accent); background: var(--background-modifier-hover); } /* In left mode, chevrons are always visible (like group chevrons) */ .tasknotes-plugin .task-card.task-card--chevron-left .task-card__chevron { opacity: 1; position: absolute; left: calc(-1 * var(--tn-spacing-lg) - 14px); top: 50%; transform: translateY(-50%); width: 18px; height: 18px; } .tasknotes-plugin .task-card:hover .task-card__chevron { opacity: 1; } .tasknotes-plugin .task-card__chevron svg { width: 14px; height: 14px; transition: transform var(--tn-transition-fast); } .tasknotes-plugin .task-card__chevron--expanded svg { transform: rotate(90deg); } /* Blocking toggle */ .tasknotes-plugin .task-card__blocking-toggle { width: 14px; height: 14px; color: var(--tn-text-muted); opacity: 0.8; display: flex; align-items: center; justify-content: center; transition: color var(--tn-transition-fast), background var(--tn-transition-fast), opacity var(--tn-transition-fast); border-radius: var(--tn-radius-sm); flex-shrink: 0; } .tasknotes-plugin .task-card__blocking-toggle:hover { opacity: 1; color: var(--interactive-accent); background: var(--background-modifier-hover); } .tasknotes-plugin .task-card__blocking-toggle svg { width: 14px; height: 14px; } .tasknotes-plugin .task-card__blocking-toggle--expanded { color: var(--interactive-accent); opacity: 1; } .tasknotes-plugin .task-card__blocking-toggle.is-hidden { display: none; } /* Left-position variant for subtask chevron */ .tasknotes-plugin .task-card.task-card--chevron-left { /* Reserve gutter for chevron plus spacing */ padding-left: calc(var(--tn-spacing-lg) + 20px); } /* Ensure nested cards in left mode also reserve chevron gutter */ .tasknotes-plugin .task-card__subtasks .task-card.task-card--chevron-left { padding-left: calc(var(--tn-spacing-md) + 20px); } .tasknotes-plugin .task-card__subtasks { margin-left: 24px; margin-top: 6px; border-left: 2px solid color-mix(in srgb, var(--tn-border-color) 40%, transparent); padding-left: 14px; position: relative; z-index: 1; } .tasknotes-plugin .task-card__subtasks::before { content: ''; position: absolute; left: -2px; top: 0; width: 2px; height: 100%; background: linear-gradient( to bottom, color-mix(in srgb, var(--tn-interactive-accent) 30%, transparent), transparent ); opacity: 0; transition: opacity var(--tn-transition-fast); } .tasknotes-plugin .task-card:hover .task-card__subtasks::before { opacity: 1; } .tasknotes-plugin .task-card__subtasks .task-card { margin-bottom: 3px; padding: var(--tn-spacing-sm) var(--tn-spacing-md); } .tasknotes-plugin .task-card__subtasks .task-card:last-child { margin-bottom: 0; } .tasknotes-plugin .task-card--subtask { background: color-mix(in srgb, var(--tn-bg-secondary) 25%, transparent); border-radius: var(--tn-radius-sm); backdrop-filter: blur(2px); } .tasknotes-plugin .task-card__blocking { margin-left: 24px; margin-top: 6px; border-left: 2px dashed color-mix(in srgb, var(--tn-color-error) 30%, transparent); padding-left: 14px; display: flex; flex-direction: column; gap: 4px; position: relative; z-index: 1; } .tasknotes-plugin .task-card__blocking::before { content: ''; position: absolute; left: -2px; top: 0; width: 2px; height: 100%; background: linear-gradient( to bottom, color-mix(in srgb, var(--tn-color-error) 30%, transparent), transparent ); opacity: 0; transition: opacity var(--tn-transition-fast); } .tasknotes-plugin .task-card:hover .task-card__blocking::before { opacity: 1; } .tasknotes-plugin .task-card--dependency { background: color-mix(in srgb, var(--tn-color-error) 4%, transparent); border-radius: var(--tn-radius-sm); border-left: 2px solid color-mix(in srgb, var(--tn-color-error) 20%, transparent); padding-left: calc(var(--tn-spacing-md) - 2px); } .tasknotes-plugin .task-card__blocking-loading, .tasknotes-plugin .task-card__blocking-empty { font-size: var(--tn-font-size-sm); color: var(--tn-text-muted); font-style: italic; } .tasknotes-plugin .task-card--subtask:hover { background: color-mix(in srgb, var(--tn-interactive-hover) 60%, var(--tn-bg-secondary)); } .tasknotes-plugin .task-card__subtasks-loading { margin-left: 20px; margin-top: 4px; padding: var(--tn-spacing-sm); color: var(--tn-text-muted); font-size: var(--tn-font-size-sm); font-style: italic; } .tasknotes-plugin .task-card__context-menu { width: 14px; height: 14px; color: var(--tn-text-faint); opacity: 0; transition: all var(--tn-transition-fast); display: flex; align-items: center; justify-content: center; border-radius: var(--tn-radius-sm); flex-shrink: 0; margin-left: auto; } .tasknotes-plugin .task-card__context-menu:hover { color: var(--tn-text-normal); background: var(--tn-interactive-hover); } .tasknotes-plugin .task-card:hover .task-card__context-menu { opacity: 0.6; } .tasknotes-plugin .task-card__context-menu:hover { opacity: 1 !important; } .tasknotes-plugin .task-card__context-menu svg { width: 14px; height: 14px; } /* Quick actions removed for Todoist-style simplicity */ /* ===================================================================== HOVER CONTEXT MENU INTERACTIONS ===================================================================== */ /* Enhanced priority dot hover for context menu */ .tasknotes-plugin .task-card__priority-dot { transition: all var(--tn-transition-fast); box-shadow: none; } .tasknotes-plugin .task-card__priority-dot:hover { opacity: 0.8; } /* Hoverable date text elements */ .tasknotes-plugin .task-card__metadata-date { transition: all var(--tn-transition-fast); border-radius: var(--tn-radius-sm); padding: 3px 6px; margin: -3px -6px; position: relative; } .tasknotes-plugin .task-card__metadata-date:hover { background: var(--background-modifier-hover); color: var(--interactive-accent); } .tasknotes-plugin .task-card__metadata-date--due:hover { background: color-mix(in srgb, var(--tn-color-error) 12%, transparent); color: var(--tn-color-error); } .tasknotes-plugin .task-card__metadata-date--scheduled:hover { background: color-mix(in srgb, var(--tn-color-info) 12%, transparent); color: var(--tn-color-info); } /* Overdue due dates - use the hover background color for text */ .tasknotes-plugin .task-card__metadata-date--overdue { color: var(--tn-color-error); } /* Past scheduled dates - use the hover background color for text */ .tasknotes-plugin .task-card__metadata-date--past { color: var(--tn-color-info); } /* Project links */ .tasknotes-plugin .task-card__project-link { color: var(--interactive-accent); text-decoration: none; transition: all var(--tn-transition-fast); border-radius: var(--tn-radius-sm); padding: 2px 4px; margin: -2px -4px; display: inline-block; position: relative; z-index: 1; } .tasknotes-plugin .task-card__project-link:hover, .tasknotes-plugin .task-card__project-link:focus { background: var(--background-modifier-hover); color: var(--interactive-accent-hover); outline: none; box-shadow: 0 2px 4px color-mix(in srgb, var(--tn-shadow-color, black) 8%, transparent); } .tasknotes-plugin .task-card__project-link:focus { box-shadow: 0 0 0 2px color-mix(in srgb, var(--interactive-accent) 30%, transparent), 0 2px 4px color-mix(in srgb, var(--tn-shadow-color, black) 8%, transparent); } .tasknotes-plugin .task-card__project-link.internal-link { /* Ensure consistent styling with Obsidian's internal links */ color: var(--link-color); } .tasknotes-plugin .task-card__project-link.internal-link:hover, .tasknotes-plugin .task-card__project-link.internal-link:focus { color: var(--link-color-hover); } /* ================================================================= TASKCARD MODIFIERS (BEM --modifier) ================================================================= */ /* Completion State - Use theme colors */ .tasknotes-plugin .task-card--completed > .task-card__main-row { opacity: 0.6; } .tasknotes-plugin .task-card--completed > .task-card__main-row .task-card__title { text-decoration: line-through; color: var(--tn-text-muted); } /* Skipped State - Muted appearance for skipped recurring instances */ .tasknotes-plugin .task-card--skipped { opacity: 0.5; } .tasknotes-plugin .task-card--skipped > .task-card__main-row .task-card__title { text-decoration: line-through; color: var(--text-muted); } .tasknotes-plugin .task-card--skipped > .task-card__main-row .task-card__status-dot { background-color: rgba(128, 128, 128, 0.4); border-color: var(--text-faint); border-style: dashed; } /* Archived State */ .tasknotes-plugin .task-card--archived { opacity: 0.5; background-color: transparent; } /* Active Time Tracking */ .tasknotes-plugin .task-card--actively-tracked { position: relative; } .tasknotes-plugin .task-card--actively-tracked::before { content: ''; position: absolute; top: -2px; left: -2px; right: -2px; bottom: -2px; border: 2px solid var(--tn-color-info); border-radius: var(--tn-radius-xs); opacity: 0.6; animation: pulse-tracking 2s infinite; } @keyframes pulse-tracking { 0%, 100% { opacity: 0.6; } 50% { opacity: 0.3; } } /* Recurring Task */ .tasknotes-plugin .task-card--recurring .task-card__recurring-indicator { display: flex; } /* Skipped recurring instance styling */ .tasknotes-plugin .recurring-skipped, .tasknotes-plugin .task-card--recurring-skipped { opacity: 0.6; } .tasknotes-plugin .recurring-skipped .task-card__title, .tasknotes-plugin .task-card--recurring-skipped .task-card__title { text-decoration: line-through; color: var(--text-muted); } /* Priority indicators - Use user's priority settings */ .tasknotes-plugin .task-card__priority-dot { display: inline-block; width: 10px; height: 10px; border-radius: 50%; flex-shrink: 0; background-color: var(--priority-color, transparent); margin: 0 var(--tn-spacing-xs); } /* Dynamic priority colors using CSS variables set by PriorityManager */ /* Use child combinator (>) to prevent subtasks from inheriting parent priority styling */ .tasknotes-plugin .task-card[data-priority] > .task-card__main-row .task-card__priority-dot { background-color: var(--current-priority-color, var(--tn-text-muted)); } /* Fallback priority colors using existing system */ /* Use child combinator (>) to prevent subtasks from inheriting parent priority styling */ .tasknotes-plugin .task-card--priority-high > .task-card__main-row .task-card__priority-dot { background-color: var(--priority-high-color, var(--tn-color-error)); } .tasknotes-plugin .task-card--priority-medium > .task-card__main-row .task-card__priority-dot { background-color: var(--priority-medium-color, var(--tn-interactive-accent)); } .tasknotes-plugin .task-card--priority-normal > .task-card__main-row .task-card__priority-dot { background-color: var(--priority-normal-color, var(--tn-interactive-accent)); } .tasknotes-plugin .task-card--priority-low > .task-card__main-row .task-card__priority-dot { background-color: var(--priority-low-color, var(--tn-text-muted)); } /* Status colors - Use dynamic status colors from user settings */ /* Use child combinator (>) to prevent subtasks from inheriting parent status styling */ .tasknotes-plugin .task-card[data-status] > .task-card__main-row .task-card__status-dot { border-color: var(--current-status-color, var(--tn-border-color)); } /* Minimal animations - Use theme colors */ .tasknotes-plugin .task-card--updated { background-color: var(--tn-interactive-hover); transition: background-color var(--tn-transition-fast); } /* ================================================================= RESPONSIVE DESIGN ================================================================= */ /* Mobile & Touch Devices - Use theme colors */ @media (pointer: coarse) { .tasknotes-plugin .task-card { padding: 12px 16px; min-height: 44px; margin-bottom: 2px; } .tasknotes-plugin .task-card:active { background-color: var(--tn-interactive-hover); } /* Larger touch targets */ .tasknotes-plugin .task-card__context-menu { width: 24px; height: 24px; opacity: 1; } .tasknotes-plugin .task-card__context-menu svg { width: 16px; height: 16px; } /* Larger status dots for touch */ .tasknotes-plugin .task-card__status-dot { width: 18px; height: 18px; } } /* High density displays */ @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) { .tasknotes-plugin .task-card { border-left-width: 1px; } .tasknotes-plugin .task-card::before { width: 1px; } } /* Reduced motion preferences */ @media (prefers-reduced-motion: reduce) { .tasknotes-plugin .task-card, .tasknotes-plugin .task-card *, .tasknotes-plugin .task-card::before, .tasknotes-plugin .task-card::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; } .tasknotes-plugin .task-card--dragging { animation: none; } } /* Print styles */ @media print { .tasknotes-plugin .task-card { break-inside: avoid; page-break-inside: avoid; background: white !important; box-shadow: none !important; border: 1px solid #ccc !important; } .tasknotes-plugin .task-card__quick-actions, .tasknotes-plugin .task-card__context-menu, .tasknotes-plugin .task-card__enhanced-info { display: none !important; } } /* Compact mode for smaller screens - Todoist style */ @media (max-width: 768px) { .tasknotes-plugin .task-card { padding: 10px 14px; } .tasknotes-plugin .task-card__content { gap: 1px; } .tasknotes-plugin .task-card__title { font-size: 13px; } .tasknotes-plugin .task-card__metadata { font-size: 11px; } } /* ================================================================= TASKCARD DRAG AND DROP STATES ================================================================= */ /* Draggable task cards */ .tasknotes-plugin .task-card[draggable="true"] { transition: all var(--tn-transition-fast); } .tasknotes-plugin .task-card[draggable="true"]:hover { cursor: grab; transform: translateY(-1px); box-shadow: 0 2px 8px color-mix(in srgb, var(--tn-shadow-color) 15%, transparent); } .tasknotes-plugin .task-card[draggable="true"]:active { cursor: grabbing; transform: scale(0.98) rotate(1deg); } /* Enhanced dragging state */ .tasknotes-plugin .task-card--dragging { opacity: 0.8; transform: rotate(5deg) scale(1.02); cursor: grabbing; z-index: 1000; pointer-events: none; box-shadow: 0 8px 32px color-mix(in srgb, var(--tn-shadow-color) 30%, transparent), 0 0 0 1px color-mix(in srgb, var(--tn-interactive-accent) 50%, transparent); transition: none; animation: drag-pulse 2s infinite ease-in-out; } @keyframes drag-pulse { 0%, 100% { box-shadow: 0 8px 32px color-mix(in srgb, var(--tn-shadow-color) 30%, transparent), 0 0 0 1px color-mix(in srgb, var(--tn-interactive-accent) 50%, transparent); } 50% { box-shadow: 0 12px 40px color-mix(in srgb, var(--tn-shadow-color) 40%, transparent), 0 0 0 2px color-mix(in srgb, var(--tn-interactive-accent) 70%, transparent); } } /* Drag preview ghost */ .tasknotes-plugin .task-card--drag-ghost { opacity: 0.3; transform: scale(0.95); transition: all var(--tn-transition-fast); pointer-events: none; filter: blur(1px); } /* Drop zone feedback */ .tasknotes-plugin .task-card--drop-target { border: 2px dashed var(--tn-interactive-accent); background: color-mix(in srgb, var(--tn-interactive-accent) 5%, var(--tn-bg-primary)); transform: scale(1.02); transition: all var(--tn-transition-fast); } .tasknotes-plugin .task-card--drop-target::before { content: ''; position: absolute; inset: -2px; border-radius: var(--tn-radius-sm); background: linear-gradient( 45deg, transparent 25%, color-mix(in srgb, var(--tn-interactive-accent) 10%, transparent) 25%, color-mix(in srgb, var(--tn-interactive-accent) 10%, transparent) 50%, transparent 50%, transparent 75%, color-mix(in srgb, var(--tn-interactive-accent) 10%, transparent) 75% ); background-size: 8px 8px; animation: drop-zone-shimmer 1s linear infinite; z-index: -1; } @keyframes drop-zone-shimmer { 0% { background-position: 0 0; } 100% { background-position: 8px 8px; } } /* ================================================================= LAYOUT MODIFIERS - Inline Mode for Task Link Widgets ================================================================= */ /* Inline layout - single line, compact display for editor task links */ .tasknotes-plugin .task-card--layout-inline { /* Use inline display to respect line boundaries */ display: inline !important; /* Minimal padding - no indentation needed in inline mode */ padding: 2px 0; margin: 0; margin-bottom: 0; /* Visual style - transparent background */ background-color: transparent; border: none; border-radius: 0; /* Size constraints */ min-height: auto; /* Prevent text from breaking into multiple lines */ white-space: nowrap; /* Force inline behavior */ vertical-align: baseline; } .tasknotes-plugin .task-card--layout-inline:hover { background-color: transparent; } /* Disable drag cursor for inline tasks - they're not draggable */ .tasknotes-plugin .task-card--layout-inline[draggable="true"]:hover { cursor: default; transform: none; box-shadow: none; } .tasknotes-plugin .task-card--layout-inline[draggable="true"]:active { cursor: default; transform: none; } /* Remove chevron gutter padding in inline mode */ .tasknotes-plugin .task-card--layout-inline, .tasknotes-plugin .task-card--layout-inline.task-card--chevron-left { padding-left: 0 !important; padding-right: 0 !important; } /* Main row in inline mode - horizontal layout */ .tasknotes-plugin .task-card--layout-inline .task-card__main-row { display: inline !important; vertical-align: baseline; } /* Content in inline mode - horizontal, truncated */ .tasknotes-plugin .task-card--layout-inline .task-card__content { display: inline !important; vertical-align: baseline; } /* Title in inline mode - truncate with ellipsis */ .tasknotes-plugin .task-card--layout-inline .task-card__title { display: inline !important; font-size: inherit; /* Use editor's font size */ font-weight: 400; margin: 0; vertical-align: baseline; } /* Title text in inline mode - ensure ellipsis works */ .tasknotes-plugin .task-card--layout-inline .task-card__title-text { display: inline !important; vertical-align: baseline; } /* Metadata in inline mode - stays on same line, scrolls if needed */ .tasknotes-plugin .task-card--layout-inline .task-card__metadata { display: inline-block !important; font-size: var(--tn-font-size-sm); margin: 0; padding: 0; vertical-align: text-bottom; position: relative; top: -0.15em; white-space: nowrap; width: fit-content; max-width: 100%; overflow-x: auto; overflow-y: hidden; scrollbar-width: none; } /* Only apply spacing and min-width when metadata has content - prevents blank space when empty */ .tasknotes-plugin .task-card--layout-inline .task-card__metadata:not(:empty) { margin-left: 0.5em; min-width: min(30%, 300px); } .tasknotes-plugin .task-card--layout-inline .task-card__metadata:hover { scrollbar-width: thin; scrollbar-color: var(--background-modifier-border) transparent; } .tasknotes-plugin .task-card--layout-inline .task-card__metadata::-webkit-scrollbar { height: 0; } .tasknotes-plugin .task-card--layout-inline .task-card__metadata:hover::-webkit-scrollbar { height: 4px; } .tasknotes-plugin .task-card--layout-inline .task-card__metadata::-webkit-scrollbar-track { background: transparent; } .tasknotes-plugin .task-card--layout-inline .task-card__metadata::-webkit-scrollbar-thumb { background: var(--background-modifier-border); border-radius: 2px; } /* Wrapper for metadata items in inline mode */ .tasknotes-plugin .task-card--layout-inline .task-card__metadata > * { display: inline; vertical-align: baseline; } .tasknotes-plugin .task-card--layout-inline .task-card__metadata > *:last-child { margin-right: 0 !important; } /* Smaller status dot in inline mode */ .tasknotes-plugin .task-card--layout-inline .task-card__status-dot { display: inline-block; width: 0.85em; height: 0.85em; margin-right: 0.25em; border-width: 1.5px; vertical-align: baseline; transform: translateY(0.1em); } /* Smaller priority dot in inline mode */ .tasknotes-plugin .task-card--layout-inline .task-card__priority-dot { display: inline-block; width: 0.6em; height: 0.6em; margin: 0 0.25em 0 0; border-width: 1.5px; vertical-align: baseline; transform: translateY(0.05em); } /* Compact indicators in inline mode */ .tasknotes-plugin .task-card--layout-inline .task-card__recurring-indicator, .tasknotes-plugin .task-card--layout-inline .task-card__reminder-indicator { display: inline-block; position: static; width: 0.85em; height: 0.85em; margin-right: 0.15em; vertical-align: baseline; } /* Compact context menu in inline mode */ .tasknotes-plugin .task-card--layout-inline .task-card__context-menu { display: inline-block; width: 0.9em; height: 0.9em; padding: 0; vertical-align: baseline; } /* Compact date displays in inline mode */ .tasknotes-plugin .task-card--layout-inline .task-card__metadata-date { display: inline; font-size: var(--tn-font-size-sm); padding: 0; margin: 0 0.75em 0 0; vertical-align: baseline; } /* Metadata property in inline mode */ .tasknotes-plugin .task-card--layout-inline .task-card__metadata-property { display: inline; font-size: var(--tn-font-size-sm); padding: 0; margin: 0 0.75em 0 0; vertical-align: baseline; } /* Metadata pills in inline mode */ .tasknotes-plugin .task-card--layout-inline .task-card__metadata-pill { display: inline; margin: 0 0.75em 0 0; vertical-align: baseline; } /* Metadata separators in inline mode */ .tasknotes-plugin .task-card--layout-inline .task-card__metadata-separator { display: inline; vertical-align: baseline; } /* SVG icons in inline mode - ensure they don't affect line height */ .tasknotes-plugin .task-card--layout-inline svg { display: inline-block; width: 0.85em; height: 0.85em; vertical-align: baseline; transform: translateY(0.1em); } /* Hide subtask-related elements in inline mode */ .tasknotes-plugin .task-card--layout-inline .task-card__subtasks, .tasknotes-plugin .task-card--layout-inline .task-card__blocking { display: none; } /* Ensure inline cards don't have bottom margin */ .tasknotes-plugin .task-card--layout-inline:last-child { margin-bottom: 0; } /* ================================================================= COMPACT LAYOUT (for future use) ================================================================= */ /* Compact layout - smaller padding but still vertical */ .tasknotes-plugin .task-card--layout-compact { padding: var(--tn-spacing-xs) var(--tn-spacing-sm); } .tasknotes-plugin .task-card--layout-compact .task-card__main-row { gap: var(--tn-spacing-xs); } .tasknotes-plugin .task-card--layout-compact .task-card__title { font-size: var(--tn-font-size-sm); } .tasknotes-plugin .task-card--layout-compact .task-card__metadata { font-size: var(--tn-font-size-xs); gap: var(--tn-spacing-xs); } .tasknotes-plugin .task-card--layout-compact .task-card__status-dot { width: 14px; height: 14px; } .tasknotes-plugin .task-card--layout-compact .task-card__priority-dot { width: 8px; height: 8px; margin: 0 var(--tn-spacing-xs); } .tasknotes-plugin .task-card--layout-compact .task-card__badges { gap: 2px; } .tasknotes-plugin .task-card--layout-compact .task-card__recurring-indicator, .tasknotes-plugin .task-card--layout-compact .task-card__reminder-indicator, .tasknotes-plugin .task-card--layout-compact .task-card__project-indicator, .tasknotes-plugin .task-card--layout-compact .task-card__chevron, .tasknotes-plugin .task-card--layout-compact .task-card__blocking-toggle { width: 12px; height: 12px; } .tasknotes-plugin .task-card--layout-compact .task-card__context-menu { width: 12px; height: 12px; } /* ================================================================= SELECTION MODE STYLES ================================================================= */ /* Selected task card styling */ .tasknotes-plugin .task-card--selected { background-color: color-mix(in srgb, var(--interactive-accent) 15%, transparent); border-radius: var(--tn-radius-sm); } .tasknotes-plugin .task-card--selected:hover { background-color: color-mix(in srgb, var(--interactive-accent) 20%, transparent); } /* Primary selected task (first selected) gets a border */ .tasknotes-plugin .task-card--selected-primary { box-shadow: inset 0 0 0 2px var(--interactive-accent); } /* Selection indicator floating badge */ .tasknotes-plugin .tn-selection-indicator { position: fixed; bottom: 20px; right: 20px; background-color: var(--interactive-accent); color: var(--text-on-accent); padding: 8px 16px; border-radius: var(--tn-radius-md); font-size: var(--tn-font-size-sm); font-weight: 500; box-shadow: 0 4px 12px color-mix(in srgb, var(--tn-shadow-color, black) 20%, transparent); z-index: 100; display: none; animation: tn-selection-indicator-appear 0.2s ease-out; transition: background-color var(--tn-transition-fast); } .tasknotes-plugin .tn-selection-indicator:hover { background-color: var(--interactive-accent-hover); } @keyframes tn-selection-indicator-appear { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } /* Kanban card wrapper selection state */ .tasknotes-plugin .kanban-view__card-wrapper--selected { background-color: color-mix(in srgb, var(--interactive-accent) 15%, transparent); border-radius: var(--tn-radius-sm); } /* Primary selected kanban card wrapper gets a border */ .tasknotes-plugin .kanban-view__card-wrapper--selected-primary { box-shadow: inset 0 0 0 2px var(--interactive-accent); } /* ===== TASK-INLINE-WIDGET.CSS ===== */ /* ================================================================= INLINE TASK WIDGET STYLES - BEM NAMING CONVENTION & PROPER SCOPING ================================================================= */ /* All inline task widget styles are scoped under .tasknotes-plugin for proper isolation */ /* ================================================================= INLINE TASK LINK WIDGET WRAPPER ================================================================= */ /* Wrapper for inline task link widgets - ensures proper inline display with bullets */ .tasknotes-plugin.tasknotes-inline-widget { display: inline !important; vertical-align: baseline; line-height: inherit; /* Prevent wrapper from causing line breaks */ white-space: normal; } /* ================================================================= INLINE TASK PREVIEW STYLES (Editor Widgets) ================================================================= */ /* Standalone inline task preview widget */ .tasknotes-plugin .task-inline-preview { /* Layout - inline flexbox for proper element alignment */ display: inline-flex; align-items: center; gap: 8px; white-space: nowrap; /* Typography - match editor font */ font-size: var(--editor-font-size, 16px); font-family: var(--editor-font-family, var(--font-interface)); /* Visual styling - clean text appearance */ padding: 2px 4px; /* Interactivity */ cursor: var(--cursor); /* Prevent text selection issues */ user-select: none; -webkit-user-select: none; /* Ensure proper vertical alignment with text */ vertical-align: baseline; line-height: 1.4; } /* Hide when cursor is on the same line */ .tasknotes-plugin .task-inline-preview.task-inline-preview--cursor-hidden { display: none; } /* Status indicator dot - match task card styling */ .tasknotes-plugin .task-inline-preview__status-dot { display: inline-flex; align-items: center; justify-content: center; width: 14px; height: 14px; border-radius: 50%; border: 2px solid var(--tn-border-color); background-color: transparent; transition: all 0.2s ease; cursor: var(--cursor); position: relative; flex-shrink: 0; margin-right: 6px; /* More gap between status and priority */ transform: translateY(2px); /* Lower the status circle slightly for better visual alignment */ } .tasknotes-plugin .task-inline-preview__status-dot:hover { border-color: var(--tn-text-muted); box-shadow: 0 0 6px rgba(100, 149, 237, 0.4); transform: translateY(2px) scale(1.1); /* Maintain the lowered position while scaling */ } /* Priority indicator dot - filled solid circle */ .tasknotes-plugin .task-inline-preview__priority-dot { display: inline-flex; align-items: center; justify-content: center; width: 10px; height: 10px; border-radius: 50%; background-color: var(--tn-text-muted); border: none; flex-shrink: 0; margin-right: 6px; /* Gap between priority and title */ cursor: var(--cursor); } /* Date info styling */ .tasknotes-plugin .task-inline-preview__date { opacity: 0.7; font-size: 0.9em; transition: opacity 0.15s ease; flex-shrink: 0; vertical-align: baseline; } /* Clickable date styling */ .tasknotes-plugin .task-inline-preview__date--clickable { cursor: var(--cursor); border-radius: 3px; padding: 1px 3px; transition: all 0.15s ease; } .tasknotes-plugin .task-inline-preview__date--clickable:hover { opacity: 1; background-color: var(--background-modifier-hover); transform: translateY(-1px); } /* Date icon styling */ .tasknotes-plugin .task-inline-preview__date-icon { display: inline-block; width: 12px; height: 12px; margin-left: 6px; margin-right: 6px; transition: opacity 0.15s ease; vertical-align: baseline; } /* Fix Lucide icon alignment within date icons */ .tasknotes-plugin .task-inline-preview__date-icon svg { vertical-align: baseline; width: 12px; height: 12px; } .tasknotes-plugin .task-inline-preview__date--clickable:hover .task-inline-preview__date-icon { opacity: 1; filter: brightness(1.3); } /* Recurring indicator styling */ .tasknotes-plugin .task-inline-preview__recurring-indicator { opacity: 0.6; cursor: var(--cursor); display: inline-block; width: 12px; height: 12px; border-radius: 3px; padding: 1px 3px; transition: all 0.15s ease; flex-shrink: 0; vertical-align: baseline; margin-right: 2px; } /* Fix Lucide icon alignment within recurring indicator */ .tasknotes-plugin .task-inline-preview__recurring-indicator svg { vertical-align: baseline; width: 12px; height: 12px; } .tasknotes-plugin .task-inline-preview:hover .task-inline-preview__recurring-indicator { opacity: 0.8; } .tasknotes-plugin .task-inline-preview__recurring-indicator:hover { opacity: 1; color: var(--interactive-accent); transform: translateY(-1px); filter: brightness(1.3); } /* Pencil icon styling */ .tasknotes-plugin .task-inline-preview__pencil { opacity: 0; cursor: var(--cursor); display: inline-block; width: 12px; height: 12px; border-radius: 3px; padding: 1px 3px; transition: all 0.15s ease; flex-shrink: 0; vertical-align: baseline; } /* Fix Lucide icon alignment within pencil icon */ .tasknotes-plugin .task-inline-preview__pencil svg { vertical-align: baseline; width: 12px; height: 12px; } .tasknotes-plugin .task-inline-preview:hover .task-inline-preview__pencil { opacity: 0.8; } .tasknotes-plugin .task-inline-preview__pencil:hover { opacity: 1; transform: translateY(-1px); filter: brightness(1.3); } /* Hover state */ .tasknotes-plugin .task-inline-preview:hover { background-color: var(--background-modifier-hover); } /* Completed task styling with maximum specificity */ .tasknotes-plugin span.task-inline-preview.task-inline-preview--completed span.task-inline-preview__title, .tasknotes-plugin.task-inline-preview.task-inline-preview--completed .task-inline-preview__title, .tasknotes-plugin .task-inline-preview--completed .task-inline-preview__title { text-decoration: line-through; opacity: 0.7; color: var(--text-muted); } /* Completed task title hover effect */ .tasknotes-plugin .task-inline-preview--completed .task-inline-preview__title:hover { color: var(--interactive-accent); opacity: 0.9; } .tasknotes-plugin span.task-inline-preview.task-inline-preview--completed, .tasknotes-plugin.task-inline-preview.task-inline-preview--completed, .tasknotes-plugin .task-inline-preview--completed { opacity: 0.8; } /* ================================================================= INSTANT CONVERT BUTTON STYLES ================================================================= */ /* Convert button for checkbox tasks - High specificity to override browser defaults */ .tasknotes-plugin button.instant-convert-button { /* Layout */ display: inline-flex; align-items: center; justify-content: center; /* Sizing */ width: 15px; height: 15px; margin-left: 8px; padding: 0; /* Visual styling */ background: transparent; color: var(--text-muted); border: none !important; box-shadow: none; border-radius: 3px; /* Interactivity */ cursor: var(--cursor); opacity: 0.6; transition: all 0.15s ease; /* Reset button styles */ font-family: inherit; font-size: inherit; line-height: 1; box-sizing: border-box; outline: none; text-decoration: none; vertical-align: baseline; } .tasknotes-plugin button.instant-convert-button:hover { background: var(--interactive-accent); color: var(--text-on-accent); opacity: 1; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); } .tasknotes-plugin button.instant-convert-button:active { transform: scale(0.95); } .tasknotes-plugin button.instant-convert-button:focus { outline: 2px solid var(--interactive-accent); outline-offset: 1px; } /* Icon inside the convert button */ .tasknotes-plugin .instant-convert-button__icon { display: flex; align-items: center; justify-content: center; width: 14px; height: 14px; } .tasknotes-plugin .instant-convert-button__icon svg { width: 12px; height: 12px; } /* ================================================================= ADDITIONAL INLINE TASK PREVIEW ELEMENTS ================================================================= */ /* Completed status styling - filled circle with checkmark */ .tasknotes-plugin .task-inline-preview--completed .task-inline-preview__status-dot { background-color: var(--current-status-color, var(--tn-color-success)); border-color: var(--current-status-color, var(--tn-color-success)); color: var(--tn-text-on-accent); font-size: 9px; font-weight: bold; display: flex; align-items: center; justify-content: center; } /* Task title */ .tasknotes-plugin .task-inline-preview__title { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text-normal); font-weight: 500; margin: 0; min-width: 0; /* Allow flex shrinking */ max-width: min(600px, 80vw); /* Responsive max-width for longer titles */ flex-shrink: 1; /* Allow shrinking if needed */ vertical-align: baseline; cursor: var(--cursor); transition: color 0.15s ease; border-radius: 2px; padding: 1px 2px; margin: -1px -2px; } /* Task title hover effect */ .tasknotes-plugin .task-inline-preview__title:hover { color: var(--interactive-accent); background-color: var(--background-modifier-hover); } /* Priority indicator */ .tasknotes-plugin .task-inline-preview__priority { font-weight: bold; font-size: 0.85em; flex-shrink: 0; margin-left: 3px; margin-right: 1px; } /* Priority border colors */ .tasknotes-plugin .task-inline-preview.task-inline-preview--priority-high { border-left-color: var(--color-red); border-left-width: 4px; } .tasknotes-plugin .task-inline-preview.task-inline-preview--priority-medium { border-left-color: var(--color-orange); border-left-width: 3px; } .tasknotes-plugin .task-inline-preview.task-inline-preview--priority-low { border-left-color: var(--color-blue); } /* Pencil menu icon */ .tasknotes-plugin .task-inline-preview__menu-icon { width: 10px; height: 10px; flex-shrink: 0; opacity: 0.4; transition: opacity 0.15s ease; cursor: var(--cursor); display: flex; align-items: center; justify-content: center; border-radius: 1px; padding: 0; margin-left: 1px; } .tasknotes-plugin .task-inline-preview__menu-icon:hover { opacity: 1; background-color: var(--background-modifier-hover); } .tasknotes-plugin .task-inline-preview:hover .task-inline-preview__menu-icon { opacity: 0.8; } /* ================================================================= THEME-SPECIFIC ADJUSTMENTS ================================================================= */ /* Theme-specific adjustments */ .theme-dark .tasknotes-plugin .task-inline-preview { background-color: var(--background-secondary); border-color: var(--background-modifier-border); } .theme-light .tasknotes-plugin .task-inline-preview { background-color: var(--background-secondary); border-color: var(--background-modifier-border); } /* ================================================================= ANIMATIONS ================================================================= */ /* Animation for appearance */ .tasknotes-plugin .task-inline-preview { animation: tn-fadeInTaskPreview 0.2s ease-out; } @keyframes tn-fadeInTaskPreview { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } } /* ================================================================= RESPONSIVE DESIGN ================================================================= */ /* Responsive adjustments */ @media (max-width: 768px) { .tasknotes-plugin .task-inline-preview { max-width: 200px; padding: 2px 4px; gap: 6px; font-size: calc(var(--editor-font-size, 16px) * 0.9); } .tasknotes-plugin .task-inline-preview__status-dot { width: 16px; height: 16px; } .tasknotes-plugin .task-inline-preview__menu-icon { width: 14px; height: 14px; } } /* ================================================================= READING MODE SPECIFIC STYLES ================================================================= */ /* Reading mode task preview adjustments */ .tasknotes-plugin .task-inline-preview--reading-mode { /* Ensure proper display in reading mode context */ display: inline-flex; align-items: center; gap: 8px; /* Better visual integration with reading mode */ padding: 3px 8px; border-radius: 4px; background-color: var(--background-modifier-hover); border: 1px solid var(--background-modifier-border); /* Smooth transitions */ transition: all 0.15s ease; } .tasknotes-plugin .task-inline-preview--reading-mode:hover { background-color: var(--background-modifier-hover-active); border-color: var(--interactive-accent); transform: translateY(-1px); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); } /* Reading mode title styling */ .tasknotes-plugin .task-inline-preview--reading-mode .task-inline-preview__title { font-weight: 500; color: var(--text-normal); } /* Reading mode date styling */ .tasknotes-plugin .task-inline-preview--reading-mode .task-inline-preview__date { font-size: 0.85em; opacity: 0.8; } /* Reading mode icon adjustments */ .tasknotes-plugin .task-inline-preview--reading-mode .task-inline-preview__date-icon { width: 11px; height: 11px; margin-right: 3px; } .tasknotes-plugin .task-inline-preview--reading-mode .task-inline-preview__pencil { width: 11px; height: 11px; opacity: 0.5; } .tasknotes-plugin .task-inline-preview--reading-mode:hover .task-inline-preview__pencil { opacity: 0.9; } /* ================================================================= TASK INLINE PREVIEW DRAG AND DROP STATES ================================================================= */ /* Dragging state for task inline preview widgets */ .tasknotes-plugin .task-inline-preview--dragging { opacity: 0.6; transform: scale(0.95); cursor: grabbing; z-index: 1000; pointer-events: none; } /* Drag cursor for draggable task inline preview widgets */ .tasknotes-plugin .task-inline-preview[draggable="true"] { cursor: grab; } .tasknotes-plugin .task-inline-preview[draggable="true"]:active { cursor: grabbing; } /* ===== NOTE-CARD-BEM.CSS ===== */ /* ================================================================= NOTECARD COMPONENT - BEM NAMING CONVENTION & PROPER SCOPING ================================================================= */ /* All NoteCard styles are scoped under .tasknotes-plugin for proper isolation */ .tasknotes-plugin .note-card { /* Layout & Structure */ display: flex; align-items: flex-start; gap: 0; position: relative; /* Spacing & Sizing - Todoist compact style */ padding: var(--tn-spacing-md) var(--tn-spacing-lg); margin-bottom: 1px; /* Visual Styling - Todoist minimal style */ background-color: transparent; border: none; border-radius: 0; border-left: 3px solid transparent; /* Transparent by default */ /* Interactions & Accessibility - Simplified */ cursor: var(--cursor); transition: background-color var(--tn-transition-fast); outline: none; role: listitem; tabindex: 0; } .tasknotes-plugin .note-card:hover { background-color: var(--tn-interactive-hover); } .tasknotes-plugin .note-card:focus { background-color: var(--tn-interactive-hover); outline: 1px solid var(--tn-border-color); outline-offset: -1px; } .tasknotes-plugin .note-card:focus:not(:focus-visible) { outline: none; } .tasknotes-plugin .note-card:last-child { margin-bottom: 0; } /* Daily note specific styling */ .tasknotes-plugin .note-card--daily { border-left: 3px solid var(--tn-interactive-accent); /* Purple left border for daily notes only */ } /* Ensure all note card titles match task card titles exactly */ .tasknotes-plugin .note-card__title, .tasknotes-plugin .tn-card__title, .tasknotes-plugin .note-card--daily .note-card__title, .tasknotes-plugin .note-card--daily-note .note-card__title { font-size: var(--tn-font-size-lg) !important; font-weight: 400 !important; line-height: 1.3 !important; } /* Remove border radius for cleaner list appearance */ .tasknotes-plugin .note-card:first-child, .tasknotes-plugin .note-card:last-child, .tasknotes-plugin .note-card:first-child:last-child { border-radius: 0; } /* ================================================================= NOTECARD ELEMENTS (BEM __element) ================================================================= */ .tasknotes-plugin .note-card__main-row { display: flex; align-items: flex-start; gap: 0; width: 100%; } .tasknotes-plugin .note-card__icon { display: inline-flex; align-items: center; justify-content: center; width: 16px; height: 16px; margin-right: 8px; flex-shrink: 0; color: var(--tn-text-muted); align-self: center; opacity: 0.7; } .tasknotes-plugin .note-card__icon svg { width: 16px; height: 16px; } .tasknotes-plugin .note-card__content { flex: 1; display: flex; flex-direction: column; gap: 2px; min-width: 0; } .tasknotes-plugin .note-card__title { font-size: var(--tn-font-size-lg); font-weight: 400; line-height: 1.3; color: var(--tn-text-normal); margin: 0; word-wrap: break-word; word-break: break-word; white-space: normal; transition: color var(--tn-transition-fast); } .tasknotes-plugin .note-card__divider { height: 1px; background: var(--tn-border-color); margin: var(--tn-spacing-xs) 0; opacity: 0.6; } .tasknotes-plugin .note-card__tags { font-size: var(--tn-font-size-xs); color: var(--tn-text-muted); line-height: 1.2; margin: 0; display: flex; flex-wrap: wrap; gap: var(--tn-spacing-xs); } .tasknotes-plugin .note-card__tag { display: inline-flex; align-items: center; padding: 1px var(--tn-spacing-xs); border-radius: var(--tn-radius-xs); background: var(--tn-bg-secondary); font-size: var(--tn-font-size-xs); color: var(--tn-text-muted); border: 1px solid var(--tn-border-color); transition: all var(--tn-transition-fast); } .tasknotes-plugin .note-card__tag:hover { background: var(--tn-interactive-hover); color: var(--tn-text-normal); } .tasknotes-plugin .note-card__tags-text { font-size: var(--tn-font-size-xs); color: var(--tn-text-muted); line-height: 1.2; margin: 0; font-style: italic; } .tasknotes-plugin .note-card__metadata { font-size: var(--tn-font-size-xs); color: var(--tn-text-faint); line-height: 1.2; margin: 0; opacity: 0.8; } .tasknotes-plugin .note-card__preview { font-size: var(--tn-font-size-xs); color: var(--tn-text-muted); line-height: 1.3; margin-top: var(--tn-spacing-xs); max-height: 2.6em; /* Approximately 2 lines */ overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; } .tasknotes-plugin .note-card__badge { position: absolute; top: var(--tn-spacing-md); right: var(--tn-spacing-md); padding: 2px var(--tn-spacing-xs); border-radius: var(--tn-radius-xs); font-size: var(--tn-font-size-xs); font-weight: var(--tn-font-weight-medium); text-transform: uppercase; letter-spacing: 0.05em; z-index: 2; opacity: 0.8; transition: opacity var(--tn-transition-fast); } .tasknotes-plugin .note-card:hover .note-card__badge { opacity: 1; } /* ================================================================= NOTECARD MODIFIERS (BEM --modifier) ================================================================= */ /* Compact Layout */ .tasknotes-plugin .note-card--compact { padding: var(--tn-spacing-sm) var(--tn-spacing-md); } .tasknotes-plugin .note-card--compact .note-card__content { gap: 2px; } .tasknotes-plugin .note-card--compact .note-card__title { font-size: var(--tn-font-size-sm); } .tasknotes-plugin .note-card--compact .note-card__preview { display: none; /* Hide preview in compact mode */ } /* Daily Note Variant */ .tasknotes-plugin .note-card--daily-note { border-left-color: var(--tn-color-daily-note); background: transparent; /* Keep consistent with other note cards */ } .tasknotes-plugin .note-card--daily-note .note-card__badge { background: var(--tn-color-daily-note); color: var(--tn-bg-primary); } /* Shadow Variants - Disabled for consistency with task cards */ .tasknotes-plugin .note-card--shadow-light:hover { box-shadow: none; } .tasknotes-plugin .note-card--shadow-medium:hover { box-shadow: none; } .tasknotes-plugin .note-card--shadow-strong:hover { box-shadow: none; } /* Update Animation */ .tasknotes-plugin .note-card--updated { animation: note-card-update 1.2s ease-out; } @keyframes note-card-update { 0% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--tn-color-info) 40%, transparent); border-color: var(--tn-border-color); } 50% { box-shadow: 0 0 0 2px color-mix(in srgb, var(--tn-color-info) 30%, transparent); border-left-color: var(--tn-color-info); } 100% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--tn-color-info) 0%, transparent); border-color: var(--tn-border-color); } } /* ================================================================= SHARED BASE CARD STYLES ================================================================= */ /* Base card component that can be shared between TaskCard and NoteCard */ .tasknotes-plugin .tn-card { /* Common card styling */ display: flex; align-items: flex-start; gap: 0; position: relative; padding: var(--tn-spacing-md) var(--tn-spacing-lg); margin-bottom: 0; background-color: var(--tn-bg-primary); border: none; border-bottom: 1px solid var(--tn-border-color); border-radius: 0; cursor: var(--cursor); transition: background-color var(--tn-transition-fast); } .tasknotes-plugin .tn-card:hover { background-color: var(--tn-interactive-hover); } .tasknotes-plugin .tn-card__content { flex: 1; display: flex; flex-direction: column; gap: var(--tn-spacing-xs); min-width: 0; } .tasknotes-plugin .tn-card__title { font-size: var(--tn-font-size-lg); font-weight: 400; line-height: 1.3; color: var(--tn-text-normal); margin: 0; word-wrap: break-word; word-break: break-word; white-space: normal; transition: color var(--tn-transition-fast); } /* ================================================================= RESPONSIVE DESIGN ================================================================= */ /* Touch-specific adjustments */ @media (pointer: coarse) { .tasknotes-plugin .note-card { padding: var(--tn-spacing-lg) var(--tn-spacing-xl); min-height: 44px; } .tasknotes-plugin .note-card:hover { transform: none; } .tasknotes-plugin .note-card:active { transform: scale(0.98); transition: transform 0.1s; } .tasknotes-plugin .note-card__badge { padding: var(--tn-spacing-xs) var(--tn-spacing-sm); font-size: var(--tn-font-size-sm); } } /* ===== FILTER-BAR-BEM.CSS ===== */ /* ================================================================= ADVANCED FILTER BAR COMPONENT - BEM NAMING CONVENTION & PROPER SCOPING ================================================================= */ /* All FilterBar styles are scoped under .tasknotes-plugin for proper isolation */ /* Main Container */ .tasknotes-plugin .advanced-filter-bar { display: flex; flex-direction: column; gap: var(--tn-spacing-md); margin-bottom: var(--tn-spacing-lg); } /* Top Controls (Filter Icon + Search + Templates Button) */ .tasknotes-plugin .filter-bar__top-controls { display: flex; align-items: center; gap: 8px; position: relative; /* Set as positioning context for the dropdown */ z-index: 10; /* Ensure this container is on top of the filter box below */ isolation: isolate; /* Create a new stacking context */ container-type: inline-size; /* Enable container queries */ } /* Filter toggle base (positioning for badge) */ .tasknotes-plugin .filter-bar__filter-toggle { position: relative; /* context for badge */ } /* Active filter badge dot */ .tasknotes-plugin .filter-bar__filter-toggle.has-active-filters::after { content: ''; position: absolute; top: 2px; right: 2px; width: 8px; height: 8px; border-radius: 50%; background-color: #a78bfa; /* subtle purple */ } /* Icon + Text Button Styling */ .tasknotes-plugin .filter-bar__top-controls .has-text-icon { display: flex !important; align-items: center; gap: 3px; padding: 2px 6px !important; min-height: var(--input-height); border-radius: var(--radius-s); width: auto !important; /* Override any fixed width */ } .tasknotes-plugin .filter-bar__top-controls .has-text-icon .button-icon { display: flex; align-items: center; justify-content: center; width: 16px; height: 16px; flex-shrink: 0; } .tasknotes-plugin .filter-bar__top-controls .has-text-icon .button-icon svg { width: 16px; height: 16px; } .tasknotes-plugin .filter-bar__top-controls .has-text-icon .button-text { white-space: nowrap; font-size: var(--font-ui-small); line-height: 1; } /* Override button-specific hover states for consistent text+icon button behavior */ .tasknotes-plugin .filter-bar__top-controls .has-text-icon:hover { background: var(--interactive-hover) !important; color: var(--text-normal) !important; } /* Clear all button in Filter section header */ .tasknotes-plugin .filter-bar__clear-filters { display: inline-flex; align-items: center; gap: var(--tn-spacing-xs); margin-left: var(--tn-spacing-sm); padding: 2px 6px; border-radius: var(--radius-s); border: 1px solid var(--color-grey-tint); background-color: var(--color-grey-base); color: var(--text-normal); font-size: var(--font-ui-small); } .tasknotes-plugin .filter-bar__clear-filters:hover { background-color: var(--interactive-hover); } .tasknotes-plugin .filter-bar__clear-filters svg { width: 16px; height: 16px; } /* Clear all filters button in Filter section header - matches Save button style exactly */ .tasknotes-plugin .filter-bar__clear-all-button { /* Ensure identical sizing and alignment with Save button */ width: var(--input-height); height: var(--input-height); min-width: var(--input-height); min-height: var(--input-height); padding: 0; margin-right: 8px; display: inline-flex; align-items: center; justify-content: center; vertical-align: top; } /* Ensure the icon is properly centered */ .tasknotes-plugin .filter-bar__clear-all-button svg { width: 16px; height: 16px; } /* Close modal button - matches other buttons exactly but with transparent background */ .tasknotes-plugin .filter-bar__close-modal-button { /* Identical sizing to Clear and Save buttons */ width: var(--input-height); height: var(--input-height); min-width: var(--input-height); min-height: var(--input-height); padding: 0; margin-left: 8px; display: inline-flex; align-items: center; justify-content: center; vertical-align: top; /* Transparent background */ background: transparent !important; border: none !important; } /* Ensure the close icon is properly centered */ .tasknotes-plugin .filter-bar__close-modal-button svg { width: 16px; height: 16px; } /* Natural Language Date Input Enhancement */ .tasknotes-plugin .filter-date-input-container { display: flex; align-items: center; gap: var(--tn-spacing-xs); width: 100%; } .tasknotes-plugin .filter-date-text-input { flex: 1; transition: border-color 0.2s ease, background-color 0.2s ease; } /* Date input validation states - subtle styling */ .tasknotes-plugin .filter-date-text-input.is-valid { border-left: 2px solid var(--color-green); background-color: transparent; box-shadow: inset 0 0 0 1px rgba(var(--color-green-rgb), 0.15); } .tasknotes-plugin .filter-date-text-input.is-invalid { border-left: 2px solid var(--color-red); background-color: transparent; box-shadow: inset 0 0 0 1px rgba(var(--color-red-rgb), 0.15); } .tasknotes-plugin .filter-date-text-input.is-empty { border-left: none; background-color: transparent; box-shadow: none; } .tasknotes-plugin .filter-date-help-button { width: 20px; height: 20px; border-radius: 50%; border: 1px solid var(--text-muted); background: transparent; color: var(--text-muted); font-size: 12px; cursor: var(--cursor); display: flex; align-items: center; justify-content: center; transition: all 0.2s ease; } .tasknotes-plugin .filter-date-help-button:hover { background: var(--interactive-hover); color: var(--text-normal); border-color: var(--text-normal); } .filter-date-help-tooltip { background: var(--background-primary); border: 1px solid var(--background-modifier-border); border-radius: var(--radius-m); padding: var(--tn-spacing-sm); box-shadow: var(--shadow-s); min-width: 200px; max-width: 300px; font-size: var(--font-ui-smaller); } .filter-date-help-tooltip h4 { margin: 0 0 var(--tn-spacing-xs) 0; color: var(--text-normal); font-weight: var(--font-semibold); } .filter-date-help-tooltip ul { margin: 0; padding: 0; list-style: none; display: grid; grid-template-columns: 1fr 1fr; gap: 2px; } .filter-date-help-tooltip li { padding: 2px var(--tn-spacing-xs); color: var(--text-muted); background: var(--background-modifier-hover); border-radius: var(--radius-s); font-family: var(--font-monospace); font-size: 11px; } .tasknotes-plugin .filter-bar__filter-toggle { padding: var(--tn-spacing-xs); background: transparent; border: none; border-radius: var(--radius-s); color: var(--text-muted); cursor: var(--cursor); display: flex; align-items: center; justify-content: center; width: var(--tn-button-height-md); height: var(--tn-button-height-md); transition: all 0.2s ease; box-shadow: none; } .tasknotes-plugin .filter-bar__filter-toggle:hover { background: var(--interactive-hover) !important; color: var(--text-normal); } .tasknotes-plugin .filter-bar__filter-toggle--active { background: var(--interactive-accent-tint); color: var(--color-accent); box-shadow: none; } .tasknotes-plugin .filter-bar__templates-button { padding: var(--tn-spacing-xs) var(--tn-spacing-sm); background: transparent; border: none; border-radius: var(--radius-s); color: var(--text-muted); cursor: var(--cursor); font-size: var(--font-ui-small); font-weight: 500; transition: all 0.2s ease; height: var(--tn-button-height-md); /* Consistent height */ box-shadow: none; } .tasknotes-plugin .filter-bar__templates-button:hover { background: var(--interactive-hover) !important; color: var(--text-normal); transform: none; box-shadow: none; } .tasknotes-plugin .filter-bar__templates-button--active { background: var(--interactive-accent-tint); color: var(--color-accent); box-shadow: none; } .tasknotes-plugin .filter-bar__templates-button--saved-view-active { background: var(--interactive-accent); color: var(--text-on-accent); border: none; box-shadow: 0 0 0 1px var(--color-accent); } /* Search Input */ .tasknotes-plugin .filter-bar__search-input { flex: 1; padding: var(--tn-spacing-xs) var(--tn-spacing-sm); border: 1px solid var(--background-modifier-border); border-radius: var(--radius-s); background: var(--background-primary); color: var(--text-normal); font-size: var(--font-ui-small); transition: all 0.2s ease; height: var(--tn-button-height-md); /* Consistent height */ min-width: 0 !important; /* Override any default min-width */ width: auto; /* Allow natural width */ } .tasknotes-plugin .filter-bar__search-input:focus { outline: 1px solid var(--color-accent); border-color: var(--color-accent); } .tasknotes-plugin .filter-bar__search-input::placeholder { color: var(--text-muted); font-style: italic; } /* Main Filter Box (collapsible popup) */ .tasknotes-plugin .filter-bar__main-box { position: absolute; top: calc(100% + 4px); /* Position below the top controls with a small gap */ left: auto; /* Let it position dynamically */ right: auto; /* Let it position dynamically */ width: 500px; /* Default preferred width */ max-width: 600px; /* Maximum preferred width */ min-width: 400px; /* Minimum usable width */ z-index: 1000; /* High z-index */ display: flex; flex-direction: column; gap: var(--tn-spacing-lg); padding: var(--tn-spacing-lg); background: var(--background-secondary); border: 1px solid var(--background-modifier-border); border-radius: var(--radius-m); box-shadow: 0 8px 30px rgba(0, 0, 0, 0.15); transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1); opacity: 1; transform: translateY(0) scale(1); max-height: 80vh; overflow-y: auto; } .tasknotes-plugin .filter-bar__main-box--collapsed { opacity: 0; transform: translateY(-10px) scale(0.98); pointer-events: none; /* Prevent interaction when hidden */ } /* ================================================================= VIEW SELECTOR SECTION ================================================================= */ .tasknotes-plugin .filter-bar__view-selector-dropdown { position: absolute; top: 100%; right: 0; /* Default align to right of the container */ left: auto; min-width: 240px; max-width: 320px; z-index: 1000; /* Ensure it's on top */ background: var(--background-secondary); border: 1px solid var(--background-modifier-border); border-radius: var(--radius-m); box-shadow: 0 8px 30px rgba(0, 0, 0, 0.15); margin-top: 4px; max-height: 400px; overflow-y: auto; opacity: 1; transform: translateY(0) scale(1); transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1); } /* Left-aligned variant for Views-left configuration */ .tasknotes-plugin .filter-bar__view-selector-dropdown.filter-bar__view-selector-dropdown--left { left: 0; right: auto; } .tasknotes-plugin .filter-bar__view-selector-dropdown--hidden { opacity: 0; transform: translateY(-10px) scale(0.95); pointer-events: none; } .tasknotes-plugin .filter-bar__view-section { padding: var(--tn-spacing-md); } .tasknotes-plugin .filter-bar__view-section:not(:last-child) { border-bottom: none; } .tasknotes-plugin .filter-bar__view-section-header { font-weight: 600; /* Slightly stronger for better hierarchy */ font-size: var(--font-ui-small); color: var(--text-normal); text-transform: none; /* Normal case */ letter-spacing: 0; /* Natural spacing */ margin-bottom: var(--tn-spacing-sm); padding-bottom: var(--tn-spacing-xs); } .tasknotes-plugin .filter-bar__view-item-container { display: flex; align-items: center; border-radius: var(--radius-s); transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1); margin: 2px 0; position: relative; overflow: hidden; } .tasknotes-plugin .filter-bar__view-item-container:hover { background: var(--background-modifier-hover); transform: translateX(2px); } /* Drag and drop styles */ .tasknotes-plugin .filter-bar__view-drag-handle { display: flex; align-items: center; justify-content: center; width: 24px; height: 24px; margin-right: var(--tn-spacing-xs); color: var(--text-faint); cursor: grab; font-size: 14px; user-select: none; opacity: 0; transition: all 0.2s ease; border-radius: var(--radius-s); position: relative; } .tasknotes-plugin .filter-bar__view-drag-handle::before { content: ''; position: absolute; width: 12px; height: 2px; background: currentColor; border-radius: 1px; box-shadow: 0 -4px 0 currentColor, 0 4px 0 currentColor; } .tasknotes-plugin .filter-bar__view-item-container:hover .filter-bar__view-drag-handle { opacity: 1; } .tasknotes-plugin .filter-bar__view-drag-handle:hover { color: var(--text-normal); background: var(--background-modifier-hover); transform: scale(1.05); } .tasknotes-plugin .filter-bar__view-drag-handle:active { cursor: grabbing; transform: scale(0.95); } .tasknotes-plugin .filter-bar__view-item-container--dragging { opacity: 0.8; transform: scale(1.02); background: var(--background-modifier-hover); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); border-radius: var(--radius-s); z-index: 1000; transition: none; } .tasknotes-plugin .filter-bar__view-item-container--placeholder { opacity: 0.5; background: var(--interactive-accent-tint); border: 2px dashed var(--color-accent); border-radius: var(--radius-s); pointer-events: none; min-height: 30px; transition: all 0.2s ease; animation: placeholderPulse 1s ease-in-out infinite; } @keyframes placeholderPulse { 0%, 100% { opacity: 0.5; } 50% { opacity: 0.7; } } .tasknotes-plugin .filter-bar__view-item { flex: 1; padding: var(--tn-spacing-sm) var(--tn-spacing-md); background: none; border: none !important; box-shadow: none; outline: none; color: var(--text-normal); text-align: left; justify-content: flex-start; cursor: var(--cursor); font-size: var(--font-ui-small); font-weight: 500; transition: background-color 0.2s ease; } .tasknotes-plugin .filter-bar__view-item--active { color: var(--text-on-accent); } .tasknotes-plugin .filter-bar__view-item-container--active { background: var(--interactive-accent); border-radius: var(--radius-s); border: none; } .tasknotes-plugin .filter-bar__view-item-container--active:hover { background: var(--interactive-accent-hover); transform: translateX(2px); } .tasknotes-plugin .filter-bar__view-delete { background: none; border: none; box-shadow: none; color: var(--text-muted); cursor: var(--cursor); padding: var(--tn-spacing-xs); border-radius: var(--radius-s); display: flex; align-items: center; justify-content: center; transition: all 0.2s ease; margin-right: var(--tn-spacing-xs); } .tasknotes-plugin .filter-bar__view-delete:hover { background: var(--background-modifier-hover); color: var(--text-error); } .tasknotes-plugin .filter-bar__view-action { display: block; width: 100%; padding: var(--tn-spacing-sm) var(--tn-spacing-md); background: none; border: none; color: var(--color-accent); text-align: left; cursor: var(--cursor); border-radius: var(--radius-s); font-size: var(--font-ui-small); font-weight: 500; transition: all 0.2s ease; margin: 2px 0; } .tasknotes-plugin .filter-bar__view-action:hover { background: var(--interactive-accent-tint); } .tasknotes-plugin .filter-bar__view-empty-message { padding: var(--tn-spacing-lg); color: var(--text-muted); font-size: var(--font-ui-small); text-align: center; background: var(--background-modifier-hover); margin: var(--tn-spacing-sm); } /* ================================================================= COLLAPSIBLE FILTER SECTIONS ================================================================= */ .tasknotes-plugin .filter-bar__section { margin-bottom: var(--tn-spacing-md); } .tasknotes-plugin .filter-bar__section:last-child { margin-bottom: 0; } .tasknotes-plugin .filter-bar__section--hidden { display: none; } .tasknotes-plugin .filter-bar__section-header { display: flex; align-items: center; justify-content: space-between; background: transparent; border: none; border-radius: var(--radius-s); transition: all 0.2s ease; margin-bottom: 2px; } .tasknotes-plugin .filter-bar__section-header-main { display: flex; align-items: center; flex-grow: 1; cursor: var(--cursor); padding: var(--tn-spacing-sm) 0; } .tasknotes-plugin .filter-bar__section-header-main:hover { background: var(--interactive-hover); } .tasknotes-plugin .filter-bar__section-header-main::before { content: "▼"; margin-right: var(--tn-spacing-xs); transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1); font-size: 10px; color: var(--text-muted); } .tasknotes-plugin .filter-bar__section-header--collapsed .filter-bar__section-header-main::before { transform: rotate(-90deg); } .tasknotes-plugin .filter-bar__section-header-actions { display: flex; align-items: center; gap: var(--tn-spacing-sm); padding-right: var(--tn-spacing-sm); } .tasknotes-plugin .filter-bar__save-button { /* Remove individual styles - use tn-btn tn-btn--icon tn-btn--ghost classes */ padding: 4px; } .tasknotes-plugin .filter-bar__save-button svg { width: 16px; height: 16px; } /* Expand/Collapse all group buttons - Add pointer cursor but keep good hover */ .tasknotes-plugin .filter-bar__expand-groups, .tasknotes-plugin .filter-bar__collapse-groups { padding: var(--tn-spacing-xs); background: transparent; border: none; border-radius: var(--radius-s); color: var(--text-muted); cursor: pointer !important; display: flex; align-items: center; justify-content: center; width: var(--tn-button-height-md); height: var(--tn-button-height-md); transition: all 0.2s ease; box-shadow: none; } .tasknotes-plugin .filter-bar__expand-groups:hover, .tasknotes-plugin .filter-bar__collapse-groups:hover { background: var(--interactive-hover); color: var(--text-normal); } .tasknotes-plugin .filter-bar__expand-groups svg, .tasknotes-plugin .filter-bar__collapse-groups svg { width: 16px; height: 16px; } .tasknotes-plugin .filter-bar__section-title { font-weight: 500; /* Slightly lighter */ font-size: var(--font-ui-small); /* Consistent size */ color: var(--text-muted); /* Muted for subtlety */ text-transform: none; /* Normal case */ letter-spacing: 0; /* Natural spacing */ } .tasknotes-plugin .filter-bar__active-view-name { font-weight: 400; font-size: var(--font-ui-smaller); color: var(--text-accent); margin-left: var(--tn-spacing-xs); font-style: italic; } .tasknotes-plugin .filter-bar__section-content { padding: var(--tn-spacing-md); background: var(--background-primary); border: 1px solid var(--background-modifier-border); border-radius: var(--radius-s); opacity: 1; max-height: 1000px; /* Large enough for content */ overflow: hidden; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } .tasknotes-plugin .filter-bar__section-content--collapsed { opacity: 0; max-height: 0; padding-top: 0; padding-bottom: 0; border-width: 0; } /* ================================================================= FILTER BUILDER SECTION ================================================================= */ .tasknotes-plugin .filter-bar__filter-builder { display: flex; flex-direction: column; gap: var(--tn-spacing-md); } /* Filter Groups and Conditions */ .tasknotes-plugin .filter-bar__group { display: flex; flex-direction: column; gap: var(--tn-spacing-sm); padding: var(--tn-spacing-md); background: var(--background-primary); border: 1px solid var(--background-modifier-border); /* Subtle border for grouping */ border-radius: var(--radius-m); position: relative; } /* Remove styling for the top-level group to blend with its container */ .tasknotes-plugin .filter-bar__filter-builder > .filter-bar__group { background: transparent; border: none; padding: 0; } .tasknotes-plugin .filter-bar__group .filter-bar__group { background: var(--background-secondary-alt); border-color: var(--background-modifier-border-hover); } .tasknotes-plugin .filter-bar__group-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: var(--tn-spacing-sm); } .tasknotes-plugin .filter-bar__conjunction { display: flex; align-items: center; gap: var(--tn-spacing-sm); } .tasknotes-plugin .filter-bar__conjunction .dropdown { border: none; background: transparent; box-shadow: none; padding: var(--tn-spacing-xs) var(--tn-spacing-sm); height: 28px; color: var(--text-normal); font-size: var(--font-ui-small); border-radius: var(--radius-s); transition: background-color 0.2s ease; } .tasknotes-plugin .filter-bar__conjunction .dropdown:hover { background-color: var(--background-modifier-hover); } .tasknotes-plugin .filter-bar__conjunction-text { font-size: var(--font-ui-small); color: var(--text-normal); } .tasknotes-plugin .filter-bar__children { display: flex; flex-direction: column; gap: var(--tn-spacing-sm); margin-left: 0; } .tasknotes-plugin .filter-bar__condition .dropdown, .tasknotes-plugin .filter-bar__condition .text-input { border: none; background: transparent; box-shadow: none; padding: var(--tn-spacing-xs); height: 28px; max-width: 200px; flex: 1; } .tasknotes-plugin .filter-bar__condition .dropdown:hover, .tasknotes-plugin .filter-bar__condition .text-input:hover { background-color: var(--background-modifier-hover); } .tasknotes-plugin .filter-bar__condition { display: flex; align-items: center; gap: var(--tn-spacing-sm); padding: var(--tn-spacing-xs) 0; /* Let parent padding handle horizontal space */ background: transparent; /* No background */ border: 1px; /* No border */ border-radius: 0; flex-wrap: wrap; transition: background-color 0.2s ease; } .tasknotes-plugin .filter-bar__condition:hover { background-color: var(--background-modifier-hover); } .tasknotes-plugin .filter-bar__condition-prefix { font-size: var(--font-ui-small); color: var(--text-muted); font-weight: 500; text-align: right; min-width: 50px; /* More flexible width */ padding-right: var(--tn-spacing-sm); } .tasknotes-plugin .filter-bar__value-input { border: none; /* No borders on inputs */ background: transparent; /* Transparent background */ padding: var(--tn-spacing-xs); border-radius: var(--radius-s); color: var(--text-normal); font-size: var(--font-ui-small); width: auto; height: 28px; transition: background-color 0.2s ease; } .tasknotes-plugin .filter-bar__property-select:hover, .tasknotes-plugin .filter-bar__operator-select:hover, .tasknotes-plugin .filter-bar__value-input:hover { background-color: var(--background-modifier-hover); } .tasknotes-plugin .filter-bar__property-select:focus, .tasknotes-plugin .filter-bar__operator-select:focus, .tasknotes-plugin .filter-bar__value-input:focus { background-color: var(--background-modifier-hover); outline: none; } /* A more specific rule to override default component styles within the value container */ .tasknotes-plugin .filter-bar__value-container .text-input, .tasknotes-plugin .filter-bar__value-container .dropdown .select-input { border: none; background: transparent; box-shadow: none; padding: 0; height: 26px; } .tasknotes-plugin .filter-bar__value-container .text-input:focus { box-shadow: none; } .tasknotes-plugin .filter-bar__value-container { display: flex; align-items: center; gap: 0; /* No gap for combined look */ flex: 1; width: 100%; border-radius: var(--radius-s); padding: 0 var(--tn-spacing-xs); transition: all 0.2s ease; } .tasknotes-plugin .filter-bar__value-input { border: none; background: transparent; padding: var(--tn-spacing-xs); color: var(--text-normal); font-size: var(--font-ui-small); width: 100%; height: 28px; } .tasknotes-plugin .filter-bar__value-input:focus { outline: none; box-shadow: none; } .tasknotes-plugin .filter-bar__delete-button { background: none; border: none; box-shadow: none; color: var(--text-muted); cursor: var(--cursor); padding: var(--tn-spacing-xs); border-radius: var(--radius-s); display: flex; align-items: center; justify-content: center; transition: all 0.2s ease; margin-left: auto; } .tasknotes-plugin .filter-bar__delete-button:hover { background: var(--background-modifier-hover); color: var(--text-error); } .tasknotes-plugin .filter-bar__group-actions { display: flex; gap: var(--tn-spacing-md); margin-top: var(--tn-spacing-sm); border-top: none; padding-top: 0; } .tasknotes-plugin .filter-bar__action-button { padding: var(--tn-spacing-xs); background: transparent; border: none; box-shadow: none; color: var(--text-muted); cursor: var(--cursor); font-size: var(--font-ui-small); border-radius: var(--radius-s); transition: all 0.2s ease; display: flex; align-items: center; gap: var(--tn-spacing-xs); } .tasknotes-plugin .filter-bar__action-button:hover { background-color: var(--background-modifier-hover); color: var(--text-normal); } .tasknotes-plugin .filter-bar__action-button svg { width: 14px; height: 14px; } /* ================================================================= DISPLAY & ORGANIZATION SECTION ================================================================= */ .tasknotes-plugin .filter-bar__display-controls { display: flex; flex-wrap: wrap; gap: var(--tn-spacing-md); align-items: center; } .tasknotes-plugin .filter-bar__sort-container, .tasknotes-plugin .filter-bar__group-container { display: flex; align-items: center; gap: var(--tn-spacing-sm); } .tasknotes-plugin .filter-bar__label { font-size: var(--font-ui-small); color: var(--text-normal); font-weight: 500; } .tasknotes-plugin .filter-bar__sort-container .dropdown, .tasknotes-plugin .filter-bar__group-container .dropdown { border: none; background: transparent; box-shadow: none; padding: var(--tn-spacing-xs) var(--tn-spacing-sm); height: 28px; color: var(--text-normal); font-size: var(--font-ui-small); min-width: 120px; border-radius: var(--radius-s); transition: background-color 0.2s ease; } .tasknotes-plugin .filter-bar__sort-container .dropdown:hover, .tasknotes-plugin .filter-bar__group-container .dropdown:hover { background-color: var(--background-modifier-hover); } .tasknotes-plugin .filter-bar__sort-direction { border: none; background: transparent; box-shadow: none; padding: var(--tn-spacing-xs); height: 28px; width: 30px; border-radius: var(--radius-s); color: var(--text-accent); cursor: var(--cursor); font-size: 16px; font-weight: 700; transition: all 0.2s ease; display: flex; align-items: center; justify-content: center; } .tasknotes-plugin .filter-bar__sort-direction:hover { background-color: var(--background-modifier-hover); color: var(--text-accent-hover); transform: scale(1.1); } /* ================================================================= VIEW OPTIONS SECTION ================================================================= */ .tasknotes-plugin .filter-bar__view-options { display: flex; flex-direction: column; gap: var(--tn-spacing-sm); } .tasknotes-plugin .filter-bar__view-option { display: flex; align-items: center; } .tasknotes-plugin .filter-bar__view-option-label { display: flex; align-items: center; gap: var(--tn-spacing-xs); cursor: var(--cursor); font-size: var(--font-ui-small); color: var(--text-normal); } .tasknotes-plugin .filter-bar__view-option-checkbox { margin: 0; } .tasknotes-plugin .filter-bar__view-option-text { user-select: none; } /* ================================================================= RESPONSIVE DESIGN ================================================================= */ /* Hide button text on narrow panes (container width-based responsiveness) */ @container (max-width: 500px) { .tasknotes-plugin .filter-bar__top-controls .has-text-icon .button-text { display: none !important; } .tasknotes-plugin .filter-bar__top-controls .has-text-icon { padding: 2px 4px !important; min-width: var(--input-height); justify-content: center; } /* Hide Views button text and show only chevron icon */ .tasknotes-plugin .filter-bar__templates-button { padding: 2px 4px !important; min-width: var(--input-height); justify-content: center; width: var(--input-height); font-size: 0 !important; /* Hide text */ } .tasknotes-plugin .filter-bar__templates-button .filter-bar__chevron-container { display: flex !important; } /* Adjust search input to take more space when buttons are icon-only */ .tasknotes-plugin .filter-bar__search-input { flex-grow: 2; min-width: 0 !important; /* Force override any inherited min-width */ flex-basis: 0; /* Start from zero width and grow */ } } /* Fallback for browsers without container query support */ @media (max-width: 700px) { .tasknotes-plugin .filter-bar__top-controls .has-text-icon .button-text { display: none !important; } .tasknotes-plugin .filter-bar__top-controls .has-text-icon { padding: 2px 4px !important; min-width: var(--input-height); justify-content: center; } /* Hide Views button text and show only chevron icon */ .tasknotes-plugin .filter-bar__templates-button { padding: 2px 4px !important; min-width: var(--input-height); justify-content: center; width: var(--input-height); font-size: 0 !important; /* Hide text */ } .tasknotes-plugin .filter-bar__templates-button .filter-bar__chevron-container { display: flex !important; } /* Adjust search input to take more space when buttons are icon-only */ .tasknotes-plugin .filter-bar__search-input { flex-grow: 2; min-width: 0 !important; /* Force override any inherited min-width */ flex-basis: 0; /* Start from zero width and grow */ } } /* Mobile styles */ @media (max-width: 768px) { .tasknotes-plugin .advanced-filter-bar { padding: var(--tn-spacing-sm); gap: var(--tn-spacing-sm); } .tasknotes-plugin .filter-bar__condition { flex-direction: column; align-items: stretch; gap: var(--tn-spacing-xs); } .tasknotes-plugin .filter-bar__display-controls { flex-direction: column; align-items: stretch; gap: var(--tn-spacing-sm); } .tasknotes-plugin .filter-bar__sort-container, .tasknotes-plugin .filter-bar__group-container { justify-content: space-between; } .tasknotes-plugin .filter-bar__children { margin-left: 0; } } /* Tablet styles */ @media (min-width: 769px) and (max-width: 1024px) { .tasknotes-plugin .filter-bar__condition { flex-wrap: wrap; } .tasknotes-plugin .filter-bar__value-container { min-width: 120px; } } /* ================================================================= ACCESSIBILITY & FOCUS STATES ================================================================= */ .tasknotes-plugin .filter-bar__property-select:focus, .tasknotes-plugin .filter-bar__operator-select:focus, .tasknotes-plugin .filter-bar__conjunction-select:focus, .tasknotes-plugin .filter-bar__sort-select:focus, .tasknotes-plugin .filter-bar__group-select:focus { outline: 1px solid var(--color-accent); } .tasknotes-plugin .filter-bar__delete-button:focus, .tasknotes-plugin .filter-bar__action-button:focus, .tasknotes-plugin .filter-bar__view-options-button:focus, .tasknotes-plugin .filter-bar__section-header:focus, .tasknotes-plugin .filter-bar__view-selector-button:focus { outline: 1px solid var(--color-accent); } /* ================================================================= ERROR STATE STYLING ================================================================= */ .tasknotes-plugin .filter-bar-error { padding: var(--size-4-2); color: var(--text-muted); text-align: center; font-size: var(--font-ui-smaller); border-radius: var(--radius-s); background-color: var(--background-modifier-hover); } /* ================================================================= DARK MODE COMPATIBILITY ================================================================= */ .theme-dark .tasknotes-plugin .filter-bar__main-box { background: var(--background-secondary-alt); } .theme-dark .tasknotes-plugin .filter-bar__group { background: var(--background-secondary); } .theme-dark .tasknotes-plugin .filter-bar__condition { background: var(--background-primary); } .theme-dark .tasknotes-plugin .filter-bar-error { background-color: var(--background-modifier-hover); color: var(--text-muted); } /* ================================================================= HIGH CONTRAST MODE ================================================================= */ @media (prefers-contrast: high) { .tasknotes-plugin .advanced-filter-bar { border-width: 2px; } .tasknotes-plugin .filter-bar__condition, .tasknotes-plugin .filter-bar__group { border-width: 2px; } .tasknotes-plugin .filter-bar__property-select, .tasknotes-plugin .filter-bar__operator-select, .tasknotes-plugin .filter-bar__value-input { border-width: 2px; } } /* ================================================================= BUTTON ICONS VIA CSS PSEUDO-ELEMENTS ================================================================= */ /* Add filter button - plus sign */ .tasknotes-plugin .filter-bar__add-filter::before { content: "+ "; margin-right: 4px; font-weight: bold; color: var(--color-accent); } /* Add filter group button - plus sign in circle */ .tasknotes-plugin .filter-bar__add-group::before { content: "⊕ "; margin-right: 4px; font-weight: bold; color: var(--color-accent); } /* ===== FILTER-HEADING.CSS ===== */ /* ================================================================= FILTER HEADING COMPONENT ================================================================= */ /* All FilterHeading styles are scoped under .tasknotes-plugin for proper isolation */ /* Main Container */ .tasknotes-plugin .filter-heading { margin-top: var(--tn-spacing-lg); margin-bottom: var(--tn-spacing-lg); } /* Content wrapper with heading and count */ .tasknotes-plugin .filter-heading__content { display: flex; align-items: center; justify-content: flex-start; margin-bottom: var(--tn-spacing-md); } /* Heading title */ .tasknotes-plugin .filter-heading__title { margin: 0; font-size: var(--font-ui-medium); font-weight: 600; color: var(--text-normal); } /* Count display */ .tasknotes-plugin .filter-heading__count { font-weight: 600; font-size: var(--font-ui-small); margin-left: 10px; } /* Divider line */ .tasknotes-plugin .filter-heading__divider { height: 1px; background-color: var(--background-modifier-border); margin-bottom: var(--tn-spacing-lg); } /* ===== SEARCH-BOX.CSS ===== */ /* Search Box Component - BEM Structure */ .tn-search-container { padding: 0; margin: 0; background: transparent; border: none; } .tn-search-box { padding: 0; padding-top: var(--size-4-3, 12px); background: transparent; border: none; } .tn-search-box__input-wrapper { display: flex; align-items: center; gap: var(--size-4-2, 8px); padding-left: var(--size-4-3, 12px); border: none; } .tn-search-box__icon { color: var(--text-muted); display: flex; align-items: center; justify-content: center; flex-shrink: 0; width: 16px; height: 16px; } .tn-search-box__icon svg { width: 16px; height: 16px; } .tn-search-box__input { flex: 1; padding: var(--size-4-2, 8px) var(--size-4-3, 12px); border: 1px solid var(--background-modifier-border); border-radius: var(--radius-m, 8px); background: var(--input-background, var(--background-primary)); color: var(--text-normal); font-size: var(--font-ui-small, 13px); outline: none; min-width: 0; transition: border-color 0.2s ease; } .tn-search-box__input::placeholder { color: var(--text-muted); font-style: italic; } .tn-search-box__clear { background: transparent; border: none; color: var(--text-muted); cursor: pointer; padding: 0; font-size: 20px; line-height: 1; width: 20px; height: 20px; display: flex; align-items: center; justify-content: center; border-radius: var(--radius-s, 4px); flex-shrink: 0; opacity: 0; visibility: hidden; transition: opacity 0.2s ease, visibility 0.2s ease, background-color 0.2s ease; } .tn-search-box__clear.is-visible { opacity: 1; visibility: visible; } .tn-search-box__clear:hover { color: var(--text-normal); background-color: var(--background-modifier-hover); } .tn-search-box__clear:active { background-color: var(--background-modifier-active-hover); } /* Focus styles for accessibility */ .tn-search-box__clear:focus-visible { outline: 2px solid var(--interactive-accent); outline-offset: 2px; } /* No results state */ .tn-search-no-results { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: var(--size-4-8, 32px) var(--size-4-4, 16px); text-align: center; color: var(--text-muted); } .tn-search-no-results__text { font-size: var(--font-ui-medium, 14px); color: var(--text-normal); margin-bottom: var(--size-4-2, 8px); } .tn-search-no-results__hint { font-size: var(--font-ui-small, 13px); color: var(--text-muted); } /* ===== MODAL-BEM.CSS ===== */ /* ===================================================================== MODAL COMPONENTS - BEM with TaskNotes Plugin Scoping ===================================================================== */ /* ===================================================================== NATURAL LANGUAGE INPUT - MINIMALIST STYLES ===================================================================== */ .tasknotes-plugin .nl-input-container { margin-bottom: var(--size-4-3); } .tasknotes-plugin .nl-input { background: var(--background-secondary); border: 1px solid var(--background-modifier-border); border-radius: var(--radius-s); font-size: var(--tn-font-size-lg); line-height: 1.5; transition: border-color 0.2s ease; } .tasknotes-plugin .nl-input:focus { outline: none; border-color: var(--interactive-accent); box-shadow: none; } .tasknotes-plugin .nl-button-container { display: flex; gap: 6px; margin-top: 6px; align-items: center; } .tasknotes-plugin .nl-quick-create-button { padding: 6px 16px; font-size: var(--tn-font-size-lg); font-weight: 500; border-radius: var(--radius-s); border: none; background: var(--interactive-accent); color: var(--text-on-accent); cursor: var(--cursor); transition: all 0.2s ease; } .tasknotes-plugin .nl-quick-create-button:hover { background: var(--interactive-accent-hover); transform: translateY(-1px); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); } .tasknotes-plugin .nl-parse-button { padding: 6px 14px; font-size: var(--tn-font-size-md); font-weight: 500; border-radius: var(--radius-s); border: 1px solid var(--background-modifier-border); background: var(--background-primary); color: var(--tn-text-muted); cursor: var(--cursor); transition: all 0.2s ease; } .tasknotes-plugin .nl-parse-button:hover { background: var(--background-modifier-hover); color: var(--tn-text-normal); border-color: var(--interactive-accent); } .tasknotes-plugin .nl-show-detail-button { padding: 6px 8px; font-size: var(--tn-font-size-lg); font-weight: 600; border-radius: var(--radius-s); border: 1px solid var(--background-modifier-border); background: var(--background-secondary); color: var(--tn-text-muted); cursor: var(--cursor); transition: all 0.2s ease; } .tasknotes-plugin .nl-show-detail-button:hover { background: var(--background-modifier-hover); color: var(--tn-text-normal); border-color: var(--interactive-accent); } .tasknotes-plugin .nl-preview-container { margin-top: var(--size-4-1); padding: var(--size-4-1); background: var(--background-primary-alt); border-radius: var(--radius-s); border: 1px solid var(--background-modifier-border); } .tasknotes-plugin .nl-preview-item { display: flex; align-items: center; margin-bottom: 2px; font-size: var(--tn-font-size-md); color: var(--tn-text-muted); } .tasknotes-plugin .nl-preview-icon { width: 14px; height: 14px; margin-right: 6px; opacity: 0.7; } .tasknotes-plugin .nl-preview-text-content { line-height: 1.3; } /* ===================================================================== BASE MODAL CONTAINER STYLES ===================================================================== */ .tasknotes-plugin .due-date-modal, .tasknotes-plugin .scheduled-date-modal, .tasknotes-plugin .task-selector-modal { padding: var(--tn-spacing-xl); max-width: 580px; width: 100%; background: var(--tn-bg-primary); border-radius: var(--tn-radius-md); box-shadow: var(--tn-shadow-strong); } /* ===================================================================== MODAL HEADERS AND HEADINGS ===================================================================== */ .tasknotes-plugin .due-date-modal .setting-item-heading, .tasknotes-plugin .scheduled-date-modal .setting-item-heading { font-size: var(--tn-font-size-xl); font-weight: var(--tn-font-weight-semibold); color: var(--tn-text-normal); line-height: 1.3; border-bottom: 1px solid var(--tn-border-color); margin-bottom: var(--tn-spacing-lg); padding-bottom: var(--tn-spacing-md); } /* ===================================================================== SHARED FORM COMPONENTS (BEM) ===================================================================== */ /* Form Group Container */ .tasknotes-plugin .modal-form__group { margin-bottom: var(--tn-spacing-lg); position: relative; } /* Form Labels */ .tasknotes-plugin .modal-form__label { display: block; font-size: var(--tn-font-size-lg); font-weight: var(--tn-font-weight-medium); color: var(--tn-text-normal); margin-bottom: var(--tn-spacing-sm); line-height: 1.4; } /* Help Text */ .tasknotes-plugin .modal-form__help-text { font-size: var(--tn-font-size-sm); color: var(--tn-text-muted); margin-top: var(--tn-spacing-sm); line-height: 1.4; font-style: italic; } /* Input Container */ .tasknotes-plugin .modal-form__input-container { position: relative; } /* Base Input Styles */ .tasknotes-plugin .modal-form__input, .tasknotes-plugin .modal-form__select { padding: var(--tn-spacing-md) var(--tn-spacing-lg); border: 1px solid var(--tn-border-color); border-radius: var(--tn-radius-sm); background: var(--tn-bg-primary); color: var(--tn-text-normal); font-family: inherit; font-size: var(--tn-font-size-lg); font-weight: var(--tn-font-weight-normal); line-height: 1.4; transition: border-color var(--tn-transition-fast); width: 100%; box-sizing: border-box; outline: none; } /* Make select elements taller to prevent dropdown option clipping */ .tasknotes-plugin .modal-form__select { padding: var(--tn-spacing-lg) var(--tn-spacing-lg); min-height: 44px; line-height: 1.6; } .tasknotes-plugin .modal-form__input:hover, .tasknotes-plugin .modal-form__select:hover { border-color: var(--tn-border-color-hover); } .tasknotes-plugin .modal-form__input:focus, .tasknotes-plugin .modal-form__select:focus { border-color: var(--interactive-accent); box-shadow: none; outline: none; } /* Input Modifiers */ .tasknotes-plugin .modal-form__input--textarea { min-height: 80px; resize: vertical; font-family: inherit; } .tasknotes-plugin .modal-form__input--title { font-weight: var(--tn-font-weight-medium); } .tasknotes-plugin .modal-form__input--number { width: 80px; flex-shrink: 0; } /* ===================================================================== CHARACTER COUNTER COMPONENT ===================================================================== */ .tasknotes-plugin .modal-form__char-counter { position: absolute; top: calc(-1 * var(--tn-spacing-lg)); right: 0; font-size: var(--tn-font-size-sm); color: var(--tn-text-muted); font-weight: var(--tn-font-weight-normal); line-height: 1.4; pointer-events: none; } .tasknotes-plugin .modal-form__char-counter--warning { color: var(--tn-color-error); font-weight: var(--tn-font-weight-medium); } /* ===================================================================== AUTOCOMPLETE COMPONENT ===================================================================== */ .tasknotes-plugin .modal-form__autocomplete { position: relative; } .tasknotes-plugin .modal-form__suggestions { position: absolute; top: calc(100% + 4px); left: 0; right: 0; background: var(--tn-bg-primary); border: 1px solid var(--tn-border-color); border-radius: var(--tn-radius-sm); box-shadow: var(--tn-shadow-strong); z-index: var(--tn-z-dropdown); max-height: 240px; overflow-y: auto; padding: var(--tn-spacing-sm) 0; } .tasknotes-plugin .modal-form__suggestion { padding: var(--tn-spacing-sm) var(--tn-spacing-lg); cursor: var(--cursor); font-size: var(--tn-font-size-md); color: var(--tn-text-normal); line-height: 1.5; transition: background-color var(--tn-transition-fast); border: none; background: none; width: 100%; text-align: left; } .tasknotes-plugin .modal-form__suggestion:hover, .tasknotes-plugin .modal-form__suggestion--selected { background: var(--tn-interactive-hover); } /* ===================================================================== DATE/TIME INPUT COMPONENTS ===================================================================== */ /* DateTime Container */ .tasknotes-plugin .modal-form__datetime-container { display: flex; align-items: center; gap: var(--tn-spacing-sm); flex-wrap: wrap; } /* User-field date input: full width textbox; icon overlayed on the left */ .tasknotes-plugin .tn-date-control { position: relative; padding-left: 35px; /* reserve space for the icon to the left of the textbox */ } .tasknotes-plugin .tn-date-control input[type="text"] { padding-left: 0; /* the padding-left is applied on the container */ } .tasknotes-plugin .tn-date-control .user-field-date-picker-btn { position: absolute; left: 10px; top: 50%; transform: translateY(-50%); width: 20px; height: 20px; display: inline-flex; align-items: center; justify-content: center; border: 0; background: transparent; padding: 0; color: var(--tn-text-muted); z-index: 1; } .tasknotes-plugin .tn-date-control .user-field-date-picker-btn:hover { color: var(--text-normal); } /* Date and Time Input Modifiers */ .tasknotes-plugin .modal-form__input--date { flex: 1; min-width: 140px; } .tasknotes-plugin .modal-form__input--time { width: 120px; font-family: var(--tn-font-mono); flex-shrink: 0; } /* ===================================================================== TIME ESTIMATE COMPONENT ===================================================================== */ .tasknotes-plugin .modal-form__time-estimate { display: flex; align-items: center; gap: var(--tn-spacing-md); } .tasknotes-plugin .modal-form__time-label { font-size: var(--tn-font-size-md); color: var(--tn-text-muted); white-space: nowrap; } /* ===================================================================== RECURRENCE COMPONENTS ===================================================================== */ .tasknotes-plugin .modal-form__recurrence { position: relative; } .tasknotes-plugin .modal-form__recurrence-options { margin-top: var(--tn-spacing-lg); padding: var(--tn-spacing-lg); background: var(--tn-bg-secondary); border: 1px solid var(--tn-border-color); border-radius: var(--tn-radius-md); } .tasknotes-plugin .modal-form__recurrence-label { font-size: var(--tn-font-size-md); font-weight: var(--tn-font-weight-medium); color: var(--tn-text-normal); margin-bottom: var(--tn-spacing-md); } /* Interval Input Components */ .tasknotes-plugin .modal-form__interval-container { display: flex; align-items: center; gap: var(--tn-spacing-sm); margin: var(--tn-spacing-md) 0; padding: var(--tn-spacing-md); background: var(--tn-bg-secondary); border: 1px solid var(--tn-border-color); border-radius: var(--tn-radius-sm); } .tasknotes-plugin .modal-form__interval-label { font-size: var(--tn-font-size-md); color: var(--tn-text-normal); font-weight: var(--tn-font-weight-medium); white-space: nowrap; } .tasknotes-plugin .modal-form__input--interval { width: 80px !important; min-width: 60px; flex-shrink: 0; text-align: center; } .tasknotes-plugin .modal-form__interval-unit { font-size: var(--tn-font-size-md); color: var(--tn-text-normal); font-weight: var(--tn-font-weight-medium); white-space: nowrap; } /* RRule Options Container */ .tasknotes-plugin .modal-form__rrule-options { margin: var(--tn-spacing-md) 0; } /* RRule Labels */ .tasknotes-plugin .modal-form__rrule-label { display: block; font-size: var(--tn-font-size-md); font-weight: var(--tn-font-weight-medium); color: var(--tn-text-normal); margin-bottom: var(--tn-spacing-sm); } /* Monthly and Yearly Options */ .tasknotes-plugin .modal-form__monthly-mode, .tasknotes-plugin .modal-form__yearly-options { display: flex; flex-direction: column; gap: var(--tn-spacing-md); } .tasknotes-plugin .modal-form__radio-option { display: flex; align-items: center; gap: var(--tn-spacing-sm); flex-wrap: nowrap; } .tasknotes-plugin .modal-form__radio-option input[type="radio"] { width: auto; height: auto; flex: none; margin: 0; } .tasknotes-plugin .modal-form__select--position, .tasknotes-plugin .modal-form__select--weekday, .tasknotes-plugin .modal-form__select--month { width: auto; min-width: 120px; flex-shrink: 0; } .tasknotes-plugin .modal-form__input--day { width: 60px; text-align: center; } .tasknotes-plugin .modal-form__yearly-label { font-size: var(--tn-font-size-md); color: var(--tn-text-normal); white-space: nowrap; } /* ===================================================================== DETAILED FORM CONTAINER (TaskCreationModal specific) ===================================================================== */ .tasknotes-plugin .detailed-form-container { display: flex; flex-direction: column; gap: var(--tn-spacing-lg); width: 100%; box-sizing: border-box; opacity: 1; visibility: visible; transition: opacity 0.2s ease-in-out; } .tasknotes-plugin .detailed-form-container.hidden { display: none; } /* End Condition Options */ .tasknotes-plugin .modal-form__end-condition { margin: var(--tn-spacing-md) 0; padding: var(--tn-spacing-md); background: var(--tn-bg-secondary); border: 1px solid var(--tn-border-color); border-radius: var(--tn-radius-sm); } .tasknotes-plugin .modal-form__end-options { display: flex; flex-direction: column; gap: var(--tn-spacing-sm); margin-top: var(--tn-spacing-md); } .tasknotes-plugin .modal-form__input--count { width: 80px; text-align: center; } .tasknotes-plugin .modal-form__count-label { font-size: var(--tn-font-size-md); color: var(--tn-text-normal); white-space: nowrap; } /* RRule Summary */ .tasknotes-plugin .modal-form__rrule-summary { margin-top: var(--tn-spacing-md); padding: var(--tn-spacing-md); background: var(--tn-bg-primary); border: 1px solid var(--tn-border-color); border-radius: var(--tn-radius-sm); } .tasknotes-plugin .modal-form__rrule-text { font-size: var(--tn-font-size-sm); color: var(--tn-text-muted); font-style: italic; line-height: 1.4; } /* Days of Week Grid */ .tasknotes-plugin .modal-form__days-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: var(--tn-spacing-md); margin-top: var(--tn-spacing-md); padding: var(--tn-spacing-lg); background: var(--tn-bg-primary); border-radius: var(--tn-radius-sm); border: 1px solid var(--tn-border-color); } .tasknotes-plugin .modal-form__day-checkbox { display: flex; flex-direction: column; align-items: center; gap: var(--tn-spacing-sm); cursor: var(--cursor); } .tasknotes-plugin .modal-form__day-input { margin: 0; cursor: var(--cursor); width: auto; height: auto; flex: none; } .tasknotes-plugin .modal-form__day-label { font-size: var(--tn-font-size-sm); font-weight: var(--tn-font-weight-medium); color: var(--tn-text-normal); text-transform: uppercase; letter-spacing: 0.05em; cursor: var(--cursor); user-select: none; line-height: 1; } /* ===================================================================== BUTTON COMPONENTS ===================================================================== */ .tasknotes-plugin .modal-form__buttons { display: flex; gap: var(--tn-spacing-lg); justify-content: flex-end; align-items: center; margin-top: var(--tn-spacing-xxl); padding-top: var(--tn-spacing-lg); border-top: 1px solid var(--tn-border-color); } /* Buttons use shared tn-btn system; no modal-specific overrides here */ /* Tertiary Button (Open note, etc.) */ .tasknotes-plugin .modal-form__button--tertiary { background: transparent; color: var(--tn-interactive-accent); border: none; padding: var(--tn-spacing-md); } .tasknotes-plugin .modal-form__button--tertiary:hover { background: var(--tn-interactive-hover); color: var(--tn-interactive-accent-hover); } /* Quick Date Buttons */ .tasknotes-plugin .modal-form__quick-actions { display: flex; gap: var(--tn-spacing-md); flex-wrap: wrap; margin-top: var(--tn-spacing-md); } .tasknotes-plugin .modal-form__button--quick-date { flex: 1; min-width: 0; padding: var(--tn-spacing-sm) var(--tn-spacing-md); background: var(--tn-bg-secondary); color: var(--tn-text-normal); border: 1px solid var(--tn-border-color); font-size: var(--tn-font-size-sm); } .tasknotes-plugin .modal-form__button--quick-date:hover { background: var(--tn-interactive-hover); border-color: var(--tn-border-color-hover); } .tasknotes-plugin .modal-form__button--quick-date--clear { background: var(--tn-bg-primary); color: var(--tn-text-muted); } .tasknotes-plugin .modal-form__button--quick-date--clear:hover { background: var(--tn-interactive-hover); color: var(--tn-text-normal); } /* ===================================================================== QUICK DATE MODALS SPECIFIC ===================================================================== */ .tasknotes-plugin .due-date-modal__task-title, .tasknotes-plugin .scheduled-date-modal__task-title { font-size: var(--tn-font-size-md); color: var(--tn-text-normal); margin-bottom: var(--tn-spacing-lg); padding: var(--tn-spacing-md) var(--tn-spacing-lg); background: var(--tn-bg-secondary); border: 1px solid var(--tn-border-color); border-radius: var(--tn-radius-sm); font-weight: var(--tn-font-weight-medium); } /* ===================================================================== TASK SELECTOR MODAL SPECIFIC ===================================================================== */ .tasknotes-plugin .task-selector-modal__suggestion { padding: var(--tn-spacing-md); border-radius: var(--tn-radius-sm); border-left: 3px solid transparent; transition: all var(--tn-transition-fast); } .tasknotes-plugin .task-selector-modal__suggestion:hover { background: var(--tn-interactive-hover); } .tasknotes-plugin .task-selector-modal__title { margin-bottom: var(--tn-spacing-xs); } .tasknotes-plugin .task-selector-modal__task-title { font-weight: var(--tn-font-weight-medium); color: var(--tn-text-normal); font-size: var(--tn-font-size-md); } .tasknotes-plugin .task-selector-modal__task-title--completed { text-decoration: line-through; color: var(--tn-text-muted); } .tasknotes-plugin .task-selector-modal__task-title--high-priority { color: var(--tn-color-error); border-left-color: var(--tn-color-error); } .tasknotes-plugin .task-selector-modal__task-title--low-priority { color: var(--tn-text-muted); } .tasknotes-plugin .task-selector-modal__meta { display: flex; align-items: center; gap: var(--tn-spacing-sm); font-size: var(--tn-font-size-sm); color: var(--tn-text-muted); } .tasknotes-plugin .task-selector-modal__due-date { padding: 2px var(--tn-spacing-xs); border-radius: var(--tn-radius-sm); background: var(--tn-bg-secondary); font-size: var(--tn-font-size-xs); } .tasknotes-plugin .task-selector-modal__due-date--overdue { background: rgba(var(--tn-color-error), 0.1); color: var(--tn-color-error); } .tasknotes-plugin .task-selector-modal__due-date--today { background: rgba(var(--tn-color-warning), 0.1); color: var(--tn-color-warning); } .tasknotes-plugin .task-selector-modal__contexts { display: flex; align-items: center; gap: var(--tn-spacing-xs); } .tasknotes-plugin .task-selector-modal__context-tag { padding: 1px var(--tn-spacing-xs); border-radius: var(--tn-radius-sm); background: var(--tn-bg-secondary); font-size: var(--tn-font-size-xs); color: var(--tn-text-muted); } .tasknotes-plugin .task-selector-modal__status { padding: 2px var(--tn-spacing-xs); border-radius: var(--tn-radius-sm); font-size: var(--tn-font-size-xs); text-transform: capitalize; background: var(--tn-bg-secondary); color: var(--tn-text-normal); } /* ===================================================================== ERROR STATES ===================================================================== */ .tasknotes-plugin .modal-form__error { padding: var(--tn-spacing-md) var(--tn-spacing-lg); margin: var(--tn-spacing-md) 0; background: rgba(var(--tn-color-error), 0.1); border: 1px solid var(--tn-color-error); border-radius: var(--tn-radius-sm); color: var(--tn-color-error); font-size: var(--tn-font-size-sm); font-weight: var(--tn-font-weight-medium); } /* ===================================================================== RESPONSIVE DESIGN ===================================================================== */ @media (max-width: 768px) { .tasknotes-plugin .due-date-modal, .tasknotes-plugin .scheduled-date-modal { padding: var(--tn-spacing-lg); max-width: 92vw; } .tasknotes-plugin .modal-form__buttons { flex-direction: column; gap: var(--tn-spacing-md); } .tasknotes-plugin .modal-form__button { width: 100%; justify-content: center; } .tasknotes-plugin .modal-form__days-grid { grid-template-columns: repeat(4, 1fr); gap: var(--tn-spacing-sm); } .tasknotes-plugin .modal-form__quick-actions { flex-direction: column; } .tasknotes-plugin .modal-form__button--quick-date { flex: none; } } /* ===================================================================== ACCESSIBILITY ENHANCEMENTS ===================================================================== */ /* Focus styles are defined above - removed duplicate conflicting rules */ /* Screen reader only text */ .tasknotes-plugin .modal-form__sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } /* ===================================================================== ICS NOTE CREATION MODAL ===================================================================== */ .tasknotes-plugin .ics-note-creation-modal { width: 600px; max-width: 90vw; } .tasknotes-plugin .ics-event-preview { background: var(--background-secondary); border: 1px solid var(--background-modifier-border); border-radius: var(--radius-s); padding: var(--size-4-3); margin-bottom: var(--size-4-3); } .tasknotes-plugin .ics-event-preview h3 { margin: 0 0 var(--size-4-2) 0; color: var(--tn-interactive-accent); } .tasknotes-plugin .event-details > div { margin-bottom: var(--size-4-1); font-size: var(--tn-font-size-md); line-height: 1.4; } /* Align all modal setting controls to the right edge of the column */ .tasknotes-plugin .modal .setting-item .setting-item-control { flex: none; text-align: end; display: flex; justify-content: flex-end; align-items: center; gap: var(--size-4-2); } .tasknotes-plugin .content-type-selector .setting-item-control { display: flex; gap: var(--size-4-2); } .tasknotes-plugin .content-type-buttons button { padding: var(--size-4-1) var(--size-4-3); border: 1px solid var(--background-modifier-border); border-radius: var(--radius-s); background: var(--background-primary); color: var(--tn-text-normal); cursor: var(--cursor); transition: all 0.2s ease; } .tasknotes-plugin .content-type-buttons button:hover { background: var(--background-modifier-hover); } .tasknotes-plugin .content-type-buttons button.mod-cta { background: var(--interactive-accent); color: var(--text-on-accent); border-color: var(--interactive-accent); } .tasknotes-plugin .content-preview { background: var(--background-secondary); border: 1px solid var(--background-modifier-border); border-radius: var(--radius-s); padding: var(--size-4-3); margin: var(--size-4-3) 0; } .tasknotes-plugin .content-preview h4 { margin: 0 0 var(--size-4-2) 0; color: var(--tn-interactive-accent); } .tasknotes-plugin .preview-details > div { margin-bottom: var(--size-4-1); font-size: var(--tn-font-size-md); } .tasknotes-plugin .template-variables { margin-top: var(--size-4-3); } .tasknotes-plugin .template-variables h5 { margin: 0 0 var(--size-4-2) 0; font-size: var(--tn-font-size-sm); color: var(--tn-text-muted); text-transform: uppercase; letter-spacing: 0.5px; } .tasknotes-plugin .variables-list { display: flex; flex-wrap: wrap; gap: var(--size-4-1); } .tasknotes-plugin .template-variable { background: var(--background-modifier-border); color: var(--tn-text-muted); padding: 2px var(--size-4-1); border-radius: var(--radius-s); font-size: var(--tn-font-size-sm); font-family: var(--font-monospace); } .tasknotes-plugin .modal-button-container { display: flex; justify-content: flex-end; gap: var(--size-4-2); margin-top: var(--size-4-4); padding-top: var(--size-4-3); border-top: 1px solid var(--background-modifier-border); } /* ===================================================================== ICS EVENT INFO MODAL ===================================================================== */ .tasknotes-plugin .ics-event-info-modal { width: 700px; max-width: 95vw; max-height: 90vh; overflow-y: auto; position: relative; z-index: 1000; } .tasknotes-plugin .ics-event-info-modal .modal-content { padding: var(--size-4-4); box-sizing: border-box; } .tasknotes-plugin .ics-event-info-modal * { box-sizing: border-box; } .tasknotes-plugin .ics-event-info-modal .modal-header h2 { margin: 0 0 var(--size-4-4) 0; color: var(--tn-interactive-accent); } .tasknotes-plugin .event-details-section, .tasknotes-plugin .related-notes-section, .tasknotes-plugin .action-buttons-section { margin-bottom: var(--size-4-4); padding-bottom: var(--size-4-3); border-bottom: 1px solid var(--background-modifier-border); } .tasknotes-plugin .event-details-section:last-of-type, .tasknotes-plugin .related-notes-section:last-of-type, .tasknotes-plugin .action-buttons-section:last-of-type { border-bottom: none; } .tasknotes-plugin .event-details-section h3, .tasknotes-plugin .related-notes-section h3, .tasknotes-plugin .action-buttons-section h3 { margin: 0 0 var(--size-4-3) 0; font-size: var(--tn-font-size-lg); color: var(--tn-text-normal); } .tasknotes-plugin .event-details-grid { display: flex; flex-direction: column; gap: var(--size-4-2); } .tasknotes-plugin .detail-row { display: flex; align-items: flex-start; gap: var(--size-4-2); font-size: var(--tn-font-size-md); margin-bottom: var(--size-4-2); line-height: 1.4; clear: both; overflow: hidden; } .tasknotes-plugin .detail-row strong { min-width: 120px; flex-shrink: 0; color: var(--tn-text-muted); font-weight: 500; } .tasknotes-plugin .detail-row span { flex: 1; word-wrap: break-word; overflow-wrap: break-word; } .tasknotes-plugin .detail-row.description-row { flex-direction: column; gap: var(--size-4-1); } .tasknotes-plugin .description-content { background: var(--background-secondary); padding: var(--size-4-2); border-radius: var(--radius-s); border: 1px solid var(--background-modifier-border); font-style: italic; white-space: pre-wrap; } .tasknotes-plugin .external-link { color: var(--interactive-accent); text-decoration: none; } .tasknotes-plugin .external-link:hover { text-decoration: underline; } .tasknotes-plugin .empty-state { text-align: center; color: var(--tn-text-muted); font-style: italic; padding: var(--size-4-4); background: var(--background-secondary); border-radius: var(--radius-s); border: 1px solid var(--background-modifier-border); } .tasknotes-plugin .related-notes-list { display: flex; flex-direction: column; gap: var(--size-4-2); } .tasknotes-plugin .related-note-item { background: var(--background-secondary); border: 1px solid var(--background-modifier-border); border-radius: var(--radius-s); padding: var(--size-4-3); transition: background-color 0.2s ease; } .tasknotes-plugin .related-note-item:hover { background: var(--background-modifier-hover); } .tasknotes-plugin .note-header { display: flex; align-items: center; gap: var(--size-4-2); margin-bottom: var(--size-4-1); } .tasknotes-plugin .note-icon { font-size: var(--tn-font-size-lg); opacity: 0.7; } .tasknotes-plugin .note-header .internal-link { color: var(--tn-text-normal); text-decoration: none; font-weight: 500; flex: 1; } .tasknotes-plugin .note-header .internal-link:hover { color: var(--interactive-accent); text-decoration: underline; } .tasknotes-plugin .note-metadata { display: flex; gap: var(--size-4-2); font-size: var(--tn-font-size-sm); } .tasknotes-plugin .note-status, .tasknotes-plugin .note-priority { background: var(--background-modifier-border); padding: 2px var(--size-4-1); border-radius: var(--radius-s); color: var(--tn-text-muted); } .tasknotes-plugin .action-buttons { display: flex; flex-wrap: wrap; gap: var(--size-4-2); } .tasknotes-plugin .close-button-container { display: flex; justify-content: center; margin-top: var(--size-4-4); padding-top: var(--size-4-3); border-top: 1px solid var(--background-modifier-border); } /* ===================================================================== ICS NOTE LINK MODAL (Fuzzy Selector) ===================================================================== */ .tasknotes-plugin .ics-note-link-suggestion { display: flex; flex-direction: column; gap: var(--size-4-1); padding: var(--size-4-2); } .tasknotes-plugin .note-link-name { font-weight: 500; color: var(--tn-text-normal); } .tasknotes-plugin .note-link-path { font-size: var(--tn-font-size-sm); color: var(--tn-text-muted); font-style: italic; } /* ===== TASK-MODAL.CSS ===== */ /* ===================================================================== TASK MODAL - Google Keep/Todoist Inspired ===================================================================== */ /* Fix suggestion text truncation */ .suggestion-item .nlp-suggest-text { white-space: nowrap; overflow: visible; text-overflow: clip; max-width: none; width: auto; } /* ===================================================================== EMBEDDABLE MARKDOWN EDITOR ===================================================================== */ .details-markdown-editor { margin-bottom: var(--size-4-3); border: 1px solid var(--background-modifier-border); border-radius: var(--radius-s); overflow: hidden; min-height: 200px; max-height: 400px; } .details-markdown-editor .task-details-editor { min-height: 200px; max-height: 400px; overflow-y: auto; } /* Make the editor container scrollable */ .details-markdown-editor .cm-editor { height: 100%; min-height: 200px; max-height: 400px; } .details-markdown-editor .cm-scroller { overflow: auto; max-height: 400px; padding-top: var(--size-4-2); padding-bottom: var(--size-4-2); } /* Style the editor content */ .details-markdown-editor .cm-content { padding-left: var(--size-4-2) !important; padding-right: var(--size-4-2) !important; padding-top: 0 !important; padding-bottom: 0 !important; font-family: var(--font-text); font-size: var(--font-ui-medium); line-height: var(--line-height-normal); } /* Ensure the editor line doesn't add extra padding */ /* .details-markdown-editor .cm-line { */ /* padding-left: 0 !important; */ /* padding-right: 0 !important; */ /* } */ /* Placeholder styling */ .details-markdown-editor .cm-placeholder { color: var(--text-faint); font-style: italic; } /* ===================================================================== NLP MARKDOWN EDITOR ===================================================================== */ .nl-markdown-editor { margin-bottom: var(--size-4-2); border: 1px solid var(--background-modifier-border); border-radius: var(--radius-s); overflow: visible; min-height: 80px; max-height: 200px; background: transparent; transition: all 0.2s ease; } .nl-markdown-editor .nlp-editor { min-height: 80px; max-height: 200px; overflow-y: auto; } .nl-markdown-editor .cm-editor { height: 100%; min-height: 80px; max-height: 200px; background: transparent; overflow: visible; } /* Focus state for NLP editor - match old nl-input styling */ .nl-markdown-editor:focus-within { border-color: var(--interactive-accent); background: transparent; box-shadow: 0 0 0 2px rgba(var(--interactive-accent-rgb), 0.2); } .nl-markdown-editor:focus-within .cm-editor { background: transparent; } .nl-markdown-editor .cm-scroller { overflow: auto; max-height: 200px; padding-top: var(--size-4-3); padding-bottom: var(--size-4-3); } .nl-markdown-editor .cm-content { padding-left: var(--size-4-2) !important; padding-right: var(--size-4-2) !important; padding-top: 0 !important; padding-bottom: 0 !important; font-family: var(--font-text); font-size: var(--font-ui-medium); line-height: 1.5; } .nl-markdown-editor .cm-placeholder { color: var(--text-muted); font-style: italic; } /* ===================================================================== CODEMIRROR AUTOCOMPLETE STYLING (for NLP triggers) Scoped to TaskNotes modals only ===================================================================== */ /* Main autocomplete tooltip - scoped to TaskNotes modals */ .tasknotes-plugin .cm-tooltip-autocomplete { background-color: var(--background-primary); border: 1px solid var(--background-modifier-border); border-radius: var(--radius-m); box-shadow: var(--shadow-s); padding: var(--size-4-1); font-family: var(--font-ui); font-size: var(--font-ui-small); z-index: 9999; max-height: 300px; overflow-y: auto; } /* Autocomplete list */ .tasknotes-plugin .cm-tooltip-autocomplete ul { list-style: none; margin: 0; padding: 0; } /* Individual completion option */ .tasknotes-plugin .cm-tooltip-autocomplete li { padding: var(--size-4-2) var(--size-4-3); cursor: var(--cursor); border-radius: var(--radius-s); display: flex; align-items: center; justify-content: space-between; gap: var(--size-4-2); } /* Hovered option */ .tasknotes-plugin .cm-tooltip-autocomplete li:hover, .tasknotes-plugin .cm-tooltip-autocomplete li[aria-selected="true"] { background-color: var(--background-modifier-hover); } /* Selected option */ .tasknotes-plugin .cm-tooltip-autocomplete li[aria-selected="true"] { background-color: var(--background-modifier-active-hover); } /* Completion label (main text) */ .tasknotes-plugin .cm-completionLabel { flex: 1; color: var(--text-normal); font-weight: 500; } /* Completion info (right side) */ .tasknotes-plugin .cm-completionInfo { color: var(--text-muted); font-size: var(--font-ui-smaller); font-weight: normal; } /* Completion detail (description) */ .tasknotes-plugin .cm-completionDetail { color: var(--text-faint); font-size: var(--font-ui-smaller); margin-left: var(--size-4-2); } /* Icon for different completion types */ .tasknotes-plugin .cm-completionIcon { width: 16px; height: 16px; margin-right: var(--size-4-2); color: var(--text-muted); } /* Match highlighting in completion */ .tasknotes-plugin .cm-completionMatchedText { text-decoration: underline; color: var(--color-accent); } .tasknotes-plugin.minimalist-task-modal { /* Modal container adjustments */ } /* Modal header with TaskNotes icon */ .modal-header-container { display: flex; align-items: center; gap: var(--size-4-2); margin-bottom: var(--size-4-3); } .modal-header-icon { display: inline-block; vertical-align: middle; margin-right: 8px; color: var(--color-accent); width: 20px; height: 20px; } .modal-header-icon svg { width: 20px !important; height: 20px !important; color: var(--color-accent); } /* User fields section styling */ .user-fields-separator { margin-top: var(--size-4-4); border-top: 0.5px solid var(--background-modifier-border); padding-top: var(--size-4-3); } /* Section separator between field groups */ .tasknotes-plugin .task-modal__section-separator { border: none; border-top: 0.5px solid var(--background-modifier-border); margin: var(--size-4-3) 0; } .detail-label-section { font-weight: 600; color: var(--text-muted); font-size: 0.9em; margin-bottom: var(--size-4-2); text-transform: uppercase; letter-spacing: 0.5px; } .modal-header-icon .svg-icon { width: 20px !important; height: 20px !important; } .modal-header-icon .tasknotes-simple { width: 20px !important; height: 20px !important; color: var(--color-accent) !important; } .modal-header-title { font-size: var(--font-ui-larger); font-weight: var(--font-weight-bold); color: var(--text-normal); } .tasknotes-plugin.minimalist-task-modal .modal-content { padding: 0; border-radius: var(--radius-l); box-shadow: var(--shadow-l); min-width: 480px; max-width: 600px; } .tasknotes-plugin .minimalist-modal-container { padding: var(--size-4-4); background: var(--modal-background); } /* Override shadow variable inside the modal, then re-apply outer shadow explicitly */ .theme-light .tasknotes-plugin.minimalist-task-modal, .theme-dark .tasknotes-plugin.minimalist-task-modal { --shadow-l: none; } /* Re-apply outer shadow to the modal element itself */ .tasknotes-plugin.minimalist-task-modal > .modal { box-shadow: 0 8px 32px rgba(0, 0, 0, 0.15); } /* ===================================================================== TITLE INPUT - PRIMARY FOCUS ===================================================================== */ .tasknotes-plugin .title-input-container { margin-bottom: var(--size-4-3); } .tasknotes-plugin .title-input { width: 100%; padding: var(--size-4-2) var(--size-4-1); font-size: var(--font-ui-large); font-weight: 500; line-height: 1.4; border: none; outline: none; background: transparent; color: var(--text-normal); resize: none; min-height: 44px; transition: all 0.2s ease; } .tasknotes-plugin .title-input::placeholder { color: var(--text-muted); font-weight: 400; } .tasknotes-plugin .title-input:focus, .tasknotes-plugin .title-input:active, .tasknotes-plugin .title-input:focus-visible { background: var(--background-modifier-hover); border-radius: var(--radius-s); outline: none; box-shadow: none; } /* ===================================================================== ACTION BAR - ICON-BASED CONTROLS ===================================================================== */ .tasknotes-plugin .action-bar { display: flex; align-items: center; gap: var(--size-4-1); margin-bottom: var(--size-4-3); padding: var(--size-4-1) 0; } .tasknotes-plugin .action-icon { display: flex; align-items: center; justify-content: center; width: 32px; height: 32px; border-radius: var(--radius-s); cursor: var(--cursor); transition: all 0.2s ease; position: relative; } .tasknotes-plugin .action-icon:hover { background: var(--background-modifier-hover); transform: translateY(-1px); } .tasknotes-plugin .action-icon .icon { width: 16px; height: 16px; color: var(--text-muted); transition: color 0.2s ease; } .tasknotes-plugin .action-icon:hover .icon { color: var(--text-normal); } /* Active state for icons when they have values - only show the dot */ .tasknotes-plugin .action-icon.has-value { /* Remove full background colorization */ } .tasknotes-plugin .action-icon.has-value::after { content: ''; position: absolute; top: -2px; right: -2px; width: 8px; height: 8px; background: var(--color-accent); border: 2px solid var(--background-primary); border-radius: 50%; } /* ===================================================================== DETAILS SECTION - PROGRESSIVE DISCLOSURE ===================================================================== */ .tasknotes-plugin .details-container { transition: all 0.3s ease; transform-origin: top; } .tasknotes-plugin .detail-label { font-size: var(--font-ui-small); font-weight: 600; color: var(--text-muted); margin-bottom: var(--size-4-1); margin-top: var(--size-4-3); text-transform: uppercase; letter-spacing: 0.05em; } .tasknotes-plugin .detail-label:first-child { margin-top: 0; } .tasknotes-plugin .title-input-detailed { width: 100%; padding: var(--size-4-2); font-size: var(--font-ui-medium); font-weight: 500; line-height: 1.4; border: 1px solid var(--background-modifier-border); border-radius: var(--radius-s); background: transparent; color: var(--text-normal); transition: all 0.2s ease; } .tasknotes-plugin .title-input-detailed:focus, .tasknotes-plugin .title-input-detailed:active, .tasknotes-plugin .title-input-detailed:focus-visible { outline: none; box-shadow: none; border-color: var(--interactive-accent); background: transparent; } .tasknotes-plugin .title-input-detailed::placeholder { color: var(--text-muted); } .tasknotes-plugin .details-input { width: 100%; min-height: 80px; padding: var(--size-4-2); font-size: var(--font-ui-medium); line-height: 1.5; border: 1px solid var(--background-modifier-border); border-radius: var(--radius-s); background: transparent; color: var(--text-normal); resize: vertical; transition: all 0.2s ease; } .tasknotes-plugin .details-input:focus { outline: none; border-color: var(--interactive-accent); background: transparent; } .tasknotes-plugin .details-input::placeholder { color: var(--text-muted); } /* ===================================================================== ADDITIONAL FIELDS - SETTINGS STYLE ===================================================================== */ .tasknotes-plugin .details-container .setting-item { border: none; padding: var(--size-4-2) 0; } .tasknotes-plugin .details-container .setting-item-name { font-size: var(--font-ui-small); font-weight: 600; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.05em; } .tasknotes-plugin .details-container .setting-item-control input { background: transparent; border: 1px solid var(--background-modifier-border); border-radius: var(--radius-s); padding: var(--size-4-1) var(--size-4-2); font-size: var(--font-ui-medium); transition: all 0.2s ease; } .tasknotes-plugin .details-container .setting-item-control input:focus { border-color: var(--interactive-accent); background: transparent; outline: none; } /* ===================================================================== OPEN NOTE BUTTON (IN BUTTON BAR) ===================================================================== */ .tasknotes-plugin .open-note-button { padding: var(--size-4-2) var(--size-4-3); font-weight: 500; border: 1px solid var(--interactive-accent); border-radius: var(--radius-s); background: transparent; color: var(--interactive-accent); cursor: var(--cursor); transition: all 0.2s ease; min-width: 80px; } .tasknotes-plugin .open-note-button:hover { background: var(--interactive-accent); color: var(--text-on-accent); border: 1px solid var(--interactive-accent); } .tasknotes-plugin .open-note-button:active { background: var(--interactive-accent); color: var(--text-on-accent); border: 1px solid var(--interactive-accent); } .tasknotes-plugin .open-note-button:focus-visible { box-shadow: 0 0 0 3px var(--background-modifier-border-focus); } .tasknotes-plugin .archive-button:focus-visible { box-shadow: 0 0 0 3px var(--background-modifier-border-focus); } /* ===================================================================== MODAL BUTTON CONTAINER - Native Obsidian style ===================================================================== */ /* Use native modal-button-container class */ .modal.mod-tasknotes .modal-button-container { display: flex; gap: var(--size-4-2); } /* Push Save/Cancel buttons to the right on desktop only */ body:not(.is-mobile) .modal.mod-tasknotes .modal-button-container .mod-cta { margin-left: auto; } /* ===================================================================== MODAL EXPANSION ANIMATION ===================================================================== */ .tasknotes-plugin.minimalist-task-modal .modal-content { transition: all 0.3s ease; } .tasknotes-plugin.minimalist-task-modal.expanded .modal-content { min-height: 400px; } /* ===================================================================== RESPONSIVE DESIGN ===================================================================== */ @media (max-width: 600px) { .tasknotes-plugin.minimalist-task-modal .modal-content { min-width: 90vw; max-width: 90vw; } .tasknotes-plugin .minimalist-modal-container { padding: var(--size-4-3); } .tasknotes-plugin .action-bar { flex-wrap: wrap; gap: var(--size-4-2); } .modal.mod-tasknotes .modal-button-container { flex-direction: column; } .modal.mod-tasknotes .modal-button-container button { width: 100%; } /* Reset margin for small screens on desktop too */ .modal.mod-tasknotes .modal-button-container .mod-cta { margin-left: 0; } } /* ===================================================================== SPLIT LAYOUT - BASE STYLES (mobile/narrow screens) On narrow screens, content flows vertically with details below title ===================================================================== */ /* Split content wrapper - use flex column for ordering on narrow screens */ .tasknotes-plugin.minimalist-task-modal .modal-split-content { display: flex; flex-direction: column; } /* Left column: contains title, action bar, and form fields */ .tasknotes-plugin.minimalist-task-modal .modal-split-left { display: contents; } /* Title input container - first item */ .tasknotes-plugin.minimalist-task-modal .modal-split-left .title-input-container, .tasknotes-plugin.minimalist-task-modal .modal-split-left .nl-markdown-editor { order: 1; } /* Action bar - second item */ .tasknotes-plugin.minimalist-task-modal .modal-split-left .action-bar { order: 2; } /* Right column: contains details editor - appears after action bar on narrow screens */ .tasknotes-plugin.minimalist-task-modal .modal-split-right { order: 3; } /* Details container (form fields) - after the details editor on narrow screens */ .tasknotes-plugin.minimalist-task-modal .modal-split-left .details-container { order: 4; } /* Additional sections (completions calendar, metadata) - last */ .tasknotes-plugin.minimalist-task-modal .modal-split-left .completions-calendar-container, .tasknotes-plugin.minimalist-task-modal .modal-split-left .metadata-container { order: 5; } /* Hide empty right column indicator on narrow screens */ .tasknotes-plugin.minimalist-task-modal .modal-split-right:empty { display: none; } /* ===================================================================== SPLIT LAYOUT - WIDE SCREENS (900px+) Details field appears on the right when modal is expanded Only applies when split-layout-enabled class is present (controlled by setting) ===================================================================== */ @media (min-width: 900px) { /* Widen modal for split layout when expanded */ /* Target both .modal (modalEl) and .modal-content for max compatibility */ .tasknotes-plugin.minimalist-task-modal.split-layout-enabled.expanded .modal, .tasknotes-plugin.minimalist-task-modal.split-layout-enabled.expanded.modal { width: 850px; max-width: 90vw; } .tasknotes-plugin.minimalist-task-modal.split-layout-enabled.expanded .modal-content { min-width: 100%; max-width: 100%; padding: 0; } /* Main container - no padding on right for edge-to-edge details */ .tasknotes-plugin.minimalist-task-modal.split-layout-enabled.expanded .minimalist-modal-container { display: flex; flex-direction: column; padding-right: 0; } /* Split content wrapper - holds left and right columns side by side */ .tasknotes-plugin.minimalist-task-modal.split-layout-enabled.expanded .modal-split-content { display: flex; flex-direction: row; flex: 1; min-height: 0; gap: 0; } /* Left column - reset display:contents and use flex column */ .tasknotes-plugin.minimalist-task-modal.split-layout-enabled.expanded .modal-split-left { flex: 0 0 380px; min-width: 0; display: flex; flex-direction: column; padding-right: var(--size-4-4); overflow-y: auto; max-height: 70vh; } /* Reset ordering for split layout - elements flow naturally in their DOM order */ .tasknotes-plugin.minimalist-task-modal.split-layout-enabled.expanded .modal-split-left .title-input-container, .tasknotes-plugin.minimalist-task-modal.split-layout-enabled.expanded .modal-split-left .nl-markdown-editor, .tasknotes-plugin.minimalist-task-modal.split-layout-enabled.expanded .modal-split-left .action-bar, .tasknotes-plugin.minimalist-task-modal.split-layout-enabled.expanded .modal-split-left .details-container, .tasknotes-plugin.minimalist-task-modal.split-layout-enabled.expanded .modal-split-left .completions-calendar-container, .tasknotes-plugin.minimalist-task-modal.split-layout-enabled.expanded .modal-split-left .metadata-container, .tasknotes-plugin.minimalist-task-modal.split-layout-enabled.expanded .modal-split-right { order: unset; } /* Right column - details editor takes full height, edge to edge */ .tasknotes-plugin.minimalist-task-modal.split-layout-enabled.expanded .modal-split-right { flex: 1; min-width: 0; display: flex; flex-direction: column; border-left: 1px solid var(--background-modifier-border); margin: calc(-1 * var(--size-4-4)) 0; margin-right: calc(-1 * var(--size-4-4)); border-radius: 0; max-height: 70vh; overflow: hidden; } /* Hide empty right column on wide screens too */ .tasknotes-plugin.minimalist-task-modal.split-layout-enabled.expanded .modal-split-right:empty { display: none; } /* When right column is empty, left column takes full width */ .tasknotes-plugin.minimalist-task-modal.split-layout-enabled.expanded .modal-split-right:empty ~ .modal-split-left, .tasknotes-plugin.minimalist-task-modal.split-layout-enabled.expanded .modal-split-content:has(.modal-split-right:empty) .modal-split-left { flex: 1; padding-right: 0; } /* Details label in right column */ .tasknotes-plugin.minimalist-task-modal.split-layout-enabled.expanded .modal-split-right .detail-label { margin: 0; padding: var(--size-4-3) var(--size-4-4); border-bottom: 1px solid var(--background-modifier-border); } /* Make details editor fill the right column completely */ .tasknotes-plugin.minimalist-task-modal.split-layout-enabled.expanded .modal-split-right .details-markdown-editor { flex: 1; min-height: 0; max-height: none; display: flex; flex-direction: column; border: none; border-radius: 0; margin: 0; overflow: hidden; } .tasknotes-plugin.minimalist-task-modal.split-layout-enabled.expanded .modal-split-right .details-markdown-editor .cm-editor { flex: 1; max-height: none; border-radius: 0; min-height: 0; } .tasknotes-plugin.minimalist-task-modal.split-layout-enabled.expanded .modal-split-right .details-markdown-editor .cm-scroller { max-height: none; overflow-y: auto; } .tasknotes-plugin.minimalist-task-modal.split-layout-enabled.expanded .modal-split-right .details-markdown-editor .task-details-editor { max-height: none; flex: 1; min-height: 0; overflow: hidden; } /* Button container needs proper positioning */ .tasknotes-plugin.minimalist-task-modal.split-layout-enabled.expanded .modal-button-container { padding-right: var(--size-4-4); } } /* ===================================================================== SPLIT LAYOUT - EXTRA WIDE SCREENS (1200px+) Modal expands to 1100px on larger screens ===================================================================== */ @media (min-width: 1200px) { .tasknotes-plugin.minimalist-task-modal.split-layout-enabled.expanded .modal, .tasknotes-plugin.minimalist-task-modal.split-layout-enabled.expanded.modal { width: 1100px; } /* Left column gets more space on wider screens */ .tasknotes-plugin.minimalist-task-modal.split-layout-enabled.expanded .modal-split-left { flex: 0 0 480px; } } /* ===================================================================== ACCESSIBILITY ENHANCEMENTS ===================================================================== */ .tasknotes-plugin .action-icon:focus-visible { outline: none; box-shadow: 0 0 0 1px var(--interactive-accent); transition: box-shadow 0.15s ease; } .tasknotes-plugin .details-input:focus-visible { outline: 2px solid var(--interactive-accent); outline-offset: 1px; } /* ===================================================================== METADATA SECTION - FOR EDIT MODAL ===================================================================== */ .tasknotes-plugin .metadata-container { margin-top: var(--size-4-3); padding-top: var(--size-4-3); border-top: 0.5px solid var(--background-modifier-border); } .tasknotes-plugin .metadata-content { display: flex; flex-direction: column; gap: var(--size-4-1); } .tasknotes-plugin .metadata-item { display: flex; align-items: center; font-size: var(--font-ui-small); } .tasknotes-plugin .metadata-key { color: var(--text-muted); font-weight: 500; min-width: 80px; } .tasknotes-plugin .metadata-value { color: var(--text-normal); font-family: var(--font-monospace); } /* ===================================================================== AUTOCOMPLETE STYLING ===================================================================== */ .tasknotes-plugin .autocomplete-suggestions { position: absolute; top: 100%; left: 0; right: 0; background: var(--background-primary); border: 1px solid var(--background-modifier-border); border-top: none; border-radius: 0 0 var(--radius-s) var(--radius-s); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); z-index: 1000; max-height: 200px; overflow-y: auto; } .tasknotes-plugin .autocomplete-suggestion { padding: 8px 12px; cursor: var(--cursor); border-bottom: 1px solid var(--background-modifier-border-hover); font-size: var(--font-ui-small); color: var(--text-normal); transition: background-color 0.1s ease; } .tasknotes-plugin .autocomplete-suggestion:hover { background: var(--background-modifier-hover); } .tasknotes-plugin .autocomplete-suggestion:last-child { border-bottom: none; } /* ===================================================================== NLP INPUT STYLING UPDATES ===================================================================== */ .tasknotes-plugin .nl-input { width: 100%; padding: var(--size-4-3) var(--size-4-2); font-weight: 400; line-height: 1.5; border: 1px solid var(--background-modifier-border); border-radius: var(--radius-s); background: transparent; color: var(--text-normal); resize: vertical; min-height: 80px; transition: all 0.2s ease; } .tasknotes-plugin .nl-input:focus { outline: none; border-color: var(--interactive-accent); background: transparent; box-shadow: 0 0 0 2px rgba(var(--interactive-accent-rgb), 0.2); } .tasknotes-plugin .nl-input::placeholder { color: var(--text-muted); font-style: italic; } /* ===================================================================== COMPLETIONS CALENDAR SECTION ===================================================================== */ .tasknotes-plugin .completions-calendar-container { margin-top: var(--size-4-3); padding-top: var(--size-4-3); border-top: 0.5px solid var(--background-modifier-border); } .tasknotes-plugin .completions-calendar-content { max-width: 200px; margin: 0 auto; } /* ===================================================================== RECURRING CALENDAR COMPONENT - BEM & MINIMALIST ===================================================================== */ .tasknotes-plugin .metadata-item--calendar { flex-direction: column; align-items: flex-start; } .tasknotes-plugin .recurring-calendar { margin-top: var(--size-4-1); font-size: var(--font-ui-small); width: 100%; max-width: 200px; } .tasknotes-plugin .recurring-calendar__header { display: flex; align-items: center; justify-content: space-between; margin-bottom: var(--size-4-1); } .tasknotes-plugin .recurring-calendar__nav { border: none; background: transparent; color: var(--text-muted); cursor: var(--cursor); font-size: 14px; padding: 2px 4px; transition: color 0.1s ease; } .tasknotes-plugin .recurring-calendar__nav:hover { color: var(--text-normal); } .tasknotes-plugin .recurring-calendar__month { font-size: var(--font-ui-small); color: var(--text-normal); font-weight: 500; } .tasknotes-plugin .recurring-calendar__grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; } .tasknotes-plugin .recurring-calendar__day { width: 20px; height: 20px; display: flex; align-items: center; justify-content: center; font-size: 11px; color: var(--text-faint); border-radius: 2px; } .tasknotes-plugin .recurring-calendar__day--faded { color: var(--text-faint); opacity: 0.4; } .tasknotes-plugin .recurring-calendar__day--clickable { cursor: var(--cursor); transition: all 0.1s ease; } .tasknotes-plugin .recurring-calendar__day--clickable:hover { background: var(--background-modifier-hover); color: var(--text-normal); } .tasknotes-plugin .recurring-calendar__day--recurring { color: var(--text-normal); border: 1px solid var(--text-muted); } .tasknotes-plugin .recurring-calendar__day--recurring:hover { border-color: var(--interactive-accent); color: var(--interactive-accent); background: var(--background-modifier-hover); } .tasknotes-plugin .recurring-calendar__day--completed { background: var(--interactive-accent); color: var(--text-on-accent); border: 1px solid var(--interactive-accent); } .tasknotes-plugin .recurring-calendar__day--completed:hover { background: var(--interactive-accent-hover); } .tasknotes-plugin .recurring-calendar__day--skipped { background: rgba(128, 128, 128, 0.3); color: var(--text-muted); border: 1px solid var(--text-faint); text-decoration: line-through; } .tasknotes-plugin .recurring-calendar__day--skipped:hover { background: rgba(128, 128, 128, 0.4); border-color: var(--text-muted); } .tasknotes-plugin .nl-preview-container { margin-top: var(--size-4-2); padding: var(--size-4-2); background: var(--background-primary-alt); border: 1px solid var(--background-modifier-border); border-radius: var(--radius-s); display: none; } .tasknotes-plugin .nl-preview-item { display: flex; align-items: center; word-break: break-all; margin-bottom: var(--size-4-1); font-size: var(--font-ui-small); } .tasknotes-plugin .nl-preview-item:last-child { margin-bottom: 0; } .tasknotes-plugin .nl-preview-label { min-width: 80px; font-weight: 600; color: var(--text-muted); margin-right: var(--size-4-2); } .tasknotes-plugin .nl-preview-value { color: var(--text-normal); flex: 1; } /* ===================================================================== DARK MODE ADJUSTMENTS ===================================================================== */ .theme-dark .tasknotes-plugin .action-icon.has-value::after { border-color: var(--background-primary-alt); } .theme-dark .tasknotes-plugin .autocomplete-suggestions { box-shadow: 0 2px 16px rgba(0, 0, 0, 0.3); } /* NLP Auto-suggestion specific styles */ .tasknotes-plugin .nlp-suggest-icon { display: inline-block; font-weight: 600; color: var(--interactive-accent); margin-right: var(--size-2-2); min-width: 14px; } .tasknotes-plugin .nlp-suggest-text { color: var(--text-normal); } /* NLP Project Suggestion Styles - Rich Metadata Display (Textarea-based suggester in TaskCreationModal) */ .tasknotes-plugin .nlp-suggest-project__filename { font-weight: var(--font-weight-medium); color: var(--text-normal); font-size: var(--font-ui-small); margin-bottom: 2px; } .tasknotes-plugin .nlp-suggest-project__meta { font-size: var(--font-ui-smaller); color: var(--text-muted); margin-top: 2px; line-height: 1.4; } .tasknotes-plugin .nlp-suggest-project__meta-label { color: var(--text-muted); font-weight: 500; margin-right: 4px; } .tasknotes-plugin .nlp-suggest-project__meta-value { color: var(--text-normal); } /* CodeMirror Project Suggestion Styles - Rich Metadata Display */ .tasknotes-plugin .cm-tooltip-autocomplete .cm-project-suggestion { display: flex; flex-direction: column; gap: 2px; padding: var(--size-4-1) 0; } .tasknotes-plugin .cm-tooltip-autocomplete .cm-project-suggestion__name { font-weight: var(--font-weight-medium); color: var(--text-normal); font-size: var(--font-ui-small); } .tasknotes-plugin .cm-tooltip-autocomplete .cm-project-suggestion__meta { font-size: var(--font-ui-smaller); color: var(--text-muted); line-height: 1.4; } .tasknotes-plugin .cm-tooltip-autocomplete .cm-project-suggestion__meta-label { color: var(--text-muted); font-weight: 500; margin-right: 4px; } .tasknotes-plugin .cm-tooltip-autocomplete .cm-project-suggestion__meta-value { color: var(--text-normal); } /* ===================================================================== PROJECT SELECTION UI ===================================================================== */ .tasknotes-plugin .task-projects-list { margin-top: var(--size-4-2); border: none; border-radius: var(--radius-s); max-height: 150px; overflow-y: auto; } .tasknotes-plugin .task-projects-empty { padding: var(--size-4-3); text-align: center; color: var(--text-muted); font-style: italic; border: none; font-size: var(--font-ui-small); } .tasknotes-plugin .task-project-item { display: flex; align-items: center; padding: var(--size-4-2); border: none; gap: var(--size-4-2); border-radius: var(--radius-s); transition: background-color 0.2s ease; } .tasknotes-plugin .task-project-item:hover { background-color: var(--background-modifier-hover); } .tasknotes-plugin .task-project-info { flex: 1; min-width: 0; } .tasknotes-plugin .task-project-name { display: block; font-weight: var(--font-weight-medium); color: var(--text-normal); font-size: var(--font-ui-small); } .tasknotes-plugin .task-project-item--unresolved { border: 1px solid var(--color-orange); background: color-mix(in srgb, var(--color-orange) 12%, var(--background-secondary)); } .tasknotes-plugin .task-project-item--unresolved .task-project-name { color: var(--color-orange); } /* Make clickable project names in edit modal look and behave like links */ .tasknotes-plugin .clickable-project .internal-link { color: var(--link-color); text-decoration: none; cursor: var(--cursor); font-weight: var(--font-weight-medium); font-size: var(--font-ui-small); border-radius: var(--radius-xs); padding: 1px 2px; transition: background-color 0.2s ease, color 0.2s ease; } .tasknotes-plugin .clickable-project .internal-link:hover { background-color: var(--background-modifier-hover); color: var(--link-color-hover); text-decoration: underline; } /* Remove the default + prefix for clickable projects since they're now clearly links */ .tasknotes-plugin .clickable-project .internal-link::before { content: '+'; color: var(--text-muted); margin-right: 2px; } /* Style dependency items the same way when rendered as internal links */ .tasknotes-plugin .clickable-dependency .task-dependency-link { color: var(--link-color); text-decoration: none; cursor: var(--cursor); font-weight: var(--font-weight-medium); font-size: var(--font-ui-small); border-radius: var(--radius-xs); padding: 1px 2px; transition: background-color 0.2s ease, color 0.2s ease; } .tasknotes-plugin .clickable-dependency .task-dependency-link:hover { background-color: var(--background-modifier-hover); color: var(--link-color-hover); text-decoration: underline; } .tasknotes-plugin .task-project-path { font-size: var(--font-ui-smaller); color: var(--text-muted); margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } /* Use consistent button system for project remove button */ .tasknotes-plugin .task-project-remove { background: transparent; border: none; box-shadow: none; color: var(--text-muted); font-size: 16px; font-weight: bold; width: 20px; height: 20px; border-radius: 50%; } .tasknotes-plugin .task-project-remove:hover { background: var(--tn-color-error); color: var(--tn-bg-primary); border: none; box-shadow: none; } /* ===================================================================== PROJECT SELECT MODAL ===================================================================== */ /* Use consistent button system for project suggestions */ .tasknotes-plugin .project-suggestion { background: transparent; border: none; box-shadow: none; padding: var(--size-4-2); border-radius: var(--radius-s); } .tasknotes-plugin .project-suggestion:hover { background: var(--tn-interactive-hover); border: none; box-shadow: none; } .tasknotes-plugin .project-name { font-weight: var(--font-weight-medium); color: var(--text-normal); } .tasknotes-plugin .project-path { font-size: var(--font-ui-smaller); color: var(--text-muted); margin-top: 2px; } /* ===== REMINDER-MODAL.CSS ===== */ /* ===================================================================== REMINDER MODAL - Consistent with Task Modal Styling ===================================================================== */ .tasknotes-plugin .tasknotes-reminder-modal { max-width: 600px; min-width: 480px; min-height: 400px; max-height: 75vh; display: flex; flex-direction: column; border-radius: var(--radius-l); box-shadow: var(--shadow-l); } /* ===================================================================== HEADER SECTION ===================================================================== */ .tasknotes-plugin .reminder-modal__header { padding: var(--size-4-4) var(--size-4-4) var(--size-4-3); border-bottom: 1px solid var(--background-modifier-border); } .tasknotes-plugin .reminder-modal__header h2 { margin: 0 0 var(--size-4-1) 0; font-size: var(--font-ui-large); font-weight: 600; color: var(--text-normal); text-transform: uppercase; letter-spacing: 0.05em; } .tasknotes-plugin .reminder-modal__task-title { font-size: var(--font-ui-medium); font-weight: 500; color: var(--interactive-accent); display: block; margin-bottom: var(--size-4-1); } .tasknotes-plugin .reminder-modal__task-dates { font-size: var(--font-ui-small); color: var(--text-muted); font-style: italic; } /* ===================================================================== CONTENT AREA ===================================================================== */ .tasknotes-plugin .reminder-modal__content { flex: 1; padding: var(--size-4-4); overflow-y: auto; display: flex; flex-direction: column; gap: var(--size-4-3); } /* Section Styling - Match Task Modal Details */ .tasknotes-plugin .reminder-modal__section { display: flex; flex-direction: column; gap: var(--size-4-2); } .tasknotes-plugin .reminder-modal__section-header { display: flex; align-items: center; gap: var(--size-4-2); } .tasknotes-plugin .reminder-modal__section-header h3 { margin: 0; font-size: var(--font-ui-small); font-weight: 600; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.05em; } .tasknotes-plugin .reminder-modal__reminder-count { font-size: var(--font-ui-small); color: var(--text-muted); font-weight: 400; } /* Empty State - Match Task Modal Secondary Background */ .tasknotes-plugin .reminder-modal__empty-state { display: flex; flex-direction: column; align-items: center; padding: var(--size-4-3); text-align: center; background: var(--background-secondary); border-radius: var(--radius-s); border: 1px dashed var(--background-modifier-border); } .tasknotes-plugin .reminder-modal__empty-icon { width: 24px; height: 24px; color: var(--text-faint); margin-bottom: var(--size-4-2); } .tasknotes-plugin .reminder-modal__empty-text { font-size: var(--font-ui-small); color: var(--text-muted); font-weight: 500; } /* ===================================================================== REMINDER CARDS - Match Task Modal Item Styling ===================================================================== */ .tasknotes-plugin .reminder-modal__reminder-list { display: flex; flex-direction: column; gap: var(--size-4-2); } .tasknotes-plugin .reminder-modal__reminder-card { display: flex; align-items: center; gap: var(--size-4-2); padding: var(--size-4-2); background: var(--background-secondary); border: 1px solid var(--background-modifier-border); border-radius: var(--radius-s); transition: all 0.2s ease; } .tasknotes-plugin .reminder-modal__reminder-card:hover { border-color: var(--interactive-accent); background: var(--background-primary); } .tasknotes-plugin .reminder-modal__reminder-icon { width: 16px; height: 16px; color: var(--interactive-accent); flex-shrink: 0; } .tasknotes-plugin .reminder-modal__reminder-content { flex: 1; display: flex; flex-direction: column; gap: var(--size-4-1); } .tasknotes-plugin .reminder-modal__reminder-primary { font-weight: 500; color: var(--text-normal); font-size: var(--font-ui-medium); } .tasknotes-plugin .reminder-modal__reminder-description { font-size: var(--font-ui-small); color: var(--interactive-accent); font-style: italic; } .tasknotes-plugin .reminder-modal__reminder-actions { display: flex; flex-shrink: 0; } .tasknotes-plugin .reminder-modal__action-btn { padding: var(--size-4-1); background: transparent; border: none; cursor: pointer; color: var(--text-muted); transition: all 0.2s ease; width: 24px; height: 24px; display: flex; align-items: center; justify-content: center; border-radius: var(--radius-s); } .tasknotes-plugin .reminder-modal__action-btn:hover { color: var(--text-error); background: var(--background-modifier-hover); } /* ===================================================================== QUICK ACTIONS - Icon-Based Controls Like Task Modal ===================================================================== */ .tasknotes-plugin .reminder-modal__quick-actions { padding: var(--size-4-2); background: var(--background-secondary); border: 1px solid var(--background-modifier-border); border-radius: var(--radius-s); margin-bottom: var(--size-4-3); } .tasknotes-plugin .reminder-modal__quick-buttons { display: flex; gap: var(--size-4-1); justify-content: space-between; } .tasknotes-plugin .reminder-modal__quick-btn { display: flex; align-items: center; justify-content: center; gap: var(--size-4-1); padding: var(--size-4-1) var(--size-4-2); background: transparent; border: none; cursor: pointer; transition: all 0.2s ease; font-size: var(--font-ui-small); color: var(--text-muted); flex: 1; min-width: 0; border-radius: var(--radius-s); } .tasknotes-plugin .reminder-modal__quick-btn:hover { background: var(--background-modifier-hover); color: var(--text-normal); transform: translateY(-1px); } .tasknotes-plugin .reminder-modal__quick-btn-icon { width: 14px; height: 14px; flex-shrink: 0; display: flex; align-items: center; justify-content: center; } .tasknotes-plugin .reminder-modal__quick-btn-label { font-weight: 500; } /* ===================================================================== FORM STYLING - Match Task Modal Input Styles ===================================================================== */ .tasknotes-plugin .reminder-modal__form { display: flex; flex-direction: column; gap: var(--size-4-2); background: var(--background-secondary); border: 1px solid var(--background-modifier-border); border-radius: var(--radius-s); padding: var(--size-4-3); margin-top: var(--size-4-2); } .tasknotes-plugin .reminder-modal__type-selector { display: flex; background: var(--background-primary); border-radius: var(--radius-s); padding: 2px; border: 1px solid var(--background-modifier-border); } .tasknotes-plugin .reminder-modal__type-tab { flex: 1; padding: var(--size-4-1) var(--size-4-3); background: transparent; border: none; border-radius: var(--radius-s); cursor: pointer; font-weight: 500; color: var(--text-muted); transition: all 0.2s ease; text-align: center; font-size: var(--font-ui-small); display: flex; align-items: center; justify-content: center; } .tasknotes-plugin .reminder-modal__type-tab--active { background: var(--interactive-accent); color: var(--text-on-accent); } .tasknotes-plugin .reminder-modal__type-tab:not(.reminder-modal__type-tab--active):hover { background: var(--background-modifier-hover); color: var(--text-normal); } .tasknotes-plugin .relative-fields, .tasknotes-plugin .absolute-fields { padding: var(--size-4-2); background: var(--background-primary); border: 1px solid var(--background-modifier-border); border-radius: var(--radius-s); display: flex; flex-direction: column; gap: var(--size-4-2); margin-top: var(--size-4-2); } .tasknotes-plugin .absolute-fields { display: none; } /* Form controls - Match Task Modal Details Section */ .tasknotes-plugin .reminder-modal__form .setting-item { padding: var(--size-4-2) 0; border: none; } .tasknotes-plugin .reminder-modal__form .setting-item-name { font-size: var(--font-ui-small); font-weight: 600; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.05em; } .tasknotes-plugin .reminder-modal__form .setting-item-control input, .tasknotes-plugin .reminder-modal__form .setting-item-control select { background: var(--background-secondary); border: 1px solid var(--background-modifier-border); border-radius: var(--radius-s); padding: var(--size-4-1) var(--size-4-2); font-size: var(--font-ui-medium); transition: all 0.2s ease; } .tasknotes-plugin .reminder-modal__form .setting-item-control input:focus, .tasknotes-plugin .reminder-modal__form .setting-item-control select:focus { border-color: var(--interactive-accent); background: var(--background-primary); outline: none; } .tasknotes-plugin .reminder-add-btn { align-self: flex-start; padding: var(--size-4-2) var(--size-4-3); background: var(--tn-interactive-accent, var(--interactive-accent)); color: var(--text-on-accent); border: none; cursor: pointer; font-weight: 500; font-size: var(--font-ui-medium); transition: all 0.2s ease; display: flex; align-items: center; justify-content: center; gap: var(--size-4-1); border-radius: var(--radius-s); min-width: 80px; } .tasknotes-plugin .reminder-add-btn:hover { background: var(--tn-interactive-accent-hover, var(--interactive-accent-hover)); box-shadow: none; } .tasknotes-plugin .reminder-add-btn:disabled, .tasknotes-plugin .reminder-add-btn--loading { opacity: 0.6; cursor: not-allowed; } .tasknotes-plugin .reminder-add-btn--loading .reminder-add-btn-icon { animation: spin 1s linear infinite; } @keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } /* ===================================================================== ACTION BUTTONS - Match Task Modal Button Container ===================================================================== */ .tasknotes-plugin .reminder-modal__actions { display: flex; justify-content: flex-end; align-items: center; gap: var(--size-4-2); margin-top: var(--size-4-4); padding: var(--size-4-3) var(--size-4-4); border-top: 1px solid var(--background-modifier-border); } .tasknotes-plugin .reminder-modal__save-btn, .tasknotes-plugin .reminder-modal__cancel-btn { padding: var(--size-4-2) var(--size-4-3); font-weight: 500; font-size: var(--font-ui-medium); cursor: pointer; transition: all 0.2s ease; border: none; display: flex; align-items: center; justify-content: center; border-radius: var(--radius-s); min-width: 80px; } .tasknotes-plugin .reminder-modal__save-btn { background: var(--tn-interactive-accent, var(--interactive-accent)); color: var(--text-on-accent); box-shadow: none; } .tasknotes-plugin .reminder-modal__save-btn:disabled { opacity: 0.5; cursor: not-allowed; background: var(--background-modifier-border); color: var(--text-muted); } .tasknotes-plugin .reminder-modal__save-btn:not(:disabled):hover { background: var(--tn-interactive-accent-hover, var(--interactive-accent-hover)); box-shadow: none; } .tasknotes-plugin .reminder-modal__cancel-btn { background: transparent; color: var(--text-muted); box-shadow: none; } .tasknotes-plugin .reminder-modal__cancel-btn:hover { background: var(--tn-interactive-hover, var(--background-modifier-hover)); box-shadow: none; } /* ===================================================================== RESPONSIVE DESIGN - Match Task Modal Breakpoints ===================================================================== */ @media (max-width: 600px) { .tasknotes-plugin .tasknotes-reminder-modal { min-width: 90vw; max-width: 90vw; min-height: 60vh; max-height: 90vh; } .tasknotes-plugin .reminder-modal__quick-buttons { flex-wrap: wrap; gap: var(--size-4-2); } .tasknotes-plugin .reminder-modal__actions { flex-direction: column; gap: var(--size-4-2); } .tasknotes-plugin .reminder-modal__save-btn, .tasknotes-plugin .reminder-modal__cancel-btn { width: 100%; } .tasknotes-plugin .reminder-modal__shortcuts { order: -1; } } /* ===================================================================== DARK MODE ADJUSTMENTS - Match Task Modal ===================================================================== */ .theme-dark .tasknotes-plugin .tasknotes-reminder-modal { box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4); } /* ===================================================================== BACKWARD COMPATIBILITY ===================================================================== */ .reminder-section { margin-bottom: var(--size-4-6); } .reminder-section h3 { margin-bottom: var(--size-4-3); color: var(--text-normal); font-size: var(--font-size-md); font-weight: var(--font-weight-semibold); } .no-reminders { padding: var(--size-4-4); text-align: center; color: var(--text-muted); font-style: italic; background: var(--background-secondary); border-radius: var(--radius-m); } .reminder-list { display: flex; flex-direction: column; gap: var(--size-4-2); } .reminder-item { display: flex; align-items: flex-start; gap: var(--size-4-3); padding: var(--size-4-3); background: var(--background-secondary); border-radius: var(--radius-m); border: 1px solid var(--border-color); } .reminder-item__content { flex: 1; } .reminder-item__timing { font-weight: var(--font-weight-semibold); color: var(--text-normal); margin-bottom: var(--size-4-1); } .reminder-item__description { font-size: var(--font-size-sm); color: var(--text-accent); margin-bottom: var(--size-4-1); font-style: italic; } .reminder-item__details { font-size: var(--font-size-xs); color: var(--text-muted); } .reminder-item__actions { display: flex; gap: var(--size-4-1); } .reminder-item__remove-btn { padding: var(--size-4-1); background: transparent; border: none; cursor: pointer; color: var(--text-muted); border-radius: var(--radius-s); transition: all 0.2s ease; } .reminder-item__remove-btn:hover { background: var(--background-modifier-error); color: var(--text-error); } .reminder-form { padding: var(--size-4-4); background: var(--background-secondary); border-radius: var(--radius-m); border: 1px solid var(--border-color); } /* Modal button styling */ .modal-button-container { display: flex; justify-content: flex-end; gap: var(--size-4-2); margin-top: var(--size-4-6); padding-top: var(--size-4-4); border-top: 1px solid var(--border-color); } /* ===================================================================== REMINDER DEFAULTS SECTION - Settings Tab Styling ===================================================================== */ .tasknotes-plugin .reminder-defaults-section { margin-bottom: var(--size-4-4); padding: var(--size-4-3); background: var(--background-secondary); border: 1px solid var(--background-modifier-border); border-radius: var(--radius-s); } .tasknotes-plugin .reminder-defaults-list { margin-bottom: var(--size-4-3); } /* Empty State */ .tasknotes-plugin .reminder-defaults-empty { display: flex; flex-direction: column; align-items: center; padding: var(--size-4-3); text-align: center; background: var(--background-primary); border-radius: var(--radius-s); border: 1px dashed var(--background-modifier-border); } .tasknotes-plugin .reminder-defaults-empty-icon { width: 24px; height: 24px; color: var(--text-faint); margin-bottom: var(--size-4-2); } .tasknotes-plugin .reminder-defaults-empty-text { font-size: var(--font-ui-small); color: var(--text-muted); font-weight: 500; } /* Reminder Items */ .tasknotes-plugin .reminder-defaults-items { display: flex; flex-direction: column; gap: var(--size-4-2); } .tasknotes-plugin .reminder-defaults-card { display: flex; align-items: center; gap: var(--size-4-2); padding: var(--size-4-2); background: var(--background-primary); border: 1px solid var(--background-modifier-border); border-radius: var(--radius-s); transition: all 0.2s ease; } .tasknotes-plugin .reminder-defaults-card:hover { border-color: var(--interactive-accent); background: var(--background-secondary); } .tasknotes-plugin .reminder-defaults-icon { width: 16px; height: 16px; color: var(--interactive-accent); flex-shrink: 0; } .tasknotes-plugin .reminder-defaults-content { flex: 1; display: flex; flex-direction: column; gap: var(--size-4-1); } .tasknotes-plugin .reminder-defaults-primary { font-weight: 500; color: var(--text-normal); font-size: var(--font-ui-medium); } .tasknotes-plugin .reminder-defaults-description { font-size: var(--font-ui-small); color: var(--interactive-accent); font-style: italic; } .tasknotes-plugin .reminder-defaults-actions { display: flex; flex-shrink: 0; } .tasknotes-plugin .reminder-defaults-remove-btn { padding: var(--size-4-1); background: transparent; border: none; cursor: pointer; color: var(--text-muted); transition: all 0.2s ease; width: 24px; height: 24px; display: flex; align-items: center; justify-content: center; border-radius: var(--radius-s); } .tasknotes-plugin .reminder-defaults-remove-btn:hover { color: var(--text-error); background: var(--background-modifier-hover); } /* Form Styling */ .tasknotes-plugin .reminder-defaults-form { display: flex; flex-direction: column; gap: var(--size-4-2); background: var(--background-primary); border: 1px solid var(--background-modifier-border); border-radius: var(--radius-s); padding: var(--size-4-3); margin-top: var(--size-4-3); } .tasknotes-plugin .reminder-defaults-form-header { margin: 0 0 var(--size-4-2) 0; font-size: var(--font-ui-small); font-weight: 600; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.05em; } /* Type Selector */ .tasknotes-plugin .reminder-defaults-type-selector { display: flex; background: var(--background-secondary); border-radius: var(--radius-s); padding: 2px; border: 1px solid var(--background-modifier-border); margin-bottom: var(--size-4-2); } .tasknotes-plugin .reminder-defaults-type-tab { flex: 1; padding: var(--size-4-1) var(--size-4-3); background: transparent; border: none; border-radius: var(--radius-s); cursor: pointer; font-weight: 500; color: var(--text-muted); transition: all 0.2s ease; text-align: center; font-size: var(--font-ui-small); display: flex; align-items: center; justify-content: center; } .tasknotes-plugin .reminder-defaults-type-tab--active { background: var(--interactive-accent); color: var(--text-on-accent); } .tasknotes-plugin .reminder-defaults-type-tab:not(.reminder-defaults-type-tab--active):hover { background: var(--background-modifier-hover); color: var(--text-normal); } /* Form Fields */ .tasknotes-plugin .reminder-defaults-relative-fields, .tasknotes-plugin .reminder-defaults-absolute-fields { padding: var(--size-4-2); background: var(--background-secondary); border: 1px solid var(--background-modifier-border); border-radius: var(--radius-s); display: flex; flex-direction: column; gap: var(--size-4-2); margin-bottom: var(--size-4-2); } .tasknotes-plugin .reminder-defaults-absolute-fields { display: none; } /* Form controls - Match Task Modal Details Section */ .tasknotes-plugin .reminder-defaults-form .setting-item { padding: var(--size-4-2) 0; border: none; } .tasknotes-plugin .reminder-defaults-form .setting-item-name { font-size: var(--font-ui-small); font-weight: 600; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.05em; } .tasknotes-plugin .reminder-defaults-form .setting-item-control input, .tasknotes-plugin .reminder-defaults-form .setting-item-control select { background: var(--background-primary); border: 1px solid var(--background-modifier-border); border-radius: var(--radius-s); padding: var(--size-4-1) var(--size-4-2); font-size: var(--font-ui-medium); transition: all 0.2s ease; } .tasknotes-plugin .reminder-defaults-form .setting-item-control input:focus, .tasknotes-plugin .reminder-defaults-form .setting-item-control select:focus { border-color: var(--interactive-accent); background: var(--background-secondary); outline: none; } /* Add Button */ .tasknotes-plugin .reminder-defaults-add-btn { align-self: flex-start; padding: var(--size-4-2) var(--size-4-3); background: var(--tn-interactive-accent, var(--interactive-accent)); color: var(--text-on-accent); border: none; cursor: pointer; font-weight: 500; font-size: var(--font-ui-medium); transition: all 0.2s ease; display: flex; align-items: center; justify-content: center; gap: var(--size-4-1); border-radius: var(--radius-s); min-width: 120px; } .tasknotes-plugin .reminder-defaults-add-btn:hover { background: var(--tn-interactive-accent-hover, var(--interactive-accent-hover)); box-shadow: none; } .tasknotes-plugin .reminder-defaults-add-btn:disabled { opacity: 0.6; cursor: not-allowed; } .tasknotes-plugin .reminder-defaults-add-icon { width: 16px; height: 16px; flex-shrink: 0; } .tasknotes-plugin .reminder-defaults-add-text { font-weight: 500; } /* ===== DATE-PICKER.CSS ===== */ /* ===================================================================== DATE PICKER MODAL - Enhanced Input Styling ===================================================================== */ /* Date picker modal container */ .date-picker-modal { font-family: var(--font-interface); position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); background: var(--background-primary); border: 1px solid var(--background-modifier-border); border-radius: var(--radius-m); padding: var(--size-4-4); box-shadow: var(--shadow-l); z-index: 1000; min-width: 320px; max-width: 400px; } /* Modal header */ .date-picker-modal__header { display: flex; align-items: center; gap: var(--size-4-2); margin-bottom: var(--size-4-4); padding-bottom: var(--size-4-2); border-bottom: 1px solid var(--background-modifier-border); } .date-picker-modal__header-icon { color: var(--interactive-accent); display: flex; align-items: center; } .date-picker-modal__header-title { margin: 0; font-size: var(--font-ui-large); font-weight: 600; color: var(--text-normal); } /* Input sections */ .date-picker-modal__section { margin-bottom: var(--size-4-3); } .date-picker-modal__section--buttons { margin-bottom: var(--size-4-4); } .date-picker-modal__label { display: flex; align-items: center; gap: var(--size-4-1); margin-bottom: var(--size-4-2); font-size: var(--font-ui-small); font-weight: 500; color: var(--text-muted); } .date-picker-modal__label-icon { color: var(--text-muted); display: flex; align-items: center; } .date-picker-modal__input-container { position: relative; } .date-picker-modal__input { width: 100%; padding: var(--size-4-3) var(--size-4-2); border: 1px solid var(--background-modifier-border); border-radius: var(--radius-s); background: var(--background-primary); color: var(--text-normal); font-size: var(--font-ui-medium); cursor: var(--cursor); color-scheme: dark light; transition: border-color 0.2s ease, box-shadow 0.2s ease; } .date-picker-modal__input:focus { border-color: var(--interactive-accent); box-shadow: 0 0 0 2px rgba(var(--interactive-accent), 0.2); } .date-picker-modal__input:hover { border-color: var(--background-modifier-border-hover); } /* Button section */ .date-picker-modal__buttons { display: flex; gap: var(--size-4-2); justify-content: flex-end; padding-top: var(--size-4-3); border-top: 1px solid var(--background-modifier-border); } .date-picker-modal__button { padding: var(--size-4-2) var(--size-4-4); border-radius: var(--radius-s); cursor: var(--cursor); font-size: var(--font-ui-medium); font-weight: 500; transition: all 0.2s ease; border: none; } .date-picker-modal__button--primary { background: var(--interactive-accent); color: var(--text-on-accent); } .date-picker-modal__button--primary:hover { background: var(--interactive-accent-hover); transform: translateY(-1px); } .date-picker-modal__button--secondary { background: var(--background-secondary); color: var(--text-normal); border: 1px solid var(--background-modifier-border); } .date-picker-modal__button--secondary:hover { background: var(--background-modifier-hover); } /* Enhanced date and time input styling */ .date-picker-modal input[type="date"], .date-picker-modal input[type="time"] { /* Reset browser defaults */ -webkit-appearance: none; -moz-appearance: textfield; appearance: none; /* Make the entire input clickable */ position: relative; overflow: hidden; /* Ensure consistent sizing */ box-sizing: border-box; height: 44px; line-height: 1.4; } /* Date input specific styling */ .date-picker-modal input[type="date"] { /* Improve positioning consistency */ position: relative; /* Ensure text is properly aligned */ text-align: left; /* Add padding to make room for icon on the right */ padding-right: 32px; } /* Webkit browsers (Chrome, Safari, Edge) */ .date-picker-modal input[type="date"]::-webkit-datetime-edit, .date-picker-modal input[type="date"]::-webkit-datetime-edit-fields-wrapper, .date-picker-modal input[type="date"]::-webkit-datetime-edit-text, .date-picker-modal input[type="date"]::-webkit-datetime-edit-month-field, .date-picker-modal input[type="date"]::-webkit-datetime-edit-day-field, .date-picker-modal input[type="date"]::-webkit-datetime-edit-year-field { /* Make the date text clickable */ cursor: var(--cursor); color: var(--text-normal); font-size: var(--font-ui-medium); font-family: var(--font-interface); } .date-picker-modal input[type="date"]::-webkit-calendar-picker-indicator { /* Position the calendar icon on the right, consistently with time input */ position: absolute; right: 8px; top: 50%; transform: translateY(-50%); cursor: var(--cursor); opacity: 0.7; width: 16px; height: 16px; background: none; color: var(--text-muted); /* Ensure the icon is clickable */ pointer-events: auto; } .date-picker-modal input[type="date"]:hover::-webkit-calendar-picker-indicator { opacity: 1; color: var(--text-normal); } /* Time input specific styling - add consistent padding */ .date-picker-modal input[type="time"] { /* Add padding to make room for icon on the right */ padding-right: 32px; text-align: left; } .date-picker-modal input[type="time"]::-webkit-datetime-edit, .date-picker-modal input[type="time"]::-webkit-datetime-edit-fields-wrapper, .date-picker-modal input[type="time"]::-webkit-datetime-edit-text, .date-picker-modal input[type="time"]::-webkit-datetime-edit-hour-field, .date-picker-modal input[type="time"]::-webkit-datetime-edit-minute-field, .date-picker-modal input[type="time"]::-webkit-datetime-edit-ampm-field { /* Make the time text clickable */ cursor: var(--cursor); color: var(--text-normal); font-size: var(--font-ui-medium); font-family: var(--font-interface); } .date-picker-modal input[type="time"]::-webkit-calendar-picker-indicator { /* Position the clock icon on the right, same as date input */ position: absolute; right: 8px; top: 50%; transform: translateY(-50%); cursor: var(--cursor); opacity: 0.7; width: 16px; height: 16px; background: none; color: var(--text-muted); /* Ensure the icon is clickable */ pointer-events: auto; } .date-picker-modal input[type="time"]:hover::-webkit-calendar-picker-indicator { opacity: 1; color: var(--text-normal); } /* Firefox specific styling */ @-moz-document url-prefix() { .date-picker-modal input[type="date"], .date-picker-modal input[type="time"] { /* Firefox doesn't have the same issue but ensure consistency */ cursor: var(--cursor); } } /* Focus states */ .date-picker-modal input[type="date"]:focus, .date-picker-modal input[type="time"]:focus { outline: none; border-color: var(--interactive-accent); box-shadow: 0 0 0 2px rgba(var(--interactive-accent), 0.2); } /* Hover states */ .date-picker-modal input[type="date"]:hover, .date-picker-modal input[type="time"]:hover { border-color: var(--background-modifier-border-hover); } /* Dark mode support */ @media (prefers-color-scheme: dark) { .date-picker-modal input[type="date"], .date-picker-modal input[type="time"] { color-scheme: dark; } } /* Light mode support */ @media (prefers-color-scheme: light) { .date-picker-modal input[type="date"], .date-picker-modal input[type="time"] { color-scheme: light; } } /* Accessibility improvements */ .date-picker-modal input[type="date"]:focus-visible, .date-picker-modal input[type="time"]:focus-visible { outline: 2px solid var(--interactive-accent); outline-offset: 2px; } /* Ensure consistent appearance across browsers */ .date-picker-modal input[type="date"]::-ms-clear, .date-picker-modal input[type="time"]::-ms-clear { display: none; } .date-picker-modal input[type="date"]::-ms-reveal, .date-picker-modal input[type="time"]::-ms-reveal { display: none; } /* ===== TASK-SELECTOR-WITH-CREATE-MODAL.CSS ===== */ /* ================================================ TASK SELECTOR WITH CREATE MODAL ================================================ */ /* Modal container adjustments */ .task-selector-with-create-modal .prompt { display: flex; flex-direction: column; } /* ================================================ TASK CARD STYLING WITHIN MODAL ================================================ */ /* Remove task card hover/background styling - let suggestion item handle it */ .task-selector-with-create-modal .task-card { background: transparent !important; box-shadow: none !important; padding: var(--tn-spacing-sm) 0; margin: 0; } .task-selector-with-create-modal .task-card:hover { background: transparent !important; } /* Hide context menu icon in modal suggestions */ .task-selector-with-create-modal .task-card__context-menu { display: none; } /* Hide badges container in modal for cleaner look */ .task-selector-with-create-modal .task-card__badges { display: none; } /* ================================================ CREATE FOOTER - Fixed at bottom of modal ================================================ */ .task-selector-create-footer { display: flex; align-items: flex-start; gap: var(--tn-spacing-md); padding: var(--tn-spacing-md) var(--tn-spacing-lg); background: var(--background-secondary); border-top: 1px solid var(--background-modifier-border); margin-top: auto; min-height: 60px; } .task-selector-create-footer__icon { display: flex; align-items: center; justify-content: center; width: 24px; height: 24px; color: var(--text-accent); flex-shrink: 0; opacity: 0.8; margin-top: 2px; } .task-selector-create-footer__icon svg { width: 20px; height: 20px; } .task-selector-create-footer__content { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: var(--tn-spacing-sm); } /* ================================================ TITLE LINE ================================================ */ .task-selector-create-footer__title-line { display: flex; align-items: center; gap: var(--tn-spacing-xs); } .task-selector-create-footer__title { font-weight: 600; font-size: var(--tn-font-size-md); color: var(--text-normal); line-height: 1.3; /* Allow wrapping for long titles */ word-break: break-word; } /* ================================================ METADATA CHIPS ================================================ */ .task-selector-create-footer__meta { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: var(--tn-spacing-xs); } .task-selector-create-footer__chip { display: inline-flex; align-items: center; gap: 4px; padding: 3px 10px; border-radius: 12px; font-size: var(--tn-font-size-xs); font-weight: 500; white-space: nowrap; max-width: 180px; overflow: hidden; } .task-selector-create-footer__chip-icon { display: inline-flex; align-items: center; justify-content: center; width: 12px; height: 12px; flex-shrink: 0; } .task-selector-create-footer__chip-icon svg { width: 12px; height: 12px; } .task-selector-create-footer__chip-text { overflow: hidden; text-overflow: ellipsis; } /* Chip type variants */ .task-selector-create-footer__chip--due { background-color: hsla(0, 70%, 50%, 0.15); color: hsl(0, 70%, 45%); } .task-selector-create-footer__chip--scheduled { background-color: hsla(200, 70%, 50%, 0.15); color: hsl(200, 70%, 40%); } .task-selector-create-footer__chip--priority { background-color: hsla(35, 90%, 50%, 0.15); color: hsl(35, 90%, 40%); } .task-selector-create-footer__chip--status { background-color: hsla(270, 50%, 50%, 0.15); color: hsl(270, 50%, 45%); } .task-selector-create-footer__chip--context { background-color: hsla(160, 60%, 45%, 0.15); color: hsl(160, 60%, 35%); } .task-selector-create-footer__chip--project { background-color: hsla(220, 70%, 50%, 0.15); color: hsl(220, 70%, 45%); } .task-selector-create-footer__chip--tag { background-color: hsla(280, 60%, 50%, 0.15); color: hsl(280, 60%, 45%); } .task-selector-create-footer__chip--recurrence { background-color: hsla(180, 60%, 45%, 0.15); color: hsl(180, 60%, 35%); } .task-selector-create-footer__chip--estimate { background-color: hsla(45, 80%, 50%, 0.15); color: hsl(45, 80%, 35%); } .task-selector-create-footer__chip--details { background-color: hsla(0, 0%, 50%, 0.15); color: var(--text-muted); } .task-selector-create-footer__chip--userfield { background-color: hsla(300, 40%, 50%, 0.15); color: hsl(300, 40%, 40%); } /* ================================================ HINT LINE ================================================ */ .task-selector-create-footer__hint { display: flex; align-items: center; gap: 6px; margin-top: 2px; } .task-selector-create-footer__shortcut { display: inline-flex; align-items: center; justify-content: center; padding: 1px 5px; border-radius: 3px; background-color: var(--background-modifier-border); color: var(--text-faint); font-size: 10px; font-weight: 500; font-family: var(--font-monospace); } .task-selector-create-footer__hint-text { font-size: var(--tn-font-size-xs); color: var(--text-faint); } /* ================================================ DARK THEME ADJUSTMENTS ================================================ */ .theme-dark .task-selector-create-footer { background: var(--background-secondary-alt); } .theme-dark .task-selector-create-footer__shortcut { background-color: var(--background-modifier-form-field); } /* Dark theme chip adjustments for better visibility */ .theme-dark .task-selector-create-footer__chip--due { background-color: hsla(0, 70%, 60%, 0.2); color: hsl(0, 70%, 65%); } .theme-dark .task-selector-create-footer__chip--scheduled { background-color: hsla(200, 70%, 60%, 0.2); color: hsl(200, 70%, 65%); } .theme-dark .task-selector-create-footer__chip--priority { background-color: hsla(35, 90%, 60%, 0.2); color: hsl(35, 90%, 65%); } .theme-dark .task-selector-create-footer__chip--status { background-color: hsla(270, 50%, 60%, 0.2); color: hsl(270, 50%, 70%); } .theme-dark .task-selector-create-footer__chip--context { background-color: hsla(160, 60%, 55%, 0.2); color: hsl(160, 60%, 60%); } .theme-dark .task-selector-create-footer__chip--project { background-color: hsla(220, 70%, 60%, 0.2); color: hsl(220, 70%, 70%); } .theme-dark .task-selector-create-footer__chip--tag { background-color: hsla(280, 60%, 60%, 0.2); color: hsl(280, 60%, 70%); } .theme-dark .task-selector-create-footer__chip--recurrence { background-color: hsla(180, 60%, 55%, 0.2); color: hsl(180, 60%, 60%); } .theme-dark .task-selector-create-footer__chip--estimate { background-color: hsla(45, 80%, 60%, 0.2); color: hsl(45, 80%, 65%); } .theme-dark .task-selector-create-footer__chip--details { background-color: hsla(0, 0%, 60%, 0.2); color: var(--text-muted); } .theme-dark .task-selector-create-footer__chip--userfield { background-color: hsla(300, 40%, 60%, 0.2); color: hsl(300, 40%, 70%); } /* ================================================ RESPONSIVE ADJUSTMENTS ================================================ */ @media (max-width: 480px) { .task-selector-create-footer { padding: var(--tn-spacing-xs) var(--tn-spacing-sm); } .task-selector-create-footer__icon { width: 28px; height: 28px; } .task-selector-create-footer__icon svg { width: 16px; height: 16px; } .task-selector-create-footer__title { font-size: var(--tn-font-size-sm); } .task-selector-create-footer__chip { max-width: 120px; padding: 2px 6px; } .task-selector-create-footer__meta { gap: 4px; } } /* ===== FILE-SELECTOR-MODAL.CSS ===== */ /* ================================================ FILE SELECTOR MODAL ================================================ */ /* ================================================ SUGGESTION STYLING ================================================ */ .file-selector-suggestion { display: flex; flex-direction: column; gap: 2px; padding: var(--tn-spacing-xs) 0; } .file-selector-suggestion__name { font-weight: 500; font-size: var(--tn-font-size-md); color: var(--text-normal); } .file-selector-suggestion__title, .file-selector-suggestion__aliases { font-size: var(--tn-font-size-sm); color: var(--text-muted); } .file-selector-suggestion__path { font-size: var(--tn-font-size-xs); color: var(--text-faint); } /* ================================================ CREATE FOOTER ================================================ */ .file-selector-create-footer { display: flex; align-items: center; gap: var(--tn-spacing-md); padding: var(--tn-spacing-md) var(--tn-spacing-lg); background: var(--background-secondary); border-top: 1px solid var(--background-modifier-border); margin-top: auto; } .file-selector-create-footer__content { flex: 1; min-width: 0; } .file-selector-create-footer__title-line { display: flex; align-items: center; gap: var(--tn-spacing-xs); } .file-selector-create-footer__shortcut { display: inline-flex; align-items: center; justify-content: center; padding: 2px 6px; border-radius: 3px; background-color: var(--background-modifier-border); color: var(--text-faint); font-size: 10px; font-weight: 500; font-family: var(--font-monospace); } .file-selector-create-footer__hint-text { font-size: var(--tn-font-size-sm); color: var(--text-faint); } .file-selector-create-footer__filename { font-size: var(--tn-font-size-sm); color: var(--text-normal); font-weight: 500; } /* ================================================ DARK THEME ADJUSTMENTS ================================================ */ .theme-dark .file-selector-create-footer { background: var(--background-secondary-alt); } .theme-dark .file-selector-create-footer__shortcut { background-color: var(--background-modifier-form-field); } /* ===== UNSCHEDULED-TASKS-SELECTOR-MODAL.CSS ===== */ /* Unscheduled Tasks Selector - Task Styling Only */ .unscheduled-tasks-selector__content { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; } .unscheduled-tasks-selector__title { font-weight: 500; color: var(--text-normal); margin-bottom: 0.5rem; line-height: 1.3; flex: 1; } .unscheduled-tasks-selector__title mark { background: var(--text-selection); color: var(--text-normal); padding: 0.1em 0.2em; border-radius: 2px; } .unscheduled-tasks-selector__meta { display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center; margin-bottom: 0.25rem; } .unscheduled-tasks-selector__priority { display: inline-block; padding: 0.125rem 0.5rem; border-radius: 12px; font-size: 0.7rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; } .unscheduled-tasks-selector__priority.priority-high { background: var(--color-red); color: white; } .unscheduled-tasks-selector__priority.priority-normal { background: var(--color-yellow); color: var(--text-normal); } .unscheduled-tasks-selector__priority.priority-low { background: var(--color-green); color: white; } .unscheduled-tasks-selector__due { font-size: 0.8rem; color: var(--text-muted); display: flex; align-items: center; gap: 0.25rem; } .unscheduled-tasks-selector__due.overdue { color: var(--color-red); font-weight: 500; } .unscheduled-tasks-selector__due.due-today { color: var(--color-orange); font-weight: 500; } .unscheduled-tasks-selector__time-estimate { font-size: 0.75rem; color: var(--text-muted); background: var(--background-modifier-border); padding: 0.125rem 0.375rem; border-radius: 8px; } .unscheduled-tasks-selector__contexts { font-size: 0.75rem; color: var(--text-accent); background: var(--background-modifier-border); padding: 0.125rem 0.375rem; border-radius: 8px; } .unscheduled-tasks-selector__projects { font-size: 0.75rem; color: var(--text-accent); background: var(--background-modifier-border); padding: 0.125rem 0.375rem; border-radius: 8px; } /* Project Links - for [[Note Name]] format projects */ .unscheduled-tasks-selector__project-link { color: var(--link-color); text-decoration: none; transition: all 0.2s ease; border-radius: 4px; padding: 1px 2px; margin: -1px -2px; cursor: var(--cursor); } .unscheduled-tasks-selector__project-link:hover { background: var(--background-modifier-hover); text-decoration: underline; color: var(--link-color-hover); } .unscheduled-tasks-selector__schedule-icon { color: var(--text-muted); opacity: 0.7; transition: opacity 0.2s ease; flex-shrink: 0; } /* ===== TASK-ACTION-PALETTE-MODAL.CSS ===== */ /* Task Action Palette Modal */ .task-action-palette-modal { --palette-item-height: 60px; --palette-icon-size: 18px; --palette-gap: 12px; --palette-border-radius: 8px; } /* Override default modal width for the action palette */ .task-action-palette-modal .modal { width: min(600px, 90vw); max-height: 70vh; } /* Suggestion item styling */ .task-action-palette__suggestion { display: flex; align-items: center; gap: var(--palette-gap); padding: var(--palette-gap); border-radius: var(--palette-border-radius); min-height: var(--palette-item-height); cursor: var(--cursor); transition: background-color 0.15s ease; } .task-action-palette__suggestion:hover { background-color: var(--background-modifier-hover); } .suggestion-item.is-selected .task-action-palette__suggestion { background-color: var(--background-modifier-accent); color: var(--text-on-accent); } /* Icon styling */ .task-action-palette__icon { flex-shrink: 0; width: var(--palette-icon-size); height: var(--palette-icon-size); display: flex; align-items: center; justify-content: center; color: var(--text-muted); } .suggestion-item.is-selected .task-action-palette__icon { color: var(--text-on-accent); } .task-action-palette__icon svg { width: var(--palette-icon-size); height: var(--palette-icon-size); } /* Content area */ .task-action-palette__content { flex: 1; min-width: 0; /* Allow text to truncate */ display: flex; flex-direction: column; gap: 2px; } /* Title styling */ .task-action-palette__title { font-weight: 500; font-size: var(--font-ui-medium); line-height: 1.3; color: var(--text-normal); margin: 0; } .suggestion-item.is-selected .task-action-palette__title { color: var(--text-on-accent); } /* Description styling */ .task-action-palette__description { font-size: var(--font-ui-small); line-height: 1.3; color: var(--text-muted); margin: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .suggestion-item.is-selected .task-action-palette__description { color: var(--text-on-accent); opacity: 0.7; } /* Badge area */ .task-action-palette__badge { flex-shrink: 0; display: flex; align-items: center; } /* Category badge styling */ .task-action-palette__category { font-size: var(--font-ui-smaller); padding: 3px 8px; border-radius: calc(var(--palette-border-radius) / 2); background-color: var(--background-modifier-border); color: var(--text-muted); text-transform: capitalize; font-weight: 500; letter-spacing: 0.02em; } .suggestion-item.is-selected .task-action-palette__category { background-color: var(--text-on-accent); color: var(--text-accent); opacity: 0.9; } /* Category-specific colors - theme aware */ .task-action-palette__category--status { background-color: var(--color-blue); color: var(--text-on-accent); } .task-action-palette__category--priority { background-color: var(--color-orange); color: var(--text-on-accent); } .task-action-palette__category--dates { background-color: var(--color-green); color: var(--text-on-accent); } .task-action-palette__category--tracking { background-color: var(--color-purple); color: var(--text-on-accent); } .task-action-palette__category--organization { background-color: var(--color-yellow); color: var(--text-normal); } .task-action-palette__category--other { background-color: var(--background-modifier-border); color: var(--text-muted); } /* Responsive adjustments */ @media (max-width: 600px) { .task-action-palette-modal .modal { width: 95vw; max-height: 80vh; } .task-action-palette__suggestion { padding: 8px; gap: 8px; min-height: 50px; } .task-action-palette__description { font-size: var(--font-ui-smaller); } .task-action-palette__category { font-size: 10px; padding: 2px 6px; } } /* Focus and accessibility */ .task-action-palette__suggestion:focus-visible { outline: 2px solid var(--interactive-accent); outline-offset: 2px; } /* Animation for smooth appearance */ .task-action-palette-modal .suggestion-container { animation: fadeInUp 0.2s ease-out; } @keyframes fadeInUp { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } /* ===== TIME-ENTRY-EDITOR-MODAL.CSS ===== */ /* ===================================================================== TIME ENTRY EDITOR MODAL ===================================================================== */ .time-entry-editor-modal .modal { width: auto; max-width: 800px; } .time-entry-editor-modal .modal-content { width: 600px; max-width: 90vw; } .time-entry-editor-modal__entries { margin-bottom: var(--size-4-4); max-height: 60vh; overflow-y: auto; } .time-entry-editor-modal__empty { text-align: center; padding: var(--size-4-8); color: var(--text-muted); font-style: italic; } /* ===================================================================== TIME ENTRY ITEM ===================================================================== */ .time-entry-editor-modal__entry { border: 1px solid var(--background-modifier-border); border-radius: var(--radius-m); padding: var(--size-4-3); margin-bottom: var(--size-4-3); background: var(--background-secondary); transition: all 0.2s ease; } .time-entry-editor-modal__entry:hover { border-color: var(--interactive-accent); background: var(--background-primary); } .time-entry-editor-modal__entry-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--size-4-2); } .time-entry-editor-modal__entry-date { font-weight: 600; color: var(--text-normal); font-size: var(--font-ui-medium); } .time-entry-editor-modal__delete-button { background: transparent; border: none; color: var(--text-muted); cursor: var(--cursor); padding: var(--size-4-1); border-radius: var(--radius-s); transition: all 0.2s ease; display: flex; align-items: center; justify-content: center; } .time-entry-editor-modal__delete-button:hover { background: var(--background-modifier-error); color: var(--text-error); } .time-entry-editor-modal__delete-button svg { width: 16px; height: 16px; } /* ===================================================================== TIME INPUT FIELDS ===================================================================== */ .time-entry-editor-modal__time-container { margin-top: var(--size-4-2); } .time-entry-editor-modal__time-container .setting-item { border: none; padding: var(--size-4-2) 0; } .time-entry-editor-modal__time-container .setting-item-name { font-size: var(--font-ui-small); font-weight: 600; color: var(--text-muted); } .time-entry-editor-modal__time-container .setting-item-control input, .time-entry-editor-modal__time-container .setting-item-control textarea { background: var(--background-primary); border: 1px solid var(--background-modifier-border); border-radius: var(--radius-s); padding: var(--size-4-1) var(--size-4-2); font-size: var(--font-ui-medium); transition: all 0.2s ease; width: 100%; } .time-entry-editor-modal__datetime-input { background: var(--background-primary); border: 1px solid var(--background-modifier-border); border-radius: var(--radius-s); padding: var(--size-4-1) var(--size-4-2); font-size: var(--font-ui-medium); transition: all 0.2s ease; width: 100%; color: var(--text-normal); font-family: var(--font-interface); } .time-entry-editor-modal__datetime-input:focus { border-color: var(--interactive-accent); outline: none; } .time-entry-editor-modal__time-container .setting-item-control input:focus, .time-entry-editor-modal__time-container .setting-item-control textarea:focus { border-color: var(--interactive-accent); outline: none; } .time-entry-editor-modal__time-container .setting-item-control textarea { resize: vertical; font-family: var(--font-text); } .time-entry-editor-modal__duration-info { margin-top: var(--size-4-1); padding: var(--size-4-1) var(--size-4-2); background: var(--background-primary-alt); border-radius: var(--radius-s); font-size: var(--font-ui-small); color: var(--text-muted); } /* ===================================================================== FOOTER ===================================================================== */ .time-entry-editor-modal__add-button-container { margin-bottom: var(--size-4-4); padding-bottom: var(--size-4-3); border-bottom: 1px solid var(--background-modifier-border); } .time-entry-editor-modal__footer { display: flex; justify-content: space-between; align-items: center; padding-top: var(--size-4-3); border-top: 1px solid var(--background-modifier-border); } .time-entry-editor-modal__total { font-weight: 600; font-size: var(--font-ui-large); color: var(--text-normal); } .time-entry-editor-modal__buttons { display: flex; gap: var(--size-4-2); } .time-entry-editor-modal__buttons button { min-width: 80px; } /* ===================================================================== DARK MODE ADJUSTMENTS ===================================================================== */ .theme-dark .time-entry-editor-modal__entry { box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2); } .theme-dark .time-entry-editor-modal__entry:hover { box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); } /* ===================================================================== RESPONSIVE DESIGN ===================================================================== */ @media (max-width: 700px) { .time-entry-editor-modal .modal-content { width: 90vw; } .time-entry-editor-modal__footer { flex-direction: column; align-items: flex-start; gap: var(--size-4-3); } .time-entry-editor-modal__buttons { width: 100%; flex-direction: column; } .time-entry-editor-modal__buttons button { width: 100%; } } /* ===== RELATIONSHIPS.CSS ===== */ /* * Relationships Widget * * Styles for the unified relationships widget that displays subtasks, projects, * blocked-by, and blocking relationships in notes via DOM manipulation * in live preview mode. Uses BEM methodology. */ .tasknotes-relationships-widget { display: block !important; width: 100% !important; margin: 1.5em 0 2em 0; padding: 1em; border: 1px dashed var(--background-modifier-border-hover); border-radius: var(--radius-s); clear: both; z-index: 10; /* Higher z-index to allow dropdowns to appear above other content */ /* Allow filter dropdowns to extend beyond widget boundaries */ overflow: visible !important; } .tasknotes-plugin .relationships__bases-container { width: 100%; min-height: 50px; } .tasknotes-plugin .relationships__error { color: var(--text-error); padding: 1em; text-align: center; font-size: 0.9em; } /* Responsive design */ @media (max-width: 768px) { .tasknotes-plugin .tasknotes-relationships-widget { margin: 1em 0; padding: 0.8em; } } /* Dark mode adjustments */ .theme-dark .tasknotes-plugin .tasknotes-relationships-widget { background-color: var(--background-secondary); border-color: var(--background-modifier-border); } /* ===== TASK-CARD-NOTE-WIDGET.CSS ===== */ /* Task Card Note Widget - minimal widget for inline task cards in notes */ .task-card-note-widget { display: block; border-radius: var(--radius-s); border: 1px solid var(--background-modifier-border); margin: var(--cs-spacing-md) 0; padding: var(--cs-spacing-sm); } .task-card-note-widget__card { /* Reset margins for the inner task card */ margin: 0 !important; } /* ===== TASK-LIST-VIEW.CSS ===== */ /* ================================================ TASK LIST VIEW - BEM STRUCTURE ================================================ */ /* Task List View Container - Root Block */ .tasknotes-plugin .task-list-view { padding: var(--tn-spacing-sm); display: flex; flex-direction: column; height: 100%; overflow-y: auto; gap: var(--tn-spacing-sm); max-width: 100%; } /* Task List View Header */ .tasknotes-plugin .task-list-view__header { display: flex; align-items: center; justify-content: space-between; padding: var(--tn-spacing-sm) 0; border-bottom: 1px solid var(--tn-border-color); margin-bottom: var(--tn-spacing-sm); } .tasknotes-plugin .task-list-view__title { font-size: var(--tn-font-size-xl); font-weight: var(--tn-font-weight-semibold); color: var(--tn-text-normal); margin: 0; } .tasknotes-plugin .task-list-view__actions { display: flex; align-items: center; gap: var(--tn-spacing-sm); } /* Use consistent button system with primary accent background preserved */ .tasknotes-plugin .task-list-view__add-button { background: var(--tn-interactive-accent); color: var(--text-on-accent); border: none; box-shadow: none; } .tasknotes-plugin .task-list-view__add-button:hover { background: var(--tn-interactive-accent-hover); box-shadow: none; } /* Filter Bar Container */ .tasknotes-plugin .task-list-view__filter-container { margin-bottom: var(--tn-spacing-md); } /* Task List Container */ .tasknotes-plugin .task-list-view__tasks { display: flex; flex-direction: column; gap: var(--tn-spacing-xs); flex: 1; min-height: 0; } .tasknotes-plugin .task-list { display: flex; flex-direction: column; gap: var(--tn-spacing-xs); flex: 1; min-height: 0; } /* Loading Indicator */ .tasknotes-plugin .task-list-view__loading { display: flex; align-items: center; justify-content: center; gap: var(--tn-spacing-sm); padding: var(--tn-spacing-lg); color: var(--tn-text-muted); font-size: var(--tn-font-size-md); font-style: italic; font-weight: 400; background: var(--tn-bg-secondary); border: 1px solid var(--tn-border-color); border-radius: var(--tn-radius-md); margin-bottom: var(--tn-spacing-md); } .tasknotes-plugin .task-list-view__loading.is-hidden { display: none; } .tasknotes-plugin .task-list-view__loading::before { content: ''; width: 16px; height: 16px; border: 2px solid color-mix(in srgb, var(--tn-text-muted) 0.3, transparent); border-top: 2px solid var(--tn-text-muted); border-radius: 50%; animation: spin 1s linear infinite; flex-shrink: 0; } /* Task Group Section */ .tasknotes-plugin .task-list-view__group { margin-bottom: var(--tn-spacing-md); } .tasknotes-plugin .task-list-view__group-header { display: flex; align-items: center; gap: var(--tn-spacing-sm); justify-content: flex-start; padding: var(--tn-spacing-md) 0 var(--tn-spacing-sm); margin-bottom: var(--tn-spacing-sm); border-bottom: 1px solid var(--tn-border-color); position: relative; font-size: var(--tn-font-size-lg); font-weight: var(--tn-font-weight-medium); color: var(--tn-text-normal); letter-spacing: 0.01em; line-height: 1.4; cursor: var(--cursor); } /* Count element within task list group headers */ .tasknotes-plugin .task-list-view__group-header .agenda-view__item-count { margin-left: auto; margin-right: 0; } /* Right side of group header: count + subgroup actions */ .tasknotes-plugin .task-list-view__group-header { display:flex; align-items:center; } .tasknotes-plugin .task-group-right { margin-left:auto; display:flex; align-items:center; gap: var(--tn-spacing-xs); } /* Override count margin when inside right-side container */ .tasknotes-plugin .task-group-right .agenda-view__item-count { margin-left: 0; margin-right: 0; } /* Chevron/toggle styles (match preview-all) */ .tasknotes-plugin .task-group-header { cursor: var(--cursor); } .task-group-header { display: flex; align-items: center; justify-content: flex-start; gap: var(--tn-spacing-xs); } .tasknotes-plugin .task-group-toggle svg, .task-group-toggle .chevron, .task-group-toggle .chevron path { color: var(--tn-text-normal); } .tasknotes-plugin .task-group-toggle svg, .task-group-toggle .chevron path { stroke: currentColor; } .tasknotes-plugin .task-group.is-collapsed .task-group-toggle svg, .tasknotes-plugin .task-group.is-collapsed .task-group-toggle .chevron { transform: rotate(0deg); } .tasknotes-plugin .task-group-toggle { display: contents; align-items: center; justify-content: center; width: 20px; height: 20px; margin-right: var(--tn-spacing-xs); border: none; background: transparent; color: var(--tn-text-normal); font-size: 14px; line-height: 1; } .tasknotes-plugin .task-group-toggle .chevron { transition: transform var(--tn-transition-fast); } .tasknotes-plugin .task-group .task-group-toggle .chevron, .tasknotes-plugin .task-group .task-group-toggle svg { transform: rotate(90deg); } .tasknotes-plugin .task-group.is-collapsed .task-cards { display: none; } /* Subgroup styles and chevron behavior */ .tasknotes-plugin .task-subgroups-container { margin-left: var(--tn-spacing-lg); } .tasknotes-plugin .task-subgroup-header { display:flex; align-items:center; gap: var(--tn-spacing-xs); cursor: pointer; padding: 2px 0; font-size: var(--tn-font-size-lg); font-weight: var(--tn-font-weight-medium); } .tasknotes-plugin .task-subgroup-header .agenda-view__item-count { margin-left: auto; } .tasknotes-plugin .task-subgroup-toggle { display: contents; align-items:center; justify-content:center; width:16px; height:16px; border:none; background:transparent; color: var(--tn-text-normal); font-size: 12px; line-height: 1; } .tasknotes-plugin .task-subgroup-toggle .chevron { transition: transform var(--tn-transition-fast); } .tasknotes-plugin .task-subgroup .task-subgroup-toggle .chevron, .tasknotes-plugin .task-subgroup .task-subgroup-toggle svg { transform: rotate(90deg); } .tasknotes-plugin .task-subgroup.is-collapsed .task-subgroup-toggle .chevron, .tasknotes-plugin .task-subgroup.is-collapsed .task-subgroup-toggle svg { transform: rotate(0deg); } .tasknotes-plugin .task-subgroup.is-collapsed .task-cards { display: none; } .tasknotes-plugin .task-group.is-collapsed .task-subgroups-container { display: none; } /* Per-group subgroup actions */ .tasknotes-plugin .task-subgroup-actions { display:flex; align-items:center; gap: 4px; margin-left: 0; } .tasknotes-plugin .task-subgroup-action { border:none; background:transparent; color: var(--tn-text-muted); cursor: var(--cursor); padding: 0; } .tasknotes-plugin .task-subgroup-action:hover { color: var(--tn-text-normal); } .tasknotes-plugin .task-list-view__project-link { color: var(--tn-text-normal); text-decoration: none; cursor: var(--cursor); transition: color 0.2s ease; } .tasknotes-plugin .task-list-view__project-link:hover { color: var(--tn-interactive-accent); text-decoration: underline; } .tasknotes-plugin .task-list-view__group-content { display: flex; flex-direction: column; gap: var(--tn-spacing-xs); } /* Empty State */ .tasknotes-plugin .task-list-view__empty { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: var(--tn-spacing-xl); text-align: center; color: var(--tn-text-muted); background: var(--tn-bg-secondary); border: 1px solid var(--tn-border-color); border-radius: var(--tn-radius-md); margin: var(--tn-spacing-lg) 0; } .tasknotes-plugin .task-list-view__empty-title { font-size: var(--tn-font-size-lg); font-weight: var(--tn-font-weight-medium); margin-bottom: var(--tn-spacing-sm); color: var(--tn-text-normal); } .tasknotes-plugin .task-list-view__empty-description { font-size: var(--tn-font-size-lg); line-height: 1.6; max-width: 400px; } /* Task Item Container (wraps task cards) */ .tasknotes-plugin .task-list-view__task-item { position: relative; background: var(--tn-bg-primary); border: 1px solid var(--tn-border-color); border-radius: var(--tn-radius-sm); transition: all var(--tn-transition-fast); overflow: hidden; } .tasknotes-plugin .task-list-view__task-item:hover { background: var(--tn-interactive-hover); border-color: var(--tn-border-color-hover); transform: translateY(-1px); box-shadow: var(--tn-shadow-medium); } .tasknotes-plugin .task-list-view__task-item:focus-within { border-color: var(--tn-interactive-accent); box-shadow: none; } /* Task Item States */ .tasknotes-plugin .task-list-view__task-item--completed { opacity: 0.7; background: var(--tn-bg-secondary); } .tasknotes-plugin .task-list-view__task-item--overdue { border-left: 4px solid var(--tn-color-error); background: color-mix(in srgb, var(--tn-color-error) 0.05, var(--tn-bg-primary)); } .tasknotes-plugin .task-list-view__task-item--due-today { border-left: 4px solid var(--tn-interactive-accent); background: color-mix(in srgb, var(--tn-interactive-accent) 0.05, var(--tn-bg-primary)); } .tasknotes-plugin .task-list-view__task-item--archived { opacity: 0.5; background: transparent; } /* Task Item Priority Indicators */ .tasknotes-plugin .task-list-view__task-item--priority-high { border-left: 3px solid var(--tn-color-error); } .tasknotes-plugin .task-list-view__task-item--priority-normal { border-left: 3px solid var(--tn-interactive-accent); } .tasknotes-plugin .task-list-view__task-item--priority-low { border-left: 3px solid var(--tn-text-muted); } /* Task Update Animation */ .tasknotes-plugin .task-list-view__task-item--updating { animation: task-update 1.5s ease; } @keyframes task-update { 0% { background-color: var(--tn-bg-primary); transform: scale(1); } 20% { background-color: var(--tn-interactive-accent-hover); transform: scale(1.02); } 100% { background-color: var(--tn-bg-primary); transform: scale(1); } } /* Responsive Design */ @media (max-width: 768px) { .tasknotes-plugin .task-list-view { padding: var(--tn-spacing-xs); gap: var(--tn-spacing-xs); } .tasknotes-plugin .task-list-view__header { flex-direction: column; align-items: stretch; gap: var(--tn-spacing-sm); } .tasknotes-plugin .task-list-view__actions { justify-content: center; } .tasknotes-plugin .task-list-view__add-button { width: 100%; max-width: 200px; } } @media (max-width: 480px) { .tasknotes-plugin .task-list-view__group-header { font-size: var(--tn-font-size-md); padding: var(--tn-spacing-sm) 0 var(--tn-spacing-xs); } .tasknotes-plugin .task-list-view__empty { padding: var(--tn-spacing-lg); } .tasknotes-plugin .task-list-view__empty-title { font-size: var(--tn-font-size-md); } .tasknotes-plugin .task-list-view__empty-description { font-size: var(--tn-font-size-sm); } } /* ===== CALENDAR-VIEW.CSS ===== */ /* ================================================ CALENDAR VIEW & MINI-CALENDAR VIEW - BEM STRUCTURE ================================================ */ /* Calendar View Container - Root Block */ .tasknotes-plugin .calendar-view, .tasknotes-plugin .mini-calendar-view { padding: var(--tn-spacing-sm); display: flex; flex-direction: column; height: 100%; overflow-y: auto; gap: var(--tn-spacing-sm); max-width: 100%; } /* Calendar Controls Container */ .tasknotes-plugin .calendar-view__controls, .tasknotes-plugin .mini-calendar-view__controls { display: flex; flex-direction: column; margin-bottom: var(--tn-spacing-sm); padding: var(--tn-spacing-xs); background: var(--tn-bg-secondary); border-radius: var(--tn-radius-sm); gap: var(--tn-spacing-xs); border: 1px solid var(--tn-border-color); } /* Calendar Header */ .tasknotes-plugin .calendar-view__header, .tasknotes-plugin .mini-calendar-view__header { display: flex; align-items: center; justify-content: space-between; margin-bottom: var(--tn-spacing-md); padding: var(--tn-spacing-sm) 0; gap: var(--tn-spacing-md); } /* Use consistent button system for view selector */ .tasknotes-plugin .calendar-view__view-selector, .tasknotes-plugin .mini-calendar-view__view-selector { /* margin-right: var(--tn-spacing-md); */ /* min-width: 120px; */ padding: var(--tn-spacing-xs) var(--tn-spacing-sm); border: none; box-shadow: none; border-radius: var(--tn-radius-sm); background: transparent; color: var(--tn-text-normal); font-size: var(--tn-font-size-sm); cursor: var(--cursor); transition: all var(--tn-transition-fast); } .tasknotes-plugin .calendar-view__view-selector:hover, .tasknotes-plugin .mini-calendar-view__view-selector:hover { background: var(--tn-interactive-hover); box-shadow: none; } .tasknotes-plugin .calendar-view__view-selector:focus, .tasknotes-plugin .mini-calendar-view__view-selector:focus { outline: 2px solid var(--tn-interactive-accent); outline-offset: 2px; box-shadow: none; } /* Calendar Navigation Section */ .tasknotes-plugin .calendar-view__navigation, .tasknotes-plugin .mini-calendar-view__navigation { display: flex; align-items: center; gap: var(--tn-spacing-sm); } /* Calendar Month Display */ .tasknotes-plugin .calendar-view__month-display, .tasknotes-plugin .mini-calendar-view__month-display { font-weight: 500; font-size: var(--tn-font-size-lg); /* min-width: 140px; */ text-align: center; padding-inline: 5px; color: var(--tn-text-normal); } .tasknotes-plugin .calendar-view__nav-button, .tasknotes-plugin .mini-calendar-view__nav-button { width: 32px; height: 32px; font-size: 16px; font-weight: 500; border: none; box-shadow: none; background: transparent; } .tasknotes-plugin .calendar-view__today-button, .tasknotes-plugin .mini-calendar-view__today-button { margin-left: auto; border: none; box-shadow: none; background: transparent; font-weight: normal; opacity: 0.7; transition: opacity var(--tn-transition-fast); cursor: var(--cursor); border-radius: var(--tn-radius-sm); font-size: var(--tn-font-size-lg); } .tasknotes-plugin .calendar-view__today-button:hover, .tasknotes-plugin .mini-calendar-view__today-button:hover { background-color: var(--tn-interactive-hover); color: var(--tn-text-normal); opacity: 1; } /* Loading Indicator */ .tasknotes-plugin .calendar-view__loading, .tasknotes-plugin .mini-calendar-view__loading { display: flex; align-items: center; justify-content: center; gap: var(--tn-spacing-sm); padding: var(--tn-spacing-lg); color: var(--tn-text-muted); font-size: var(--tn-font-size-md); font-style: italic; font-weight: 400; background: var(--tn-bg-secondary); border: 1px solid var(--tn-border-color); border-radius: var(--tn-radius-md); margin-bottom: var(--tn-spacing-md); } .tasknotes-plugin .calendar-view__loading::before, .tasknotes-plugin .mini-calendar-view__loading::before { content: ''; width: 16px; height: 16px; border: 2px solid color-mix(in srgb, var(--tn-text-muted) 0.3, transparent); border-top: 2px solid var(--tn-text-muted); border-radius: 50%; animation: spin 1s linear infinite; flex-shrink: 0; } /* Calendar Grid Container */ .tasknotes-plugin .calendar-view__grid-container, .tasknotes-plugin .mini-calendar-view__grid-container { margin-bottom: var(--tn-spacing-md); background: transparent; border-radius: 0; padding: 0; box-shadow: none; } /* Calendar Grid */ .tasknotes-plugin .calendar-view__grid, .tasknotes-plugin .mini-calendar-view__grid { display: flex; flex-direction: column; gap: 1px; margin-bottom: var(--tn-spacing-sm); border: 1px solid var(--tn-border-color); border-radius: var(--tn-radius-sm); overflow: hidden; role: grid; } /* Calendar Grid Header Row */ .tasknotes-plugin .calendar-view__grid-header, .tasknotes-plugin .mini-calendar-view__grid-header { display: grid; grid-template-columns: repeat(7, 1fr); gap: 1px; background: var(--tn-bg-secondary); role: row; } /* Calendar Week Row */ .tasknotes-plugin .calendar-view__week, .tasknotes-plugin .mini-calendar-view__week { display: grid; grid-template-columns: repeat(7, 1fr); gap: 1px; role: row; } /* Calendar Day Header (Sun, Mon, etc.) */ .tasknotes-plugin .calendar-view__day-header, .tasknotes-plugin .mini-calendar-view__day-header { text-align: center; font-weight: 500; font-size: var(--tn-font-size-xs); text-transform: uppercase; letter-spacing: 0.1em; padding: var(--tn-spacing-xs); color: var(--tn-text-muted); background: var(--tn-bg-secondary); border: none; role: columnheader; } /* Calendar Day Cell - consistent styling */ .tasknotes-plugin .calendar-view__day, .tasknotes-plugin .mini-calendar-view__day { position: relative; min-height: 2rem; padding: var(--tn-spacing-xs); text-align: center; cursor: var(--cursor); display: flex; flex-direction: column; align-items: center; justify-content: center; background: var(--tn-bg-primary); border: none; transition: all var(--tn-transition-fast); font-size: var(--tn-font-size-sm); font-weight: 500; role: gridcell; } .tasknotes-plugin .calendar-view__day:hover, .tasknotes-plugin .mini-calendar-view__day:hover { background-color: var(--tn-interactive-hover); transform: none; box-shadow: none; } /* Calendar Day - Today State */ .tasknotes-plugin .calendar-view__day--today, .tasknotes-plugin .mini-calendar-view__day--today { background: var(--tn-interactive-hover) !important; color: var(--tn-interactive-accent); font-weight: 600; box-shadow: none; position: relative; } .tasknotes-plugin .calendar-view__day--today::after, .tasknotes-plugin .mini-calendar-view__day--today::after { content: ''; position: absolute; bottom: 2px; left: 50%; transform: translateX(-50%); width: 4px; height: 4px; border-radius: 50%; background: var(--tn-interactive-accent); } /* Calendar Day - Selected State */ .tasknotes-plugin .calendar-view__day--selected, .tasknotes-plugin .mini-calendar-view__day--selected { border: 1px solid var(--tn-interactive-accent); font-weight: 500; background-color: color-mix(in srgb, var(--tn-interactive-accent) 12%, transparent); box-shadow: none; } /* Selected but not today */ .tasknotes-plugin .calendar-view__day--selected:not(.calendar-view__day--today), .tasknotes-plugin .mini-calendar-view__day--selected:not(.mini-calendar-view__day--today) { background-color: var(--tn-bg-secondary); } /* Selected and today */ .tasknotes-plugin .calendar-view__day--today.calendar-view__day--selected, .tasknotes-plugin .mini-calendar-view__day--today.mini-calendar-view__day--selected { box-shadow: none; } /* Calendar Day - Outside Month */ .tasknotes-plugin .calendar-view__day--outside-month, .tasknotes-plugin .mini-calendar-view__day--outside-month { color: var(--tn-text-faint); background-color: transparent; opacity: 0.3; } /* Selected state overrides content indicator borders */ .tasknotes-plugin .calendar-view__day--selected.calendar-view__day--has-notes, .tasknotes-plugin .calendar-view__day--selected.calendar-view__day--has-tasks, .tasknotes-plugin .calendar-view__day--selected.calendar-view__day--has-daily-note, .tasknotes-plugin .mini-calendar-view__day--selected.mini-calendar-view__day--has-notes, .tasknotes-plugin .mini-calendar-view__day--selected.mini-calendar-view__day--has-tasks, .tasknotes-plugin .mini-calendar-view__day--selected.mini-calendar-view__day--has-daily-note { border: 1px solid var(--tn-interactive-accent); } /* Day Indicators Container (for dots/markers) */ .tasknotes-plugin .calendar-view__day-indicators, .tasknotes-plugin .mini-calendar-view__day-indicators { display: flex; justify-content: center; gap: 2px; margin-top: 2px; } /* Individual Day Indicator */ .tasknotes-plugin .calendar-view__day-indicator, .tasknotes-plugin .mini-calendar-view__day-indicator { width: 6px; height: 6px; border-radius: 50%; display: inline-block; margin: var(--tn-spacing-xs); } .tasknotes-plugin .calendar-view__day-indicator--notes, .tasknotes-plugin .mini-calendar-view__day-indicator--notes { background-color: var(--tn-interactive-accent); } .tasknotes-plugin .calendar-view__day-indicator--tasks, .tasknotes-plugin .mini-calendar-view__day-indicator--tasks { background-color: var(--tn-color-error); } .tasknotes-plugin .calendar-view__day-indicator--important, .tasknotes-plugin .mini-calendar-view__day-indicator--important { background-color: var(--tn-color-warning); } /* Content Indicators (Notes, Tasks, Daily Notes) */ .tasknotes-plugin .calendar-view__content-indicator, .tasknotes-plugin .mini-calendar-view__content-indicator { position: absolute; width: 8px; height: 8px; border-radius: 50%; transition: all var(--tn-transition-fast); } .tasknotes-plugin .calendar-view__content-indicator--notes, .tasknotes-plugin .mini-calendar-view__content-indicator--notes { bottom: 4px; left: 30%; transform: translateX(-50%); } .tasknotes-plugin .calendar-view__content-indicator--tasks, .tasknotes-plugin .mini-calendar-view__content-indicator--tasks { bottom: 4px; left: 50%; transform: translateX(-50%); } .tasknotes-plugin .calendar-view__content-indicator--daily-note, .tasknotes-plugin .mini-calendar-view__content-indicator--daily-note { bottom: 4px; left: 70%; transform: translateX(-50%); } /* Hover effects for content indicators */ .tasknotes-plugin .calendar-view__day:hover .calendar-view__content-indicator, .tasknotes-plugin .mini-calendar-view__day:hover .mini-calendar-view__content-indicator { transform: translateX(-50%) scale(1.2); box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3); } /* Notes Indicators - Different intensities */ .tasknotes-plugin .calendar-view__content-indicator--notes-few, .tasknotes-plugin .mini-calendar-view__content-indicator--notes-few { background: var(--tn-color-notes-light); width: 6px; height: 6px; } .tasknotes-plugin .calendar-view__content-indicator--notes-some, .tasknotes-plugin .mini-calendar-view__content-indicator--notes-some { background: var(--tn-color-notes-medium); width: 8px; height: 8px; } .tasknotes-plugin .calendar-view__content-indicator--notes-many, .tasknotes-plugin .mini-calendar-view__content-indicator--notes-many { background: var(--tn-color-notes-heavy); width: 10px; height: 10px; } /* Task Indicators - Different states */ .tasknotes-plugin .calendar-view__content-indicator--tasks-due, .tasknotes-plugin .mini-calendar-view__content-indicator--tasks-due { background: var(--tn-color-error); width: 8px; height: 8px; } .tasknotes-plugin .calendar-view__content-indicator--tasks-completed, .tasknotes-plugin .mini-calendar-view__content-indicator--tasks-completed { background: var(--tn-color-success); width: 8px; height: 8px; } .tasknotes-plugin .calendar-view__content-indicator--tasks-scheduled, .tasknotes-plugin .mini-calendar-view__content-indicator--tasks-scheduled { background: var(--tn-interactive-accent); width: 8px; height: 8px; } .tasknotes-plugin .calendar-view__content-indicator--tasks-archived, .tasknotes-plugin .mini-calendar-view__content-indicator--tasks-archived { background: var(--tn-color-archived); width: 8px; height: 8px; opacity: 0.8; } /* Daily Note Indicator */ .tasknotes-plugin .calendar-view__content-indicator--daily-note, .tasknotes-plugin .mini-calendar-view__content-indicator--daily-note { background-color: var(--tn-color-daily-note); width: 7px; height: 7px; border: 1px solid rgba(0, 0, 0, 0.2); } /* Hover tooltip for indicators */ .tasknotes-plugin .calendar-view__content-indicator:hover::after, .tasknotes-plugin .mini-calendar-view__content-indicator:hover::after { content: attr(aria-label); position: absolute; background: var(--tn-bg-primary); color: var(--tn-text-normal); padding: var(--tn-spacing-xs) var(--tn-spacing-sm); border-radius: var(--tn-radius-sm); font-size: var(--tn-font-size-xs); white-space: nowrap; bottom: 20px; left: 50%; transform: translateX(-50%); z-index: var(--tn-z-tooltip); box-shadow: var(--tn-shadow-medium); pointer-events: none; border: 1px solid var(--tn-border-color); } /* Day Content State Modifiers */ .tasknotes-plugin .calendar-view__day--has-content, .tasknotes-plugin .mini-calendar-view__day--has-content { font-weight: 500; background-color: transparent; border-top: 1px solid transparent; border-right: 1px solid transparent; border-bottom: 1px solid var(--tn-border-color); border-left: 1px solid transparent; } /* Notes Content Indicators */ .tasknotes-plugin .calendar-view__day--has-notes-few, .tasknotes-plugin .mini-calendar-view__day--has-notes-few { border-left: var(--tn-spacing-xs) solid var(--tn-color-notes-light); background: linear-gradient(to right, var(--cs-blue-100), transparent); } .tasknotes-plugin .calendar-view__day--has-notes-some, .tasknotes-plugin .mini-calendar-view__day--has-notes-some { border-left: var(--tn-spacing-xs) solid var(--tn-color-notes-medium); background: linear-gradient(to right, var(--cs-blue-100), transparent); } .tasknotes-plugin .calendar-view__day--has-notes-many, .tasknotes-plugin .mini-calendar-view__day--has-notes-many { border-left: var(--tn-spacing-xs) solid var(--tn-color-notes-heavy); background: linear-gradient(to right, var(--cs-blue-100), transparent); } /* Tasks Content Indicators */ .tasknotes-plugin .calendar-view__day--has-tasks, .tasknotes-plugin .mini-calendar-view__day--has-tasks { border-left: var(--tn-spacing-xs) solid var(--tn-color-error); background: linear-gradient(to right, var(--cs-red-100), transparent); } .tasknotes-plugin .calendar-view__day--has-scheduled-tasks, .tasknotes-plugin .mini-calendar-view__day--has-scheduled-tasks { border-left: var(--tn-spacing-xs) solid var(--tn-interactive-accent); background: linear-gradient(to right, var(--cs-blue-100), transparent); } .tasknotes-plugin .calendar-view__day--has-completed-tasks, .tasknotes-plugin .mini-calendar-view__day--has-completed-tasks { border-left: var(--tn-spacing-xs) solid var(--tn-color-success); background: linear-gradient(to right, var(--cs-green-100), transparent); } .tasknotes-plugin .calendar-view__day--has-archived-tasks, .tasknotes-plugin .mini-calendar-view__day--has-archived-tasks { border-left: var(--tn-spacing-xs) solid var(--tn-color-archived); background: linear-gradient(to right, var(--cs-gray-100), transparent); } /* Daily Note Content Indicator */ .tasknotes-plugin .calendar-view__day--has-daily-note, .tasknotes-plugin .mini-calendar-view__day--has-daily-note { border-left: var(--tn-spacing-xs) solid var(--tn-color-daily-note); background: linear-gradient(to right, var(--cs-purple-100), transparent); } /* Enhanced hover effects for content indicators */ .tasknotes-plugin .calendar-view__day--has-content:hover, .tasknotes-plugin .mini-calendar-view__day--has-content:hover { border-left-width: var(--tn-spacing-sm); transform: translateX(1px); } /* Mini calendar minimalist adjustments */ .tasknotes-plugin .mini-calendar-view { padding: var(--tn-spacing-xs); gap: var(--tn-spacing-xs); } .tasknotes-plugin .mini-calendar-view__controls { padding: 0; gap: var(--tn-spacing-xs); background: transparent; border: none; box-shadow: none; } .tasknotes-plugin .mini-calendar-view__header { padding: 0; margin-bottom: var(--tn-spacing-xs); gap: var(--tn-spacing-sm); } .tasknotes-plugin .mini-calendar-view__navigation { gap: var(--tn-spacing-xs); } .tasknotes-plugin .mini-calendar-view__legend { margin-top: var(--tn-spacing-sm); font-size: var(--tn-font-size-xs); color: var(--tn-text-muted); } .tasknotes-plugin .mini-calendar-view__legend-summary { cursor: var(--cursor); list-style: none; padding: calc(var(--tn-spacing-xs) * 0.25) 0; } .tasknotes-plugin .mini-calendar-view__legend[open] .mini-calendar-view__legend-summary { color: var(--tn-text-normal); } .tasknotes-plugin .mini-calendar-view__legend-section { display: flex; flex-direction: column; gap: calc(var(--tn-spacing-xs) * 0.5); margin-top: calc(var(--tn-spacing-xs) * 0.75); } .tasknotes-plugin .mini-calendar-view__legend-item { display: flex; align-items: center; gap: calc(var(--tn-spacing-xs) * 0.5); } .tasknotes-plugin .mini-calendar-view__legend-section-title { font-weight: 600; text-transform: uppercase; letter-spacing: 0.08em; color: var(--tn-text-muted); } .tasknotes-plugin .mini-calendar-view__legend-dot { width: 6px; height: 6px; border-radius: 50%; flex-shrink: 0; } .tasknotes-plugin .mini-calendar-view__legend-dot--due { background-color: var(--tn-color-error); } .tasknotes-plugin .mini-calendar-view__legend-dot--scheduled { background-color: var(--tn-interactive-accent); } .tasknotes-plugin .mini-calendar-view__legend-dot--completed { background-color: var(--tn-text-muted); } .tasknotes-plugin .mini-calendar-view__legend-dot--notes { background-color: var(--tn-color-notes-medium); } .tasknotes-plugin .mini-calendar-view__legend-dot--daily { background-color: var(--tn-color-daily-note); } .tasknotes-plugin .mini-calendar-view__legend-label { line-height: 1.1; } .tasknotes-plugin .mini-calendar-view__legend-interaction { display: flex; gap: var(--tn-spacing-xs); align-items: baseline; } .tasknotes-plugin .mini-calendar-view__legend-action { font-weight: 600; color: var(--tn-text-muted); min-width: 96px; white-space: nowrap; } .tasknotes-plugin .mini-calendar-view__legend-description { color: var(--tn-text-muted); flex: 1; } .tasknotes-plugin .mini-calendar-view__nav-button { width: var(--tn-button-height-sm); height: var(--tn-button-height-sm); font-size: var(--tn-font-size-lg); color: var(--tn-text-muted); } .tasknotes-plugin .mini-calendar-view__nav-button:hover { color: var(--tn-text-normal); } .tasknotes-plugin .mini-calendar-view__view-selector { padding: 0; border: none; background: transparent; font-weight: 600; font-size: var(--tn-font-size-sm); color: var(--tn-text-muted); } .tasknotes-plugin .mini-calendar-view__view-selector:hover, .tasknotes-plugin .mini-calendar-view__view-selector:focus { background: transparent; color: var(--tn-text-normal); } .tasknotes-plugin .mini-calendar-view__view-selector:focus-visible { outline: 1px solid var(--tn-interactive-accent); outline-offset: 2px; } .tasknotes-plugin .mini-calendar-view__month-display { font-weight: 600; font-size: var(--tn-font-size-md); letter-spacing: 0.08em; text-transform: uppercase; color: var(--tn-text-muted); } .tasknotes-plugin .mini-calendar-view__grid-container { margin-bottom: 0; } .tasknotes-plugin .mini-calendar-view__grid { border: none; border-radius: 0; background: transparent; gap: 1px; outline: none; } .tasknotes-plugin .mini-calendar-view__grid:focus { outline: none; } .tasknotes-plugin .mini-calendar-view__grid-header { background: transparent; } .tasknotes-plugin .mini-calendar-view__day-header { background: transparent; color: var(--tn-text-muted); letter-spacing: 0.08em; padding: calc(var(--tn-spacing-xs) * 0.75) 0; } .tasknotes-plugin .mini-calendar-view__week { gap: 1px; } .tasknotes-plugin .mini-calendar-view__day { background: transparent; border-radius: var(--tn-radius-sm); min-height: 2.25rem; border: none; transition: border-color var(--tn-transition-fast), background-color var(--tn-transition-fast), color var(--tn-transition-fast); } .tasknotes-plugin .mini-calendar-view__day:hover { background: color-mix(in srgb, var(--tn-interactive-hover) 25%, transparent); } .tasknotes-plugin .mini-calendar-view__day--today { background: none !important; color: var(--tn-text-on-accent); } .tasknotes-plugin .mini-calendar-view__day--today::after { bottom: 6px; background: color-mix(in srgb, var(--tn-interactive-accent) 85%, transparent); } .tasknotes-plugin .mini-calendar-view__day--selected { background: color-mix(in srgb, var(--tn-interactive-accent) 20%, transparent); border: 1px solid var(--tn-interactive-accent); } .tasknotes-plugin .mini-calendar-view__day--today.mini-calendar-view__day--selected { background: color-mix(in srgb, var(--tn-interactive-accent) 25%, transparent); } .tasknotes-plugin .mini-calendar-view__day--outside-month { opacity: 0.45; } .tasknotes-plugin .mini-calendar-view__day--has-content, .tasknotes-plugin .mini-calendar-view__day--has-notes-few, .tasknotes-plugin .mini-calendar-view__day--has-notes-some, .tasknotes-plugin .mini-calendar-view__day--has-notes-many, .tasknotes-plugin .mini-calendar-view__day--has-tasks, .tasknotes-plugin .mini-calendar-view__day--has-scheduled-tasks, .tasknotes-plugin .mini-calendar-view__day--has-completed-tasks, .tasknotes-plugin .mini-calendar-view__day--has-daily-note { background: transparent; } .tasknotes-plugin .mini-calendar-view__day--has-content:hover { transform: none; } .tasknotes-plugin .mini-calendar-view__day-indicators { margin-top: 4px; gap: 4px; } .tasknotes-plugin .mini-calendar-view__content-indicator { width: 6px; height: 6px; bottom: 6px; box-shadow: none; } .tasknotes-plugin .mini-calendar-view__day:hover .mini-calendar-view__content-indicator { transform: translateX(-50%); box-shadow: none; } .tasknotes-plugin .mini-calendar-view__content-indicator--notes-some, .tasknotes-plugin .mini-calendar-view__content-indicator--notes-many { width: 7px; height: 7px; } .tasknotes-plugin .mini-calendar-view__content-indicator--notes-many { width: 8px; height: 8px; } .tasknotes-plugin .mini-calendar-view__content-indicator--tasks-due, .tasknotes-plugin .mini-calendar-view__content-indicator--tasks-completed, .tasknotes-plugin .mini-calendar-view__content-indicator--tasks-scheduled, .tasknotes-plugin .mini-calendar-view__content-indicator--tasks-archived, .tasknotes-plugin .mini-calendar-view__content-indicator--daily-note { width: 6px; height: 6px; } /* Responsive Design */ @media (max-width: 768px) { .tasknotes-plugin .calendar-view, .tasknotes-plugin .mini-calendar-view { padding: var(--tn-spacing-xs); gap: var(--tn-spacing-xs); } .tasknotes-plugin .calendar-view__controls, .tasknotes-plugin .mini-calendar-view__controls { padding: var(--tn-spacing-xs); } .tasknotes-plugin .calendar-view__nav-button, .tasknotes-plugin .mini-calendar-view__nav-button { width: 28px; height: 28px; font-size: 14px; } .tasknotes-plugin .calendar-view__day, .tasknotes-plugin .mini-calendar-view__day { min-height: 1.8rem; font-size: var(--tn-font-size-xs); } } @media (max-width: 480px) { .tasknotes-plugin .calendar-view__header, .tasknotes-plugin .mini-calendar-view__header { flex-direction: column; gap: var(--tn-spacing-sm); align-items: stretch; } .tasknotes-plugin .calendar-view__navigation, .tasknotes-plugin .mini-calendar-view__navigation { justify-content: center; } .tasknotes-plugin .calendar-view__month-display, .tasknotes-plugin .mini-calendar-view__month-display { font-size: var(--tn-font-size-md); min-width: auto; } .tasknotes-plugin .calendar-view__day, .tasknotes-plugin .mini-calendar-view__day { min-height: 1.5rem; padding: var(--tn-spacing-xs); } .tasknotes-plugin .calendar-view__content-indicator, .tasknotes-plugin .mini-calendar-view__content-indicator { width: 6px; height: 6px; } } /* Mini Calendar Specific Indicators */ .tasknotes-plugin .note-indicator, .tasknotes-plugin .task-indicator, .tasknotes-plugin .daily-note-indicator { position: absolute; bottom: 2px; right: 2px; width: 6px; height: 6px; border-radius: 50%; display: inline-block; } .tasknotes-plugin .note-indicator.few-notes { background-color: var(--tn-color-notes-light); } .tasknotes-plugin .note-indicator.some-notes { background-color: var(--tn-color-notes-medium); } .tasknotes-plugin .note-indicator.many-notes { background-color: var(--tn-color-notes-heavy); } .tasknotes-plugin .task-indicator.due-tasks { background-color: var(--tn-color-error); } .tasknotes-plugin .task-indicator.completed-tasks { background-color: var(--tn-text-muted); } .tasknotes-plugin .task-indicator.scheduled-tasks { background-color: var(--tn-interactive-accent); } .tasknotes-plugin .daily-note-indicator { background-color: var(--tn-color-daily-note); } /* Cache Loading Indicator */ .tasknotes-plugin .cache-loading-indicator { display: flex; align-items: center; justify-content: center; gap: var(--tn-spacing-sm); padding: var(--tn-spacing-lg); color: var(--tn-text-muted); font-size: var(--tn-font-size-md); font-style: italic; font-weight: 400; background: var(--tn-bg-secondary); border: 1px solid var(--tn-border-color); border-radius: var(--tn-radius-md); margin-bottom: var(--tn-spacing-md); } .tasknotes-plugin .cache-loading-indicator::before { content: ''; width: 16px; height: 16px; border: 2px solid color-mix(in srgb, var(--tn-text-muted) 0.3, transparent); border-top: 2px solid var(--tn-text-muted); border-radius: 50%; animation: spin 1s linear infinite; flex-shrink: 0; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /* ================================================ MINI CALENDAR DRAG AND DROP STATES ================================================ */ /* Drag over state for mini calendar days */ .tasknotes-plugin .mini-calendar-view__day--dragover { background-color: var(--tn-interactive-accent-hover) !important; border-color: var(--tn-interactive-accent) !important; color: var(--tn-text-on-accent) !important; transform: scale(1.1); box-shadow: var(--tn-shadow-light); z-index: 10; border: 2px solid var(--tn-interactive-accent); border-radius: var(--tn-radius-sm); } /* ================================================ MINI CALENDAR WEEK NUMBERS & SELECTION ================================================ */ /* Update grid layout to include week number column */ .tasknotes-plugin .mini-calendar-view__grid-header { grid-template-columns: 40px repeat(7, 1fr); } .tasknotes-plugin .mini-calendar-view__week { grid-template-columns: 40px repeat(7, 1fr); } /* Week number header cell */ .tasknotes-plugin .mini-calendar-view__week-header { text-align: center; font-weight: 500; font-size: var(--tn-font-size-xs); text-transform: uppercase; letter-spacing: 0.1em; padding: var(--tn-spacing-xs); color: var(--tn-text-muted); background: var(--tn-bg-secondary); border: none; } /* Week number cell */ .tasknotes-plugin .mini-calendar-week-number { display: flex; align-items: center; justify-content: center; font-size: var(--tn-font-size-xs); font-weight: 600; color: var(--tn-text-muted); background: var(--tn-bg-secondary); cursor: var(--cursor); transition: all var(--tn-transition-fast); border-right: 1px solid var(--tn-border-color); } .tasknotes-plugin .mini-calendar-week-number:hover { background: var(--tn-interactive-hover); color: var(--tn-interactive-accent); } /* ================================================ MINI CALENDAR NOTE PREVIEW TOOLTIP ================================================ */ .mini-calendar-note-preview { position: absolute; background: var(--background-primary); border: 1px solid var(--background-modifier-border); border-radius: var(--radius-m); padding: var(--size-4-3); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); max-width: 300px; min-width: 200px; z-index: 1000; pointer-events: none; backdrop-filter: blur(8px); } .mini-calendar-note-preview .preview-header { font-weight: 600; font-size: var(--tn-font-size-sm); color: var(--tn-text-normal); margin-bottom: var(--tn-spacing-xs); padding-bottom: var(--tn-spacing-xs); border-bottom: 1px solid var(--tn-border-color); } .mini-calendar-note-preview .preview-list { list-style: none; margin: 0; padding: 0; font-size: var(--tn-font-size-xs); } .mini-calendar-note-preview .preview-list li { padding: var(--tn-spacing-xs) 0; color: var(--tn-text-normal); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .mini-calendar-note-preview .preview-note-title { color: var(--tn-text-normal); } .mini-calendar-note-preview .preview-note-type { color: var(--tn-text-muted); font-size: var(--tn-font-size-xs); font-style: italic; } .mini-calendar-note-preview .preview-more { color: var(--tn-text-muted); font-style: italic; margin-top: var(--tn-spacing-xs); } /* ================================================ MINI CALENDAR HEAT MAP INTENSITY ================================================ */ /* Heat map intensity levels (GitHub contributions style) */ .tasknotes-plugin .mini-calendar-view__day--intensity-none { /* Default background, no change */ } .tasknotes-plugin .mini-calendar-view__day--intensity-low { background: color-mix(in srgb, var(--tn-interactive-accent) 25%, var(--tn-bg-primary)) !important; } .tasknotes-plugin .mini-calendar-view__day--intensity-medium { background: color-mix(in srgb, var(--tn-interactive-accent) 40%, var(--tn-bg-primary)) !important; } .tasknotes-plugin .mini-calendar-view__day--intensity-high { background: color-mix(in srgb, var(--tn-interactive-accent) 55%, var(--tn-bg-primary)) !important; } .tasknotes-plugin .mini-calendar-view__day--intensity-very-high { background: color-mix(in srgb, var(--tn-interactive-accent) 70%, var(--tn-bg-primary)) !important; color: var(--tn-text-on-accent); font-weight: 600; } /* Preserve hover effect on heat map days */ .tasknotes-plugin .mini-calendar-view__day--intensity-low:hover, .tasknotes-plugin .mini-calendar-view__day--intensity-medium:hover, .tasknotes-plugin .mini-calendar-view__day--intensity-high:hover, .tasknotes-plugin .mini-calendar-view__day--intensity-very-high:hover { background: color-mix(in srgb, var(--tn-interactive-accent) 35%, var(--tn-interactive-hover)) !important; } /* ===== ADVANCED-CALENDAR-VIEW.CSS ===== */ /* Advanced Calendar View Styles */ .advanced-calendar-view { height: 100vh; display: flex; flex-direction: column; overflow: hidden; } /* ICS Event Styles */ .fc-event[data-ics-event="true"] { opacity: 0.9; border-radius: 4px; } /* Only apply calendar emoji to ICS events in non-list views */ .fc-daygrid-event[data-ics-event="true"]:before, .fc-timegrid-event[data-ics-event="true"]:before { content: "📅"; position: absolute; top: 2px; right: 2px; font-size: 10px; opacity: 0.7; } .fc-event[data-ics-event="true"]:hover { opacity: 1; box-shadow: 0 2px 4px rgba(0,0,0,0.2); } /* ICS Event Info Modal */ .ics-event-description { max-height: 100px; overflow-y: auto; white-space: pre-wrap; font-size: 0.9em; margin-top: 0.25rem; padding: 0.5rem; background: var(--background-secondary); border-radius: 4px; } /* ICS Context Menu */ .ics-event-context-menu { font-size: 0.9em; } .ics-context-menu-item:hover { background-color: var(--background-modifier-hover) !important; } /* Timeblock Help Text */ .advanced-calendar-view__help-text { font-size: 0.85em; color: var(--text-muted); margin-top: 0.5rem; padding: 0.5rem; background: var(--background-secondary); border-radius: 4px; border-left: 3px solid var(--color-accent); } /* Event Type Specific Styles */ /* Timeblock Events */ .fc-timeblock-event, .fc-event[data-event-type="timeblock"] { opacity: 0.65; border-radius: 4px; border-width: 1px !important; border-style: solid !important; transition: opacity 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease; } .fc-timeblock-event:hover, .fc-event[data-event-type="timeblock"]:hover { opacity: 0.90; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1); transform: translateY(-0.5px); } /* Time Entry Events - Recorded time with distinctive dashed border */ .fc-event[data-event-type="timeEntry"] { opacity: 0.9; border-radius: 4px; border-width: 2px !important; border-style: dashed !important; /* Dashed border to differentiate from solid timeblocks */ background: repeating-linear-gradient( 45deg, rgba(16, 185, 129, 0.08), rgba(16, 185, 129, 0.08) 10px, rgba(16, 185, 129, 0.15) 10px, rgba(16, 185, 129, 0.15) 20px ) !important; /* Subtle diagonal stripes in green */ border-color: #10b981 !important; /* Green to indicate "completed/recorded" time */ } .fc-event[data-event-type="timeEntry"] .fc-event-time, .fc-event[data-event-type="timeEntry"] .fc-event-title { color: #059669 !important; /* Darker green for better readability */ font-weight: 500; } .fc-event[data-event-type="timeEntry"]:hover { opacity: 1; box-shadow: 0 2px 6px rgba(16, 185, 129, 0.3); border-style: solid !important; /* Solid border on hover for clarity */ } /* Dark mode adjustments for time entries */ .theme-dark .fc-event[data-event-type="timeEntry"] { background: repeating-linear-gradient( 45deg, rgba(52, 211, 153, 0.1), rgba(52, 211, 153, 0.1) 10px, rgba(52, 211, 153, 0.18) 10px, rgba(52, 211, 153, 0.18) 20px ) !important; border-color: #34d399 !important; /* Lighter green for dark mode */ } .theme-dark .fc-event[data-event-type="timeEntry"] .fc-event-time, .theme-dark .fc-event[data-event-type="timeEntry"] .fc-event-title { color: #6ee7b7 !important; /* Even lighter green for text in dark mode */ } /* Task Events */ .fc-task-event { border-radius: 4px; border-width: 1px !important; } .fc-task-event:hover { box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1); } /* ICS Events - only in non-list views */ .fc-daygrid-event.fc-ics-event, .fc-timegrid-event.fc-ics-event { border-radius: 4px; border-width: 2px !important; border-style: solid !important; } .fc-daygrid-event.fc-ics-event:hover, .fc-timegrid-event.fc-ics-event:hover { box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1); } /* Recurring Events */ .fc-recurring-event { border-style: dashed !important; } /* Completed Events */ .fc-completed-event { opacity: 0.7; } /* Timeblock Modal Styles */ .timeblock-creation-modal .modal-content { max-width: 500px; } .timeblock-date-display { margin-bottom: 1rem; padding: 0.75rem; background: var(--background-secondary); border-radius: 6px; text-align: center; } .timeblock-time-container { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; } .timeblock-modal-buttons { display: flex; gap: 0.5rem; justify-content: flex-end; margin-top: 1.5rem; } .timeblock-help-text { font-size: 0.85em; color: var(--text-muted); margin-top: 1rem; padding: 0.75rem; background: var(--background-secondary); border-radius: 4px; line-height: 1.4; } .timeblock-help-text code { background: var(--background-primary); padding: 0.2em 0.4em; border-radius: 3px; font-size: 0.9em; } /* Attachment Selection Styles */ .timeblock-attachments-list { margin-top: 0.5rem; min-height: 2rem; } .timeblock-attachments-empty { color: var(--text-muted); font-style: italic; font-size: 0.9em; padding: 0.5rem; text-align: center; background: var(--background-secondary); border-radius: 4px; } .timeblock-attachment-item { display: flex; align-items: center; justify-content: space-between; padding: 0.5rem; margin-bottom: 0.5rem; background: var(--background-secondary); border-radius: 4px; border: 1px solid var(--background-modifier-border); } .timeblock-attachment-item:hover { background: var(--background-modifier-hover); } .timeblock-attachment-info { flex: 1; min-width: 0; /* Allow text truncation */ } .timeblock-attachment-name { font-weight: 500; color: var(--text-normal); display: block; } .timeblock-attachment-path { font-size: 0.85em; color: var(--text-muted); margin-top: 0.2rem; word-break: break-all; } .timeblock-attachment-remove { background: none; border: none; color: var(--text-muted); font-size: 1.2em; cursor: var(--cursor); padding: 0.2rem 0.5rem; border-radius: 3px; margin-left: 0.5rem; flex-shrink: 0; } .timeblock-attachment-remove:hover { background: var(--background-modifier-error); color: var(--text-on-accent); } /* Attachment Suggestion Modal Styles */ .attachment-suggestion { padding: 0.5rem; } .attachment-name { font-weight: 500; color: var(--text-normal); } .attachment-path { font-size: 0.85em; color: var(--text-muted); margin-top: 0.2rem; } /* Timeblock Info Modal */ .timeblock-description { max-height: 100px; overflow-y: auto; white-space: pre-wrap; font-size: 0.9em; margin-top: 0.25rem; padding: 0.5rem; background: var(--background-secondary); border-radius: 4px; } .timeblock-attachments { margin-top: 0.5rem; } .timeblock-attachment-item { margin-bottom: 0.25rem; } .timeblock-attachment-item .internal-link { color: var(--link-color); text-decoration: none; cursor: var(--cursor); } .timeblock-attachment-item .internal-link:hover { text-decoration: underline; } /* ICS Subscription Settings */ .ics-subscription-row { display: flex; align-items: center; gap: 1rem; padding: 0.75rem; border: 1px solid var(--background-modifier-border); border-radius: 4px; margin-bottom: 0.5rem; } .settings-status-indicator { width: 12px; height: 12px; border-radius: 50%; flex-shrink: 0; } .settings-status-indicator.enabled { background-color: var(--text-success); } .settings-status-indicator.enabled.error { background-color: var(--text-error); } .settings-status-indicator.disabled { background-color: var(--text-muted); } .ics-subscription-info { flex: 1; min-width: 0; } .ics-subscription-name { font-weight: 500; margin-bottom: 0.25rem; } .ics-subscription-url { font-size: 0.85em; color: var(--text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-bottom: 0.25rem; } .ics-subscription-meta { font-size: 0.8em; color: var(--text-muted); } .ics-subscription-error { font-size: 0.8em; color: var(--text-error); margin-top: 0.25rem; } .ics-subscription-actions { display: flex; gap: 0.5rem; flex-shrink: 0; } .ics-subscription-actions button { background: transparent; color: var(--text-normal); border: none; box-shadow: none; font-size: 0.8em; } .ics-subscription-actions button:hover { background: var(--tn-interactive-hover); } .ics-subscription-toggle.enabled { color: var(--text-success); border-color: var(--text-success); } .ics-subscription-toggle.disabled { color: var(--text-muted); border-color: var(--text-muted); } .ics-subscription-delete { color: var(--text-error) !important; border-color: var(--text-error) !important; } .ics-subscription-delete:hover { background: var(--text-error) !important; color: white !important; } /* ICS Subscription Forms */ .ics-add-subscription-form, .ics-edit-form { margin: 1rem 0; padding: 1rem; border: 1px solid var(--background-modifier-border); border-radius: 4px; background: var(--background-secondary); } .ics-form-row, .ics-edit-row { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.75rem; } .ics-form-row-multi, .ics-edit-settings { display: flex; flex-wrap: wrap; gap: 1rem; } .ics-form-group, .ics-edit-group { display: flex; align-items: center; gap: 0.5rem; flex: 1; min-width: 120px; } .ics-form-label, .ics-edit-label { min-width: 80px; font-weight: 500; flex-shrink: 0; } .ics-form-input, .ics-edit-input { flex: 1; padding: 0.5rem; border: 1px solid var(--background-modifier-border); border-radius: 3px; background: var(--background-primary); color: var(--text-normal); } .ics-form-color, .ics-edit-color { width: 40px; height: 30px; border: 1px solid var(--background-modifier-border); border-radius: 3px; cursor: var(--cursor); } .ics-form-number, .ics-edit-number { width: 80px; padding: 0.5rem; border: 1px solid var(--background-modifier-border); border-radius: 3px; background: var(--background-primary); color: var(--text-normal); } .ics-form-checkbox-label, .ics-edit-checkbox-label { display: flex; align-items: center; gap: 0.25rem; cursor: var(--cursor); } .ics-form-checkbox, .ics-edit-checkbox { margin: 0; } .ics-form-button, .ics-edit-button { background: transparent; color: var(--text-normal); border: none; box-shadow: none; margin-right: 0.5rem; } .ics-form-button:hover, .ics-edit-button:hover { background: var(--tn-interactive-hover); } .ics-form-button.mod-cta, .ics-edit-button.mod-cta { background: var(--interactive-accent); color: var(--text-on-accent); border: none; box-shadow: none; } .ics-form-button.mod-cta:hover, .ics-edit-button.mod-cta:hover { background: var(--interactive-accent-hover); box-shadow: none; } .ics-edit-buttons { justify-content: flex-start; margin-top: 0.5rem; } .ics-subscription-editing { background: var(--background-secondary); border-color: var(--interactive-accent); } .advanced-calendar-view__container { height: 100%; display: flex; flex-direction: column; overflow: hidden; } .advanced-calendar-view__header { padding: 0.5rem 1rem; background: var(--background-primary); flex-shrink: 0; } .advanced-calendar-view__main-row { display: flex; align-items: center; gap: 1.5rem; flex-wrap: wrap; } .advanced-calendar-view__main-row .filter-bar-container { flex: 1; min-width: 300px; } .advanced-calendar-view__controls { display: flex; align-items: center; gap: 1rem; flex-shrink: 0; } .advanced-calendar-view__schedule-tasks-btn { padding: 0.4rem 0.8rem; background: var(--interactive-accent); color: var(--text-on-accent); border: none; border-radius: 6px; cursor: var(--cursor); font-size: 0.85rem; font-weight: 500; transition: background-color 0.2s ease; } .advanced-calendar-view__schedule-tasks-btn:hover { background: var(--interactive-accent-hover); } .advanced-calendar-view__calendar-container { flex: 1; overflow: auto; border: 1px solid var(--background-modifier-border); border-radius: var(--tn-radius-md); min-height: 0; } /* FullCalendar overrides - Minimalist & Clean */ .advanced-calendar-view .fc { height: 100%; width: 100%; font-family: var(--font-interface); } /* Ensure calendar table expands to fill container width */ .advanced-calendar-view .fc-view-harness { width: 100%; } .advanced-calendar-view .fc-scrollgrid { width: 100% !important; } .advanced-calendar-view .fc-scrollgrid-sync-table { width: 100% !important; } /* Remove outer borders only */ .advanced-calendar-view .fc-theme-standard .fc-scrollgrid { border: none; } /* Light dividers for clean look */ .advanced-calendar-view .fc-col-header-cell { border-bottom: 1px solid var(--background-modifier-border); border-top: 1px solid var(--background-modifier-border); } .advanced-calendar-view .fc-daygrid-day { border-right: 1px solid var(--background-modifier-border-hover); border-bottom: 1px solid var(--background-modifier-border-hover); } .advanced-calendar-view .fc-timegrid-slot { border-bottom: 1px solid var(--background-modifier-border-hover); } .advanced-calendar-view .fc-timegrid-col { border-right: 1px solid var(--background-modifier-border-hover); } /* Header toolbar styling */ .advanced-calendar-view .fc-header-toolbar { flex-wrap: wrap; padding: 0; border-bottom: 1px solid var(--background-modifier-border); background: transparent; } /* Calendar title styling - smaller and minimalist */ .advanced-calendar-view .fc-toolbar-title { font-size: 1rem; font-weight: 400; color: var(--text-muted); margin: 0; padding: 0.3rem 0.6rem; } .advanced-calendar-view .fc-toolbar-chunk { display: flex; align-items: center; gap: 0.25rem; } .advanced-calendar-view .fc-toolbar.fc-header-toolbar { margin-bottom: 0; } /* Remove all borders from FullCalendar buttons */ .advanced-calendar-view .fc-button, .advanced-calendar-view .fc-button-primary, .advanced-calendar-view .fc-button-secondary, .advanced-calendar-view .fc-prev-button, .advanced-calendar-view .fc-next-button, .advanced-calendar-view .fc-today-button, .advanced-calendar-view .fc-dayGridMonth-button, .advanced-calendar-view .fc-timeGridWeek-button, .advanced-calendar-view .fc-timeGridDay-button, .advanced-calendar-view .fc-listWeek-button { border: none !important; box-shadow: none !important; background: transparent; color: var(--text-muted); font-size: 0.8rem; font-weight: 400; padding: 0.3rem 0.6rem; border-radius: 4px; transition: all 0.2s ease; } /* Hover states for all FC buttons */ .advanced-calendar-view .fc-button:hover:not(:disabled), .advanced-calendar-view .fc-button-primary:hover:not(:disabled), .advanced-calendar-view .fc-button-secondary:hover:not(:disabled), .advanced-calendar-view .fc-prev-button:hover:not(:disabled), .advanced-calendar-view .fc-next-button:hover:not(:disabled) { background: var(--tn-interactive-hover); color: var(--text-normal); border: none !important; box-shadow: none !important; } .advanced-calendar-view .fc-button-primary:disabled { background: transparent; color: var(--text-faint); opacity: 0.5; } /* Active state for FC buttons (currently selected view) */ .advanced-calendar-view .fc-button-active, .advanced-calendar-view .fc-button.fc-button-active { background: var(--interactive-accent) !important; border: none !important; box-shadow: none !important; color: var(--text-on-accent) !important; } /* Use consistent button system for today button */ .advanced-calendar-view .fc-today-button { background: var(--interactive-accent); border: none; box-shadow: none; color: var(--text-on-accent); } .advanced-calendar-view .fc-today-button:hover:not(:disabled) { background: var(--interactive-accent-hover); box-shadow: none; } /* Clean today styling */ .advanced-calendar-view .fc-daygrid-day.fc-day-today { background: color-mix(in srgb, var(--interactive-accent) 8%, var(--background-primary)) !important; border: 2px solid var(--interactive-accent); position: relative; } .advanced-calendar-view .fc-daygrid-day.fc-day-today .fc-daygrid-day-number { font-weight: 600; color: var(--interactive-accent) !important; } /* Fix today styling specifically for multi-month (year) view */ .advanced-calendar-view .fc-multimonth-daygrid .fc-daygrid-day.fc-day-today { background: color-mix(in srgb, var(--interactive-accent) 8%, var(--background-primary)) !important; border: 2px solid var(--interactive-accent) !important; } .advanced-calendar-view .fc-multimonth-daygrid .fc-daygrid-day.fc-day-today .fc-daygrid-day-number { font-weight: 600; color: var(--interactive-accent) !important; } .advanced-calendar-view .fc-daygrid-day.fc-day-today::before { content: ''; position: absolute; top: 2px; right: 2px; width: 6px; height: 6px; background: var(--interactive-accent); border-radius: 50%; z-index: 1; } /* Header cells */ .advanced-calendar-view .fc-col-header-cell { background: var(--background-primary) !important; color: var(--text-muted) !important; font-weight: 400; font-size: 0.75rem; /* text-transform: lowercase; */ letter-spacing: 0; padding: 0.5rem 0.5rem; } /* Day cells - ensure proper theme colors */ .advanced-calendar-view .fc-daygrid-day { background: var(--background-primary) !important; color: var(--text-normal) !important; } /* Multi-month (year view) styling - minimalist */ .advanced-calendar-view .fc-multimonth-daygrid .fc-daygrid-day { background: var(--background-primary) !important; color: var(--text-normal) !important; } /* Multi-month month headers */ .advanced-calendar-view .fc-multimonth-header { background: transparent !important; color: var(--text-normal) !important; border-bottom: 1px solid var(--divider-color); } .advanced-calendar-view .fc-multimonth-title { background: transparent !important; color: var(--text-normal) !important; font-weight: 500; padding: 0.5rem; } /* Multi-month day headers (Mon, Tue, etc.) */ .advanced-calendar-view .fc-multimonth .fc-col-header-cell { background: transparent !important; color: var(--text-muted) !important; font-size: 0.85rem; text-transform: uppercase; letter-spacing: 0.5px; } /* Day numbers */ .advanced-calendar-view .fc-daygrid-day-number { color: var(--text-normal) !important; font-weight: 400; font-size: 0.9rem; padding: 0.5rem; } /* List view day headers - minimalist */ .advanced-calendar-view .fc-list-day-cushion { background: transparent !important; color: var(--text-normal) !important; font-weight: 500; border-bottom: 1px solid var(--divider-color); padding: 0.5rem 0.25rem; } .advanced-calendar-view .fc-list-day { background: transparent !important; } .advanced-calendar-view .fc-list-table th { background: var(--background-secondary-alt) !important; } /* Clean event styling */ .advanced-calendar-view .fc-event { border-radius: 6px; border: 1px solid; font-size: 0.8rem; font-weight: 500; padding: 0.2rem 0.5rem; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); transition: all 0.2s ease; cursor: var(--cursor); } .advanced-calendar-view .fc-event:hover { transform: translateY(-1px); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); } .advanced-calendar-view .fc-event-title { font-weight: 500; line-height: 1.3; text-decoration: inherit; } /* Time grid specific styles */ .advanced-calendar-view .fc-timegrid-slot { height: 3rem; } .advanced-calendar-view .fc-timegrid-slot-label { font-size: 0.8rem; color: var(--text-muted); padding: 0.5rem; } .advanced-calendar-view .fc-timegrid-axis { width: 4rem; } /* More events link */ .advanced-calendar-view .fc-more-link { color: var(--interactive-accent); font-size: 0.75rem; font-weight: 500; } .advanced-calendar-view .fc-more-link:hover { color: var(--interactive-accent-hover); } /* Current time indicator (red line) */ .advanced-calendar-view .fc-timegrid-now-indicator-line { border-color: #ff0000; border-width: 1px; } .advanced-calendar-view .fc-timegrid-now-indicator-arrow { border-color: #ff0000; } /* Mobile collapse toggle - hidden by default */ .advanced-calendar-view__mobile-toggle { display: none; padding: 0.5rem 1rem; } .advanced-calendar-view__collapse-btn { background: var(--interactive-normal); color: var(--text-normal); border: 1px solid var(--background-modifier-border); border-radius: 6px; padding: 0.4rem 0.8rem; font-size: 0.85rem; cursor: var(--cursor); transition: all 0.2s ease; } .advanced-calendar-view__collapse-btn:hover { background: var(--interactive-hover); } /* Responsive design */ @media (max-width: 1200px) { .advanced-calendar-view__main-row { flex-direction: column; align-items: stretch; gap: 0.75rem; } .advanced-calendar-view__main-row .filter-bar-container { min-width: unset; } .advanced-calendar-view__controls { justify-content: space-between; } } @media (max-width: 768px) { /* Show mobile toggle on small screens */ .advanced-calendar-view__mobile-toggle { display: block; } /* Hide main row by default on mobile when collapsed */ .advanced-calendar-view__main-row.collapsed { display: none; } .advanced-calendar-view__main-row.expanded { display: flex; } .advanced-calendar-view__controls { flex-direction: column; align-items: stretch; gap: 0.75rem; } .advanced-calendar-view__schedule-tasks-btn { align-self: center; } .advanced-calendar-view__calendar-container { padding: 0.5rem; } /* Reduce header padding on mobile */ .advanced-calendar-view__header { padding: 0.25rem 0.5rem; } } /* Today highlighting disabled */ .hide-today-highlight .fc-unthemed td.fc-today { background: inherit; } .hide-today-highlight .fc-daygrid-day.fc-day-today { background: inherit !important; border: none !important; } .hide-today-highlight .fc-daygrid-day.fc-day-today .fc-daygrid-day-number { font-weight: 400; color: var(--text-normal); } .hide-today-highlight .fc-daygrid-day.fc-day-today::before { display: none; } .hide-today-highlight .fc-timegrid-col.fc-day-today { background: inherit !important; border: none !important; } /* ICS Refresh Button - Match exact styling of other FullCalendar buttons */ .advanced-calendar-view .fc-refreshICS-button { background: transparent !important; border: none !important; box-shadow: none !important; color: var(--text-muted) !important; font-size: 0.8rem !important; font-weight: 400 !important; padding: 0.3rem 0.6rem !important; border-radius: 4px !important; transition: all 0.2s ease !important; } .advanced-calendar-view .fc-refreshICS-button .fc-icon, .advanced-calendar-view .fc-refreshICS-button .fc-button-label { color: var(--text-muted) !important; font-size: 0.8rem !important; font-weight: 400 !important; line-height: 1.2; display: inline; visibility: visible; } /* Hover state - match other buttons exactly */ .advanced-calendar-view .fc-refreshICS-button:hover:not(:disabled) { background: var(--tn-interactive-hover) !important; color: var(--text-normal) !important; border: none !important; box-shadow: none !important; } .advanced-calendar-view .fc-refreshICS-button:hover:not(:disabled) .fc-icon, .advanced-calendar-view .fc-refreshICS-button:hover:not(:disabled) .fc-button-label { color: var(--text-normal) !important; } /* Active/Focus state - match other buttons */ .advanced-calendar-view .fc-refreshICS-button:active, .advanced-calendar-view .fc-refreshICS-button:focus { background: var(--tn-interactive-hover) !important; border: none !important; box-shadow: none !important; outline: none !important; color: var(--text-normal) !important; } /* Disabled state - match other buttons */ .advanced-calendar-view .fc-refreshICS-button:disabled { background: transparent !important; color: var(--text-faint) !important; opacity: 0.5 !important; border: none !important; box-shadow: none !important; } /* ===== CLEAN LIST VIEW STYLING - NO INHERITANCE ===== */ /* Base styling for ALL list events - completely independent from calendar views */ .fc-list-event { /* Reset any inherited styling from calendar views */ opacity: 1 !important; border: none !important; border-radius: 0 !important; background: transparent !important; box-shadow: none !important; } /* Consistent light hover background for ALL list events */ .fc-list-event:hover { background-color: var(--background-modifier-hover) !important; } /* Fix time element color on hover in list view */ .fc-list-event:hover .fc-list-event-time { color: inherit !important; background-color: transparent !important; } .fc-list-event .fc-list-event-time { /* Consistent time styling for all events */ font-size: inherit !important; color: inherit !important; font-weight: inherit !important; vertical-align: top; } .fc-list-event .fc-list-event-title { /* Base title styling - clean and consistent */ padding: 8px 12px; border: none !important; border-radius: 0 !important; background: transparent !important; box-shadow: none !important; font-size: inherit !important; font-weight: inherit !important; color: inherit !important; display: table-cell; vertical-align: top; } .fc-list-event .fc-list-event-dot { /* Standard dot styling for all events */ border: inherit !important; background: inherit !important; } /* ===== TASK-SPECIFIC ENHANCEMENTS ===== */ /* Task events get ONLY functional enhancements - NO visual styling differences */ .fc-list-event.fc-list-task-card .fc-list-event-title { /* Keep base styling identical to ICS events - no background, borders, or shadows */ background-color: transparent !important; border-radius: 0 !important; box-shadow: none !important; } /* Remove task-specific hover - now handled by base .fc-list-event:hover */ /* Hide default FullCalendar dot for tasks since we have custom indicators */ .fc-list-event.fc-list-task-card .fc-list-event-dot { display: none; } /* Style the status dot in graphic column */ .fc-list-event-status-dot { display: flex; align-items: center; justify-content: center; margin: auto; } /* Prevent graphic column from getting hover background */ .fc-list-event:hover .fc-list-event-graphic { background-color: transparent !important; } /* Task title row with indicators on same line */ .fc-list-task-title-row { display: flex; align-items: center; gap: 6px; width: 100%; margin-bottom: 4px; } /* Metadata spacing without separators */ .fc-list-task-metadata > span { display: block; margin: 2px 0; } /* Status and priority dots */ .fc-list-task-status-dot, .fc-list-task-priority-dot { width: 8px; height: 8px; border-radius: 50%; border: 2px solid currentColor; background-color: transparent; flex-shrink: 0; } .fc-list-task-priority-dot { cursor: var(--cursor); } .fc-list-task-priority-dot { background-color: var(--priority-color, currentColor); } /* Recurring indicator styling */ .fc-list-task-recurring-indicator { width: 12px; height: 12px; flex-shrink: 0; opacity: 0.7; cursor: var(--cursor); } .fc-list-task-recurring-indicator:hover { opacity: 1; } .fc-list-task-status-dot { border-color: var(--current-status-color, var(--text-muted)); } /* Recurring indicator */ .fc-list-task-recurring-indicator { font-size: 12px; opacity: 0.8; flex-shrink: 0; } /* Task title */ .fc-list-task-title { font-weight: 500 !important; color: var(--text-normal) !important; font-size: 14px !important; flex-grow: 1; } /* Task metadata */ .fc-list-task-metadata { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; font-size: 12px; color: var(--text-muted); margin-top: 2px; } .fc-list-task-metadata > span { background-color: var(--background-secondary); padding: 2px 6px; border-radius: 3px; font-size: 11px; } .fc-list-task-projects { background-color: rgba(var(--color-blue-rgb, 13 110 253), 0.1) !important; color: var(--color-blue) !important; } .fc-list-task-contexts { background-color: rgba(var(--color-green-rgb, 25 135 84), 0.1) !important; color: var(--color-green) !important; } .fc-list-task-tags { background-color: rgba(var(--color-purple-rgb, 102 16 242), 0.1) !important; color: var(--color-purple) !important; } .fc-list-task-time-estimate { background-color: rgba(var(--color-orange-rgb, 255 159 67), 0.1) !important; color: var(--color-orange) !important; } .fc-list-task-metadata-separator { color: var(--text-faint); font-weight: 300; } /* Responsive design for smaller screens */ @media (max-width: 768px) { .fc-list-task-metadata { flex-direction: column; align-items: flex-start; gap: 4px; } .fc-list-task-title-row { gap: 4px; } } /* Animation for newly added events */ @keyframes slideInUp { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } .fc-list-event.fc-list-task-card[data-newly-added] { animation: slideInUp 0.3s ease-out; } /* Dark mode fixes for FullCalendar popover ("+more" popup) */ .theme-dark .advanced-calendar-view .fc-popover { background: var(--background-primary) !important; border: 1px solid var(--background-modifier-border) !important; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.5) !important; } .theme-dark .advanced-calendar-view .fc-popover-header { background: var(--background-secondary) !important; border-bottom: 1px solid var(--background-modifier-border) !important; } .theme-dark .advanced-calendar-view .fc-popover-title { color: var(--text-normal) !important; } .theme-dark .advanced-calendar-view .fc-popover-close { color: var(--text-muted) !important; } .theme-dark .advanced-calendar-view .fc-popover-close:hover { color: var(--text-normal) !important; background: var(--background-modifier-hover) !important; } .theme-dark .advanced-calendar-view .fc-popover-body { background: var(--background-primary) !important; color: var(--text-normal) !important; } /* Dark mode fixes for timeGrid more link (eventMaxStack) */ .advanced-calendar-view .fc-timegrid-more-link { color: var(--text-normal); background: var(--background-secondary); border: 1px solid var(--background-modifier-border); border-radius: 4px; padding: 2px 6px; font-size: 0.75rem; font-weight: 500; text-decoration: none; display: inline-block; margin-top: 2px; } .advanced-calendar-view .fc-timegrid-more-link:hover { background: var(--background-modifier-hover); color: var(--text-normal); } .theme-dark .advanced-calendar-view .fc-timegrid-more-link { background: var(--background-secondary); color: var(--text-normal); border-color: var(--background-modifier-border); } .theme-dark .advanced-calendar-view .fc-timegrid-more-link:hover { background: var(--background-modifier-hover); color: var(--text-normal); } /* ===== KANBAN-VIEW.CSS ===== */ /* ================================================ KANBAN VIEW - BEM STRUCTURE ================================================ */ /* Kanban View Container - Root Block */ .tasknotes-plugin .kanban-view { padding: var(--tn-spacing-sm); display: flex; flex-direction: column; height: 100%; overflow: hidden; gap: var(--tn-spacing-sm); max-width: 100%; } /* Kanban Header */ .tasknotes-plugin .kanban-view__header { display: flex; flex-direction: column; gap: var(--tn-spacing-md); padding-bottom: var(--tn-spacing-md); border-bottom: 1px solid var(--tn-border-color); flex-shrink: 0; } .tasknotes-plugin .kanban-view__filter-container { margin-bottom: var(--tn-spacing-sm); } .tasknotes-plugin .kanban-view__actions { display: flex; align-items: center; justify-content: space-between; gap: var(--tn-spacing-md); flex-wrap: wrap; } .tasknotes-plugin .kanban-view__actions-left { display: flex; align-items: center; gap: var(--tn-spacing-sm); } .tasknotes-plugin .kanban-view__actions-right { display: flex; align-items: center; gap: var(--tn-spacing-sm); } /* Use consistent button system with primary accent background preserved */ .tasknotes-plugin .kanban-view__new-task-button { background: var(--tn-interactive-accent); color: var(--text-on-accent); border: none; box-shadow: none; white-space: nowrap; } .tasknotes-plugin .kanban-view__new-task-button:hover { background: var(--tn-interactive-accent-hover); box-shadow: none; } .tasknotes-plugin .kanban-view__new-task-button:active { opacity: 0.8; } /* Stats Container */ .tasknotes-plugin .kanban-view__stats { display: flex; align-items: center; gap: var(--tn-spacing-sm); padding: var(--tn-spacing-sm) var(--tn-spacing-md); background: var(--tn-bg-secondary); border: 1px solid var(--tn-border-color); border-radius: var(--tn-radius-sm); font-size: var(--tn-font-size-md); color: var(--tn-text-muted); font-weight: 400; } .tasknotes-plugin .kanban-view__stats-simple { font-size: var(--tn-font-size-sm); color: var(--tn-text-muted); font-weight: 400; } /* Board Container */ .tasknotes-plugin .kanban-view__board-container { flex: 1; overflow: hidden; background: var(--tn-bg-secondary); border-radius: var(--tn-radius-md); min-height: 0; } /* Board */ .tasknotes-plugin .kanban-view__board { display: flex; height: 100%; overflow-x: auto; padding: var(--tn-spacing-md); gap: var(--tn-spacing-md); min-height: 0; flex-wrap: nowrap; } /* Board Scrollbar */ .tasknotes-plugin .kanban-view__board::-webkit-scrollbar { height: 8px; } .tasknotes-plugin .kanban-view__board::-webkit-scrollbar-track { background: var(--tn-bg-secondary); } .tasknotes-plugin .kanban-view__board::-webkit-scrollbar-thumb { background: var(--tn-border-color); border-radius: 4px; } .tasknotes-plugin .kanban-view__board::-webkit-scrollbar-thumb:hover { background: var(--tn-text-muted); } /* Loading Indicator */ .tasknotes-plugin .kanban-view__loading { display: flex; align-items: center; justify-content: center; gap: var(--tn-spacing-sm); padding: var(--tn-spacing-lg); color: var(--tn-text-muted); font-size: var(--tn-font-size-md); font-style: italic; font-weight: 400; background: var(--tn-bg-secondary); border: 1px solid var(--tn-border-color); border-radius: var(--tn-radius-md); margin: var(--tn-spacing-md); } .tasknotes-plugin .kanban-view__loading::before { content: ''; width: 16px; height: 16px; border: 2px solid color-mix(in srgb, var(--tn-text-muted) 0.3, transparent); border-top: 2px solid var(--tn-text-muted); border-radius: 50%; animation: spin 1s linear infinite; flex-shrink: 0; } /* Error State */ .tasknotes-plugin .kanban-view__error { display: flex; align-items: center; justify-content: center; padding: var(--tn-spacing-lg); color: var(--tn-color-error); background: color-mix(in srgb, var(--tn-color-error) 0.05, var(--tn-bg-secondary)); border: 1px solid color-mix(in srgb, var(--tn-color-error) 0.3, transparent); border-radius: var(--tn-radius-md); font-size: var(--tn-font-size-md); font-weight: var(--tn-font-weight-medium); margin: var(--tn-spacing-md); } /* ================================================ KANBAN COLUMNS ================================================ */ /* Column */ .tasknotes-plugin .kanban-view__column { min-width: 200px; max-width: 500px; flex-shrink: 0; background: var(--tn-bg-primary); border: 1px solid var(--tn-border-color); border-radius: var(--tn-radius-md); display: flex; flex-direction: column; height: fit-content; max-height: calc(100vh - 200px); transition: all var(--tn-transition-fast); } .tasknotes-plugin .kanban-view__column--dragover { border-color: var(--tn-interactive-accent); transform: scale(1.02); box-shadow: var(--tn-shadow-medium); } /* Column header dragover state (for column reordering) */ .tasknotes-plugin .kanban-view__column-header--dragover { background: var(--tn-interactive-hover); border: 2px solid var(--tn-interactive-accent); transform: scale(1.02); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); } .tasknotes-plugin .kanban-view__column--uncategorized { opacity: 0.8; border: 1px dashed var(--tn-text-muted); } .tasknotes-plugin .kanban-view__column--uncategorized .kanban-view__column-header { background: var(--tn-border-color); } .tasknotes-plugin .kanban-view__column--column-drop-target { background: var(--tn-interactive-hover); border: 2px dashed var(--tn-interactive-accent); transform: scale(1.02); transition: all var(--tn-transition-medium); box-shadow: var(--tn-shadow-medium); position: relative; } .tasknotes-plugin .kanban-view__column--column-drop-target .kanban-view__column-header { background: transparent; border: none; } .tasknotes-plugin .kanban-view__column--column-drop-target::before { content: "Drop here to reorder column"; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); background: var(--tn-interactive-accent); color: var(--tn-text-on-accent); padding: var(--tn-spacing-xs) var(--tn-spacing-md); border-radius: var(--tn-radius-sm); font-size: var(--tn-font-size-sm); font-weight: var(--tn-font-weight-medium); z-index: 1000; pointer-events: none; white-space: nowrap; } /* Column Header */ .tasknotes-plugin .kanban-view__column-header { display: flex; align-items: center; gap: var(--tn-spacing-xs); padding: var(--tn-spacing-sm) var(--tn-spacing-md); border-bottom: 1px solid var(--tn-border-color); background: var(--tn-bg-secondary); border-radius: var(--tn-radius-md) var(--tn-radius-md) 0 0; cursor: grab; user-select: none; transition: all var(--tn-transition-fast); } .tasknotes-plugin .kanban-view__column-header:active { cursor: grabbing; } .tasknotes-plugin .kanban-view__column-header--dragging { opacity: 0.5; transform: rotate(2deg); box-shadow: var(--tn-shadow-medium); } /* Drag Handle */ .tasknotes-plugin .kanban-view__drag-handle { color: var(--tn-text-muted); cursor: grab; font-size: var(--tn-font-size-sm); opacity: 0.5; transition: opacity var(--tn-transition-fast); flex-shrink: 0; } .tasknotes-plugin .kanban-view__column-header:hover .kanban-view__drag-handle, .tasknotes-plugin .kanban-view__column-header-cell:hover .kanban-view__drag-handle { opacity: 1; } .tasknotes-plugin .kanban-view__drag-handle:active { cursor: grabbing; } .tasknotes-plugin .kanban-view__column-title { font-weight: var(--tn-font-weight-semibold); font-size: var(--tn-font-size-lg); color: var(--tn-text-normal); line-height: 1.2; margin: 0; } .tasknotes-plugin .kanban-view__column-count { color: var(--tn-text-muted); font-size: var(--tn-font-size-xs); line-height: 1.2; font-weight: 400; margin: 0; } /* Column Body */ .tasknotes-plugin .kanban-view__column-body { padding: var(--tn-spacing-sm); min-height: 100px; max-height: calc(100vh - 300px); overflow-y: auto; flex: 1; display: flex; flex-direction: column; gap: var(--tn-spacing-xs); } .tasknotes-plugin .kanban-view__column-body--dragover { background: var(--tn-interactive-hover); position: relative; } .tasknotes-plugin .kanban-view__column-body--dragover::before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: color-mix(in srgb, var(--tn-interactive-accent) 0.1, transparent); border: 2px dashed var(--tn-interactive-accent); border-radius: var(--tn-radius-md); pointer-events: none; } /* Column Body Scrollbar */ .tasknotes-plugin .kanban-view__column-body::-webkit-scrollbar { width: 6px; } .tasknotes-plugin .kanban-view__column-body::-webkit-scrollbar-track { background: var(--tn-bg-secondary); border-radius: 3px; } .tasknotes-plugin .kanban-view__column-body::-webkit-scrollbar-thumb { background: var(--tn-border-color); border-radius: 3px; } .tasknotes-plugin .kanban-view__column-body::-webkit-scrollbar-thumb:hover { background: var(--tn-text-muted); } /* Empty Column */ .tasknotes-plugin .kanban-view__column-empty { text-align: center; color: var(--tn-text-muted); font-style: italic; font-size: var(--tn-font-size-sm); padding: var(--tn-spacing-lg); border: 2px dashed var(--tn-border-color); border-radius: var(--tn-radius-md); background: var(--tn-bg-secondary); transition: all var(--tn-transition-fast); margin: var(--tn-spacing-xs); } .tasknotes-plugin .kanban-view__column-empty:hover { border-color: var(--tn-interactive-accent); background: var(--tn-interactive-hover); } .tasknotes-plugin .kanban-view__column--dragover .kanban-view__column-empty { border-color: var(--tn-interactive-accent); background: var(--tn-interactive-accent-hover); color: var(--tn-text-on-accent); } /* ================================================ KANBAN TASK CARDS ================================================ */ /* Cards container (used for non-virtualized columns) */ .tasknotes-plugin .kanban-view__cards { display: flex; flex-direction: column; gap: var(--tn-spacing-xs); overflow-y: auto; /* Allow vertical scrolling */ flex: 1; /* Fill available space in column */ min-height: 0; /* Allow container to shrink and enable scrolling */ } /* Dragging state for card wrappers */ .tasknotes-plugin .kanban-view__card-wrapper[draggable="true"]:hover { cursor: grab; } .tasknotes-plugin .kanban-view__card-wrapper[draggable="true"]:active { cursor: grabbing; } /* ================================================ RESPONSIVE DESIGN ================================================ */ @media (max-width: 768px) { .tasknotes-plugin .kanban-view { padding: var(--tn-spacing-xs); gap: var(--tn-spacing-xs); } .tasknotes-plugin .kanban-view__header { padding-bottom: var(--tn-spacing-sm); gap: var(--tn-spacing-sm); } .tasknotes-plugin .kanban-view__actions { flex-direction: column; align-items: stretch; gap: var(--tn-spacing-sm); } .tasknotes-plugin .kanban-view__actions-left, .tasknotes-plugin .kanban-view__actions-right { justify-content: center; width: 100%; } .tasknotes-plugin .kanban-view__new-task-button { width: 100%; max-width: 300px; } .tasknotes-plugin .kanban-view__board { padding: var(--tn-spacing-sm); gap: var(--tn-spacing-sm); } } @media (max-width: 480px) { .tasknotes-plugin .kanban-view { padding: var(--tn-spacing-xs); } .tasknotes-plugin .kanban-view__board { padding: var(--tn-spacing-xs); gap: var(--tn-spacing-xs); } .tasknotes-plugin .kanban-view__column-header { padding: var(--tn-spacing-xs) var(--tn-spacing-sm); } .tasknotes-plugin .kanban-view__column-body { padding: var(--tn-spacing-xs); } .tasknotes-plugin .kanban-view__new-task-button { font-size: var(--tn-font-size-xs); padding: 0 var(--tn-spacing-md); } } /* ===== AGENDA-VIEW.CSS ===== */ /* ================================================ AGENDA VIEW - BEM STRUCTURE ================================================ */ /* Agenda View Container - Root Block */ .tasknotes-plugin .agenda-view { padding: var(--tn-spacing-sm); display: flex; flex-direction: column; height: 100%; overflow-y: auto; gap: var(--tn-spacing-sm); max-width: 100%; } /* Agenda View Controls */ .tasknotes-plugin .agenda-view__controls { display: flex; flex-direction: column; gap: var(--tn-spacing-md); margin-bottom: var(--tn-spacing-md); } /* Header Section */ .tasknotes-plugin .agenda-view__header { display: flex; align-items: center; justify-content: center; padding: var(--tn-spacing-lg) var(--tn-spacing-md); margin-bottom: var(--tn-spacing-lg); position: relative; background: transparent; } .tasknotes-plugin .agenda-view__header-content { display: flex; align-items: center; justify-content: space-between; width: 100%; max-width: 1000px; margin: 0 auto; } .tasknotes-plugin .agenda-view__nav-section { display: flex; align-items: center; gap: var(--tn-spacing-xs); } .tasknotes-plugin .agenda-view__title-section { flex: 1; display: flex; justify-content: center; margin: 0 var(--tn-spacing-lg); } .tasknotes-plugin .agenda-view__actions-section { display: flex; align-items: center; gap: var(--tn-spacing-sm); } .tasknotes-plugin .agenda-view__period-title { font-size: var(--tn-font-size-xl); font-weight: var(--tn-font-weight-medium); color: var(--tn-text-normal); text-align: center; white-space: nowrap; letter-spacing: 0.01em; line-height: 1.3; } .tasknotes-plugin .agenda-view__nav-button { border-radius: 50%; font-size: 1.25rem; font-weight: var(--tn-font-weight-medium); } .tasknotes-plugin .agenda-view__nav-button:active { opacity: 0.8; } /* Filter Bar Container */ .tasknotes-plugin .agenda-view__filter-container { margin-bottom: var(--tn-spacing-md); } /* Settings Section */ .tasknotes-plugin .agenda-view__settings { display: flex; align-items: center; justify-content: space-between; padding: var(--tn-spacing-md); background: var(--tn-bg-secondary); border: 1px solid var(--tn-border-color); border-radius: var(--tn-radius-md); gap: var(--tn-spacing-md); flex-wrap: wrap; margin-bottom: var(--tn-spacing-md); box-shadow: var(--tn-shadow-light); } .tasknotes-plugin .agenda-view__settings-left { display: flex; align-items: center; gap: var(--tn-spacing-sm); } .tasknotes-plugin .agenda-view__settings-right { display: flex; align-items: center; gap: var(--tn-spacing-md); } /* Period Selector */ .tasknotes-plugin .agenda-view__period-select { appearance: none; padding: var(--tn-spacing-sm) var(--tn-spacing-xl) var(--tn-spacing-sm) var(--tn-spacing-md); border: 1px solid var(--tn-border-color); border-radius: var(--tn-radius-sm); background: var(--tn-bg-primary); background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e"); background-position: right var(--tn-spacing-sm) center; background-repeat: no-repeat; background-size: 16px; color: var(--tn-text-normal); font-family: inherit; font-size: var(--tn-font-size-md); font-weight: 400; min-width: 120px; min-height: var(--tn-input-height-md); cursor: var(--cursor); transition: all var(--tn-transition-fast); } .tasknotes-plugin .agenda-view__period-select:hover { border-color: var(--tn-border-color-hover); background-color: var(--tn-interactive-hover); } .tasknotes-plugin .agenda-view__period-select:focus { outline: none; border-color: var(--tn-interactive-accent); background-color: color-mix(in srgb, var(--tn-interactive-accent) 0.1, var(--tn-bg-primary)); } /* Today Button */ .tasknotes-plugin .agenda-view__today-button { position: relative; display: inline-flex; align-items: center; justify-content: center; gap: var(--tn-spacing-xs); padding: var(--tn-spacing-sm) var(--tn-spacing-md); border: none; border-radius: var(--tn-radius-md); background: transparent; color: var(--tn-text-muted); font-family: inherit; font-size: var(--tn-font-size-sm); font-weight: var(--tn-font-weight-medium); line-height: 1.25; height: var(--tn-button-height-md); cursor: var(--cursor); user-select: none; text-decoration: none; white-space: nowrap; transition: all var(--tn-transition-fast); overflow: hidden; box-shadow: none; } .tasknotes-plugin .agenda-view__today-button:hover { background: var(--tn-interactive-hover); color: var(--tn-text-normal); } .tasknotes-plugin .agenda-view__today-button:focus-visible { outline: 2px solid var(--tn-interactive-accent); outline-offset: 2px; } .tasknotes-plugin .agenda-view__today-button:active { background: var(--tn-interactive-active); transform: translateY(1px); } /* Toggle Controls */ .tasknotes-plugin .agenda-view__toggle { display: flex; align-items: center; gap: var(--tn-spacing-sm); cursor: var(--cursor); user-select: none; font-size: var(--tn-font-size-md); color: var(--tn-text-normal); padding: var(--tn-spacing-sm); border-radius: var(--tn-radius-sm); transition: background-color var(--tn-transition-fast); } .tasknotes-plugin .agenda-view__toggle:hover { background: var(--tn-interactive-hover); } /* Content Area */ .tasknotes-plugin .agenda-view__content { display: flex; flex-direction: column; gap: var(--tn-spacing-sm); flex: 1; min-height: 0; } /* Loading Indicator */ .tasknotes-plugin .agenda-view__loading { display: flex; align-items: center; justify-content: center; gap: var(--tn-spacing-sm); padding: var(--tn-spacing-lg); color: var(--tn-text-muted); font-size: var(--tn-font-size-md); font-style: italic; font-weight: 400; background: var(--tn-bg-secondary); border: 1px solid var(--tn-border-color); border-radius: var(--tn-radius-md); margin-bottom: var(--tn-spacing-md); box-shadow: var(--tn-shadow-light); } .tasknotes-plugin .agenda-view__loading::before { content: ''; width: 16px; height: 16px; border: 2px solid color-mix(in srgb, var(--tn-text-muted) 0.3, transparent); border-top: 2px solid var(--tn-text-muted); border-radius: 50%; animation: spin 1s linear infinite; flex-shrink: 0; } /* Day Section */ .tasknotes-plugin .agenda-view__day { margin-bottom: var(--tn-spacing-md); } .tasknotes-plugin .agenda-view__day-header { display: flex; align-items: center; justify-content: flex-start; gap: var(--tn-spacing-sm); padding: var(--tn-spacing-md) 0 var(--tn-spacing-sm); margin-bottom: var(--tn-spacing-sm); border-bottom: 1px solid var(--tn-border-color); position: relative; cursor: var(--cursor); } /* Day section container (like task groups) */ .tasknotes-plugin .agenda-view__day-section { margin-bottom: var(--tn-spacing-md); } /* Day items container */ .tasknotes-plugin .agenda-view__day-items { display: flex; flex-direction: column; gap: var(--tn-spacing-xs); } /* Collapsed state */ .tasknotes-plugin .agenda-view__day-section.is-collapsed .agenda-view__day-items { display: none; } /* Chevron/toggle styles for agenda day headers (consistent with TaskList view) */ .tasknotes-plugin .agenda-view__day-header .task-group-toggle { display: contents; align-items: center; justify-content: center; width: 20px; height: 20px; margin-right: var(--tn-spacing-xs); border: none; background: transparent; color: var(--tn-text-normal); font-size: 14px; line-height: 1; } .tasknotes-plugin .agenda-view__day-header .task-group-toggle svg, .tasknotes-plugin .agenda-view__day-header .task-group-toggle .chevron, .tasknotes-plugin .agenda-view__day-header .task-group-toggle .chevron path { color: var(--tn-text-normal); } .tasknotes-plugin .agenda-view__day-header .task-group-toggle svg, .tasknotes-plugin .agenda-view__day-header .task-group-toggle .chevron path { stroke: currentColor; } .tasknotes-plugin .agenda-view__day-header .task-group-toggle .chevron { transition: transform var(--tn-transition-fast); } .tasknotes-plugin .agenda-view__day-section .task-group-toggle .chevron, .tasknotes-plugin .agenda-view__day-section .task-group-toggle svg { transform: rotate(90deg); } .tasknotes-plugin .agenda-view__day-section.is-collapsed .task-group-toggle svg, .tasknotes-plugin .agenda-view__day-section.is-collapsed .task-group-toggle .chevron { transform: rotate(0deg); } .tasknotes-plugin .agenda-view__day-header-text { display: flex; align-items: center; gap: var(--tn-spacing-sm); } .tasknotes-plugin .agenda-view__day-name { font-size: var(--tn-font-size-lg); font-weight: var(--tn-font-weight-medium); color: var(--tn-text-normal); letter-spacing: 0.01em; line-height: 1.4; } .tasknotes-plugin .agenda-view__day-name--today { background: var(--tn-interactive-accent); color: var(--tn-bg-primary); padding: var(--tn-spacing-xs) var(--tn-spacing-md); border-radius: var(--tn-radius-md); font-size: var(--tn-font-size-sm); font-weight: var(--tn-font-weight-medium); text-transform: uppercase; letter-spacing: 0.1em; line-height: 1.2; display: inline-flex; align-items: center; justify-content: center; min-width: 60px; min-height: 28px; box-shadow: var(--tn-shadow-light); } .tasknotes-plugin .agenda-view__day-date { font-size: var(--tn-font-size-md); color: var(--tn-text-muted); font-weight: 400; letter-spacing: 0.01em; } .tasknotes-plugin .agenda-view__item-count { background: none; color: var(--text-muted); border: none; border-radius: 0; padding: 0; font-size: var(--tn-font-size-xs); font-weight: var(--tn-font-weight-medium); line-height: 1.2; display: inline-flex; margin-left: auto; align-items: center; justify-content: center; min-width: 24px; min-height: 24px; text-align: center; } /* Day Content */ .tasknotes-plugin .agenda-view__day-content { display: flex; flex-direction: column; gap: var(--tn-spacing-xs); } .tasknotes-plugin .agenda-view__day-content--flat { gap: var(--tn-spacing-xs); } /* Empty States */ .tasknotes-plugin .agenda-view__empty { padding: var(--tn-spacing-xl) var(--tn-spacing-lg); text-align: center; background: var(--tn-bg-secondary); border: 1px solid var(--tn-border-color); border-radius: var(--tn-radius-md); margin: var(--tn-spacing-lg) 0; box-shadow: var(--tn-shadow-light); } .tasknotes-plugin .agenda-view__empty-title { margin: 0 0 var(--tn-spacing-md) 0; color: var(--tn-text-normal); font-size: var(--tn-font-size-lg); font-weight: var(--tn-font-weight-medium); line-height: 1.3; } .tasknotes-plugin .agenda-view__empty-description { margin: 0 0 var(--tn-spacing-md) 0; color: var(--tn-text-muted); font-size: var(--tn-font-size-md); line-height: 1.5; font-weight: 400; } .tasknotes-plugin .agenda-view__empty-description:last-child { margin-bottom: 0; } .tasknotes-plugin .agenda-view__empty-tip { font-style: italic; font-size: var(--tn-font-size-md); color: var(--tn-text-muted); margin-top: var(--tn-spacing-sm); } .tasknotes-plugin .agenda-view__empty-tip span { font-weight: var(--tn-font-weight-medium); color: var(--tn-text-normal); font-style: normal; } /* Error States */ .tasknotes-plugin .agenda-view__error { padding: var(--tn-spacing-lg); text-align: center; color: var(--tn-color-error); background: color-mix(in srgb, var(--tn-color-error) 0.05, var(--tn-bg-secondary)); border: 1px solid color-mix(in srgb, var(--tn-color-error) 0.3, transparent); border-radius: var(--tn-radius-md); font-size: var(--tn-font-size-md); font-weight: var(--tn-font-weight-medium); line-height: 1.5; box-shadow: var(--tn-shadow-light); } .tasknotes-plugin .agenda-view .tasks-container { margin-bottom: var(--tn-spacing-xs); } /* Note Date Display in Flat List */ .tasknotes-plugin .agenda-view__note-date { display: inline-block; margin-left: var(--tn-spacing-sm); padding: var(--tn-spacing-xs) var(--tn-spacing-sm); background: var(--tn-bg-secondary); border-radius: var(--tn-radius-sm); font-size: var(--tn-font-size-xs); color: var(--tn-text-muted); font-weight: var(--tn-font-weight-medium); } /* Responsive Design */ @media (max-width: 768px) { .tasknotes-plugin .agenda-view { padding: var(--tn-spacing-xs); } .tasknotes-plugin .agenda-view__header-content { flex-direction: column; gap: var(--tn-spacing-md); } .tasknotes-plugin .agenda-view__title-section { order: -1; margin: 0; } .tasknotes-plugin .agenda-view__period-title { font-size: var(--tn-font-size-lg); } .tasknotes-plugin .agenda-view__nav-section, .tasknotes-plugin .agenda-view__actions-section { justify-content: center; } .tasknotes-plugin .agenda-view__nav-button { width: 36px; height: 36px; font-size: 1.1rem; } .tasknotes-plugin .agenda-view__settings { flex-direction: column; align-items: stretch; gap: var(--tn-spacing-sm); } .tasknotes-plugin .agenda-view__settings-left, .tasknotes-plugin .agenda-view__settings-right { justify-content: space-between; width: 100%; } .tasknotes-plugin .agenda-view__settings-right { gap: var(--tn-spacing-sm); } .tasknotes-plugin .agenda-view__day-header { flex-direction: column; align-items: flex-start; gap: var(--tn-spacing-xs); } .tasknotes-plugin .agenda-view__day-header-text { width: 100%; justify-content: space-between; } .tasknotes-plugin .agenda-view__item-count { align-self: flex-end; } } @media (max-width: 480px) { .tasknotes-plugin .agenda-view__header-content { gap: var(--tn-spacing-xs); } .tasknotes-plugin .agenda-view__period-title { font-size: var(--tn-font-size-md); min-width: 120px; } .tasknotes-plugin .agenda-view__nav-button { width: 32px; height: 32px; font-size: 1rem; } .tasknotes-plugin .agenda-view__settings-left, .tasknotes-plugin .agenda-view__settings-right { flex-direction: column; align-items: stretch; } .tasknotes-plugin .agenda-view__toggle { justify-content: space-between; } } /* ===== POMODORO-VIEW.CSS ===== */ /* ================================================ POMODORO VIEW - BEM STRUCTURE ================================================ */ /* Pomodoro View Container - Root Block */ .tasknotes-plugin .pomodoro-view { padding: var(--tn-spacing-xl); display: flex; flex-direction: column; height: 100%; overflow-y: auto; gap: var(--tn-spacing-xl); max-width: 100%; align-items: center; justify-content: center; background: var(--tn-bg-primary); min-height: 100vh; button { cursor: var(--cursor); } } /* ================================================ TIMER SECTION - Main Timer Display ================================================ */ /* Timer Section Container */ .tasknotes-plugin .pomodoro-view__timer-section { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--tn-spacing-md); padding: var(--tn-spacing-lg) 0; width: 100%; max-width: 500px; margin: 0 auto; } /* Progress Circle Container */ .tasknotes-plugin .pomodoro-view__progress-container { position: relative; display: flex; align-items: center; justify-content: center; width: 300px; height: 300px; margin: 0 auto; } /* Progress SVG */ .tasknotes-plugin .pomodoro-view__progress-svg { width: 100%; height: 100%; transform: rotate(-90deg); overflow: visible; } /* Progress Circle Elements */ .tasknotes-plugin .pomodoro-view__progress-circle { transition: stroke-dashoffset 0.5s ease; stroke: var(--tn-interactive-accent); stroke-width: 6; fill: none; } .tasknotes-plugin .pomodoro-view__progress-circle--work { stroke: var(--tn-status-in-progress-color, var(--tn-interactive-accent)); } .tasknotes-plugin .pomodoro-view__progress-circle--short-break { stroke: var(--tn-priority-medium-color, var(--tn-color-success)); } .tasknotes-plugin .pomodoro-view__progress-circle--long-break { stroke: var(--tn-priority-high-color, var(--tn-interactive-accent)); } .tasknotes-plugin .pomodoro-view__progress-circle--warning { stroke: var(--tn-color-error) !important; animation: tn-progress-pulse 1s infinite; } @keyframes tn-progress-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.6; } } /* Timer Display Overlay */ .tasknotes-plugin .pomodoro-view__timer-overlay { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); display: flex; flex-direction: column; align-items: center; gap: var(--tn-spacing-xs); pointer-events: none; } /* Timer Display */ .tasknotes-plugin .pomodoro-view__timer-display { font-size: 3.5rem; color: var(--tn-text-normal); text-align: center; font-family: var(--tn-font-mono); letter-spacing: 0.05em; transition: color var(--tn-transition-fast); font-weight: var(--tn-font-weight-bold); margin-bottom: var(--tn-spacing-md); } .tasknotes-plugin .pomodoro-view__timer-display--warning { color: var(--tn-color-error); animation: tn-timer-pulse 2s infinite; } @keyframes tn-timer-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.7; } } /* Status Display */ .tasknotes-plugin .pomodoro-view__status { font-size: var(--tn-font-size-xl); font-weight: var(--tn-font-weight-medium); text-align: center; color: var(--tn-text-muted); text-transform: capitalize; margin-bottom: var(--tn-spacing-lg); order: -1; } .tasknotes-plugin .pomodoro-view__status--work { color: var(--tn-status-in-progress-color, var(--tn-interactive-accent)); } .tasknotes-plugin .pomodoro-view__status--short-break { color: var(--tn-priority-medium-color, var(--tn-color-success)); } .tasknotes-plugin .pomodoro-view__status--long-break { color: var(--tn-priority-high-color, var(--tn-interactive-accent)); } .tasknotes-plugin .pomodoro-view__status--paused { color: var(--tn-color-warning); } /* ================================================ TASK DISPLAY SECTION ================================================ */ /* Task Display Container */ .tasknotes-plugin .pomodoro-view__task-display { min-height: 40px; min-width: 200px; width: auto; max-width: 400px; margin: 0 auto; display: flex; align-items: center; justify-content: center; padding: var(--tn-spacing-sm); background: transparent; border-radius: var(--tn-radius-sm); border: none; overflow: hidden; max-height: 100px; opacity: 1; transform: translateY(0); transition: all var(--tn-transition-medium); } /* Hide task display when empty with slide animation */ .tasknotes-plugin .pomodoro-view__task-display:empty { max-height: 0; opacity: 0; transform: translateY(-20px); margin: 0 auto; padding: 0 var(--tn-spacing-md); min-height: 0; } .tasknotes-plugin .pomodoro-view__task-display--no-task { max-height: 0; opacity: 0; transform: translateY(-20px); margin: 0 auto; padding: 0 var(--tn-spacing-md); min-height: 0; } /* Current Task Content */ .tasknotes-plugin .pomodoro-view__current-task { display: flex; flex-direction: column; align-items: center; gap: var(--tn-spacing-xs); text-align: center; } .tasknotes-plugin .pomodoro-view__task-title { font-size: var(--tn-font-size-md); color: var(--tn-text-muted); font-weight: var(--tn-font-weight-medium); max-width: 400px; word-wrap: break-word; text-align: center; } /* ================================================ TASK SELECTOR SECTION ================================================ */ /* Task Selector Container */ .tasknotes-plugin .pomodoro-view__task-selector { display: flex; flex-direction: column; align-items: center; gap: var(--tn-spacing-md); max-width: 500px; width: 100%; margin: 0 auto; padding: 0; } /* Task Buttons Container */ .tasknotes-plugin .pomodoro-view__task-buttons { display: flex; gap: var(--tn-spacing-sm); align-items: center; justify-content: center; flex-wrap: nowrap; width: 100%; } /* Use consistent button system for task select button */ .tasknotes-plugin .pomodoro-view__task-select-button { background: transparent; color: var(--tn-text-normal); border: none; box-shadow: none; flex: 1; white-space: nowrap; } .tasknotes-plugin .pomodoro-view__task-select-button:hover { background: var(--tn-interactive-hover); border: none; box-shadow: none; } .tasknotes-plugin .pomodoro-view__task-select-button--no-task { color: var(--tn-text-muted); font-style: italic; } /* Use consistent button system for task clear button */ .tasknotes-plugin .pomodoro-view__task-clear-button { background: transparent; color: var(--tn-text-normal); border: none; box-shadow: none; flex: 1; white-space: nowrap; } .tasknotes-plugin .pomodoro-view__task-clear-button:hover { background: var(--tn-interactive-hover); border: none; box-shadow: none; } .tasknotes-plugin .pomodoro-view__task-clear-button--hidden { display: none; } /* Task Card Container */ .tasknotes-plugin .pomodoro-view__task-card-container { width: 100%; max-width: 500px; margin: 0 auto; } .tasknotes-plugin .pomodoro-view__task-card-container--empty { display: none; } /* Task card styling within pomodoro view */ .tasknotes-plugin .pomodoro-view__task-card-container .task-card { margin: 0; border-radius: var(--tn-radius-lg); box-shadow: none; transition: none; } .tasknotes-plugin .pomodoro-view__task-card-container .task-card:hover { /* No hover effects - keep task card static */ } /* ================================================ CONTROL SECTION - Main Controls Container ================================================ */ /* Control Section Container */ .tasknotes-plugin .pomodoro-view__control-section { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--tn-spacing-md); padding: var(--tn-spacing-md); border: none; margin: 0 auto; width: 100%; max-width: 400px; } /* Primary Controls Container */ .tasknotes-plugin .pomodoro-view__primary-controls { display: flex; justify-content: center; align-items: center; gap: var(--tn-spacing-md); padding: var(--tn-spacing-sm) 0; min-height: var(--tn-button-height-lg); width: 100%; flex-wrap: wrap; } /* Primary Control Buttons */ /* Use consistent button system with primary accent background preserved */ .tasknotes-plugin .pomodoro-view__start-button { background: var(--tn-interactive-accent); color: var(--text-on-accent); border: none; box-shadow: none; min-width: 200px; } .tasknotes-plugin .pomodoro-view__start-button:hover { background: var(--tn-interactive-accent-hover); box-shadow: none; } /* Remove all borders and shadows from other pomodoro buttons */ .tasknotes-plugin .pomodoro-view__pause-button, .tasknotes-plugin .pomodoro-view__stop-button, .tasknotes-plugin .pomodoro-view__skip-break-button, .tasknotes-plugin .pomodoro-view__time-adjust-button { border: none; box-shadow: none; } .tasknotes-plugin .pomodoro-view__pause-button:hover, .tasknotes-plugin .pomodoro-view__stop-button:hover, .tasknotes-plugin .pomodoro-view__skip-break-button:hover, .tasknotes-plugin .pomodoro-view__time-adjust-button:hover { box-shadow: none; } .tasknotes-plugin .pomodoro-view__pause-button { min-width: 200px; } .tasknotes-plugin .pomodoro-view__stop-button { min-width: 120px; } /* Skip Break Button */ .tasknotes-plugin .pomodoro-view__skip-break-button { min-width: 120px; } /* Time Adjustment Controls */ .tasknotes-plugin .pomodoro-view__time-controls { display: flex; gap: var(--tn-spacing-md); align-items: center; justify-content: center; margin-top: var(--tn-spacing-sm); pointer-events: auto; /* Re-enable pointer events for the buttons */ } /* Use consistent button system for time adjust buttons */ .tasknotes-plugin .pomodoro-view__time-adjust-button { width: 28px; height: 28px; border-radius: 50%; background: transparent; color: var(--tn-text-normal); border: none; box-shadow: none; } .tasknotes-plugin .pomodoro-view__time-adjust-button:hover { background: var(--tn-interactive-hover); border: none; box-shadow: none; } .tasknotes-plugin .pomodoro-view__time-adjust-button:focus { outline: none; } /* Button States */ .tasknotes-plugin .pomodoro-view__start-button--loading { opacity: 0.7; cursor: not-allowed; } .tasknotes-plugin .pomodoro-view__start-button--hidden, .tasknotes-plugin .pomodoro-view__pause-button--hidden, .tasknotes-plugin .pomodoro-view__stop-button--hidden, .tasknotes-plugin .pomodoro-view__skip-break-button--hidden, .tasknotes-plugin .pomodoro-view__time-adjust-button--hidden { display: none; } /* ================================================ STATISTICS SECTION ================================================ */ /* Statistics Section Container */ .tasknotes-plugin .pomodoro-view__stats-section { border: none; padding: var(--tn-spacing-md) 0; width: 100%; max-width: 300px; margin: 0 auto; box-sizing: border-box; } /* Statistics Grid */ .tasknotes-plugin .pomodoro-view__stats { display: flex; justify-content: center; align-items: center; gap: var(--tn-spacing-sm); } /* Individual Stat */ .tasknotes-plugin .pomodoro-view__stat { display: flex; align-items: center; gap: var(--tn-spacing-xs); padding: 0; background: transparent; border: none; text-align: center; } .tasknotes-plugin .pomodoro-view__stat--clickable { cursor: var(--cursor); padding: var(--tn-spacing-xs); border-radius: var(--tn-radius-sm); transition: all var(--tn-transition-fast); } .tasknotes-plugin .pomodoro-view__stat--clickable:hover { background: var(--tn-interactive-hover); border: none; box-shadow: none; } .tasknotes-plugin .pomodoro-view__stat-value { font-size: var(--tn-font-size-lg); font-weight: var(--tn-font-weight-bold); color: var(--tn-interactive-accent); margin: 0; } .tasknotes-plugin .pomodoro-view__stat-label { font-size: var(--tn-font-size-sm); color: var(--tn-text-muted); font-weight: var(--tn-font-weight-medium); margin: 0; } /* ================================================ RESPONSIVE DESIGN ================================================ */ @media (max-width: 768px) { .tasknotes-plugin .pomodoro-view { padding: var(--tn-spacing-md); gap: var(--tn-spacing-md); } .tasknotes-plugin .pomodoro-view__progress-container { width: 250px; height: 250px; } .tasknotes-plugin .pomodoro-view__timer-display { font-size: 2.5rem; } .tasknotes-plugin .pomodoro-view__control-section { gap: var(--tn-spacing-md); padding: var(--tn-spacing-md); max-width: 100%; } .tasknotes-plugin .pomodoro-view__primary-controls { flex-direction: column; align-items: center; gap: var(--tn-spacing-sm); } .tasknotes-plugin .pomodoro-view__start-button, .tasknotes-plugin .pomodoro-view__pause-button, .tasknotes-plugin .pomodoro-view__stop-button { width: 100%; max-width: 250px; } .tasknotes-plugin .pomodoro-view__stats { flex-direction: column; gap: var(--tn-spacing-xs); } } @media (max-width: 480px) { .tasknotes-plugin .pomodoro-view__progress-container { width: 200px; height: 200px; } .tasknotes-plugin .pomodoro-view__timer-display { font-size: 2rem; } } /* ================================================ ACCESSIBILITY & REDUCED MOTION ================================================ */ @media (prefers-reduced-motion: reduce) { .tasknotes-plugin .pomodoro-view__progress-circle, .tasknotes-plugin .pomodoro-view__timer-display, .tasknotes-plugin .pomodoro-view__task-display { transition: none; } .tasknotes-plugin .pomodoro-view__progress-circle--warning, .tasknotes-plugin .pomodoro-view__timer-display--warning { animation: none; } } /* Focus indicators for keyboard navigation */ .tasknotes-plugin .pomodoro-view__start-button:focus, .tasknotes-plugin .pomodoro-view__pause-button:focus, .tasknotes-plugin .pomodoro-view__stop-button:focus, .tasknotes-plugin .pomodoro-view__skip-break-button:focus { outline: 2px solid var(--tn-interactive-accent); outline-offset: 2px; } /* Time adjust buttons have their own focus styling above */ /* ================================================ RESPONSIVE DESIGN - Mobile & Narrow Panes ================================================ */ /* Extra responsive breakpoints for very granular control */ .tasknotes-plugin .pomodoro-view--tiny { padding: var(--tn-spacing-sm); gap: var(--tn-spacing-sm); } .tasknotes-plugin .pomodoro-view.pomodoro-view--tiny .pomodoro-view__timer-overlay .pomodoro-view__timer-display { font-size: 2rem !important; font-weight: 700 !important; } .tasknotes-plugin .pomodoro-view--extra-narrow { padding: var(--tn-spacing-md); gap: var(--tn-spacing-sm); } .tasknotes-plugin .pomodoro-view.pomodoro-view--extra-narrow .pomodoro-view__timer-overlay .pomodoro-view__timer-display { font-size: 2.2rem !important; font-weight: 650 !important; } /* Very narrow view (≤ 300px) - Minimal layout */ .tasknotes-plugin .pomodoro-view--very-narrow { padding: var(--tn-spacing-md); gap: var(--tn-spacing-md); } .tasknotes-plugin .pomodoro-view--very-narrow .pomodoro-view__status { font-size: var(--tn-font-size-sm); margin-bottom: var(--tn-spacing-xs); } .tasknotes-plugin .pomodoro-view--very-narrow .pomodoro-view__timer-section { padding: var(--tn-spacing-sm) 0; } .tasknotes-plugin .pomodoro-view.pomodoro-view--very-narrow .pomodoro-view__timer-overlay .pomodoro-view__timer-display { font-size: 2.5rem !important; font-weight: 600 !important; } .tasknotes-plugin .pomodoro-view--very-narrow .pomodoro-view__time-controls { gap: var(--tn-spacing-sm); } .tasknotes-plugin .pomodoro-view--very-narrow .pomodoro-view__time-adjust-button { width: 32px; height: 32px; font-size: var(--tn-font-size-lg); } .tasknotes-plugin .pomodoro-view--very-narrow .pomodoro-view__task-selector { gap: var(--tn-spacing-sm); } .tasknotes-plugin .pomodoro-view--very-narrow .pomodoro-view__task-buttons { flex-direction: column; gap: var(--tn-spacing-xs); } .tasknotes-plugin .pomodoro-view--very-narrow .pomodoro-view__task-select-button, .tasknotes-plugin .pomodoro-view--very-narrow .pomodoro-view__task-clear-button { font-size: var(--tn-font-size-sm); padding: var(--tn-spacing-xs) var(--tn-spacing-sm); } .tasknotes-plugin .pomodoro-view--very-narrow .pomodoro-view__primary-controls { flex-direction: column; gap: var(--tn-spacing-xs); } .tasknotes-plugin .pomodoro-view--very-narrow .pomodoro-view__start-button, .tasknotes-plugin .pomodoro-view--very-narrow .pomodoro-view__pause-button, .tasknotes-plugin .pomodoro-view--very-narrow .pomodoro-view__stop-button { width: 100%; max-width: 200px; font-size: var(--tn-font-size-sm); padding: var(--tn-spacing-sm); } .tasknotes-plugin .pomodoro-view--very-narrow .pomodoro-view__skip-break-button { font-size: var(--tn-font-size-sm); padding: var(--tn-spacing-xs) var(--tn-spacing-sm); } .tasknotes-plugin .pomodoro-view--very-narrow .pomodoro-view__stats { font-size: var(--tn-font-size-xs); } /* Narrow view (≤ 400px) - Compact layout */ .tasknotes-plugin .pomodoro-view--narrow { padding: var(--tn-spacing-lg); gap: var(--tn-spacing-lg); } .tasknotes-plugin .pomodoro-view.pomodoro-view--narrow .pomodoro-view__timer-overlay .pomodoro-view__timer-display { font-size: 3rem !important; font-weight: 600 !important; } .tasknotes-plugin .pomodoro-view--narrow .pomodoro-view__time-controls { gap: var(--tn-spacing-md); } .tasknotes-plugin .pomodoro-view--narrow .pomodoro-view__time-adjust-button { width: 36px; height: 36px; } .tasknotes-plugin .pomodoro-view--narrow .pomodoro-view__task-buttons { flex-direction: column; gap: var(--tn-spacing-sm); } .tasknotes-plugin .pomodoro-view--narrow .pomodoro-view__primary-controls { gap: var(--tn-spacing-sm); } .tasknotes-plugin .pomodoro-view--narrow .pomodoro-view__start-button, .tasknotes-plugin .pomodoro-view--narrow .pomodoro-view__pause-button, .tasknotes-plugin .pomodoro-view--narrow .pomodoro-view__stop-button { font-size: var(--tn-font-size-md); padding: var(--tn-spacing-sm) var(--tn-spacing-md); } /* Small view (≤ 400px) - Enhanced compact layout */ .tasknotes-plugin .pomodoro-view--small { padding: var(--tn-spacing-lg); gap: var(--tn-spacing-md); } .tasknotes-plugin .pomodoro-view.pomodoro-view--small .pomodoro-view__timer-overlay .pomodoro-view__timer-display { font-size: 3.2rem !important; font-weight: 550 !important; } .tasknotes-plugin .pomodoro-view--small .pomodoro-view__primary-controls { gap: var(--tn-spacing-sm); } /* Medium-small view (≤ 500px) - Transitional layout */ .tasknotes-plugin .pomodoro-view--medium-small { padding: var(--tn-spacing-lg); gap: var(--tn-spacing-lg); } .tasknotes-plugin .pomodoro-view.pomodoro-view--medium-small .pomodoro-view__timer-overlay .pomodoro-view__timer-display { font-size: 3.6rem !important; font-weight: 500 !important; } /* Medium view (≤ 600px) - Standard responsive adjustments */ .tasknotes-plugin .pomodoro-view--medium { padding: var(--tn-spacing-xl); gap: var(--tn-spacing-xl); } .tasknotes-plugin .pomodoro-view.pomodoro-view--medium .pomodoro-view__timer-overlay .pomodoro-view__timer-display { font-size: 4rem !important; font-weight: 500 !important; } .tasknotes-plugin .pomodoro-view--medium .pomodoro-view__task-buttons { gap: var(--tn-spacing-md); } /* Wide view (> 600px) - Enhanced layout */ .tasknotes-plugin .pomodoro-view--wide { padding: var(--tn-spacing-xl); gap: var(--tn-spacing-xl); } .tasknotes-plugin .pomodoro-view.pomodoro-view--wide .pomodoro-view__timer-overlay .pomodoro-view__timer-display { font-size: 4.5rem !important; font-weight: 400 !important; } /* Task card responsiveness */ .tasknotes-plugin .pomodoro-view--very-narrow .task-card, .tasknotes-plugin .pomodoro-view--narrow .task-card { font-size: var(--tn-font-size-sm); } .tasknotes-plugin .pomodoro-view--very-narrow .task-card__metadata, .tasknotes-plugin .pomodoro-view--narrow .task-card__metadata { font-size: var(--tn-font-size-xs); } /* Hide less essential elements in very narrow views */ .tasknotes-plugin .pomodoro-view--very-narrow .task-card__context-menu { display: none; } /* Adjust progress circle stroke width for small sizes */ .tasknotes-plugin .pomodoro-view--very-narrow .pomodoro-view__progress-circle { stroke-width: 3; } .tasknotes-plugin .pomodoro-view--narrow .pomodoro-view__progress-circle { stroke-width: 4; } /* ===== POMODORO-STATS-VIEW.CSS ===== */ /* ================================================ POMODORO STATS VIEW - BEM STRUCTURE ================================================ */ /* Pomodoro Stats View Container - Root Block */ .tasknotes-plugin .pomodoro-stats-view { padding: var(--tn-spacing-lg); max-width: 100%; display: flex; flex-direction: column; gap: var(--tn-spacing-xl); height: 100%; overflow-y: auto; } /* ================================================ STATS VIEW HEADER ================================================ */ /* Stats Header Container */ .tasknotes-plugin .pomodoro-stats-view__header { display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid var(--tn-border-color); padding-bottom: var(--tn-spacing-md); } .tasknotes-plugin .pomodoro-stats-view__title { font-size: var(--tn-font-size-xl); font-weight: var(--tn-font-weight-semibold); color: var(--tn-text-normal); margin: 0; } .tasknotes-plugin .pomodoro-stats-view__refresh-button { background: transparent; color: var(--tn-text-normal); border: none; box-shadow: none; font-size: var(--tn-font-size-sm); font-weight: var(--tn-font-weight-medium); } .tasknotes-plugin .pomodoro-stats-view__refresh-button:hover { background: var(--tn-interactive-hover); } /* ================================================ STATS SECTIONS ================================================ */ /* Stats Section Container */ .tasknotes-plugin .pomodoro-stats-view__section { display: flex; flex-direction: column; gap: var(--tn-spacing-md); } .tasknotes-plugin .pomodoro-stats-view__section-title { font-size: var(--tn-font-size-lg); font-weight: var(--tn-font-weight-semibold); color: var(--tn-text-normal); margin: 0; padding-bottom: var(--tn-spacing-xs); border-bottom: 1px solid var(--tn-border-color); } /* ================================================ OVERVIEW GRID ================================================ */ /* Overview Grid Container - Like TickTick */ .tasknotes-plugin .pomodoro-stats-view__overview-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: var(--tn-spacing-lg); } /* Overview Card - Larger than regular stat cards */ .tasknotes-plugin .pomodoro-stats-view__overview-card { display: flex; flex-direction: column; align-items: flex-start; padding: var(--tn-spacing-xl); background: var(--tn-bg-secondary); border-radius: var(--tn-radius-lg); border: 1px solid var(--tn-border-color); transition: all var(--tn-transition-fast); min-height: 120px; justify-content: center; } .tasknotes-plugin .pomodoro-stats-view__overview-card:hover { transform: translateY(-2px); box-shadow: var(--tn-shadow-medium); } /* Overview Card Elements */ .tasknotes-plugin .pomodoro-stats-view__overview-value { font-size: 2.5rem; font-weight: var(--tn-font-weight-bold); color: var(--tn-interactive-accent); margin-bottom: var(--tn-spacing-xs); line-height: 1; } .tasknotes-plugin .pomodoro-stats-view__overview-label { font-size: var(--tn-font-size-md); color: var(--tn-text-normal); font-weight: var(--tn-font-weight-semibold); margin-bottom: var(--tn-spacing-xs); line-height: 1.2; } .tasknotes-plugin .pomodoro-stats-view__overview-change { font-size: var(--tn-font-size-sm); font-weight: var(--tn-font-weight-medium); line-height: 1.2; } .tasknotes-plugin .pomodoro-stats-view__overview-change.positive { color: var(--tn-status-done-color, #10B981); } .tasknotes-plugin .pomodoro-stats-view__overview-change.negative { color: var(--tn-color-error); } /* ================================================ STATS GRID ================================================ */ /* Stats Grid Container */ .tasknotes-plugin .pomodoro-stats-view__stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: var(--tn-spacing-md); } /* Individual Stat Card */ .tasknotes-plugin .pomodoro-stats-view__stat-card { display: flex; flex-direction: column; align-items: center; padding: var(--tn-spacing-lg); background: var(--tn-bg-secondary); border-radius: var(--tn-radius-lg); border: 1px solid var(--tn-border-color); text-align: center; transition: all var(--tn-transition-fast); } .tasknotes-plugin .pomodoro-stats-view__stat-card:hover { transform: translateY(-2px); box-shadow: var(--tn-shadow-medium); } /* Stat Card Elements */ .tasknotes-plugin .pomodoro-stats-view__stat-value { font-size: 2rem; font-weight: var(--tn-font-weight-bold); color: var(--tn-interactive-accent); margin-bottom: var(--tn-spacing-sm); line-height: 1; } .tasknotes-plugin .pomodoro-stats-view__stat-label { font-size: var(--tn-font-size-sm); color: var(--tn-text-muted); font-weight: var(--tn-font-weight-medium); text-transform: uppercase; letter-spacing: 0.05em; line-height: 1.2; } /* ================================================ RECENT SESSIONS ================================================ */ /* Recent Sessions Container */ .tasknotes-plugin .pomodoro-stats-view__recent-sessions { display: flex; flex-direction: column; gap: var(--tn-spacing-sm); max-height: 400px; overflow-y: auto; } /* No Sessions State */ .tasknotes-plugin .pomodoro-stats-view__no-sessions { padding: var(--tn-spacing-xl); text-align: center; color: var(--tn-text-muted); font-style: italic; background: var(--tn-bg-secondary); border-radius: var(--tn-radius-md); border: 1px solid var(--tn-border-color); } /* ================================================ SESSION ITEM ================================================ */ /* Session Item Container */ .tasknotes-plugin .pomodoro-stats-view__session-item { display: grid; grid-template-columns: auto auto auto 1fr; gap: var(--tn-spacing-md); align-items: center; padding: var(--tn-spacing-md); background: var(--tn-bg-secondary); border-radius: var(--tn-radius-sm); border: 1px solid var(--tn-border-color); transition: background-color var(--tn-transition-fast); } .tasknotes-plugin .pomodoro-stats-view__session-item:hover { background: var(--tn-interactive-hover); } /* Session Item Elements */ .tasknotes-plugin .pomodoro-stats-view__session-date { font-size: var(--tn-font-size-sm); color: var(--tn-text-muted); font-weight: var(--tn-font-weight-medium); min-width: 100px; font-family: var(--tn-font-mono); } .tasknotes-plugin .pomodoro-stats-view__session-duration { font-size: var(--tn-font-size-sm); color: var(--tn-text-normal); font-weight: var(--tn-font-weight-semibold); font-family: var(--tn-font-mono); min-width: 60px; } /* Session Status Badge */ .tasknotes-plugin .pomodoro-stats-view__session-status { font-size: var(--tn-font-size-xs); font-weight: var(--tn-font-weight-semibold); text-transform: uppercase; letter-spacing: 0.05em; padding: var(--tn-spacing-xs) var(--tn-spacing-sm); border-radius: var(--tn-radius-sm); min-width: 80px; text-align: center; } .tasknotes-plugin .pomodoro-stats-view__session-status--completed { background: var(--tn-status-done-color, #10B981); color: var(--tn-bg-primary); } .tasknotes-plugin .pomodoro-stats-view__session-status--interrupted { background: var(--tn-color-error); color: var(--tn-bg-primary); } /* Session Task */ .tasknotes-plugin .pomodoro-stats-view__session-task { font-size: var(--tn-font-size-sm); color: var(--tn-text-normal); font-weight: var(--tn-font-weight-medium); text-align: right; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } /* ================================================ RESPONSIVE DESIGN ================================================ */ @media (max-width: 768px) { .tasknotes-plugin .pomodoro-stats-view { padding: var(--tn-spacing-md); gap: var(--tn-spacing-md); } .tasknotes-plugin .pomodoro-stats-view__header { flex-direction: column; align-items: flex-start; gap: var(--tn-spacing-sm); } .tasknotes-plugin .pomodoro-stats-view__refresh-button { align-self: flex-end; } .tasknotes-plugin .pomodoro-stats-view__overview-grid { grid-template-columns: repeat(2, 1fr); } .tasknotes-plugin .pomodoro-stats-view__stats-grid { grid-template-columns: repeat(2, 1fr); } .tasknotes-plugin .pomodoro-stats-view__session-item { grid-template-columns: 1fr; gap: var(--tn-spacing-sm); text-align: center; } .tasknotes-plugin .pomodoro-stats-view__session-date, .tasknotes-plugin .pomodoro-stats-view__session-duration, .tasknotes-plugin .pomodoro-stats-view__session-task { min-width: auto; text-align: center; } .tasknotes-plugin .pomodoro-stats-view__session-status { justify-self: center; } } @media (max-width: 480px) { .tasknotes-plugin .pomodoro-stats-view { padding: var(--tn-spacing-sm); } .tasknotes-plugin .pomodoro-stats-view__overview-grid { grid-template-columns: 1fr; } .tasknotes-plugin .pomodoro-stats-view__stats-grid { grid-template-columns: 1fr; } .tasknotes-plugin .pomodoro-stats-view__overview-card { padding: var(--tn-spacing-lg); min-height: 100px; } .tasknotes-plugin .pomodoro-stats-view__overview-value { font-size: 2rem; } .tasknotes-plugin .pomodoro-stats-view__stat-card { padding: var(--tn-spacing-md); } .tasknotes-plugin .pomodoro-stats-view__stat-value { font-size: 1.5rem; } .tasknotes-plugin .pomodoro-stats-view__session-item { padding: var(--tn-spacing-sm); } } /* ================================================ ACCESSIBILITY & REDUCED MOTION ================================================ */ @media (prefers-reduced-motion: reduce) { .tasknotes-plugin .pomodoro-stats-view__overview-card, .tasknotes-plugin .pomodoro-stats-view__stat-card, .tasknotes-plugin .pomodoro-stats-view__session-item, .tasknotes-plugin .pomodoro-stats-view__refresh-button { transition: none; } .tasknotes-plugin .pomodoro-stats-view__overview-card:hover, .tasknotes-plugin .pomodoro-stats-view__stat-card:hover { transform: none; } } /* Focus indicators for keyboard navigation */ .tasknotes-plugin .pomodoro-stats-view__refresh-button:focus { outline: 2px solid var(--tn-interactive-accent); outline-offset: 2px; } /* High contrast mode support */ @media (prefers-contrast: high) { .tasknotes-plugin .pomodoro-stats-view__overview-card, .tasknotes-plugin .pomodoro-stats-view__stat-card, .tasknotes-plugin .pomodoro-stats-view__session-item { border-width: 2px; } .tasknotes-plugin .pomodoro-stats-view__session-status { border: 2px solid currentColor; } } /* ===== STATS-VIEW.CSS ===== */ /* ================================================ STATISTICS VIEW - BEM STRUCTURE ================================================ */ /* Statistics View Container - Root Block */ .tasknotes-plugin .stats-view { padding: var(--tn-spacing-lg); max-width: 100%; display: flex; flex-direction: column; gap: var(--tn-spacing-xl); height: 100%; overflow-y: auto; } /* ================================================ STATS VIEW HEADER ================================================ */ /* Stats Header Container */ .tasknotes-plugin .stats-view__header { display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid var(--tn-border-color); padding-bottom: var(--tn-spacing-md); } .tasknotes-plugin .stats-view__title { font-size: var(--tn-font-size-xl); font-weight: var(--tn-font-weight-semibold); color: var(--tn-text-normal); margin: 0; } .tasknotes-plugin .stats-view__refresh-button { background: transparent; color: var(--tn-text-normal); border: none; box-shadow: none; font-size: var(--tn-font-size-sm); font-weight: var(--tn-font-weight-medium); } .tasknotes-plugin .stats-view__refresh-button:hover { background: var(--tn-interactive-hover); } /* ================================================ STATS VIEW SECTIONS ================================================ */ /* Section Container */ .tasknotes-plugin .stats-view__section { display: flex; flex-direction: column; gap: var(--tn-spacing-md); } .tasknotes-plugin .stats-view__section .setting-item { border: none; padding: 0; margin: 0; } .tasknotes-plugin .stats-view__section .setting-item-name { font-size: var(--tn-font-size-lg); font-weight: var(--tn-font-weight-semibold); color: var(--tn-text-normal); margin-bottom: var(--tn-spacing-sm); } /* ================================================ OVERVIEW GRID ================================================ */ /* Overview Grid Layout */ .tasknotes-plugin .stats-view__overview-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: var(--tn-spacing-md); margin-top: var(--tn-spacing-sm); } /* Overview Card */ .tasknotes-plugin .stats-view__overview-card { background: var(--tn-background-secondary); border: 1px solid var(--tn-border-color); border-radius: var(--tn-border-radius-md); padding: var(--tn-spacing-md); text-align: center; transition: border-color 0.15s ease-in-out; } .tasknotes-plugin .stats-view__overview-card:hover { border-color: var(--tn-accent-color); } /* Overview Values */ .tasknotes-plugin .stats-view__overview-value { font-size: var(--tn-font-size-xxl); font-weight: var(--tn-font-weight-bold); color: var(--tn-accent-color); margin-bottom: var(--tn-spacing-xs); line-height: 1.2; } .tasknotes-plugin .stats-view__overview-label { font-size: var(--tn-font-size-sm); font-weight: var(--tn-font-weight-medium); color: var(--tn-text-muted); text-transform: uppercase; letter-spacing: 0.5px; } /* ================================================ STATS GRID ================================================ */ /* Stats Grid Layout */ .tasknotes-plugin .stats-view__stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: var(--tn-spacing-md); margin-top: var(--tn-spacing-sm); } /* Stat Card */ .tasknotes-plugin .stats-view__stat-card { background: var(--tn-background-secondary); border: 1px solid var(--tn-border-color); border-radius: var(--tn-border-radius-md); padding: var(--tn-spacing-md); text-align: center; transition: all 0.15s ease-in-out; } .tasknotes-plugin .stats-view__stat-card:hover { border-color: var(--tn-accent-color); } /* Stat Values */ .tasknotes-plugin .stats-view__stat-value { font-size: var(--tn-font-size-xl); font-weight: var(--tn-font-weight-bold); color: var(--tn-text-normal); margin-bottom: var(--tn-spacing-xs); line-height: 1.2; } .tasknotes-plugin .stats-view__stat-label { font-size: var(--tn-font-size-sm); color: var(--tn-text-muted); text-transform: uppercase; letter-spacing: 0.5px; } /* ================================================ PROJECT STATS ================================================ */ /* Projects Container */ .tasknotes-plugin .stats-view__projects { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: var(--tn-spacing-md); margin-top: var(--tn-spacing-sm); } /* Project Item */ .tasknotes-plugin .stats-view__project-item { background: var(--tn-background-secondary); border: 1px solid var(--tn-border-color); border-radius: var(--tn-border-radius-md); padding: var(--tn-spacing-md); transition: all 0.15s ease-in-out; } .tasknotes-plugin .stats-view__project-item:hover { border-color: var(--tn-accent-color); } /* Project Header */ .tasknotes-plugin .stats-view__project-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--tn-spacing-sm); } .tasknotes-plugin .stats-view__project-name { font-size: var(--tn-font-size-md); font-weight: var(--tn-font-weight-semibold); color: var(--tn-text-normal); } /* Project Content Grid */ .tasknotes-plugin .stats-view__project-content-grid { display: grid; grid-template-columns: auto 1fr; gap: var(--tn-spacing-md); align-items: center; } /* Progress Circle */ .tasknotes-plugin .stats-view__progress-container { display: flex; flex-direction: column; align-items: center; gap: var(--tn-spacing-xs); padding: var(--tn-spacing-sm); } .tasknotes-plugin .stats-view__progress-circle-svg { transform: rotate(-90deg); filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.1)); } .tasknotes-plugin .stats-view__progress-circle-bg { fill: none; stroke: var(--background-modifier-border); stroke-width: 4; opacity: 0.3; } .tasknotes-plugin .stats-view__progress-circle-fg { fill: none; stroke: var(--interactive-accent); stroke-width: 4; stroke-linecap: round; transition: all 0.6s cubic-bezier(0.4, 0, 0.2, 1); filter: brightness(1.1); opacity: 1; } /* Hover effect for progress circle */ .tasknotes-plugin .stats-view__project-item:hover .stats-view__progress-circle-fg { stroke-width: 5; filter: brightness(1.2) saturate(1.1); } .tasknotes-plugin .stats-view__progress-circle-text { font-size: 14px; font-weight: var(--tn-font-weight-bold); fill: var(--tn-text-normal); transform: rotate(90deg); transform-origin: center; text-anchor: middle; dominant-baseline: central; } .tasknotes-plugin .stats-view__progress-label { font-size: var(--tn-font-size-xs); color: var(--tn-text-muted); font-weight: var(--tn-font-weight-medium); text-align: center; } /* Stats Container */ .tasknotes-plugin .stats-view__stats-container { display: flex; flex-direction: column; gap: var(--tn-spacing-sm); } /* Project Stats Container */ .tasknotes-plugin .stats-view__project-stats { display: flex; flex-wrap: wrap; gap: var(--tn-spacing-md); } /* Individual Project Stat */ .tasknotes-plugin .stats-view__project-stat { font-size: var(--tn-font-size-sm); color: var(--tn-text-muted); background: var(--tn-background-primary); padding: var(--tn-spacing-xs) var(--tn-spacing-sm); border-radius: var(--tn-border-radius-sm); border: 1px solid var(--tn-border-color); white-space: nowrap; } /* ================================================ NO DATA STATE ================================================ */ .tasknotes-plugin .stats-view__no-data { text-align: center; padding: var(--tn-spacing-xl); color: var(--tn-text-muted); font-style: italic; } /* More Projects Indicator */ .tasknotes-plugin .stats-view__more-projects { text-align: center; color: var(--tn-text-muted); font-style: italic; padding: var(--tn-spacing-sm); border-top: 1px solid var(--tn-border-color); margin-top: var(--tn-spacing-sm); } /* ================================================ RESPONSIVE DESIGN ================================================ */ /* Mobile adjustments */ @media (max-width: 768px) { .tasknotes-plugin .stats-view { padding: var(--tn-spacing-md); gap: var(--tn-spacing-lg); } .tasknotes-plugin .stats-view__overview-grid { grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: var(--tn-spacing-sm); } .tasknotes-plugin .stats-view__stats-grid { grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: var(--tn-spacing-sm); } .tasknotes-plugin .stats-view__project-stats { flex-direction: column; gap: var(--tn-spacing-sm); } } /* ================================================ DARK MODE ADJUSTMENTS ================================================ */ .theme-dark .tasknotes-plugin .stats-view__overview-card, .theme-dark .tasknotes-plugin .stats-view__stat-card, .theme-dark .tasknotes-plugin .stats-view__project-item { background: var(--tn-background-secondary); border-color: var(--tn-border-color); } .theme-dark .tasknotes-plugin .stats-view__project-stat { background: var(--tn-background-modifier-border); } /* ================================================ PROGRESS BARS ================================================ */ .tasknotes-plugin .stats-view__progress-bar { width: 100%; height: 8px; background: var(--tn-background-modifier-border); border-radius: 4px; overflow: hidden; margin-top: var(--tn-spacing-xs); position: relative; } .tasknotes-plugin .stats-view__progress-fill { height: 100%; background: linear-gradient(90deg, var(--tn-accent-color), var(--color-accent-2, var(--tn-accent-color))); border-radius: 4px; transition: width 0.6s ease-out; position: relative; } .tasknotes-plugin .stats-view__progress-fill::after { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient(90deg, transparent, rgba(255,255,255,0.2), transparent); animation: shimmer 2s infinite; } @keyframes shimmer { 0% { transform: translateX(-100%); } 100% { transform: translateX(100%); } } /* ================================================ VISUAL ENHANCEMENTS ================================================ */ /* Enhanced cards with gradients */ .tasknotes-plugin .stats-view__overview-card { background: linear-gradient(135deg, var(--tn-background-secondary), var(--tn-background-primary)); border: 1px solid var(--tn-border-color); border-radius: var(--tn-border-radius-lg); padding: var(--tn-spacing-lg); text-align: center; transition: all 0.3s ease; position: relative; overflow: hidden; } .tasknotes-plugin .stats-view__overview-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: linear-gradient(90deg, var(--tn-accent-color), var(--color-accent-2, var(--tn-accent-color))); opacity: 0; transition: opacity 0.3s ease; } .tasknotes-plugin .stats-view__overview-card:hover::before { opacity: 1; } .tasknotes-plugin .stats-view__overview-card:hover { border-color: var(--tn-accent-color); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); } /* Enhanced overview values with animation */ .tasknotes-plugin .stats-view__overview-value { font-size: var(--tn-font-size-xxl); font-weight: var(--tn-font-weight-bold); color: var(--tn-accent-color); margin-bottom: var(--tn-spacing-xs); line-height: 1.2; animation: countUp 0.8s ease-out; } @keyframes countUp { 0% { opacity: 0; transform: scale(0.8); } 100% { opacity: 1; transform: scale(1); } } /* Enhanced project items */ .tasknotes-plugin .stats-view__project-item { background: linear-gradient(135deg, var(--tn-background-secondary), var(--tn-background-primary)); border: 1px solid var(--tn-border-color); border-radius: var(--tn-border-radius-lg); padding: var(--tn-spacing-lg); transition: all 0.3s ease; position: relative; overflow: hidden; } /* Special styling for "No Project" items */ .tasknotes-plugin .stats-view__project-item--no-project { background: linear-gradient(135deg, var(--tn-background-modifier-border), var(--tn-background-secondary)); border: 1px dashed var(--tn-text-muted); opacity: 0.8; } .tasknotes-plugin .stats-view__project-item--no-project::before { background: linear-gradient(90deg, var(--tn-text-muted), var(--color-base-60)); opacity: 0.3; } .tasknotes-plugin .stats-view__project-item--no-project:hover { border-color: var(--tn-text-muted); opacity: 1; box-shadow: 0 2px 8px rgba(0,0,0,0.05); } .tasknotes-plugin .stats-view__project-item--no-project .stats-view__project-name { color: var(--tn-text-muted); font-style: italic; } .tasknotes-plugin .stats-view__project-item--no-project .stats-view__time-bar-fill { background: linear-gradient(90deg, var(--color-base-60), var(--color-base-70)); } .tasknotes-plugin .stats-view__project-item--no-project .stats-view__progress-circle-fg { stroke: var(--color-base-60); } .tasknotes-plugin .stats-view__project-item::before { content: ''; position: absolute; top: 0; left: 0; width: 4px; height: 100%; background: var(--tn-accent-color); opacity: 0; transition: opacity 0.3s ease; } .tasknotes-plugin .stats-view__project-item:hover::before { opacity: 1; } .tasknotes-plugin .stats-view__project-item:hover { border-color: var(--tn-accent-color); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); } /* Time visualization bars */ .tasknotes-plugin .stats-view__time-bar { display: flex; align-items: center; gap: var(--tn-spacing-sm); margin: var(--tn-spacing-xs) 0; } .tasknotes-plugin .stats-view__time-bar-visual { flex: 1; height: 6px; background: var(--tn-background-modifier-border); border-radius: 3px; overflow: hidden; position: relative; } .tasknotes-plugin .stats-view__time-bar-fill { height: 100%; background: linear-gradient(90deg, var(--color-green), var(--color-blue)); border-radius: 3px; transition: width 0.8s ease-out; } .tasknotes-plugin .stats-view__time-bar-label { font-size: var(--tn-font-size-xs); color: var(--tn-text-muted); white-space: nowrap; min-width: 60px; text-align: right; } /* Insight cards */ .tasknotes-plugin .stats-view__insight-card { background: linear-gradient(135deg, var(--color-accent-2, var(--tn-accent-color)), var(--tn-accent-color)); color: var(--text-on-accent); border-radius: var(--tn-border-radius-lg); padding: var(--tn-spacing-lg); margin: var(--tn-spacing-md) 0; position: relative; overflow: hidden; } .tasknotes-plugin .stats-view__insight-card::before { content: ''; position: absolute; top: -50%; left: -50%; width: 200%; height: 200%; background: radial-gradient(circle, rgba(255,255,255,0.1) 0%, transparent 70%); opacity: 0; transition: opacity 0.3s ease; } .tasknotes-plugin .stats-view__insight-card:hover::before { opacity: 1; } .tasknotes-plugin .stats-view__insight-title { font-weight: var(--tn-font-weight-bold); margin-bottom: var(--tn-spacing-xs); } .tasknotes-plugin .stats-view__insight-text { font-size: var(--tn-font-size-sm); opacity: 0.9; } /* ================================================ LOADING STATE ================================================ */ .tasknotes-plugin .stats-view__loading { display: flex; align-items: center; justify-content: center; padding: var(--tn-spacing-xl); color: var(--tn-text-muted); } .tasknotes-plugin .stats-view__loading::before { content: ''; width: 16px; height: 16px; border: 2px solid var(--tn-border-color); border-top-color: var(--tn-accent-color); border-radius: 50%; margin-right: var(--tn-spacing-sm); animation: spin 1s linear infinite; } @keyframes spin { to { transform: rotate(360px); } } /* ================================================ FILTER CONTROLS ================================================ */ .tasknotes-plugin .stats-view__filters { margin-top: var(--tn-spacing-sm); } .tasknotes-plugin .stats-view__filter-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: var(--tn-spacing-md); align-items: end; } .tasknotes-plugin .stats-view__filter-item { display: flex; flex-direction: column; gap: var(--tn-spacing-xs); } .tasknotes-plugin .stats-view__filter-label { font-size: var(--tn-font-size-sm); font-weight: var(--tn-font-weight-medium); color: var(--tn-text-normal); } .tasknotes-plugin .stats-view__filter-select, .tasknotes-plugin .stats-view__filter-input { padding: var(--tn-spacing-sm); border: 1px solid var(--tn-border-color); border-radius: var(--tn-border-radius-sm); background: var(--tn-background-primary); color: var(--tn-text-normal); font-size: var(--tn-font-size-sm); } .tasknotes-plugin .stats-view__filter-select:focus, .tasknotes-plugin .stats-view__filter-input:focus { outline: none; border-color: var(--tn-accent-color); box-shadow: 0 0 0 2px rgba(var(--color-accent-rgb), 0.2); } .tasknotes-plugin .stats-view__custom-dates { grid-column: 1 / -1; display: flex; gap: var(--tn-spacing-md); margin-top: var(--tn-spacing-sm); } .tasknotes-plugin .stats-view__date-input-container { display: flex; flex-direction: column; gap: var(--tn-spacing-xs); flex: 1; } .tasknotes-plugin .stats-view__date-label { font-size: var(--tn-font-size-sm); font-weight: var(--tn-font-weight-medium); color: var(--tn-text-normal); } .tasknotes-plugin .stats-view__date-input { padding: var(--tn-spacing-sm); border: 1px solid var(--tn-border-color); border-radius: var(--tn-border-radius-sm); background: var(--tn-background-primary); color: var(--tn-text-normal); font-size: var(--tn-font-size-sm); } .tasknotes-plugin .stats-view__filter-buttons { display: flex; gap: var(--tn-spacing-sm); align-items: end; } .tasknotes-plugin .stats-view__filter-button { padding: var(--tn-spacing-sm) var(--tn-spacing-md); border: 1px solid var(--tn-border-color); border-radius: var(--tn-border-radius-sm); background: var(--tn-background-primary); color: var(--tn-text-normal); font-size: var(--tn-font-size-sm); cursor: var(--cursor); transition: all 0.2s ease; } .tasknotes-plugin .stats-view__filter-button:hover { background: var(--tn-interactive-hover); } .tasknotes-plugin .stats-view__filter-button--reset { border-color: var(--color-red); color: var(--color-red); } .tasknotes-plugin .stats-view__filter-button--reset:hover { background: var(--color-red); color: var(--text-on-accent); } /* ================================================ INTERACTIVE ELEMENTS ================================================ */ /* Clickable project items */ .tasknotes-plugin .stats-view__project-item--clickable { cursor: var(--cursor); transition: all 0.2s ease; } .tasknotes-plugin .stats-view__project-item--clickable:hover { background: var(--tn-interactive-hover); } .tasknotes-plugin .stats-view__click-indicator { font-size: var(--tn-font-size-lg); color: var(--tn-text-muted); opacity: 0; transition: opacity 0.2s ease; } .tasknotes-plugin .stats-view__project-item--clickable:hover .stats-view__click-indicator { opacity: 1; } /* ================================================ SPARKLINES & TRENDS ================================================ */ .tasknotes-plugin .stats-view__trend-container { margin: var(--tn-spacing-sm) 0; padding: var(--tn-spacing-sm); background: var(--tn-background-modifier-border); border-radius: var(--tn-border-radius-sm); } .tasknotes-plugin .stats-view__trend-label { font-size: var(--tn-font-size-xs); color: var(--tn-text-muted); margin-bottom: var(--tn-spacing-xs); text-transform: uppercase; letter-spacing: 0.5px; } .tasknotes-plugin .stats-view__sparkline { height: 20px; } .tasknotes-plugin .stats-view__sparkline-svg { width: 100%; height: 100%; color: var(--tn-accent-color); } /* ================================================ MODAL STYLES ================================================ */ /* Modal styles - no plugin scope needed since modals are appended to document.body */ .stats-view__modal-backdrop { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.5); z-index: var(--layer-modal); display: flex; align-items: center; justify-content: center; padding: var(--tn-spacing-lg, 16px); } .stats-view__modal { background: var(--tn-background-primary, var(--background-primary)); border-radius: var(--tn-border-radius-lg, 8px); max-width: 800px; max-height: 80vh; width: 100%; display: flex; flex-direction: column; box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3); } .stats-view__modal-header { display: flex; align-items: center; justify-content: space-between; padding: var(--tn-spacing-lg, 16px); border-bottom: 1px solid var(--tn-border-color, var(--background-modifier-border)); } .stats-view__modal-title { font-size: var(--tn-font-size-lg, 18px); font-weight: var(--tn-font-weight-bold, 600); color: var(--tn-text-normal, var(--text-normal)); } .stats-view__modal-close { background: none; border: none; font-size: var(--tn-font-size-xl, 20px); color: var(--tn-text-muted, var(--text-muted)); cursor: var(--cursor); padding: var(--tn-spacing-xs, 4px); border-radius: var(--tn-border-radius-sm, 4px); transition: all 0.2s ease; } .stats-view__modal-close:hover { background: var(--tn-interactive-hover, var(--interactive-hover)); color: var(--tn-text-normal, var(--text-normal)); } .stats-view__modal-content { padding: var(--tn-spacing-lg, 16px); overflow-y: auto; flex: 1; } /* ================================================ DRILL-DOWN CONTENT ================================================ */ /* Drill-down styles - no plugin scope needed since content is in modal */ .stats-view__drilldown-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: var(--tn-spacing-md, 12px); margin-bottom: var(--tn-spacing-xl, 24px); } .stats-view__drilldown-card { background: var(--tn-background-secondary, var(--background-secondary)); border: 1px solid var(--tn-border-color, var(--background-modifier-border)); border-radius: var(--tn-border-radius-md, 6px); padding: var(--tn-spacing-md, 12px); text-align: center; } .stats-view__drilldown-value { font-size: var(--tn-font-size-xl, 20px); font-weight: var(--tn-font-weight-bold, 600); color: var(--tn-accent-color, var(--interactive-accent)); margin-bottom: var(--tn-spacing-xs, 4px); } .stats-view__drilldown-label { font-size: var(--tn-font-size-sm, 12px); color: var(--tn-text-muted, var(--text-muted)); } .stats-view__drilldown-section { margin-bottom: var(--tn-spacing-xl, 24px); } .stats-view__drilldown-heading { font-size: var(--tn-font-size-md, 14px); font-weight: var(--tn-font-weight-semibold, 500); color: var(--tn-text-normal, var(--text-normal)); margin-bottom: var(--tn-spacing-md, 12px); padding-bottom: var(--tn-spacing-xs, 4px); border-bottom: 1px solid var(--tn-border-color, var(--background-modifier-border)); } /* ================================================ ACTIVITY CHART ================================================ */ /* Activity chart styles - no plugin scope needed since content is in modal */ .stats-view__bar-chart { display: flex; align-items: end; gap: 2px; height: 50px; padding: var(--tn-spacing-sm, 8px); background: var(--tn-background-secondary, var(--background-secondary)); border-radius: var(--tn-border-radius-sm, 4px); overflow-x: auto; } .stats-view__bar-container { display: flex; align-items: end; flex-shrink: 0; } .stats-view__bar { width: 6px; background: linear-gradient(to top, var(--tn-accent-color, var(--interactive-accent)), var(--color-accent-2, var(--tn-accent-color, var(--interactive-accent)))); border-radius: 1px 1px 0 0; min-height: 1px; transition: opacity 0.2s ease; } .stats-view__bar:hover { opacity: 0.7; } /* ================================================ TASK LISTS IN DRILL-DOWN ================================================ */ .tasknotes-plugin .stats-view__recent-tasks, .tasknotes-plugin .stats-view__task-list { display: flex; flex-direction: column; gap: var(--tn-spacing-sm); max-height: 400px; overflow-y: auto; } .tasknotes-plugin .stats-view__recent-task { background: var(--tn-background-secondary); border: 1px solid var(--tn-border-color); border-radius: var(--tn-border-radius-sm); padding: var(--tn-spacing-sm); cursor: var(--cursor); transition: all 0.2s ease; } .tasknotes-plugin .stats-view__recent-task:hover { border-color: var(--tn-accent-color); background: var(--tn-interactive-hover); } .tasknotes-plugin .stats-view__task-title { font-size: var(--tn-font-size-sm); font-weight: var(--tn-font-weight-medium); color: var(--tn-text-normal); margin-bottom: var(--tn-spacing-xs); } .tasknotes-plugin .stats-view__task-meta { font-size: var(--tn-font-size-xs); color: var(--tn-text-muted); } /* Section headers and task filters */ .tasknotes-plugin .stats-view__section-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--tn-spacing-md); } .tasknotes-plugin .stats-view__task-filters { display: flex; gap: var(--tn-spacing-sm); } .tasknotes-plugin .stats-view__task-count { font-size: var(--tn-font-size-sm); color: var(--tn-text-muted); margin-bottom: var(--tn-spacing-sm); padding: var(--tn-spacing-xs) var(--tn-spacing-sm); background: var(--tn-background-modifier-border); border-radius: var(--tn-border-radius-sm); text-align: center; } /* ================================================ RESPONSIVE ENHANCEMENTS ================================================ */ @media (max-width: 768px) { .tasknotes-plugin .stats-view__overview-card, .tasknotes-plugin .stats-view__project-item { padding: var(--tn-spacing-md); } .tasknotes-plugin .stats-view__time-bar-label { min-width: 50px; } .tasknotes-plugin .stats-view__filter-grid { grid-template-columns: 1fr; } .tasknotes-plugin .stats-view__custom-dates { flex-direction: column; } .tasknotes-plugin .stats-view__filter-buttons { justify-content: stretch; } .tasknotes-plugin .stats-view__filter-button { flex: 1; } } /* ===== SETTINGS-VIEW.CSS ===== */ /* ================================================ SETTINGS VIEW - MINIMAL CLEAN STRUCTURE ================================================ */ /* ================================================ SETTINGS HEADER ================================================ */ .tasknotes-plugin .settings-header { display: flex; justify-content: flex-start; margin-bottom: var(--tn-spacing-md); margin-top: calc(-1 * var(--tn-spacing-sm)); } .tasknotes-plugin .settings-header-link { display: inline-flex; align-items: center; gap: var(--tn-spacing-xs); color: var(--text-accent); text-decoration: none; font-size: var(--font-ui-small); } .tasknotes-plugin .settings-header-link:hover { text-decoration: underline; } .tasknotes-plugin .settings-header-link::after { content: "↗"; font-size: 0.85em; } /* ================================================ TAB NAVIGATION ================================================ */ /* Tab Navigation Container */ .tasknotes-plugin .settings-view__tab-nav { display: flex; gap: var(--tn-spacing-xs); margin-bottom: var(--tn-spacing-lg); border-bottom: 1px solid var(--tn-border-color); padding-bottom: var(--tn-spacing-sm); overflow-x: auto; white-space: nowrap; } .tasknotes-plugin .settings-view__tab-button { white-space: nowrap; flex-shrink: 0; } .tasknotes-plugin .settings-view__tab-button--active, .tasknotes-plugin .settings-view__tab-button.is-active { background: var(--interactive-accent) !important; color: var(--text-on-accent) !important; } /* ================================================ TAB CONTENT ================================================ */ /* Tab Contents Container */ .tasknotes-plugin .settings-view__tab-contents { position: relative; min-height: 400px; } /* Tab Content Panel */ .tasknotes-plugin .settings-view__tab-content { display: none; } .tasknotes-plugin .settings-view__tab-content--active { display: block; animation: tn-settings-fade-in 0.2s ease-in-out; } @keyframes tn-settings-fade-in { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } } /* ================================================ TASKNOTES SETTINGS CARD SYSTEM - CLEAN MINIMAL BASE ================================================ */ /* Base Card */ .tasknotes-settings__card { background: var(--background-primary); border: 1px solid var(--background-modifier-border); border-radius: 6px; margin-bottom: 12px; overflow: visible; } .tasknotes-settings__card:hover { border-color: var(--interactive-accent); } /* Card Header */ .tasknotes-settings__card-header { padding: 12px 16px; background: var(--background-secondary); border-bottom: 1px solid var(--background-modifier-border); display: flex; align-items: center; justify-content: space-between; position: relative; } .tasknotes-settings__card-header--with-drag-handle { padding-left: 40px; } .tasknotes-settings__card-info { flex: 1; min-width: 0; } .tasknotes-settings__card-primary-text { font-weight: 600; font-size: 14px; color: var(--text-normal); margin-bottom: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .tasknotes-settings__card-secondary-text { font-size: 12px !important; color: var(--text-muted) !important; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; line-height: 1.3; display: block; margin-top: 2px; } .tasknotes-settings__card-meta { display: flex; align-items: center; gap: 8px; } .tasknotes-settings__card-color-indicator { width: 12px; height: 12px; border-radius: 50%; margin-right: 12px; border: 2px solid var(--background-primary); box-shadow: 0 0 0 1px var(--background-modifier-border); } /* Card Content */ .tasknotes-settings__card-content { padding: 16px; } .tasknotes-settings__card-config-row { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; } .tasknotes-settings__card-config-row:last-child { margin-bottom: 0; } .tasknotes-settings__card-config-label { min-width: 80px; font-weight: 500; color: var(--text-normal); font-size: 13px; margin-right: 12px; } /* Card Inputs */ .tasknotes-settings__card-input { padding: 8px 12px; border: 1px solid var(--background-modifier-border); border-radius: 4px; background: var(--background-modifier-form-field); color: var(--text-normal); font-size: 13px; line-height: 1.4; min-height: 32px; } /* Select dropdowns need extra styling */ .tasknotes-settings__card-input[type="select"], select.tasknotes-settings__card-input { padding: 6px 12px; line-height: 1.5; min-height: 34px; } .tasknotes-settings__card-input[type="text"], .tasknotes-settings__card-input[type="url"], .tasknotes-settings__card-input[type="email"] { flex: 0 1 auto; min-width: 150px; } .tasknotes-settings__card-input[type="checkbox"] { width: 16px !important; height: 16px !important; min-width: 16px !important; min-height: 16px !important; max-width: 16px !important; max-height: 16px !important; padding: 0 !important; margin: 0 !important; flex-shrink: 0 !important; align-self: center !important; } .tasknotes-settings__card-input[type="color"] { width: 40px; height: 32px; padding: 2px; } .tasknotes-settings__card-input[type="number"] { width: 80px; } .tasknotes-settings__card-input:focus { outline: none; border-color: var(--interactive-accent); } /* Card Actions */ .tasknotes-settings__card-actions { padding: 12px 16px; background: var(--background-modifier-form-field); border-top: 1px solid var(--background-modifier-border); display: flex; gap: 8px; } .tasknotes-settings__card-action-btn { padding: 8px 16px; border: 1px solid var(--background-modifier-border); border-radius: 4px; background: var(--background-primary); color: var(--text-normal); font-size: 13px; font-weight: 500; cursor: var(--cursor); display: flex; align-items: center; gap: 6px; } .tasknotes-settings__card-action-btn:hover { background: var(--background-modifier-hover); } .tasknotes-settings__card-action-btn--primary { background: none; color: var(--text-on-accent); border-color: var(--interactive-accent); } .tasknotes-settings__card-action-btn--primary:hover { background: var(--interactive-accent-hover); } .tasknotes-settings__card-action-btn--delete { background: var(--color-red); color: white; border-color: var(--color-red); } /* Header Actions */ .tasknotes-settings__card-header-actions { display: flex; align-items: center; gap: 4px; } .tasknotes-settings__card-header-btn { width: 20px; height: 20px; border: none !important; background: transparent; color: var(--text-muted); cursor: var(--cursor); border-radius: 3px; display: flex; align-items: center; justify-content: center; box-shadow: none !important; outline: none !important; padding: 0; } .tasknotes-settings__card-header-btn:focus { box-shadow: none !important; outline: none !important; border: none !important; } .tasknotes-settings__card-header-btn:hover { background: var(--background-modifier-hover); color: var(--text-normal); } .tasknotes-settings__card-header-btn--delete:hover { background: var(--color-red); color: white; } /* Status Badges */ .tasknotes-settings__card-status-badge { padding: 4px 8px; border-radius: 12px; font-size: 11px; font-weight: 500; background: var(--background-modifier-border); color: var(--text-muted); } .tasknotes-settings__card-status-badge--active { background: var(--color-green); color: white; } .tasknotes-settings__card-status-badge--inactive { background: var(--color-red); color: white; } .tasknotes-settings__card-info-badge { padding: 3px 6px; border-radius: 10px; font-size: 10px; font-weight: 500; background: var(--background-modifier-border); color: var(--text-muted); white-space: nowrap; } /* Selected Project Items (chips) */ .default-projects-list-container { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; } .tasknotes-settings__project-item { display: inline-flex; align-items: center; gap: 6px; padding: 4px 8px 4px 12px; background: var(--background-secondary); border: 1px solid var(--background-modifier-border); border-radius: 16px; font-size: 12px; color: var(--text-normal); transition: all 0.15s ease; } .tasknotes-settings__project-item:hover { background: var(--background-modifier-hover); border-color: var(--background-modifier-border-hover); } .tasknotes-settings__project-item span { max-width: 200px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .tasknotes-settings__project-item button { display: flex; align-items: center; justify-content: center; width: 18px; height: 18px; padding: 0; border: none; border-radius: 50%; background: transparent; color: var(--text-muted); cursor: pointer; transition: all 0.15s ease; flex-shrink: 0; } .tasknotes-settings__project-item button:hover { background: var(--background-modifier-error); color: var(--text-on-accent); } .tasknotes-settings__project-item button svg { width: 12px; height: 12px; } /* Drag Handle */ .tasknotes-settings__card-drag-handle { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); width: 20px; height: 16px; cursor: grab; color: var(--text-muted); display: flex; align-items: center; justify-content: center; border-radius: 3px; transition: all 0.2s ease; opacity: 0.6; } .tasknotes-settings__card-drag-handle:hover { opacity: 1; background: var(--background-modifier-hover); } .tasknotes-settings__card-drag-handle:active { cursor: grabbing; } /* Drag States */ .tasknotes-settings__card--draggable { cursor: grab; } .tasknotes-settings__card--dragging { opacity: 0.7; transform: rotate(1deg); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); border-color: var(--interactive-accent); } .tasknotes-settings__card--drag-over-top { border-top: 2px solid var(--interactive-accent); } .tasknotes-settings__card--drag-over-bottom { border-bottom: 2px solid var(--interactive-accent); } /* Empty state for card containers */ .tasknotes-plugin .settings-view .tasknotes-settings__empty-state { display: flex; align-items: center; gap: 0.75rem; padding: 2rem; background: var(--background-modifier-form-field); border: 1px dashed var(--background-modifier-border); border-radius: 8px; color: var(--text-muted); font-size: 0.9rem; } .tasknotes-plugin .settings-view .tasknotes-settings__empty-icon { display: flex; align-items: center; opacity: 0.6; } .tasknotes-plugin .settings-view .tasknotes-settings__empty-text { flex: 1; } /* ================================================ COLLAPSIBLE CARD FUNCTIONALITY ================================================ */ /* Collapsible card support */ .tasknotes-settings__card--collapsible { transition: all 0.2s ease; } .tasknotes-settings__card--collapsible .tasknotes-settings__card-content, .tasknotes-settings__card--collapsible .tasknotes-settings__card-actions { transition: all 0.2s ease; overflow: hidden; } /* Collapsed state - hide content and actions */ .tasknotes-settings__card--collapsed .tasknotes-settings__card-content { max-height: 0; padding-top: 0; padding-bottom: 0; opacity: 0; border: none; } .tasknotes-settings__card--collapsed .tasknotes-settings__card-actions { max-height: 0; padding-top: 0; padding-bottom: 0; opacity: 0; border: none; } /* Collapse button styling */ .tasknotes-settings__card-collapse-btn { opacity: 0.7; transition: all 0.2s ease; } .tasknotes-settings__card-collapse-btn:hover { opacity: 1; transform: scale(1.1); } /* Visual indicator for collapsed cards */ .tasknotes-settings__card--collapsed { opacity: 0.9; } /* Clickable header styling */ .tasknotes-settings__card-header--clickable { cursor: var(--cursor); user-select: none; } .tasknotes-settings__card-header--clickable:hover { background: var(--background-modifier-hover); } /* ================================================ WEBHOOK MODAL STYLES ================================================ */ .tasknotes-webhook-modal { max-width: 800px; padding: var(--tn-spacing-lg); } .tasknotes-webhook-modal-header { display: flex; align-items: center; gap: var(--tn-spacing-md); margin-bottom: var(--tn-spacing-lg); padding-bottom: var(--tn-spacing-md); border-bottom: 1px solid var(--background-modifier-border); } .tasknotes-webhook-modal-icon { color: var(--interactive-accent); font-size: 1.5rem; } .tasknotes-webhook-modal-title { margin: 0; color: var(--text-normal); font-size: 1.25rem; font-weight: 600; } .tasknotes-webhook-modal-section { margin-bottom: var(--tn-spacing-xl); } .tasknotes-webhook-modal-subsection-header { display: flex; align-items: center; gap: var(--tn-spacing-sm); margin-bottom: var(--tn-spacing-md); } .tasknotes-webhook-modal-subsection-header h3 { margin: 0; font-size: 1rem; font-weight: 600; color: var(--text-normal); } .tasknotes-webhook-events-list .setting-item { padding: var(--tn-spacing-sm) 0; border-bottom: 1px solid var(--background-modifier-border); } .tasknotes-webhook-events-list .setting-item:last-child { border-bottom: none; } .tasknotes-webhook-transform-help { margin-top: var(--tn-spacing-md); padding: var(--tn-spacing-md); background: var(--background-secondary); border-radius: var(--tn-radius-sm); border-left: 3px solid var(--interactive-accent); } .tasknotes-webhook-help-header { display: flex; align-items: center; gap: var(--tn-spacing-xs); margin-bottom: var(--tn-spacing-sm); font-weight: 500; color: var(--text-normal); } .tasknotes-webhook-help-list { margin: var(--tn-spacing-sm) 0; padding-left: var(--tn-spacing-lg); color: var(--text-muted); font-size: var(--tn-font-size-sm); } .tasknotes-webhook-help-list li { margin-bottom: var(--tn-spacing-xs); } .tasknotes-webhook-help-example { margin-top: var(--tn-spacing-sm); font-size: var(--tn-font-size-sm); color: var(--text-muted); } .tasknotes-webhook-modal-buttons { display: flex; gap: var(--tn-spacing-sm); justify-content: flex-end; margin-top: var(--tn-spacing-xl); padding-top: var(--tn-spacing-md); border-top: 1px solid var(--background-modifier-border); } .tasknotes-webhook-modal-btn { display: flex; align-items: center; gap: var(--tn-spacing-xs); padding: var(--tn-spacing-sm) var(--tn-spacing-lg); border: 1px solid var(--background-modifier-border); border-radius: var(--tn-radius-sm); background: var(--background-primary); color: var(--text-normal); font-size: var(--tn-font-size-sm); font-weight: 500; cursor: var(--cursor); transition: all 0.2s ease; } .tasknotes-webhook-modal-btn:hover { background: var(--background-modifier-hover); border-color: var(--interactive-accent); } .tasknotes-webhook-modal-btn.save { background: var(--interactive-accent); color: var(--text-on-accent); border-color: var(--interactive-accent); } .tasknotes-webhook-modal-btn.save:hover { background: var(--interactive-accent-hover); border-color: var(--interactive-accent-hover); } .tasknotes-webhook-modal-btn.cancel { background: transparent; } .tasknotes-webhook-modal-btn.cancel:hover { background: var(--background-modifier-hover); } .tasknotes-webhook-modal-btn-icon { font-size: 0.9rem; line-height: 1; } /* Webhook Secret Notice */ .tasknotes-webhook-secret-notice { text-align: center; padding: var(--tn-spacing-xl); } .tasknotes-webhook-secret-title { display: flex; align-items: center; justify-content: center; gap: var(--tn-spacing-sm); margin-bottom: var(--tn-spacing-lg); font-size: 1.125rem; font-weight: 600; color: var(--interactive-accent); } .tasknotes-webhook-secret-content { margin-bottom: var(--tn-spacing-lg); } .tasknotes-webhook-secret-content p { margin-bottom: var(--tn-spacing-md); color: var(--text-normal); } .tasknotes-webhook-secret-code { display: block; background: var(--background-modifier-form-field); padding: var(--tn-spacing-md); border-radius: var(--tn-radius-sm); font-family: var(--font-monospace); font-size: var(--tn-font-size-sm); word-break: break-all; user-select: all; border: 1px solid var(--background-modifier-border); margin: var(--tn-spacing-md) 0; cursor: var(--cursor); } .tasknotes-webhook-secret-code:hover { background: var(--background-modifier-hover); border-color: var(--interactive-accent); } /* ================================================ HELPER TEXT & WARNING SECTIONS ================================================ */ /* Help sections with lists */ .tasknotes-settings__help-section { background: var(--background-secondary); border-radius: 6px; padding: 16px; margin: 12px 0; } .tasknotes-settings__help-section h4 { margin: 0 0 12px 0; font-size: 14px; font-weight: 600; color: var(--text-normal); } .tasknotes-settings__help-section ul { margin: 0; padding-left: 20px; } .tasknotes-settings__help-section li { margin-bottom: 8px; font-size: 13px; color: var(--text-muted); line-height: 1.4; } .tasknotes-settings__help-note { margin: 12px 0 0 0; padding: 12px; background: var(--background-modifier-form-field); border-radius: 4px; font-size: 13px; color: var(--text-muted); border: 1px solid var(--background-modifier-border); } /* Warning sections */ .tasknotes-settings__warning { background: rgba(var(--color-red-rgb), 0.1); border: 1px solid rgba(var(--color-red-rgb), 0.3); border-radius: 6px; padding: 16px; margin: 12px 0; font-size: 13px; color: var(--text-normal); line-height: 1.4; } .tasknotes-settings__warning strong { color: var(--color-red); } /* ================================================ FIELD MAPPING TABLE - CARD STYLE ================================================ */ .tasknotes-settings__table { background: var(--background-primary); border: 1px solid var(--background-modifier-border); border-radius: 8px; overflow: hidden; margin: 16px 0; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); width: 100%; border-collapse: separate; border-spacing: 0; } .tasknotes-settings__table-header { background: var(--background-secondary); color: var(--text-normal); font-weight: 600; font-size: 13px; padding: 12px 16px; text-align: left; border-bottom: 1px solid var(--background-modifier-border); position: sticky; top: 0; z-index: 1; } .tasknotes-settings__table-header:first-child { min-width: 140px; width: 35%; } .tasknotes-settings__table-header:last-child { width: 65%; } .tasknotes-settings__table-row { transition: background-color 0.2s ease; } .tasknotes-settings__table-row:nth-child(even) { background: var(--background-modifier-form-field); } .tasknotes-settings__table-row:hover { background: var(--background-modifier-hover); } .tasknotes-settings__table-cell { padding: 12px 16px; border-bottom: 1px solid var(--background-modifier-border); vertical-align: middle; font-size: 13px; } .tasknotes-settings__table-cell:first-child { font-weight: 500; color: var(--text-normal); background: var(--background-modifier-form-field); } .tasknotes-settings__table-cell:last-child { background: inherit; } /* Remove border from last row */ .tasknotes-settings__table-row:last-child .tasknotes-settings__table-cell { border-bottom: none; } /* Field mapping input styling */ .field-mapping-input { width: 100%; } .field-mapping-input:hover { border-color: var(--interactive-hover); } .field-mapping-input::placeholder { color: var(--text-faint); font-style: italic; opacity: 0.7; } /* ================================================ DEFAULT VISIBLE PROPERTIES STYLING ================================================ */ .tasknotes-settings__properties-container { margin: 16px 0; } .tasknotes-settings__property-group { margin-bottom: 20px; } .tasknotes-settings__property-group-header { font-size: 12px; font-weight: 600; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 12px; padding-bottom: 4px; border-bottom: 1px solid var(--background-modifier-border); } .tasknotes-settings__property-toggles { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 8px; } .tasknotes-settings__property-toggle { display: flex; align-items: center; gap: 8px; padding: 6px 0; } .tasknotes-settings__property-checkbox { width: 16px; height: 16px; margin: 0; cursor: var(--cursor); } .tasknotes-settings__property-label { font-size: 13px; color: var(--text-normal); cursor: var(--cursor); flex: 1; line-height: 1.3; } .tasknotes-settings__property-label:hover { color: var(--text-accent); } /* ================================================ COLLAPSIBLE SECTIONS ================================================ */ .tasknotes-settings__collapsible-header { cursor: var(--cursor); padding: 8px 12px; margin: -8px -12px 12px -12px; border-radius: 4px; transition: background-color 0.2s ease; user-select: none; } .tasknotes-settings__collapsible-header:hover { background: var(--background-modifier-hover); } .tasknotes-settings__collapsible-header-content { display: flex; align-items: center; gap: 8px; } .tasknotes-settings__collapsible-icon { font-size: 12px; color: var(--text-muted); transition: transform 0.2s ease; font-family: monospace; line-height: 1; } .tasknotes-settings__collapsible-title { font-size: 14px; font-weight: 600; color: var(--text-normal); margin: 0; } .tasknotes-settings__collapsible-content { transition: all 0.2s ease; } /* Nested collapsible sections (e.g., filter settings within custom fields) */ .tasknotes-settings__collapsible-section { margin-top: 12px; } .tasknotes-settings__collapsible-section-header { display: flex; align-items: center; justify-content: space-between; cursor: var(--cursor); padding: 8px 12px; margin: 0 -12px 12px -12px; border-radius: 4px; transition: background-color 0.2s ease; user-select: none; } .tasknotes-settings__collapsible-section-header:hover { background: var(--background-modifier-hover); } .tasknotes-settings__collapsible-section-header-left { display: flex; align-items: center; gap: 8px; } .tasknotes-settings__collapsible-section-title { font-size: 13px; font-weight: 500; color: var(--text-muted); } .tasknotes-settings__filter-badge { display: inline-flex; align-items: center; gap: 4px; padding: 2px 8px; background: var(--interactive-accent); color: var(--text-on-accent); border-radius: 10px; font-size: 11px; font-weight: 500; line-height: 1.4; } .tasknotes-settings__filter-badge svg { width: 12px; height: 12px; flex-shrink: 0; } .tasknotes-settings__collapsible-section-chevron { display: flex; align-items: center; color: var(--text-muted); transition: transform 0.2s ease; } .tasknotes-settings__collapsible-section-chevron svg { width: 16px; height: 16px; } .tasknotes-settings__collapsible-section-content { max-height: none; opacity: 1; overflow: visible; } /* Collapsed state */ .tasknotes-settings__collapsible-section--collapsed .tasknotes-settings__collapsible-section-content { max-height: 0; opacity: 0; overflow: hidden; padding-top: 0; padding-bottom: 0; } .tasknotes-settings__collapsible-section--collapsed .tasknotes-settings__collapsible-section-chevron { transform: rotate(-90deg); } /* ================================================ ICON INPUT WITH SUGGESTIONS ================================================ */ /* Icon input container with preview */ .tasknotes-plugin .icon-input-container { display: flex; align-items: center; gap: var(--tn-spacing-xs); flex: 1; } .tasknotes-plugin .icon-input-preview { display: none; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: var(--tn-radius-sm); background: var(--background-modifier-hover); flex-shrink: 0; } .tasknotes-plugin .icon-input-preview svg { width: 16px; height: 16px; color: var(--text-normal); } .tasknotes-plugin .icon-input { flex: 1; min-width: 0; } /* Icon suggestion dropdown items */ .suggestion-item.icon-suggestion-item { display: flex; align-items: center; gap: var(--size-4-2); padding: var(--size-4-1) var(--size-4-2); } .icon-suggestion-preview { display: flex; align-items: center; justify-content: center; width: 24px; height: 24px; flex-shrink: 0; } .icon-suggestion-preview svg { width: 16px; height: 16px; color: var(--text-muted); } .icon-suggestion-text { color: var(--text-normal); font-size: var(--font-ui-small); } /* Highlight matched icon in suggestions */ .suggestion-item.icon-suggestion-item.is-selected .icon-suggestion-preview svg { color: var(--text-on-accent); } .suggestion-item.icon-suggestion-item.is-selected .icon-suggestion-text { color: var(--text-on-accent); } /* ================================================ ACCESSIBILITY & REDUCED MOTION ================================================ */ @media (prefers-reduced-motion: reduce) { .tasknotes-plugin .settings-view__tab-content--active { animation: none; } .tasknotes-settings__card, .tasknotes-settings__card-drag-handle { transition: none; } } /* ===== WEBHOOK-SETTINGS.CSS ===== */ /* * Webhook Settings UI Styles * Modern, clean styling for the webhook configuration interface */ /* Webhook Container */ .tasknotes-webhooks-container { display: flex; flex-direction: column; gap: 1rem; margin-top: 1rem; } /* Empty State */ .tasknotes-webhooks-empty-state { display: flex; align-items: center; gap: 0.75rem; padding: 2rem; background: var(--background-modifier-form-field); border: 1px dashed var(--background-modifier-border); border-radius: 8px; color: var(--text-muted); font-size: 0.9rem; } .tasknotes-webhooks-empty-icon { display: flex; align-items: center; opacity: 0.6; } .tasknotes-webhooks-empty-text { flex: 1; } /* Webhook Card */ .tasknotes-webhook-card { background: var(--background-primary); border: 1px solid var(--background-modifier-border); border-radius: 8px; padding: 0; overflow: hidden; transition: all 0.2s ease; } .tasknotes-webhook-card:hover { border-color: var(--interactive-accent); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); } /* Webhook Header */ .tasknotes-webhook-header { display: flex; justify-content: space-between; align-items: center; padding: 1rem 1.25rem; background: var(--background-secondary); border-bottom: 1px solid var(--background-modifier-border); } .tasknotes-webhook-url-section { display: flex; align-items: center; gap: 0.5rem; flex: 1; min-width: 0; } .tasknotes-webhook-url-icon { display: flex; align-items: center; color: var(--text-muted); flex-shrink: 0; } .tasknotes-webhook-url { font-family: var(--font-monospace); font-size: 0.85rem; color: var(--text-normal); font-weight: 500; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } .tasknotes-webhook-status-section { display: flex; align-items: center; flex-shrink: 0; } .tasknotes-webhook-status-indicator { display: flex; align-items: center; gap: 0.375rem; padding: 0.25rem 0.75rem; border-radius: 16px; font-size: 0.8rem; font-weight: 500; } .tasknotes-webhook-status-indicator.active { background: var(--color-green-rgb); background: rgba(var(--color-green-rgb), 0.15); color: var(--color-green); } .tasknotes-webhook-status-indicator.inactive { background: var(--color-red-rgb); background: rgba(var(--color-red-rgb), 0.15); color: var(--color-red); } .tasknotes-webhook-status-icon { display: flex; align-items: center; } .tasknotes-webhook-status-text { font-weight: 500; } /* Webhook Content */ .tasknotes-webhook-content { padding: 1rem 1.25rem; } .tasknotes-webhook-detail-row { display: flex; align-items: flex-start; gap: 0.75rem; margin-bottom: 0.75rem; padding: 0.5rem 0; } .tasknotes-webhook-detail-row:last-child { margin-bottom: 0; } .tasknotes-webhook-detail-row.warning { background: rgba(var(--color-yellow-rgb), 0.1); border-radius: 4px; padding: 0.5rem 0.75rem; margin-left: -0.75rem; margin-right: -0.75rem; } .tasknotes-webhook-detail-icon { display: flex; align-items: center; color: var(--text-muted); margin-top: 1px; flex-shrink: 0; } .tasknotes-webhook-detail-label { font-weight: 500; color: var(--text-normal); min-width: 5rem; flex-shrink: 0; } .tasknotes-webhook-detail-value { color: var(--text-muted); word-break: break-all; flex: 1; } .tasknotes-webhook-detail-warning { color: var(--color-yellow); font-weight: 500; } /* Webhook Statistics */ .tasknotes-webhook-stats { display: flex; gap: 1rem; } .tasknotes-webhook-stat-success, .tasknotes-webhook-stat-failure { display: flex; align-items: center; gap: 0.25rem; font-size: 0.85rem; } .tasknotes-webhook-stat-success { color: var(--color-green); } .tasknotes-webhook-stat-failure { color: var(--color-red); } .tasknotes-webhook-stat-icon { display: flex; align-items: center; } /* Webhook Actions */ .tasknotes-webhook-actions { display: flex; gap: 0.5rem; padding: 1rem 1.25rem; background: var(--background-modifier-form-field); border-top: 1px solid var(--background-modifier-border); } .tasknotes-webhook-action-btn { display: flex; align-items: center; gap: 0.5rem; padding: 0.5rem 1rem; border: 1px solid var(--background-modifier-border); border-radius: 4px; background: var(--background-primary); color: var(--text-normal); font-size: 0.85rem; cursor: var(--cursor); transition: all 0.2s ease; } .tasknotes-webhook-action-btn:hover { background: var(--background-modifier-hover); border-color: var(--interactive-accent); } .tasknotes-webhook-action-btn.enable { background: var(--color-green); color: white; border-color: var(--color-green); } .tasknotes-webhook-action-btn.enable:hover { background: var(--color-green); opacity: 0.9; } .tasknotes-webhook-action-btn.disable { background: var(--color-orange); color: white; border-color: var(--color-orange); } .tasknotes-webhook-action-btn.disable:hover { background: var(--color-orange); opacity: 0.9; } .tasknotes-webhook-action-btn.delete { background: var(--color-red); color: white; border-color: var(--color-red); } .tasknotes-webhook-action-btn.delete:hover { background: var(--color-red); opacity: 0.9; } .tasknotes-webhook-action-icon { display: flex; align-items: center; } .tasknotes-webhook-action-text { font-weight: 500; } /* Webhook Modal */ .tasknotes-webhook-modal .modal { width: auto; max-width: 700px; } .tasknotes-webhook-modal .modal-content { width: 600px; max-width: 90vw; box-sizing: border-box; } .tasknotes-webhook-modal * { box-sizing: border-box; max-width: 100%; } /* Better styling for Settings in modal */ .tasknotes-webhook-modal .setting-item { padding: 1rem; margin-bottom: 0.75rem; background: var(--background-modifier-form-field); border: 1px solid var(--background-modifier-border); border-radius: 8px; transition: all 0.2s ease; } .tasknotes-webhook-modal .setting-item:hover { border-color: var(--interactive-accent); background: var(--background-modifier-hover); } .tasknotes-webhook-modal .setting-item:last-child { margin-bottom: 0; } .tasknotes-webhook-modal .setting-item-info { margin-right: 1rem; } .tasknotes-webhook-modal .setting-item-name { font-weight: 500; margin-bottom: 0.25rem; color: var(--text-normal); } .tasknotes-webhook-modal .setting-item-description { font-size: 0.85rem; color: var(--text-muted); line-height: 1.4; } .tasknotes-webhook-modal-header { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 2rem; padding-bottom: 1.25rem; border-bottom: 2px solid var(--background-modifier-border); } .tasknotes-webhook-modal-icon { display: flex; align-items: center; color: var(--interactive-accent); padding: 0.5rem; background: rgba(var(--interactive-accent-rgb), 0.1); border-radius: 8px; } .tasknotes-webhook-modal-title { margin: 0; color: var(--text-normal); font-size: 1.4rem; font-weight: 600; } .tasknotes-webhook-modal-section { margin-bottom: 2rem; width: 100%; overflow: hidden; } .tasknotes-webhook-modal-subsection-header { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 1.5rem; padding: 0.75rem 0; border-bottom: 1px solid var(--background-modifier-border-hover); } .tasknotes-webhook-modal-subsection-header span { color: var(--interactive-accent); padding: 0.25rem; background: rgba(var(--interactive-accent-rgb), 0.1); border-radius: 4px; } .tasknotes-webhook-modal-subsection-header h3 { margin: 0; font-size: 1.1rem; font-weight: 600; color: var(--text-normal); } /* Events List */ .tasknotes-webhook-events-list { margin-top: 1rem; max-width: 100%; display: flex; flex-direction: column; gap: 0.5rem; } /* Transform Help */ .tasknotes-webhook-transform-help { background: var(--background-secondary); border: 1px solid var(--background-modifier-border); border-radius: 8px; padding: 1.25rem; margin-top: 1rem; max-width: 100%; overflow-wrap: break-word; word-wrap: break-word; } .tasknotes-webhook-help-header { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.75rem; font-weight: 500; } .tasknotes-webhook-help-list { margin: 0.75rem 0; padding-left: 1.25rem; } .tasknotes-webhook-help-list li { margin-bottom: 0.5rem; line-height: 1.4; word-wrap: break-word; overflow-wrap: break-word; } .tasknotes-webhook-help-example { margin-top: 0.75rem; padding-top: 0.75rem; border-top: 1px solid var(--background-modifier-border); font-size: 0.9rem; word-wrap: break-word; overflow-wrap: break-word; } /* Modal Buttons */ .tasknotes-webhook-modal-buttons { display: flex; gap: 0.75rem; justify-content: flex-end; margin-top: 2rem; padding-top: 1.5rem; border-top: 1px solid var(--background-modifier-border); flex-wrap: wrap; } .tasknotes-webhook-modal-btn { display: flex; align-items: center; gap: 0.5rem; padding: 0.875rem 1.5rem; border: 1px solid var(--background-modifier-border); border-radius: 6px; background: var(--background-primary); color: var(--text-normal); font-size: 0.9rem; font-weight: 500; cursor: var(--cursor); transition: all 0.2s ease; white-space: nowrap; min-width: 0; flex-shrink: 0; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); } .tasknotes-webhook-modal-btn:hover { background: var(--background-modifier-hover); border-color: var(--interactive-accent); box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15); transform: translateY(-1px); } .tasknotes-webhook-modal-btn.cancel { background: var(--background-secondary); border-color: var(--background-modifier-border-hover); } .tasknotes-webhook-modal-btn.cancel:hover { background: var(--background-modifier-hover); } .tasknotes-webhook-modal-btn.save { background: var(--interactive-accent); color: var(--text-on-accent); border-color: var(--interactive-accent); } .tasknotes-webhook-modal-btn.save:hover { background: var(--interactive-accent-hover); border-color: var(--interactive-accent-hover); } .tasknotes-webhook-modal-btn-icon { display: flex; align-items: center; } /* Secret Notice */ .tasknotes-webhook-secret-notice { padding: 1rem; } .tasknotes-webhook-secret-title { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.75rem; font-weight: 500; color: var(--color-green); } .tasknotes-webhook-secret-content { font-size: 0.9rem; line-height: 1.4; } .tasknotes-webhook-secret-code { background: var(--background-modifier-form-field); border: 1px solid var(--background-modifier-border); border-radius: 3px; padding: 0.2rem 0.4rem; font-family: var(--font-monospace); font-size: 0.85rem; margin: 0 0.25rem; } /* Responsive Design */ @media (max-width: 768px) { .tasknotes-webhook-modal .modal-content { width: 95vw; } .tasknotes-webhook-card { margin: 0 -0.5rem; } .tasknotes-webhook-header { flex-direction: column; align-items: flex-start; gap: 0.75rem; } .tasknotes-webhook-url-section { width: 100%; } .tasknotes-webhook-modal-buttons { flex-direction: column; } .tasknotes-webhook-modal-btn { width: 100%; justify-content: center; } .tasknotes-webhook-stats { flex-direction: column; gap: 0.5rem; } } /* Dark theme adjustments */ .theme-dark .tasknotes-webhook-card:hover { box-shadow: 0 2px 8px rgba(255, 255, 255, 0.1); } /* Accessibility improvements */ .tasknotes-webhook-action-btn:focus, .tasknotes-webhook-modal-btn:focus { outline: 2px solid var(--interactive-accent); outline-offset: 2px; } /* Animation for status changes */ .tasknotes-webhook-status-indicator { transition: all 0.3s ease; } .tasknotes-webhook-card { transition: all 0.2s ease, transform 0.2s ease; } .tasknotes-webhook-card:hover { transform: translateY(-1px); } /* ===== STATUS-BAR.CSS ===== */ /* TaskNotes Status Bar Styles */ .tasknotes-status-bar { display: flex; align-items: center; gap: 4px; padding: 2px 6px; border-radius: 4px; background: transparent; transition: background-color 0.2s ease; min-width: 0; /* Allow text truncation */ } .tasknotes-status-bar:hover { background: var(--background-modifier-hover); } .tasknotes-status-icon { font-size: 12px; line-height: 1; flex-shrink: 0; } .tasknotes-status-text { font-size: 12px; line-height: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--text-muted); max-width: 200px; /* Limit width to prevent status bar from being too wide */ } .tasknotes-status-bar:hover .tasknotes-status-text { color: var(--text-normal); } /* Responsive behavior for smaller screens */ @media (max-width: 768px) { .tasknotes-status-text { max-width: 120px; } } /* Dark theme adjustments */ .theme-dark .tasknotes-status-bar { color: var(--text-muted); } .theme-dark .tasknotes-status-bar:hover { background: var(--background-modifier-hover); color: var(--text-normal); } /* Light theme adjustments */ .theme-light .tasknotes-status-bar { color: var(--text-muted); } .theme-light .tasknotes-status-bar:hover { background: var(--background-modifier-hover); color: var(--text-normal); } /* ===== BASES-VIEWS.CSS ===== */ /* ================================================ BASES VIEWS - TaskNotes Integration Styles ================================================ */ /* ================================================ CUSTOM NEW TASK BUTTON Toggle between native and TaskNotes "New" button ================================================ */ /* Hide TaskNotes button by default */ .tn-bases-new-task-btn { display: none; } /* When a TaskNotes view is active: show our button, hide native */ .tasknotes-view-active .tn-bases-new-task-btn { display: flex; } .tasknotes-view-active .bases-toolbar-new-item-menu { display: none; } /* Bases TaskNotes List View Container */ .tn-bases-tasknotes-list { display: flex; flex-direction: column; gap: var(--tn-spacing-xs); width: 100%; padding: var(--tn-spacing-sm); } /* Task Group Section (matches TaskListView structure) */ .tn-bases-tasknotes-list .task-section.task-group { margin-bottom: var(--tn-spacing-md); } /* Group Header */ .tn-bases-tasknotes-list .task-group-header { display: flex; align-items: center; gap: var(--tn-spacing-xs); justify-content: flex-start; padding: var(--tn-spacing-xs) var(--tn-spacing-md) var(--tn-spacing-xs) var(--tn-spacing-sm); margin-bottom: var(--tn-spacing-sm); border-bottom: 1px solid var(--tn-border-color); position: relative; font-size: var(--tn-font-size-lg); font-weight: var(--tn-font-weight-medium); color: var(--tn-text-normal); letter-spacing: 0.01em; line-height: 1.4; cursor: var(--cursor); } /* Count element within group headers */ .tn-bases-tasknotes-list .task-group-header .agenda-view__item-count { margin-left: auto; margin-right: 0; } /* Toggle button for groups */ .tn-bases-tasknotes-list .task-group-toggle { display: flex; align-items: center; justify-content: center; width: 20px; height: 20px; flex-shrink: 0; border: none; background: transparent; color: var(--tn-text-normal); font-size: 14px; line-height: 1; cursor: var(--cursor); padding: 0; } /* Default expanded state - chevron pointing down */ .tn-bases-tasknotes-list .task-group .task-group-toggle svg { color: var(--tn-text-normal); transition: transform 0.2s ease; transform: rotate(90deg) !important; } /* Collapsed state - chevron pointing right */ .tn-bases-tasknotes-list .task-group.is-collapsed .task-group-toggle svg { transform: rotate(0deg) !important; } /* Hide task cards when collapsed */ .tn-bases-tasknotes-list .task-group.is-collapsed .task-cards { display: none; } /* Sub-group header styling */ .tn-tasknoteTaskList .task-group[data-level="sub"] { padding-left: 16px; /* Subtle indentation */ margin-bottom: var(--tn-spacing-sm); } .tn-tasknoteTaskList .task-group[data-level="sub"] .task-group-header { font-size: 0.95em; font-weight: 500; /* Less bold than primary */ color: var(--tn-text-muted); padding: var(--tn-spacing-xs) var(--tn-spacing-sm); } .tn-tasknoteTaskList .task-group[data-level="sub"] .task-group-toggle { opacity: 0.8; /* Slightly more subtle chevron */ } .tn-tasknoteTaskList .task-group[data-level="sub"] .task-group-toggle svg { width: 14px; height: 14px; } /* Task cards container */ .tn-bases-tasknotes-list .tasks-container.task-cards { display: flex; flex-direction: column; gap: var(--tn-spacing-xs); padding-left: var(--tn-spacing-md); } /* Empty state */ .tn-bases-empty { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: var(--tn-spacing-xl); text-align: center; color: var(--tn-text-muted); background: var(--tn-bg-secondary); border: 1px solid var(--tn-border-color); border-radius: var(--tn-radius-md); margin: var(--tn-spacing-lg) 0; } /* Kanban Board Styles */ .tn-bases-kanban-board { display: flex; gap: var(--tn-spacing-md); overflow-x: auto; padding: var(--tn-spacing-sm); min-height: 400px; } .tn-bases-kanban-column { flex: 0 0 280px; min-width: 280px; display: flex; flex-direction: column; background: var(--tn-bg-secondary); border: 1px solid var(--tn-border-color); border-radius: var(--tn-radius-md); overflow: hidden; } .tn-bases-kanban-column-header { padding: var(--tn-spacing-md); background: var(--tn-bg-primary); border-bottom: 1px solid var(--tn-border-color); font-weight: var(--tn-font-weight-medium); color: var(--tn-text-normal); display: flex; align-items: center; justify-content: space-between; } .tn-bases-kanban-column-name { font-size: var(--tn-font-size-md); } .tn-bases-kanban-column-count { font-size: var(--tn-font-size-sm); color: var(--tn-text-muted); background: var(--tn-bg-secondary); padding: 2px 8px; border-radius: var(--tn-radius-sm); } .tn-bases-kanban-tasks { flex: 1; padding: var(--tn-spacing-sm); display: flex; flex-direction: column; gap: var(--tn-spacing-xs); overflow-y: auto; } /* Drag and drop styles */ .tn-bases-kanban-tasks.drag-over { background: var(--tn-interactive-hover); border: 2px dashed var(--tn-interactive-accent); border-radius: var(--tn-radius-sm); } /* Bases Calendar List View - minimalist styling */ .fc-event-default-list { padding: var(--tn-spacing-xs) var(--tn-spacing-sm); margin: var(--tn-spacing-xs) 0; background: transparent; border: none; border-radius: var(--tn-radius-sm); } /* Style FullCalendar list view structure */ #bases-calendar .fc-list { background: transparent; } #bases-calendar .fc-list-table { background: transparent; } #bases-calendar .fc-list-event { background: transparent; border: none; } #bases-calendar .fc-list-event:hover { background: var(--tn-interactive-hover); } #bases-calendar .fc-list-day-cushion { background: transparent; padding: var(--tn-spacing-sm) var(--tn-spacing-xs); border-bottom: 1px solid var(--tn-divider-color); font-weight: var(--tn-font-weight-medium); } #bases-calendar .fc-list-day { background: transparent; } /* Override FullCalendar's bright white border color in dark mode */ .theme-dark #bases-calendar.fc-theme-standard { --fc-border-color: var(--background-modifier-border); } /* Responsive design for Bases views */ @media (max-width: 768px) { .tn-bases-kanban-board { gap: var(--tn-spacing-sm); } .tn-bases-kanban-column { flex: 0 0 240px; min-width: 240px; } } @media (max-width: 480px) { .tn-bases-tasknotes-list .task-group-header { font-size: var(--tn-font-size-md); padding: var(--tn-spacing-sm) 0 var(--tn-spacing-xs); } .tn-bases-kanban-column { flex: 0 0 200px; min-width: 200px; } } /* ================================================ SWIMLANE KANBAN LAYOUT ================================================ */ /* Board with swimlanes - use CSS Grid instead of flexbox */ .kanban-view__board--swimlanes { display: flex; flex-direction: column; gap: 0; overflow: auto; padding: var(--tn-spacing-sm); min-height: 400px; } /* Each swimlane row */ .kanban-view__swimlane-row { display: grid; /* First column is the swimlane label with fixed width, rest are kanban columns */ grid-template-columns: var(--kanban-swimlane-label-width, 120px); grid-auto-columns: var(--kanban-column-width, 280px); grid-auto-flow: column; gap: 1px; background: var(--tn-border-color); border: 1px solid var(--tn-border-color); border-bottom: none; min-width: max-content; } /* Last row gets bottom border */ .kanban-view__swimlane-row:last-child { border-bottom: 1px solid var(--tn-border-color); } /* Header row styling */ .kanban-view__swimlane-row--header { position: sticky; top: 0; z-index: 10; background: var(--tn-bg-primary); font-weight: var(--tn-font-weight-semibold); } /* Swimlane label cell (leftmost column) */ .kanban-view__swimlane-label { background: var(--tn-bg-secondary); padding: var(--tn-spacing-md); display: flex; flex-direction: column; gap: var(--tn-spacing-xs); align-items: flex-start; justify-content: center; border-right: 1px solid var(--tn-border-color); position: sticky; left: 0; z-index: 5; } /* Swimlane title */ .kanban-view__swimlane-title { font-weight: var(--tn-font-weight-medium); color: var(--tn-text-normal); font-size: var(--tn-font-size-md); } /* Swimlane task count */ .kanban-view__swimlane-count { font-size: var(--tn-font-size-sm); color: var(--tn-text-muted); background: var(--tn-bg-primary); padding: 2px 6px; border-radius: var(--tn-radius-sm); } /* Column header cell in header row */ .kanban-view__column-header-cell { background: var(--tn-bg-secondary); padding: var(--tn-spacing-md); display: flex; align-items: center; justify-content: center; text-align: center; cursor: grab; user-select: none; transition: all var(--tn-transition-fast); gap: var(--tn-spacing-xs); } .kanban-view__column-header-cell:active { cursor: grabbing; } .kanban-view__column-header-cell--dragging { opacity: 0.5; transform: rotate(2deg); box-shadow: var(--tn-shadow-medium); } .kanban-view__column-header-cell .kanban-view__column-title { font-size: var(--tn-font-size-md); font-weight: var(--tn-font-weight-semibold); color: var(--tn-text-normal); } /* Individual swimlane column cells (data cells) */ .kanban-view__swimlane-column { background: var(--tn-bg-primary); padding: var(--tn-spacing-sm); min-height: 100px; max-height: var(--kanban-swimlane-max-height, 600px); display: flex; flex-direction: column; } /* Tasks container within each cell */ .kanban-view__swimlane-column .kanban-view__tasks-container { display: flex; flex-direction: column; gap: var(--tn-spacing-xs); flex: 1; overflow-y: auto; min-height: 0; } /* Drag over state for swimlane cells */ .kanban-view__swimlane-column--dragover { background: var(--tn-interactive-hover); outline: 2px dashed var(--tn-interactive-accent); outline-offset: -2px; } /* Responsive adjustments for swimlanes */ @media (max-width: 1200px) { .kanban-view__swimlane-row > :first-child { width: 150px; min-width: 150px; } .kanban-view__swimlane-label { padding: var(--tn-spacing-sm); } } @media (max-width: 768px) { .kanban-view__swimlane-row > :first-child { width: 120px; min-width: 120px; } .kanban-view__swimlane-title { font-size: var(--tn-font-size-sm); } .kanban-view__column-header-cell .kanban-view__column-title { font-size: var(--tn-font-size-sm); } }