/**
 * DatePicker Component Styles
 *
 * Custom theme for Flatpickr library using our CSS variables
 * Supports light/dark themes automatically
 */

/* === DATEPICKER WRAPPER === */
/* 2026-05-17: base wrapper is a flex row by default so the lead calendar
   icon sits inline with the input. Without flex the icon and the 100%-wide
   input wrap onto two lines ("floating icon" bug — happened in every modal
   embedding the DatePicker: gantt period, Manage Activity Dates, etc.). */
.datepicker-wrapper {
    position: relative;
    width: 100%;
    display: flex;
    align-items: center;
    gap: 6px;
}

/* Lead calendar icon — flex-fixed so it doesn't shrink when the input
   stretches across the row. (--with-presets has its own sizing below.) */
.datepicker-wrapper > .datepicker-lead-icon {
    font-size: 18px;
    color: var(--text-secondary);
    flex-shrink: 0;
    pointer-events: none;
}

/* Input fills the remaining space inside the flex row. */
.datepicker-wrapper > .datepicker-input {
    flex: 1 1 auto;
    min-width: 0;
}

/* When presets render inside the wrapper, the wrapper itself owns the
   border + background so the input and chips share one visual field.
   Layout: [icon] [input (flex)] [presets chips]  — all in one row. */
.datepicker-wrapper--with-presets {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 8px;
    padding: 4px 8px;
    background-color: var(--bg-secondary);
    border: 1px solid var(--border-secondary);
    border-radius: var(--radius-md);
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
    /* [2026-09-18] Перечень вместо `all` (аудит Д1, закрытие хвоста).
       Ref: docs/AUDIT_UI_MOTION_2026-09-17.md Д1. Chat: ui-motion-fixes-2026-09-17. */
    transition:
        background-color var(--transition-base),
        border-color var(--transition-base),
        color var(--transition-base),
        box-shadow var(--transition-base),
        transform var(--transition-base);
    min-height: 38px;
}

.datepicker-wrapper--with-presets:hover {
    background-color: var(--bg-hover);
    border-color: var(--border-hover);
}

.datepicker-wrapper--with-presets:focus-within {
    background-color: var(--bg-primary);
    border-color: var(--brand-primary);
}

/* Leading calendar icon (decorative, before the Select date label). */
.datepicker-wrapper--with-presets .datepicker-lead-icon {
    font-size: 18px;
    color: var(--text-secondary);
    flex-shrink: 0;
    pointer-events: none;
}

/* Input becomes borderless and flexible inside the bordered wrapper. */
.datepicker-wrapper--with-presets .datepicker-input {
    flex: 1 1 auto;
    min-width: 80px;
    height: 28px;
    padding: 0 26px 0 0;
    background: transparent;
    background-color: transparent;
    border: none;
    box-shadow: none;
}

.datepicker-wrapper--with-presets .datepicker-input:hover,
.datepicker-wrapper--with-presets .datepicker-input:focus,
.datepicker-wrapper--with-presets .datepicker-input.active {
    background: transparent;
    border: none;
}

/* Clear × sits inside the input zone, before the presets chips. */
.datepicker-wrapper--with-presets .datepicker-clear {
    position: static;
    transform: none;
    flex-shrink: 0;
    margin-left: -22px;
}

/* Preset chips: compact pills sitting inline with the input. */
.datepicker-wrapper--with-presets .datepicker-presets {
    margin: 0;
    gap: 6px;
    flex: 0 0 auto;
    flex-wrap: nowrap;
}

.datepicker-wrapper--with-presets .datepicker-preset-btn {
    padding: 2px 10px;
    font-size: 11px;
    line-height: 18px;
    height: 22px;
    border-radius: 999px;
    white-space: nowrap;
}

/* === INPUT FIELD === */
/* === INPUT FIELD === */
.datepicker-input {
    width: 100%;
    height: 38px;
    padding: var(--space-2) var(--space-3);
    padding-right: 40px; /* Space for icon */
    font-family: var(--font-family);
    font-size: var(--font-size-sm);
    color: var(--text-primary);
    background-color: var(--bg-secondary);
    background-image: none !important; /* <--- ДОБАВЛЕНО: Убирает иконку flatpickr */
    border: 1px solid var(--border-secondary);
    border-radius: var(--radius-md);
    cursor: pointer;
    /* [2026-09-18] Перечень вместо `all` (аудит Д1). СОЗНАТЕЛЬНО НЕ ВКЛЮЧЕНЫ `padding`, `height`,
       `min-width` и `flex`: их меняют состояния поля даты, и с `all` каждый кадр перехода тянул
       пересчёт раскладки строки контролов. Фокус меняет кольцо — `outline-color` в перечне есть.
       Ref: docs/AUDIT_UI_MOTION_2026-09-17.md Д1. Chat: ui-motion-fixes-2026-09-17. */
    transition:
        background-color var(--transition-base),
        border-color var(--transition-base),
        color var(--transition-base),
        box-shadow var(--transition-base),
        transform var(--transition-base),
        outline-color var(--transition-base);
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}

