/** Django-specific fixes for Tabler theme **/

/* ============================================================================
   GLOBAL LINK STYLING
   ========================================================================== */
.page a {
    text-decoration: none;
}

/* ============================================================================
   LOGIN LOGO - Light/Dark Mode Support
   ========================================================================== */
.login-logo .logo-dark { display: none; }
.login-logo .logo-light { display: inline; }
html[data-bs-theme="dark"] .login-logo .logo-light { display: none; }
html[data-bs-theme="dark"] .login-logo .logo-dark { display: inline; }

/* ============================================================================
   DJANGO FORM INLINES - Hide empty extra form rows
   ========================================================================== */
.empty-form {
    display: none !important;
}

.table tr.form-row {
    display: table-row;
}

/* ============================================================================
   DJANGO FORM FIELDS - Style Django's widget classes to match Tabler
   ========================================================================== */
.vTextField,
.vLargeTextField,
.vURLField,
.vIntegerField,
.vBigIntegerField,
.vForeignKeyRawIdAdminField,
.vDateField,
.vTimeField {
    height: calc(2.25rem + 2px);
    padding: .375rem .75rem;
    font-size: var(--tblr-body-font-size, 0.875rem);
    font-weight: 400;
    line-height: 1.5;
    background-color: var(--tblr-bg-forms, var(--tblr-body-bg));
    background-clip: padding-box;
    border: var(--tblr-border-width) solid var(--tblr-border-color);
    border-radius: var(--tblr-border-radius);
    color: var(--tblr-body-color);
    transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out;
}

.vTextField:focus,
.vLargeTextField:focus,
.vURLField:focus,
.vIntegerField:focus,
.vBigIntegerField:focus,
.vForeignKeyRawIdAdminField:focus,
.vDateField:focus,
.vTimeField:focus {
    border-color: var(--tblr-primary);
    outline: 0;
    box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25);
}

.vDateField,
.vTimeField {
    display: inline-block;
    min-width: 200px;
}

.vLargeTextField {
    height: auto;
    min-height: calc(2.25rem + 2px);
}

/* Dark mode theming for bare inputs */
input[type="text"],
input[type="email"],
input[type="url"],
input[type="number"],
input[type="date"],
input[type="time"],
input[type="datetime-local"],
input[type="password"],
textarea {
    background-color: var(--tblr-bg-forms, var(--tblr-body-bg));
    border-color: var(--tblr-border-color);
    color: var(--tblr-body-color);
}

/* Style Django's plain select elements */
select:not(.form-select):not([multiple]) {
    display: block;
    width: 100%;
    padding: .375rem 2.25rem .375rem .75rem;
    font-size: var(--tblr-body-font-size, 0.875rem);
    font-weight: 400;
    line-height: 1.5;
    color: var(--tblr-body-color);
    appearance: none;
    background-color: var(--tblr-bg-forms, var(--tblr-body-bg));
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%239ca3af' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
    background-repeat: no-repeat;
    background-position: right .75rem center;
    background-size: 16px 12px;
    border: var(--tblr-border-width) solid var(--tblr-border-color);
    border-radius: var(--tblr-border-radius);
    transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out;
}

select:not(.form-select):not([multiple]):focus {
    border-color: var(--tblr-primary);
    outline: 0;
    box-shadow: 0 0 0 .25rem rgba(var(--tblr-primary-rgb), .25);
}

.actions select {
    width: auto;
    display: inline-block;
}

/* ============================================================================
   DJANGO CALENDAR & CLOCK WIDGETS
   ========================================================================== */
.calendarbox,
.clockbox {
    margin: 5px auto;
    font-size: 12px;
    width: 19em;
    text-align: center;
    background-color: var(--tblr-body-bg);
    border: var(--tblr-border-width) solid var(--tblr-border-color);
    border-radius: var(--tblr-border-radius);
    box-shadow: var(--tblr-shadow-sm);
    overflow: hidden;
    z-index: 1000;
}

.clockbox {
    width: auto;
}

.calendar table {
    margin: 0;
    padding: 0;
    border-collapse: collapse;
    width: 100%;
}

.calendar th {
    padding: 8px 5px;
    border-bottom: var(--tblr-border-width) solid var(--tblr-border-color);
    font-weight: 400;
    font-size: 12px;
}

.calendar td {
    font-weight: 400;
    font-size: 12px;
    padding: 0;
    border-top: var(--tblr-border-width) solid var(--tblr-border-color);
}

.calendar td.selected a {
    background: var(--tblr-primary);
    color: #fff !important;
}

.calendar td a,
.timelist a {
    display: block;
    padding: 6px;
}

