﻿@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');

/* Tokens CSS */
:root {
    --corelia-red: #CF122E;
    --corelia-red-dark: #A50E25;
    --corelia-red-light: #FAEAED;
    --corelia-dark: #111111;
    --corelia-secondary: #64666A;
    --corelia-subtle: #8A8D91;
    --corelia-disabled: #B0B3B8;
    --corelia-white: #FFFFFF;
    --corelia-bg: #F5F5F5;
    --corelia-bg-alt: #F7F7F7;
    --corelia-border: #E5E5E5;
    --corelia-border-input: #CCCED2;
    --cloud-dark: #172A3A;
    --cloud-steel: #3D5A6C;
    --cloud-bg: #EEF5F8;
    --security-green: #5F8F7A;
}

/* Base */
html, body, #app {
    margin: 0;
    padding: 0;
    height: 100%;
    font-family: 'Inter', 'Helvetica Neue', Helvetica, Arial, sans-serif;
    font-size: 16px;
    color: var(--corelia-dark);
    background-color: var(--corelia-bg);
    -webkit-font-smoothing: antialiased;
}

/* Boutons */
.mud-button-root {
    border-radius: 6px !important;
    font-weight: 600 !important;
    box-shadow: none !important;
    text-transform: none !important;
    transition: background-color 0.15s, border-color 0.15s, color 0.15s !important;
}

    .mud-button-root.mud-button-filled.mud-button-filled-primary {
        background-color: var(--corelia-red) !important;
        color: var(--corelia-white) !important;
    }

        .mud-button-root.mud-button-filled.mud-button-filled-primary:hover {
            background-color: var(--corelia-red-dark) !important;
            box-shadow: none !important;
        }

    .mud-button-root.mud-button-outlined.mud-button-outlined-primary {
        border: 1.5px solid var(--corelia-red) !important;
        color: var(--corelia-red) !important;
        background-color: transparent !important;
    }

        .mud-button-root.mud-button-outlined.mud-button-outlined-primary:hover {
            background-color: var(--corelia-red-light) !important;
        }

    .mud-button-root.mud-button-filled.mud-button-filled-secondary,
    .mud-button-root.mud-button-filled.mud-button-filled-default {
        background-color: #E0E0E0 !important;
        color: var(--corelia-secondary) !important;
    }

        .mud-button-root.mud-button-filled.mud-button-filled-secondary:hover,
        .mud-button-root.mud-button-filled.mud-button-filled-default:hover {
            background-color: #D0D0D0 !important;
            box-shadow: none !important;
        }

    .mud-button-root.mud-button-outlined.mud-button-outlined-secondary,
    .mud-button-root.mud-button-outlined.mud-button-outlined-default {
        border: 1.5px solid var(--corelia-border) !important;
        color: var(--corelia-secondary) !important;
        background-color: transparent !important;
    }

        .mud-button-root.mud-button-outlined.mud-button-outlined-secondary:hover,
        .mud-button-root.mud-button-outlined.mud-button-outlined-default:hover {
            background-color: var(--corelia-bg) !important;
        }

    .mud-button-root.mud-button-text.mud-button-text-primary {
        color: var(--corelia-red) !important;
    }

        .mud-button-root.mud-button-text.mud-button-text-primary:hover {
            background-color: var(--corelia-red-light) !important;
        }

    .mud-button-root.mud-button-text.mud-button-text-default,
    .mud-button-root.mud-button-text.mud-button-text-secondary {
        color: var(--corelia-secondary) !important;
    }

    .mud-button-root.mud-button-text:hover {
        background-color: rgba(17,17,17,0.05) !important;
    }

/* Icon buttons */
.mud-icon-button {
    color: var(--corelia-secondary) !important;
    border-radius: 4px !important;
}

    .mud-icon-button:hover {
        background-color: var(--corelia-bg) !important;
        color: var(--corelia-dark) !important;
    }

    .mud-icon-button.mud-icon-button-color-primary:hover {
        color: var(--corelia-red) !important;
        background-color: var(--corelia-red-light) !important;
    }

    .mud-icon-button.mud-icon-button-color-error:hover {
        color: var(--corelia-red) !important;
        background-color: var(--corelia-red-light) !important;
    }