.datepicker-input:hover {
    background-color: var(--bg-hover);
    border-color: var(--border-hover);
}

.datepicker-input:focus,
.datepicker-input.active {
    outline: none;
    background-color: var(--bg-primary);
    border-color: var(--brand-primary);
}

.datepicker-input::placeholder {
    color: var(--text-tertiary);
}

/* === INHERITED DATE STYLING === */
/* Shows inherited/fallback date with gray color and italic style */
.datepicker-input.datepicker-inherited {
    color: var(--text-tertiary) !important;
    font-style: italic;
    background-color: var(--bg-tertiary);
}

/* === CALENDAR ICON === */
.datepicker-icon {
    position: absolute;
    right: 10px;
    top: 50%;
    transform: translateY(-50%);
    font-size: 20px;
    color: var(--text-secondary);
    pointer-events: none;
}

/* === INLINE CLEAR BUTTON === */
.datepicker-clear {
    position: absolute;
    right: 10px;
    top: 50%;
    transform: translateY(-50%);
    width: 20px;
    height: 20px;
    padding: 0;
    background: none;
    border: none;
    border-radius: 50%;
    color: var(--text-secondary);
    cursor: pointer;
    display: none; /* Toggled on via JS when a value is selected */
    align-items: center;
    justify-content: center;
    transition:
        background-color var(--transition-fast),
        color var(--transition-fast);
}

.datepicker-clear:hover {
    background-color: var(--bg-hover);
    color: var(--text-primary);
}

.datepicker-clear i {
    font-size: 16px;
}

/* Leave room on the right only for the clear × button. */
.datepicker-input {
    padding-right: 34px;
}

/* === PRESETS === */
.datepicker-presets {
    display: flex;
    gap: 8px;
    margin-top: 8px;
    flex-wrap: wrap;
}

.datepicker-preset-btn {
    padding: 6px 12px;
    font-size: var(--font-size-sm);
    font-family: var(--font-family);
    color: var(--text-secondary);
    background-color: transparent;
    border: 1px solid var(--border-primary);
    border-radius: var(--radius-sm);
    cursor: pointer;
    /* [2026-09-18] Перечень вместо `all` (аудит Д1). СОЗНАТЕЛЬНО НЕ ВКЛЮЧЕНЫ `padding`, `height`
       и `font-size`: их меняют состояния этой кнопки-пресета.
       Ref: docs/AUDIT_UI_MOTION_2026-09-17.md Д1. Chat: ui-motion-fixes-2026-09-17. */
    transition:
        background-color var(--transition-base),
        border-color var(--transition-base),
        color var(--transition-base),
        box-shadow var(--transition-base),
        transform var(--transition-base);
}

.datepicker-preset-btn:hover {
    background-color: var(--bg-tertiary);
    border-color: var(--border-secondary);
    color: var(--text-primary);
}