.calendar td a:hover,
.timelist a:hover {
    background: var(--tblr-primary);
    color: white;
}

.date-icon::before,
.clock-icon::before {
    font-family: "Font Awesome 5 Free" !important;
    display: inline-block;
    font: normal normal normal 14px/1 FontAwesome !important;
    content: "\f073";
}

.clock-icon::before {
    content: "\f017";
}

/* ============================================================================
   DJANGO RELATED WIDGET
   ========================================================================== */
.related-widget-wrapper {
    display: flex;
    align-items: center;
    gap: 0.25rem;
}

.related-widget-wrapper .select2-container {
    flex: 1;
    min-width: 0;
}

.related-widget-wrapper-link {
    flex-shrink: 0;
}

/* ============================================================================
   SIDEBAR
   ========================================================================== */
.navbar-vertical {
    z-index: 1030;
}

.sidebar-collapsed .navbar-vertical {
    width: 0;
    overflow: hidden;
}

.sidebar-collapsed .page-wrapper,
.sidebar-collapsed header.navbar {
    margin-left: 0 !important;
}

/* ============================================================================
   SELECT2 - Theme support
   ========================================================================== */
html[data-bs-theme="dark"] .select2-container--default .select2-selection--single,
html[data-bs-theme="dark"] .select2-container--default .select2-selection--multiple {
    background-color: var(--tblr-body-bg);
    border-color: var(--tblr-border-color);
    color: var(--tblr-body-color);
}

html[data-bs-theme="dark"] .select2-container--default .select2-selection--single .select2-selection__rendered,
html[data-bs-theme="dark"] .select2-container--default .select2-selection--multiple .select2-selection__rendered {
    color: var(--tblr-body-color);
}

html[data-bs-theme="dark"] .select2-dropdown {
    background-color: var(--tblr-body-bg);
    border-color: var(--tblr-border-color);
}

html[data-bs-theme="dark"] .select2-container--default .select2-results__option {
    background-color: var(--tblr-body-bg);
    color: var(--tblr-body-color);
}

html[data-bs-theme="dark"] .select2-container--default .select2-results__option--highlighted[aria-selected] {
    background-color: var(--tblr-primary);
    color: var(--tblr-white);
}

.select2-container--default .select2-selection--single,
.select2-container--default .select2-selection--multiple {
    border: var(--tblr-border-width) solid var(--tblr-border-color);
    border-radius: var(--tblr-border-radius);
}

/* ============================================================================
   FORM SPACING
   ========================================================================== */
.form-row {
    margin-bottom: 1rem;
}

.form-group {
    margin-bottom: 1rem;
}

.inline-related .form-row,
.inline-related .form-group {
    padding: 0.5rem;
}

/* ============================================================================
   HORIZONTAL SELECTORS - filter_horizontal / filter_vertical
   ========================================================================== */
.selector {
    display: flex;
    align-items: stretch;
    width: 100%;
}

.selector-available,
.selector-chosen {
    flex: 1;
    min-width: 0;
}

.selector ul.selector-chooser {
    flex: 0 0 auto;
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 0.5rem;
    margin: 0;
    list-style: none;
    gap: 0.25rem;
}

.selector ul.selector-chooser li {
    list-style: none;
}

.selector ul.selector-chooser a {
    display: block;
    width: 2rem;
    height: 2rem;
    line-height: 2rem;
    text-align: center;
    background-color: var(--tblr-bg-surface);
    border: var(--tblr-border-width) solid var(--tblr-border-color);
    border-radius: var(--tblr-border-radius);
    color: var(--tblr-body-color);
    font-size: 0;
}

.selector ul.selector-chooser a::before {
    font-family: "Font Awesome 5 Free";
    font-weight: 900;
    font-size: 0.75rem;
}

.selector ul.selector-chooser a.selector-chooseall::before { content: "\f101"; }
.selector ul.selector-chooser a.selector-add::before { content: "\f054"; }
.selector ul.selector-chooser a.selector-remove::before { content: "\f053"; }
.selector ul.selector-chooser a.selector-clearall::before { content: "\f100"; }

.selector ul.selector-chooser a:hover {
    background-color: var(--tblr-primary);
    border-color: var(--tblr-primary);
    color: #fff;
}

.selector select {
    width: 100%;
    height: 15em;
    padding: .25rem .5rem;
    font-size: var(--tblr-body-font-size, 0.875rem);
    color: var(--tblr-body-color);
    background-color: var(--tblr-bg-forms, var(--tblr-body-bg));
    border: var(--tblr-border-width) solid var(--tblr-border-color);
    border-radius: 0 0 var(--tblr-border-radius) var(--tblr-border-radius);
    border-top: none;
}