/* FAB */
.mud-fab.mud-button-filled-primary {
    background-color: var(--corelia-red) !important;
    color: var(--corelia-white) !important;
    box-shadow: 0 2px 8px rgba(207,18,46,0.3) !important;
}

/* Nav */
.mud-nav-menu {
    background-color: var(--corelia-white);
}

.mud-nav-link {
    color: var(--corelia-secondary) !important;
    border-radius: 0 !important;
    border-left: 3px solid transparent !important;
    font-size: 0.9375rem !important;
    font-weight: 400 !important;
    transition: background-color 0.15s, color 0.15s;
}

    .mud-nav-link .mud-icon-root {
        color: var(--corelia-subtle) !important;
        transition: color 0.15s;
    }

    .mud-nav-link:hover {
        background-color: var(--corelia-bg) !important;
        color: var(--corelia-dark) !important;
    }

        .mud-nav-link:hover .mud-icon-root {
            color: var(--corelia-dark) !important;
        }

    .mud-nav-link.active,
    .mud-nav-link.active:not(.mud-nav-link-disabled) {
        background-color: var(--corelia-white) !important;
        border-left-color: var(--corelia-red) !important;
        color: var(--corelia-dark) !important;
        font-weight: 600 !important;
    }

        .mud-nav-link.active .mud-icon-root {
            color: var(--corelia-red) !important;
        }

.mud-nav-group-title {
    color: var(--corelia-subtle) !important;
    font-size: 0.6875rem !important;
    font-weight: 700 !important;
    text-transform: uppercase !important;
    letter-spacing: 0.1em !important;
}

    .mud-nav-group-title .mud-icon-root {
        color: var(--corelia-subtle) !important;
    }

.mud-nav-group .mud-nav-link {
    /*padding-left: 32px !important;*/
}

/* AppBar / Drawer */
.mud-appbar {
    background-color: var(--corelia-white) !important;
    color: var(--corelia-dark) !important;
    box-shadow: 0 1px 0 var(--corelia-border) !important;
}

.mud-drawer {
    border-right: 1px solid var(--corelia-border) !important;
    background-color: var(--corelia-white) !important;
    box-shadow: none !important;
}

/* Paper */
.mud-paper {
    border-radius: 0 !important;
    background-color: var(--corelia-white) !important;
}

.mud-paper-outlined {
    border: 1px solid var(--corelia-border) !important;
}

.mud-elevation-1, .mud-elevation-2, .mud-elevation-4 {
    box-shadow: 0 1px 3px rgba(0,0,0,0.08) !important;
}

/* Table */
.mud-table-head .mud-table-cell {
    background-color: var(--corelia-bg-alt) !important;
    color: var(--corelia-secondary) !important;
    font-size: 0.75rem !important;
    font-weight: 700 !important;
    text-transform: uppercase !important;
    letter-spacing: 0.08em !important;
    border-bottom: 2px solid var(--corelia-border) !important;
}

.mud-table-body .mud-table-row:hover .mud-table-cell {
    background-color: var(--corelia-bg) !important;
}

/* Tabs */
.mud-tab {
    font-size: 0.9375rem !important;
    font-weight: 500 !important;
    color: var(--corelia-secondary) !important;
    text-transform: none !important;
    padding: 12px 20px !important;
    min-width: unset !important;
    border-radius: 0 !important;
}

    .mud-tab.mud-tab-active, .mud-tab[aria-selected="true"] {
        color: var(--corelia-dark) !important;
        font-weight: 700 !important;
    }

    .mud-tab:hover:not(.mud-tab-active) {
        color: var(--corelia-dark) !important;
        background-color: var(--corelia-bg) !important;
    }

.mud-tab-slider {
    background-color: var(--corelia-red) !important;
    height: 3px !important;
}

.mud-tabs-tabbar {
    border-bottom: 2px solid var(--corelia-border) !important;
    background-color: var(--corelia-white) !important;
}

/* Chips */
.mud-chip {
    border-radius: 2px !important;
}

    .mud-chip.mud-chip-color-primary,
    .mud-chip.mud-chip-color-default.mud-chip-variant-filled {
        background-color: var(--corelia-bg-alt) !important;
        color: var(--corelia-secondary) !important;
        border: 1px solid var(--corelia-border) !important;
    }

