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

.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 - CONSISTENT BUTTON SYSTEM
   ================================================ */

/* Global button border removal - high specificity without !important */
.tasknotes-plugin button,
.tasknotes-plugin input[type="button"],
.tasknotes-plugin input[type="submit"],
.tasknotes-plugin input[type="reset"],
.tasknotes-plugin [role="button"],
.tasknotes-plugin .button,
.tasknotes-plugin .btn {
    border: none;
    box-shadow: none;
}

/* Hover states should also not have borders */
.tasknotes-plugin button:hover,
.tasknotes-plugin input[type="button"]:hover,
.tasknotes-plugin input[type="submit"]:hover,
.tasknotes-plugin input[type="reset"]:hover,
.tasknotes-plugin [role="button"]:hover,
.tasknotes-plugin .button:hover,
.tasknotes-plugin .btn:hover {
    border: none;
    box-shadow: none;
}

/* Focus states should not have borders either */
.tasknotes-plugin button:focus,
.tasknotes-plugin input[type="button"]:focus,
.tasknotes-plugin input[type="submit"]:focus,
.tasknotes-plugin input[type="reset"]:focus,
.tasknotes-plugin [role="button"]:focus,
.tasknotes-plugin .button:focus,
.tasknotes-plugin .btn:focus {
    border: none;
    box-shadow: none;
}

/* Base Button - All buttons inherit from this */
.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: pointer;
    user-select: none;
    text-decoration: none;
    outline: none;
    box-shadow: none;
    transition: all var(--tn-transition-fast);
    min-height: var(--tn-button-height-md);
}

.tasknotes-plugin .tn-btn:hover {
    background: var(--tn-interactive-hover);
    border: none;
    box-shadow: none;
}

.tasknotes-plugin .tn-btn:active {
    opacity: 0.8;
    border: none;
    box-shadow: none;
}

.tasknotes-plugin .tn-btn:focus-visible {
    outline: 2px solid var(--tn-interactive-accent);
    outline-offset: 2px;
    border: none;
    box-shadow: none;
}

.tasknotes-plugin .tn-btn:disabled {
    opacity: var(--cs-state-disabled);
    cursor: not-allowed;
    pointer-events: none;
    border: none;
    box-shadow: none;
}

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

.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 */
.tasknotes-plugin .tn-btn--primary {
    background: var(--tn-interactive-accent);
    color: var(--text-on-accent);
}

.tasknotes-plugin .tn-btn--primary:hover {
    background: var(--tn-interactive-accent-hover);
}

.tasknotes-plugin .tn-btn--secondary {
    background: var(--tn-interactive-normal);
    color: var(--tn-text-normal);
}

.tasknotes-plugin .tn-btn--secondary:hover {
    background: var(--tn-interactive-hover);
}

.tasknotes-plugin .tn-btn--ghost {
    background: transparent;
    color: var(--tn-text-muted);
}

.tasknotes-plugin .tn-btn--ghost:hover {
    background: var(--tn-interactive-hover);
    color: var(--tn-text-normal);
}

.tasknotes-plugin .tn-btn--danger {
    background: transparent;
    color: var(--tn-color-error);
}

.tasknotes-plugin .tn-btn--danger:hover {
    background: var(--tn-color-error);
    color: var(--tn-bg-primary);
}

.tasknotes-plugin .tn-btn--success {
    background: transparent;
    color: var(--tn-color-success);
}

.tasknotes-plugin .tn-btn--success:hover {
    background: var(--tn-color-success);
    color: var(--tn-bg-primary);
}

/* Icon-only buttons */
.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);
}

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

.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 */
.tasknotes-plugin .tn-btn--pill {
    border-radius: var(--tn-radius-full);
}

/* Full width buttons */
.tasknotes-plugin .tn-btn--full {
    width: 100%;
}

/* Button Groups */
.tasknotes-plugin .tn-btn-group {
    display: flex;
    gap: var(--tn-spacing-xs);
}

.tasknotes-plugin .tn-btn-group .tn-btn {
    flex: 1;
}

.tasknotes-plugin .tn-btn-group--attached {
    gap: 0;
}

.tasknotes-plugin .tn-btn-group--attached .tn-btn {
    border-radius: 0;
}

.tasknotes-plugin .tn-btn-group--attached .tn-btn:first-child {
    border-radius: var(--tn-radius-md) 0 0 var(--tn-radius-md);
}

.tasknotes-plugin .tn-btn-group--attached .tn-btn:last-child {
    border-radius: 0 var(--tn-radius-md) var(--tn-radius-md) 0;
}

.tasknotes-plugin .tn-btn-group--attached .tn-btn:only-child {
    border-radius: var(--tn-radius-md);
}

/* Loading state */
.tasknotes-plugin .tn-btn--loading {
    position: relative;
    color: transparent;
    pointer-events: none;
}

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