.selector-available h2,
.selector-chosen h2 {
    margin: 0;
    padding: 0.375rem 0.75rem;
    background-color: var(--tblr-bg-surface);
    border: var(--tblr-border-width) solid var(--tblr-border-color);
    border-radius: var(--tblr-border-radius) var(--tblr-border-radius) 0 0;
    font-size: 0.8125rem;
    font-weight: 600;
}

.selector .selector-filter {
    padding: 0.375rem;
    border: var(--tblr-border-width) solid var(--tblr-border-color);
    border-top: none;
    background-color: var(--tblr-bg-forms, var(--tblr-body-bg));
}

.selector .selector-filter label {
    display: none;
}

.selector .selector-filter input {
    width: 100%;
    padding: .25rem .5rem;
    font-size: var(--tblr-body-font-size, 0.875rem);
    border: var(--tblr-border-width) solid var(--tblr-border-color);
    border-radius: var(--tblr-border-radius);
    background-color: var(--tblr-bg-forms, var(--tblr-body-bg));
    color: var(--tblr-body-color);
}

/* ============================================================================
   ACTIONS PANEL - Detail page sidebar
   ========================================================================== */
#jazzy-actions {
    position: sticky;
    top: 4rem;
}

#jazzy-actions .d-flex {
    flex-direction: column;
}

#jazzy-actions .d-flex .btn,
#jazzy-actions .d-flex input[type="submit"] {
    width: 100%;
}

#jazzy-actions .object-tools {
    list-style: none;
    padding: 0;
    margin: 1rem 0 0 0;
}

#jazzy-actions .object-tools li a {
    display: block;
    padding: .25rem .5rem;
    font-size: var(--tblr-body-font-size, 0.875rem);
    text-align: center;
    border-radius: var(--tblr-border-radius);
    background-color: var(--tblr-bg-surface);
    border: var(--tblr-border-width) solid var(--tblr-border-color);
    color: var(--tblr-body-color);
}

#jazzy-actions .object-tools li a:hover {
    background-color: var(--tblr-bg-surface-secondary);
}

.jazzy-actions-bottom {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .5rem;
}

.jazzy-actions-bottom .d-flex {
    flex-direction: row;
    flex-wrap: wrap;
}

.jazzy-actions-bottom .d-flex .btn,
.jazzy-actions-bottom .d-flex input[type="submit"] {
    width: auto;
}

.jazzy-actions-bottom .object-tools {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
}

.jazzy-actions-bottom .object-tools li {
    margin: 0;
}

.jazzy-actions-bottom .object-tools li a {
    display: inline-block;
    padding: .25rem .5rem;
    font-size: var(--tblr-body-font-size, 0.875rem);
    border-radius: var(--tblr-border-radius);
    background-color: var(--tblr-bg-surface);
    border: var(--tblr-border-width) solid var(--tblr-border-color);
    color: var(--tblr-body-color);
}

.jazzy-actions-bottom .object-tools li a:hover {
    background-color: var(--tblr-bg-surface-secondary);
}

/* ============================================================================
   TAB CONTENT
   ========================================================================== */
.tab-content {
    overflow-x: auto;
}

.tab-pane .inline-related {
    overflow-x: auto;
}

/* ============================================================================
   HELP TEXT AND ERRORS
   ========================================================================== */
.help-block,
.helptext {
    font-size: 0.8125rem;
    color: var(--tblr-secondary-color);
    margin-top: 0.25rem;
    display: block;
}

.help-block.red,
.errorlist {
    color: var(--tblr-danger);
    font-size: 0.8125rem;
}

.text-red {
    color: var(--tblr-danger);
}

.readonly {
    padding: .375rem .75rem;
    background-color: var(--tblr-bg-surface);
    border: var(--tblr-border-width) solid var(--tblr-border-color);
    border-radius: var(--tblr-border-radius);
    color: var(--tblr-secondary-color);
}

/* ============================================================================
   CHANGELIST
   ========================================================================== */
.djn-checkbox-select-all {
    width: 1.5em;
    text-align: center;
    padding-right: 0 !important;
}

.table td.action-checkbox {
    width: 1.5em;
    text-align: center;
    padding-right: 0 !important;
}

/* ============================================================================
   NO-SIDEBAR MODE
   ========================================================================== */
.no-sidebar .page-wrapper {
    margin-left: 0;
}

.no-sidebar header.navbar {
    margin-left: 0;
}

/* ============================================================================
   POPUP MODE
   ========================================================================== */
.popup .page-wrapper {
    margin-left: 0;
    padding-top: 1rem;
}