/* Inputs */
.mud-input-outlined .mud-notched-outline {
    border-radius: 2px !important;
    border-color: var(--corelia-border-input) !important;
}

.mud-input-outlined:hover .mud-notched-outline {
    border-color: var(--corelia-dark) !important;
}

.mud-input-control.mud-input-control-full-width.mud-focused .mud-notched-outline {
    border-color: var(--corelia-dark) !important;
}

/* Switch / Checkbox */
.mud-switch-track {
    background-color: var(--corelia-border) !important;
}

    .mud-switch-base.mud-checked + .mud-switch-track {
    background-color: var(--security-green) !important;
}

.mud-checkbox .mud-icon-button {
    color: var(--corelia-dark) !important;
}

/* Pagination */
.mud-pagination .mud-button-filled {
    background-color: var(--corelia-red) !important;
    color: var(--corelia-white) !important;
}

/* Divider */
.mud-divider {
    border-color: var(--corelia-border) !important;
}

/* Utilitaires */
.corelia-link {
    color: var(--corelia-dark);
    font-weight: 500;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    transition: color 0.15s;
}

    .corelia-link::before {
        content: '›';
        color: var(--corelia-red);
        font-weight: 700;
        font-size: 1.1em;
    }

    .corelia-link:hover {
        color: var(--corelia-red);
    }

:focus-visible {
    outline: 2px solid var(--corelia-red);
    outline-offset: 2px;
}

::-webkit-scrollbar {
    width: 6px;
    height: 6px;
}

::-webkit-scrollbar-track {
    background: var(--corelia-bg);
}

::-webkit-scrollbar-thumb {
    background: var(--corelia-border);
    border-radius: 2px;
}

    ::-webkit-scrollbar-thumb:hover {
        background: var(--corelia-secondary);
    }

.cloud-badge {
    background-color: var(--cloud-bg);
    color: var(--cloud-steel);
    border: 1px solid var(--cloud-steel);
    font-size: 0.75rem;
    font-weight: 600;
    padding: 2px 8px;
    display: inline-block;
}

.security-tag {
    color: var(--security-green);
    font-weight: 600;
    font-size: 0.8125rem;
}

/* 

   CLASSES GLOBALES DE PAGE 

*/

/* Wrapper de page */
.list-page {
    min-height: 100%;
    background-color: var(--corelia-bg);
}

/* Bandeau header blanc */
.page-header {
    background-color: var(--corelia-white) !important;
    /*padding: 10px;*/
}

/* Icône de titre */
.page-title-icon {
    color: var(--corelia-red) !important;
    font-size: 1.5rem !important;
    margin: 4px 12px;
}
/* Icône de titre */
.page-subtitle {
    margin: 4px 12px;
}

/* Titre h5 */
.page-title {
    font-weight: 700 !important;
    color: var(--corelia-dark) !important;
}

/* Compteur */
.page-count-chip {
    background: var(--corelia-bg-alt) !important;
    color: var(--corelia-secondary) !important;
    border: 1px solid var(--corelia-border) !important;
    font-weight: 700 !important;
    border-radius: 4px !important;
    height: 22px !important;
    font-size: 0.85rem !important;
}

/* Barre de recherche */
.search-bar {
    border-radius: 4px !important;
    overflow: hidden;
    max-width: 750px;
}

    .search-bar .mud-input-root {
        padding: 0 4px !important;
    }

/* Wrapper table */
.table-wrapper {
    border-radius: 4px !important;
    overflow: hidden;
}

/* En-têtes table */
.list-table .mud-table-head .mud-table-cell {
    padding: 10px 16px !important;
}

/* Lignes */
.list-table .mud-table-body .mud-table-row {
    transition: background-color 0.12s;
    border-bottom: 1px solid var(--corelia-border);
}

/* Cellules */
.list-table .mud-table-body .mud-table-cell {
    padding: 10px 16px !important;
    vertical-align: middle !important;
}

/* Colonne actions */
.col-actions {
    width: 140px !important;
    text-align: center !important;
    white-space: nowrap;
}

/* Avatar */
.entity-avatar {
    width: 36px !important;
    height: 36px !important;
    font-size: 0.875rem !important;
    background-color: var(--corelia-red-light) !important;
    color: var(--corelia-red) !important;
    font-weight: 700 !important;
}