.datepicker-preset-btn.active {
    background-color: var(--color-primary);
    border-color: var(--color-primary);
    color: var(--color-primary-contrast, #fff);
}

.datepicker-preset-btn.active:hover {
    background-color: var(--color-primary);
    color: var(--color-primary-contrast, #fff);
}

/* === FLATPICKR CALENDAR OVERRIDES === */
/* Container */
.flatpickr-calendar {
    background-color: var(--bg-primary) !important;
    border: 1px solid var(--border-primary) !important;
    border-radius: var(--radius-md) !important;
    box-shadow: var(--shadow-lg) !important;
    font-family: var(--font-family) !important;
}

.flatpickr-calendar.open {
    z-index: 10400 !important; /* Above all modals (ModalService: 10100, TagModals: 10250) */
}

/* Month navigation.
   `padding: 10px` here was causing the absolutely-positioned prev/next-month
   buttons (defaulted to left:0 / right:0 inside .flatpickr-months) to sit
   inside the padding box, but on some viewports the next button vanished from
   view. Drop the padding so flatpickr's native horizontal sizing wins; the
   month/year row already has its own padding via .flatpickr-current-month. */
.flatpickr-months {
    background-color: var(--bg-secondary) !important;
    border-bottom: 1px solid var(--border-primary) !important;
    position: relative !important;
    display: flex !important;
    align-items: center !important;
}

.flatpickr-current-month {
    color: var(--text-primary) !important;
    font-weight: var(--font-weight-semibold) !important;
}

.flatpickr-current-month input.cur-year {
    color: var(--text-primary) !important;
    font-weight: var(--font-weight-semibold) !important;
}

.flatpickr-monthDropdown-months {
    background-color: var(--bg-secondary) !important;
    color: var(--text-primary) !important;
    border: 1px solid var(--border-primary) !important;
}

.flatpickr-monthDropdown-months option {
    background-color: var(--bg-primary) !important;
    color: var(--text-primary) !important;
}

/* Navigation arrows.
   Explicit display:flex + fixed 40×40 box guarantees visibility regardless of
   how flatpickr's default CSS interacts with our overrides. Without these
   rules the next-month arrow occasionally vanished on the right edge of the
   calendar header. */
.flatpickr-prev-month,
.flatpickr-next-month {
    color: var(--text-secondary) !important;
    fill: var(--text-secondary) !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 40px !important;
    height: 40px !important;
    cursor: pointer !important;
    z-index: 3 !important;
}

.flatpickr-prev-month {
    left: 0 !important;
}

.flatpickr-next-month {
    right: 0 !important;
}

.flatpickr-prev-month:hover,
.flatpickr-next-month:hover {
    color: var(--text-primary) !important;
    fill: var(--text-primary) !important;
}

.flatpickr-prev-month svg,
.flatpickr-next-month svg {
    fill: var(--text-secondary) !important;
    width: 14px !important;
    height: 14px !important;
}

.flatpickr-prev-month:hover svg,
.flatpickr-next-month:hover svg {
    fill: var(--text-primary) !important;
}

/* Weekdays */
.flatpickr-weekdays {
    background-color: var(--bg-secondary) !important;
}

.flatpickr-weekday {
    color: var(--text-secondary) !important;
    font-weight: var(--font-weight-medium) !important;
}

/* Days container */
.flatpickr-days {
    background-color: var(--bg-primary) !important;
}

.flatpickr-day {
    color: var(--text-primary) !important;
    border: none !important;
    border-radius: var(--radius-sm) !important;
}

/* Day states */
.flatpickr-day:hover {
    background-color: var(--bg-hover) !important;
    border-color: var(--bg-hover) !important;
}

.flatpickr-day.today {
    border: 1px solid var(--brand-primary) !important;
    color: var(--brand-primary) !important;
}

.flatpickr-day.selected {
    background-color: var(--brand-primary) !important;
    border-color: var(--brand-primary) !important;
    color: var(--text-inverse) !important;
}

.flatpickr-day.selected:hover {
    background-color: var(--brand-primary-hover) !important;
    border-color: var(--brand-primary-hover) !important;
}

.flatpickr-day.inRange {
    background-color: var(--brand-primary-light) !important;
    border-color: var(--brand-primary-light) !important;
    color: var(--text-primary) !important;
    box-shadow: none !important;
}

.flatpickr-day.startRange,
.flatpickr-day.endRange {
    background-color: var(--brand-primary) !important;
    border-color: var(--brand-primary) !important;
    color: var(--text-inverse) !important;
}

.flatpickr-day.prevMonthDay,
.flatpickr-day.nextMonthDay {
    color: var(--text-tertiary) !important;
}

.flatpickr-day.disabled {
    color: var(--text-disabled) !important;
    cursor: not-allowed !important;
}

/* Time picker (if enabled) */
.flatpickr-time {
    border-top: 1px solid var(--border-primary) !important;
    background-color: var(--bg-secondary) !important;
}

.flatpickr-time input {
    color: var(--text-primary) !important;
    background-color: var(--bg-primary) !important;
}

/* === DARK THEME ADJUSTMENTS === */
[data-theme='dark'] .flatpickr-calendar {
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3) !important;
}

/* === RESPONSIVE === */
@media (max-width: 768px) {
    .datepicker-presets {
        gap: 6px;
    }

    .datepicker-preset-btn {
        padding: 4px 10px;
        font-size: 0.75rem;
    }

    .flatpickr-calendar {
        font-size: 14px !important;
    }
}