/* Nom */
.entity-name {
    font-weight: 600 !important;
    color: var(--corelia-dark) !important;
}

/* État vide */
.empty-state-icon {
    font-size: 3rem !important;
    color: var(--corelia-border) !important;
}

.empty-state-title {
    font-weight: 600 !important;
    color: var(--corelia-secondary) !important;
}

/* Boutons d'action */
.action-btn {
    color: var(--corelia-subtle) !important;
    transition: color 0.12s, background-color 0.12s !important;
}

    .action-btn:hover {
        color: var(--corelia-dark) !important;
        background-color: var(--corelia-bg) !important;
    }

.action-btn-delete:hover {
    color: var(--corelia-red) !important;
    background-color: var(--corelia-red-light) !important;
}

/* Cellule pagination footer */
.pagination-cell {
    padding: 0 !important;
    border-top: 1px solid var(--corelia-border) !important;
}

/* Placeholder page vide */
.page-placeholder {
    border-radius: 4px !important;
    overflow: hidden;
}


/* Mud dialog*/
.mud-dialog.corelia-dialog,
.mud-dialog.corelia-dialog .mud-dialog-surface,
.mud-dialog.corelia-dialog .mud-paper {
    border-radius: 16px !important;
    overflow: hidden !important;
    padding: 20px;
}

    .mud-dialog.corelia-dialog .mud-dialog-title {
        border-radius: 16px 16px 0 0 !important;
        overflow: hidden !important;
    }

    .mud-dialog.corelia-dialog .mud-dialog-actions {
        border-radius: 0 0 16px 16px !important;
        overflow: hidden !important;
        margin: 10px;
    }

.casier-cell-selected {
    outline: 2px solid var(--corelia-red, #CF122E) !important;
    outline-offset: 1px;
}

/* ==========================================================================
   Styles du composant LockerLayout (Components/DisplayLocker/LockerLayout.razor).
   Volontairement placés ici, en CSS GLOBAL, et non dans LockerLayout.razor.css
   (CSS isolé/scopé) : Locker.Cloud.FE.UI est un projet Sdk BlazorWebAssembly
   référencé comme bibliothèque par Locker.Cloud.FE.Server (Sdk.Web, mode
   InteractiveServer) — dans cette configuration, la fusion automatique du
   bundle CSS isolé (Locker.Cloud.FE.UI.bundle.scp.css) dans le bundle final
   du serveur ne s'est pas confirmée fiable. Le CSS global, lui, ne dépend que
   du <link href="css/app.css"> déjà présent et fonctionnel dans App.razor —
   aucune dépendance à la fusion de bundles isolés.
   ========================================================================== */

.locker-layout {
    display: grid;
    gap: 8px;
    justify-content: start;
    padding: 0 !important;
    margin: 0 !important;
    background-color: transparent !important;
    box-shadow: none !important;
}

.locker-cell {
    position: relative;
    border-radius: 8px;
    border: 1px solid #6B3D80;
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    justify-content: flex-start;
    padding: 4px 0 0 6px !important;
    margin: 0 !important;
    font-size: 0.75rem;
    font-weight: 700;
    transition: filter 0.12s ease;
    box-shadow: none !important;
}

    .locker-cell:hover {
        filter: brightness(1.12);
    }

/* Casier disponible : violet foncé du meuble, comme drawBpceDefaultCell côté Device. */
.locker-cell--default {
    background-color: #4B2163 !important;
    color: #EFE6F3;
    cursor: pointer;
}

.locker-cell-number {
    font-family: inherit;
    margin: 0 !important;
    padding: 0 !important;
    color: inherit;
}

.locker-cell-handle {
    position: absolute !important;
    right: 8px;
    bottom: 8px;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background-color: #C9A9D6 !important;
    padding: 0 !important;
    margin: 0 !important;
    box-shadow: none !important;
}

/* Sélectionné : fond clair + bordure mauve, comme le rendu "IsSelected" côté Device. */
.locker-cell--selected {
    background-color: #F3EEF6 !important;
    color: #581D74;
    border-color: #C9A9D6;
}

    .locker-cell--selected .locker-cell-handle {
        background-color: #8A5599 !important;
    }

/* Occupé (porte fermée, colis présent) : drawBpceBusyCell côté Device. */
.locker-cell--busy {
    background-color: #3E1A53 !important;
    color: #C6AFCF;
    border-color: #6B3D80;
    cursor: default;
}

/* Porte ouverte : fond clair + bordure violette pleine, drawBpceOpenCell côté Device. */
.locker-cell--open {
    background-color: #F3EEF6 !important;
    color: #581D74;
    border: 2px solid #581D74;
    cursor: default;
}

/* Incident : rouge-violet sombre, drawBpceUnavailableCell(isIncident: true) côté Device. */
.locker-cell--incident {
    background-color: #4A1F2C !important;
    color: #F0A08F;
    border-color: #7A3648;
    cursor: default;
}

/* Écran : vitre noire + 2 boutons (RFID, code-barres), drawBpceScreenCell côté Device. */
.locker-cell--screen {
    background-color: #4B2163 !important;
    padding: 0 !important;
    align-items: stretch;
    cursor: default;
}

.locker-cell-screen {
    display: flex;
    flex-direction: column;
    gap: 3px;
    padding: 5px !important;
    margin: 0 !important;
    width: 100%;
    height: 100%;
    box-sizing: border-box;
    background-color: transparent !important;
    box-shadow: none !important;
}

.locker-screen-glass {
    flex: 1;
    background-color: #0A0A0A !important;
    border: 1px solid #A6A6A6;
    border-radius: 3px;
    padding: 0 !important;
    margin: 0 !important;
    box-shadow: none !important;
}

.locker-screen-buttons {
    flex: 0 0 30%;
    gap: 3px !important;
}

.locker-screen-btn {
    flex: 1;
    border-radius: 999px;
    background-color: #3A3A40 !important;
    border: 1px solid #54545B;
    padding: 0 !important;
    margin: 0 !important;
    box-shadow: none !important;
}

/* Fente de service (BAL) : bandeau anthracite + libellé capitales,
   drawBpceMailSlotCell côté Device. */
.locker-cell--mailbox {
    background-color: #4B2163 !important;
    align-items: center;
    justify-content: flex-start;
    padding: 6px 4px 0 !important;
    text-align: center;
    cursor: default;
}

.locker-cell-mailbox-label {
    font-size: 0.6rem;
    letter-spacing: 0.02em;
    color: #EFE6F3;
    text-transform: uppercase;
    line-height: 1.1;
    margin: 0 !important;
    padding: 0 !important;
}

.locker-cell-mailbox-slot {
    margin-top: auto !important;
    margin-bottom: 6px !important;
    width: 70%;
    height: 8px;
    border-radius: 999px;
    background-color: #404040 !important;
    border: 1px solid #4A3752;
    padding: 0 !important;
    box-shadow: none !important;
}

/* ==========================================================================
   Formulaire d'ajout de casier (LockerBoxesDialog, section "Ajouter un casier").
   En global pour la même raison que LockerLayout ci-dessus : Locker.Cloud.FE.UI
   étant référencé comme bibliothèque, la fusion du CSS scopé n'est pas fiable.
   Reste sur UNE SEULE LIGNE en toute circonstance (Wrap.NoWrap côté .razor) :
   les champs rétrécissent progressivement, et en dernier recours la ligne
   défile horizontalement plutôt que de passer à la ligne.
   ========================================================================== */

.new-box-form-row {
    align-items: center;
    flex-wrap: nowrap;
    overflow-x: auto;
    padding-bottom: 2px;
}

.new-box-field {
    flex: 0 0 auto;
}

.new-box-field--xs {
    width: 70px;
    min-width: 60px;
}

.new-box-field--sm {
    width: 130px;
    min-width: 100px;
}

.new-box-field--md {
    width: 200px;
    min-width: 140px;
}

.new-box-form-save {
    flex: 0 0 auto;
    white-space: nowrap;
    margin-left: auto;
}

@media (max-width: 900px) {
    .new-box-field--md {
        width: 150px;
    }

    .new-box-field--sm {
        width: 110px;
    }
}

@media (max-width: 640px) {
    .new-box-field--xs {
        width: 60px;
    }

    .new-box-field--sm {
        width: 100px;
    }

    .new-box-field--md {
        width: 130px;
    }
}
