@import url('./responsive.css');
@import url('./main-layout.css');

/* Custom teal notification style - matches Lumo theme pattern */
vaadin-notification-card[theme~="teal"] {
    --lumo-base-color: #BAF7EF;
    --lumo-body-text-color: #004D40;
    --lumo-contrast: #004D40;
    background: #BAF7EF;
    color: #004D40;
    display: inline-block;
    width: auto;
}

/* Order Details Tab Styles */

/* Grid row coloring */
vaadin-grid::part(success-row) {
    background-color: var(--lumo-success-color-10pct) !important;
}

vaadin-grid::part(warning-row) {
    background-color: var(--lumo-warning-color-10pct) !important;
}

/* Success row in Aiko selected grid - blend turquoise with success green */
.orders-grid.aiko-selected::part(success-row),
.articles-grid.aiko-selected::part(success-row) {
    background: linear-gradient(rgba(0, 206, 209, 0.03), rgba(0, 206, 209, 0.03)), var(--lumo-success-color-10pct) !important;
}

/* Warning row in Aiko selected grid - blend turquoise with warning yellow */
.orders-grid.aiko-selected::part(warning-row),
.articles-grid.aiko-selected::part(warning-row) {
    background: linear-gradient(rgba(0, 206, 209, 0.03), rgba(0, 206, 209, 0.03)), var(--lumo-warning-color-10pct) !important;
}

/* Success row in Momax selected grid - blend green with success green */
.orders-grid.momax-selected::part(success-row),
.articles-grid.momax-selected::part(success-row) {
    background: linear-gradient(rgba(176, 247, 136, 0.06), rgba(176, 247, 136, 0.06)), var(--lumo-success-color-10pct) !important;
}

/* Warning row in Momax selected grid - blend green with warning yellow */
.orders-grid.momax-selected::part(warning-row),
.articles-grid.momax-selected::part(warning-row) {
    background: linear-gradient(rgba(176, 247, 136, 0.06), rgba(176, 247, 136, 0.06)), var(--lumo-warning-color-10pct) !important;
}

/* Grid cell alignment */
vaadin-grid-cell-content {
    text-align: left !important;
}

/* Article name column - text overflow with ellipsis */
vaadin-grid vaadin-grid-cell-content[data-column-key='articleName'] {
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
}

/* Announced quantity column styling */
vaadin-grid-cell-content.announced-qty-warning {
    color: #ff6f00 !important;
    font-weight: 600 !important;
    background-color: #fff3e0 !important;
    border-left: 3px solid #ff6f00 !important;
    padding-left: 8px !important;
}

/* Fix grid scrolling - make headers sticky and body scrollable */
vaadin-grid::part(header-cell) {
    position: sticky !important;
    top: 0 !important;
    z-index: 100 !important;
    background: var(--lumo-base-color) !important;
    background-color: var(--lumo-base-color) !important;
}

vaadin-grid::part(header-row) {
    position: sticky !important;
    top: 0 !important;
    z-index: 100 !important;
    background: var(--lumo-base-color) !important;
    background-color: var(--lumo-base-color) !important;
}

/* Ensure body rows scroll under the fixed headers */
vaadin-grid::part(body) {
    z-index: 1 !important;
}

vaadin-grid::part(row) {
    z-index: 1 !important;
}

/* Override header backgrounds for selected Aiko grids - keep them solid white */
.orders-grid.aiko-selected::part(header-cell),
.articles-grid.aiko-selected::part(header-cell) {
    background: var(--lumo-base-color) !important;
    background-color: var(--lumo-base-color) !important;
    z-index: 100 !important;
}

.orders-grid.aiko-selected::part(header-row),
.articles-grid.aiko-selected::part(header-row) {
    background: var(--lumo-base-color) !important;
    background-color: var(--lumo-base-color) !important;
    z-index: 100 !important;
}

/* Override header backgrounds for selected Momax grids - keep them solid white */
.orders-grid.momax-selected::part(header-cell),
.articles-grid.momax-selected::part(header-cell) {
    background: var(--lumo-base-color) !important;
    background-color: var(--lumo-base-color) !important;
    z-index: 100 !important;
}

.orders-grid.momax-selected::part(header-row),
.articles-grid.momax-selected::part(header-row) {
    background: var(--lumo-base-color) !important;
    background-color: var(--lumo-base-color) !important;
    z-index: 100 !important;
}

/* Ensure body rows in selected grids stay below headers */
.orders-grid.aiko-selected::part(row),
.articles-grid.aiko-selected::part(row),
.orders-grid.momax-selected::part(row),
.articles-grid.momax-selected::part(row) {
    z-index: 1 !important;
}

/* Default black borders for grids when nothing is selected */
.orders-grid,
.articles-grid {
    border: 2px solid #E4E8E1 !important;
    border-radius: 2px;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
    transition: border-color 0.3s ease, box-shadow 0.3s ease;
    background-color: var(--lumo-base-color);
}

/* Maldives blue borders when Aiko grid is selected */
.orders-grid.aiko-selected,
.articles-grid.aiko-selected {
    border: 2px solid #00CED1 !important;
    box-shadow: 0 2px 4px rgba(0, 206, 209, 0.3);
    background-color: var(--lumo-base-color) !important;
}

/* Maldives blue background for Aiko selected grids - only body parts, not headers */
.orders-grid.aiko-selected::part(body-cell),
.articles-grid.aiko-selected::part(body-cell) {
    background-color: rgba(0, 206, 209, 0.03) !important;
}

/* Green borders when Momax grid is selected */
.orders-grid.momax-selected,
.articles-grid.momax-selected {
    border: 2px solid #B0F788 !important;
    box-shadow: 0 2px 4px rgba(176, 247, 136, 0.3);
    background-color: var(--lumo-base-color) !important;
}

/* Green background for Momax selected grids - only body parts, not headers */
.orders-grid.momax-selected::part(body-cell),
.articles-grid.momax-selected::part(body-cell) {
    background-color: rgba(176, 247, 136, 0.06) !important;
}


/* Goods Type Grid - Prevent header text wrapping */
.goods-type-grid::part(header-cell) {
    white-space: nowrap;
    overflow: visible;
    text-overflow: clip;
}

.goods-type-grid vaadin-grid-cell-content {
    white-space: nowrap;
}


/* Modern Language Selector Styling */
vaadin-app-layout vaadin-combo-box::part(input-field) {
    background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 255, 255, 0.05) 100%);
    border: 1px solid var(--lumo-contrast-20pct);
    border-radius: 20px;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);
    transition: all 0.3s ease;
}

vaadin-app-layout vaadin-combo-box::part(input-field):hover {
    background: linear-gradient(135deg, rgba(255, 255, 255, 0.15) 0%, rgba(255, 255, 255, 0.08) 100%);
    border-color: var(--lumo-primary-color-50pct);
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.12);
    transform: translateY(-1px);
}

vaadin-app-layout vaadin-combo-box[focused]::part(input-field) {
    border-color: var(--lumo-primary-color);
    box-shadow: 0 0 0 2px var(--lumo-primary-color-10pct), 0 4px 8px rgba(0, 0, 0, 0.12);
}

vaadin-app-layout vaadin-combo-box::part(toggle-button) {
    color: var(--lumo-primary-color);
}

/* Language selector text styling */

/* Centered column header for action columns */
vaadin-grid::part(header-cell)[class*="centered-column"] {
    text-align: center !important;
}

vaadin-grid-cell-content[class*="centered-column"] {
    text-align: center !important;
    justify-content: center !important;
}

vaadin-app-layout vaadin-combo-box::part(input-field) input {
    font-weight: 500;
    letter-spacing: 0.02em;
}

/* Prevent text wrapping in ALL combo box dropdown items and ensure readable sizing */
vaadin-combo-box-item {
    white-space: nowrap !important;
    min-height: 36px !important;
    font-size: var(--lumo-font-size-m) !important;
    line-height: var(--lumo-line-height-m) !important;
}

vaadin-combo-box-item::part(content) {
    white-space: nowrap !important;
    overflow: visible !important;
    display: block !important;
    width: 100% !important;
}

/* Apply rounded corners to ALL combo boxes */
vaadin-combo-box::part(input-field) {
    border-radius: 20px;
}

/* Upload header styles (applies to the H3 text) */
.upload-header {
    margin: 0;
    text-align: center;
    font-weight: 600; /* use a standard weight */
    font-size: 1.0em;
    color: var(--lumo-primary-text-color);
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.25rem;
    width: 100%;
}

/* Upload header with file upload emoji */
.upload-header::before {
    content: "📤";
}

/* Notice field styles - tall input area for comments */
.notice-field {
    width: 100%;
    height: 100%;
    min-height: 145px;
    align-self: center;
}

.minimum-time-wrapper {
    width: 100%;
    justify-content: center;
    align-items: center;
}

/* Generic card-like section styling */
.truck-and-cargo-layout {
    border: 2px solid var(--lumo-contrast-20pct);
    border-radius: var(--lumo-border-radius-m);
    background-color: var(--lumo-contrast-5pct);
    padding: var(--lumo-space-m);
}

/* Section header (used for headings inside cards) */
.truck-and-cargo-header {
    margin: 0;
    text-align: center;
    font-weight: bold;
    font-size: 1.2em;
    color: var(--lumo-primary-text-color);
}

/* Minimum time field styling */
vaadin-text-field.minimum-time {
    --vaadin-input-field-readonly-border: 3px solid var(--lumo-contrast-30pct);
}

vaadin-text-field.minimum-time::part(value) {
    text-align: center;
    font-weight: bold;
    font-size: 1.2em;
}

vaadin-text-field.minimum-time::part(label) {
    text-align: center;
    width: 100%;
    font-weight: bold;
}

/* Result field styling - for calculated/display-only fields like unload time */
vaadin-number-field.unload-time-field-result::part(input-field) {
    background-color: var(--lumo-contrast-5pct);
    border: 2px solid var(--lumo-contrast-30pct);
    border-radius: var(--lumo-border-radius-m);
    pointer-events: none;
}

vaadin-number-field.unload-time-field-result::part(value) {
    text-align: center;
    font-weight: 600;
    font-size: 1.05em;
    color: var(--lumo-primary-text-color);
}

vaadin-number-field.unload-time-field-result::part(label) {
    font-weight: 500;
    color: var(--lumo-secondary-text-color);
}

/* Add green border when the field has a calculated value */
vaadin-number-field.unload-time-field-result[has-value]::part(input-field) {
    background-color: var(--lumo-success-color-10pct);
    border: 1px solid var(--lumo-success-color);
}

vaadin-number-field.unload-time-field-result[has-value]::part(value) {
    color: var(--lumo-success-text-color);
    font-weight: 700;
}

/* Integer field styling - same as number field for consistency */
vaadin-integer-field.unload-time-field-result::part(input-field) {
    background-color: var(--lumo-contrast-5pct);
    border: 2px solid var(--lumo-contrast-30pct);
    border-radius: var(--lumo-border-radius-m);
    pointer-events: none;
}

vaadin-integer-field.unload-time-field-result::part(value) {
    text-align: center;
    font-weight: 600;
    font-size: 1.05em;
    color: var(--lumo-primary-text-color);
}

vaadin-integer-field.unload-time-field-result::part(label) {
    font-weight: 500;
    color: var(--lumo-secondary-text-color);
}

/* Add green border when the integer field has a calculated value */
vaadin-integer-field.unload-time-field-result[has-value]::part(input-field) {
    background-color: var(--lumo-success-color-10pct);
    border: 1px solid var(--lumo-success-color);
}

vaadin-integer-field.unload-time-field-result[has-value]::part(value) {
    color: var(--lumo-success-text-color);
    font-weight: 700;
}

/* Text field styling for h:mm format time display */
vaadin-text-field.unload-time-field-result::part(input-field) {
    background-color: var(--lumo-contrast-5pct);
    border: 2px solid var(--lumo-contrast-30pct);
    border-radius: var(--lumo-border-radius-m);
    pointer-events: none;
}

vaadin-text-field.unload-time-field-result::part(value) {
    text-align: center;
    font-weight: 600;
    font-size: 1.05em;
    color: var(--lumo-primary-text-color);
    font-family: 'Courier New', monospace; /* Monospace for better h:mm alignment */
}

vaadin-text-field.unload-time-field-result::part(label) {
    font-weight: 500;
    color: var(--lumo-secondary-text-color);
}

/* Add green border when the text field has a calculated value */
vaadin-text-field.unload-time-field-result[has-value]::part(input-field) {
    background-color: var(--lumo-success-color-10pct);
    border: 1px solid var(--lumo-success-color);
}

vaadin-text-field.unload-time-field-result[has-value]::part(value) {
    color: var(--lumo-success-text-color);
    font-weight: 700;
}

/* Find Slot button styling */
vaadin-button.find-slot-button-disabled {
    opacity: 0.85;
    filter: none;
    cursor: not-allowed;
    background-color: var(--lumo-contrast-30pct);
    color: var(--lumo-contrast-60pct);
    font-weight: 500;
}

vaadin-button.find-slot-button-enabled {
    width: 100%; /* Make button full width of its container */
    opacity: 1;
    filter: none;
    cursor: pointer;
    /* A more vibrant, deeper blue gradient */
    background: linear-gradient(180deg, hsl(214, 90%, 55%), hsl(214, 90%, 48%));
    color: var(--lumo-primary-contrast-color);
    font-weight: 700; /* Bolder text */
    font-size: 1.1em; /* Larger text */
    border: none; /* Remove border for a flatter, modern look */
    border-radius: var(--lumo-border-radius-l); /* Slightly larger border radius */
    box-shadow: 0 4px 8px rgba(0, 80, 200, 0.2), 0 6px 12px rgba(0, 80, 200, 0.15);
    transition: all 0.3s ease-in-out;
    animation: breathing 2.5s ease-in-out infinite; /* Add subtle animation */
}

vaadin-button.find-slot-button-enabled:hover {
    background: linear-gradient(180deg, hsl(214, 95%, 60%), hsl(214, 95%, 52%));
    box-shadow: 0 6px 12px rgba(0, 80, 200, 0.25), 0 8px 16px rgba(0, 80, 200, 0.2);
    transform: translateY(-2px); /* Lift effect on hover */
    animation-play-state: paused; /* Pause animation on hover for a stable interaction */
}

vaadin-button.find-slot-button-enabled:active {
    transform: translateY(0);
    box-shadow: 0 2px 4px rgba(0, 80, 200, 0.2);
    background: hsl(214, 90%, 45%);
    animation: none; /* Disable animation on click */
}

@keyframes breathing {
    0%   { transform: scale(1);     opacity: 0.9; }
    50%  { transform: scale(1.08);  opacity: 1;   }
    100% { transform: scale(1);     opacity: 0.9; }
}

/* =====================================================
   MyNotices View - Grid Selection Styling
   ===================================================== */

/* Notice grid container - enables horizontal scrolling when grid exceeds width */
.notices-grid-container {
    overflow-x: auto !important;
    overflow-y: visible !important; /* Changed from hidden to visible to show pagination */
    display: flex !important; /* Changed from block to flex for better layout */
    flex-direction: column !important;
}

/* Notice grid - minimum width forces horizontal scroll on smaller screens */
.notices-grid {
    cursor: pointer;
    min-width: 1496px !important;
}

/* Notice grid - selected row light green background (overrides hover) */
.notices-grid::part(selected-row) {
    background-color: rgba(144, 238, 144, 0.35) !important; /* Light green */
}

.notices-grid::part(selected-row-cell) {
    background-color: rgba(144, 238, 144, 0.35) !important; /* Light green */
}

/* Ensure selected row keeps green even on hover */
.notices-grid::part(selected-row):hover {
    background-color: rgba(144, 238, 144, 0.35) !important; /* Keep light green on hover */
}

.notices-grid::part(selected-row-cell):hover {
    background-color: rgba(144, 238, 144, 0.35) !important; /* Keep light green on hover */
}

/* Orders grid - all rows light green when notice is selected */
.my-notices-orders-grid.notice-selected::part(body-cell) {
    background-color: rgba(144, 238, 144, 0.25) !important; /* Light green */
}

/* Orders grid - selected row slightly darker green for distinction */
.my-notices-orders-grid.notice-selected::part(selected-row-cell) {
    background-color: rgba(144, 238, 144, 0.5) !important; /* Darker green for selected */
}

/* Orders grid border when notice is selected */
.my-notices-orders-grid.notice-selected {
    border: 2px solid rgba(144, 238, 144, 0.8) !important;
    box-shadow: 0 2px 4px rgba(144, 238, 144, 0.3);
}

/* Articles grid - all rows light green when order is selected */
.my-notices-articles-grid.order-selected::part(body-cell) {
    background-color: rgba(144, 238, 144, 0.25) !important; /* Light green */
}

/* Articles grid - selected row slightly darker green for distinction */
.my-notices-articles-grid.order-selected::part(selected-row-cell) {
    background-color: rgba(144, 238, 144, 0.5) !important; /* Darker green for selected */
}

/* Articles grid border when order is selected */
.my-notices-articles-grid.order-selected {
    border: 2px solid rgba(144, 238, 144, 0.8) !important;
    box-shadow: 0 2px 4px rgba(144, 238, 144, 0.3);
}

/* Articles grid - quantity columns with colored dots */
.qty-with-dot {
    display: flex !important;
    align-items: center !important;
    gap: 8px !important;
}

/* Ensure dots are visible and properly sized */
.qty-dot {
    display: inline-block !important;
    line-height: 1 !important;
    vertical-align: middle !important;
    flex-shrink: 0 !important;
}

/* Ensure quantity text has consistent spacing */
.qty-text {
    display: inline-block !important;
    text-align: left !important;
}

/* ========================================
   PRINT STYLES
   ======================================== */

/* Hide elements during print */
@media print {
    /* Hide navigation, header, and non-essential UI elements */
    vaadin-app-layout::part(navbar),
    vaadin-app-layout::part(drawer),
    vaadin-app-layout [slot="navbar"],
    vaadin-app-layout [slot="drawer"],
    .print-hidden {
        display: none !important;
        visibility: hidden !important;
    }

    /* Hide dialog backdrop */
    vaadin-dialog-overlay::part(backdrop) {
        display: none !important;
    }

    /* Style the dialog overlay for printing */
    vaadin-dialog-overlay {
        position: static !important;
        display: block !important;
    }

    vaadin-dialog-overlay::part(overlay) {
        position: static !important;
        box-shadow: none !important;
        border: none !important;
        max-height: none !important;
        max-width: none !important;
        width: 100% !important;
    }

    /* Print content styling */
    .print-content {
        display: block !important;
        visibility: visible !important;
        position: relative !important;
        width: 100% !important;
        max-width: none !important;
        margin: 0 !important;
        padding: 20px !important;
        background: white !important;
        box-shadow: none !important;
    }

    /* Ensure proper page breaks */
    .print-content * {
        break-inside: avoid-page;
    }

    /* Page setup */
    @page {
        size: A4;
        margin: 15mm;
    }

    /* Force backgrounds to print */
    * {
        -webkit-print-color-adjust: exact !important;
        print-color-adjust: exact !important;
        color-adjust: exact !important;
    }

    /* Elements shown only during print */
    .print-only {
        display: block !important;
        visibility: visible !important;
    }
}

/* Hide print-only elements on screen */
.print-only {
    display: none !important;
}

/* ========================================
   Apple-style Loading Spinner
   ======================================== */

.apple-spinner {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 20px;
    position: relative;
}

.apple-spinner .spinner-blade {
    position: absolute;
    left: 50%;
    top: 50%;
    width: 2px;
    height: 6px;
    margin-left: -1px;
    margin-top: -9px;
    border-radius: 1px;
    background-color: currentColor;
    opacity: 0.25;
    transform-origin: center 9px;
    animation: apple-spinner-fade 1s infinite linear;
}

.apple-spinner .spinner-blade:nth-child(1)  { transform: rotate(0deg);   animation-delay: -1s; }
.apple-spinner .spinner-blade:nth-child(2)  { transform: rotate(30deg);  animation-delay: -0.9167s; }
.apple-spinner .spinner-blade:nth-child(3)  { transform: rotate(60deg);  animation-delay: -0.8333s; }
.apple-spinner .spinner-blade:nth-child(4)  { transform: rotate(90deg);  animation-delay: -0.75s; }
.apple-spinner .spinner-blade:nth-child(5)  { transform: rotate(120deg); animation-delay: -0.6667s; }
.apple-spinner .spinner-blade:nth-child(6)  { transform: rotate(150deg); animation-delay: -0.5833s; }
.apple-spinner .spinner-blade:nth-child(7)  { transform: rotate(180deg); animation-delay: -0.5s; }
.apple-spinner .spinner-blade:nth-child(8)  { transform: rotate(210deg); animation-delay: -0.4167s; }
.apple-spinner .spinner-blade:nth-child(9)  { transform: rotate(240deg); animation-delay: -0.3333s; }
.apple-spinner .spinner-blade:nth-child(10) { transform: rotate(270deg); animation-delay: -0.25s; }
.apple-spinner .spinner-blade:nth-child(11) { transform: rotate(300deg); animation-delay: -0.1667s; }
.apple-spinner .spinner-blade:nth-child(12) { transform: rotate(330deg); animation-delay: -0.0833s; }

@keyframes apple-spinner-fade {
    0% { opacity: 1; }
    100% { opacity: 0.25; }
}

/* Spinner in button - adjust for button context */
.apple-spinner-button {
    display: inline-flex;
    align-items: center;
    gap: var(--lumo-space-s);
}

.apple-spinner-button .apple-spinner {
    color: inherit;
}

/* Larger spinner variant */
.apple-spinner.large {
    width: 40px;
    height: 40px;
}

.apple-spinner.large .spinner-blade {
    width: 3px;
    height: 10px;
    margin-left: -1.5px;
    margin-top: -16px;
    border-radius: 2px;
    transform-origin: center 16px;
}

/* Cylindrical checkbox styles for AdminView - Battery appearance */
vaadin-checkbox.cylindrical-checkbox {
    --vaadin-input-field-border-width: 0;
    margin: 0;
    padding: 0;
}

vaadin-checkbox.cylindrical-checkbox::part(checkbox) {
    width: 28px;
    height: 14px;
    border-radius: 3px;
    background: linear-gradient(180deg,
        #ffffff 0%,
        #f8f8f8 30%,
        #f0f0f0 70%,
        #f8f8f8 100%);
    border: 2.5px solid #c0c0c0;
    transition: all 0.2s ease;
    position: relative;
    margin: 0;
    box-shadow:
        inset 0 2px 4px rgba(255,255,255,0.8),
        inset 0 -2px 4px rgba(0,0,0,0.1),
        0 2px 4px rgba(0,0,0,0.08),
        0 1px 2px rgba(0,0,0,0.06);
}

vaadin-checkbox.cylindrical-checkbox[checked]::part(checkbox) {
    background: linear-gradient(180deg,
        #C8E6C9 0%,
        #A5D6A7 30%,
        #81C784 50%,
        #66BB6A 70%,
        #A5D6A7 100%);
    border-color: #66BB6A;
    box-shadow:
        inset 0 2px 4px rgba(255,255,255,0.6),
        inset 0 -2px 4px rgba(0,0,0,0.25),
        0 2px 6px rgba(129, 199, 132, 0.3),
        0 1px 2px rgba(0,0,0,0.2);
}

/* Available state - Light Green (for ScheduleView) */
vaadin-checkbox.cylindrical-checkbox.checkbox-available::part(checkbox) {
    background: linear-gradient(180deg,
        #a5d6a7 0%,
        #81c784 30%,
        #66bb6a 70%,
        #81c784 100%) !important;
    border-color: #4caf50 !important;
    box-shadow:
        inset 0 2px 4px rgba(255,255,255,0.5),
        inset 0 -2px 4px rgba(0,0,0,0.2),
        0 2px 4px rgba(76, 175, 80, 0.3),
        0 1px 2px rgba(0,0,0,0.15) !important;
}

/* Hover state - Maldives Aqua/Turquoise */
vaadin-checkbox.cylindrical-checkbox.checkbox-hover::part(checkbox) {
    background: linear-gradient(180deg,
        #9ef7f4 0%,
        #7dd3d0 30%,
        #5ab8b5 70%,
        #7dd3d0 100%) !important;
    border-color: #00bcd4 !important;
    box-shadow:
        inset 0 2px 4px rgba(255,255,255,0.6),
        inset 0 -2px 4px rgba(0,0,0,0.2),
        0 2px 6px rgba(0, 188, 212, 0.4),
        0 1px 3px rgba(0,0,0,0.2) !important;
}

/* Selected state - Aqua/Cyan */
vaadin-checkbox.cylindrical-checkbox.checkbox-selected::part(checkbox) {
    background: linear-gradient(180deg,
        #80deea 0%,
        #4dd0e1 30%,
        #26c6da 70%,
        #4dd0e1 100%) !important;
    border-color: #0097a7 !important;
}

/* Disabled state - Grey (lighter) */
vaadin-checkbox.cylindrical-checkbox.checkbox-disabled::part(checkbox) {
    background: linear-gradient(180deg,
        #e0e0e0 0%,
        #bdbdbd 30%,
        #9e9e9e 70%,
        #bdbdbd 100%) !important;
    border-color: #757575 !important;
    opacity: 0.5 !important;
}

vaadin-checkbox.cylindrical-checkbox::part(checkmark) {
    display: none !important;
    opacity: 0 !important;
}

/* Remove any decorations */
vaadin-checkbox.cylindrical-checkbox::part(checkbox)::before,
vaadin-checkbox.cylindrical-checkbox::part(checkbox)::after {
    display: none !important;
    content: none !important;
}

/* Global Gate Selector - Medium Green */
vaadin-checkbox.cylindrical-checkbox.checkbox-global-gate::part(checkbox) {
    background: linear-gradient(180deg,
        #A5D6A7 0%,
        #81C784 30%,
        #66BB6A 50%,
        #4CAF50 70%,
        #81C784 100%) !important;
    border-color: #43A047 !important;
    box-shadow:
        inset 0 2px 4px rgba(255,255,255,0.5),
        inset 0 -2px 4px rgba(0,0,0,0.3),
        0 2px 6px rgba(102, 187, 106, 0.4),
        0 1px 2px rgba(0,0,0,0.25) !important;
}

/* Global Hour Selector - Darker Green */
vaadin-checkbox.cylindrical-checkbox.checkbox-global-hour::part(checkbox) {
    background: linear-gradient(180deg,
        #66BB6A 0%,
        #4CAF50 30%,
        #43A047 50%,
        #388E3C 70%,
        #4CAF50 100%) !important;
    border-color: #2E7D32 !important;
    box-shadow:
        inset 0 2px 4px rgba(255,255,255,0.4),
        inset 0 -2px 4px rgba(0,0,0,0.4),
        0 2px 6px rgba(56, 142, 60, 0.5),
        0 1px 3px rgba(0,0,0,0.35) !important;
}

/* Global Interval Selector - Standard Green */
vaadin-checkbox.cylindrical-checkbox.checkbox-global-interval::part(checkbox) {
    background: linear-gradient(180deg,
        #81C784 0%,
        #66BB6A 30%,
        #4CAF50 50%,
        #43A047 70%,
        #66BB6A 100%) !important;
    border-color: #2E7D32 !important;
    box-shadow:
        inset 0 2px 4px rgba(255,255,255,0.4),
        inset 0 -2px 4px rgba(0,0,0,0.4),
        0 2px 6px rgba(76, 175, 80, 0.5),
        0 1px 3px rgba(0,0,0,0.3) !important;
}

/* AdminView - Center time interval column headers */
vaadin-grid::part(time-interval-column) {
    text-align: center !important;
    justify-content: center !important;
}

vaadin-grid::part(time-interval-column header-cell) {
    text-align: center !important;
    justify-content: center !important;
}

/* =====================================================
   AdminView - Global Checkbox States
   ===================================================== */

/* Not Ready State - Before branch/date are selected */
vaadin-checkbox.cylindrical-checkbox.checkbox-not-ready::part(checkbox) {
    background: linear-gradient(180deg,
        #e8e8e8 0%,
        #d0d0d0 30%,
        #c0c0c0 70%,
        #d0d0d0 100%) !important;
    border: none !important;
    opacity: 0.6 !important;
    cursor: not-allowed !important;
    box-shadow:
        inset 0 1px 2px rgba(0,0,0,0.1),
        0 1px 2px rgba(0,0,0,0.05) !important;
}

vaadin-checkbox.cylindrical-checkbox.checkbox-not-ready {
    pointer-events: none !important;
}

/* Ready but Unchecked State - After branch/date selected, white with special border */
vaadin-checkbox.cylindrical-checkbox.checkbox-ready::part(checkbox) {
    background: linear-gradient(180deg,
        #ffffff 0%,
        #fafafa 30%,
        #f5f5f5 70%,
        #fafafa 100%) !important;
    border: 2.5px solid #388E3C !important;
    box-shadow:
        inset 0 2px 4px rgba(255,255,255,0.9),
        inset 0 -2px 4px rgba(0,0,0,0.08),
        0 2px 6px rgba(56, 142, 60, 0.25),
        0 1px 3px rgba(0,0,0,0.1) !important;
}

/* Global Hour Selector - Not Ready */
vaadin-checkbox.cylindrical-checkbox.checkbox-global-hour.checkbox-not-ready::part(checkbox) {
    background: linear-gradient(180deg,
        #e8e8e8 0%,
        #d0d0d0 30%,
        #c0c0c0 70%,
        #d0d0d0 100%) !important;
    border: none !important;
    opacity: 0.6 !important;
}

/* Global Hour Selector - Ready but Unchecked */
vaadin-checkbox.cylindrical-checkbox.checkbox-global-hour.checkbox-ready::part(checkbox) {
    background: linear-gradient(180deg,
        #ffffff 0%,
        #fafafa 30%,
        #f5f5f5 70%,
        #fafafa 100%) !important;
    border: 3px solid #2E7D32 !important;
    box-shadow:
        inset 0 2px 4px rgba(255,255,255,0.9),
        inset 0 -2px 4px rgba(0,0,0,0.08),
        0 2px 6px rgba(46, 125, 50, 0.3),
        0 1px 3px rgba(0,0,0,0.15) !important;
}

/* Global Hour Selector - Checked (Dark Green) - override ready state */
vaadin-checkbox.cylindrical-checkbox.checkbox-global-hour[checked]::part(checkbox) {
    background: linear-gradient(180deg,
        #66BB6A 0%,
        #4CAF50 30%,
        #43A047 50%,
        #388E3C 70%,
        #4CAF50 100%) !important;
    border-color: #2E7D32 !important;
    box-shadow:
        inset 0 2px 4px rgba(255,255,255,0.4),
        inset 0 -2px 4px rgba(0,0,0,0.4),
        0 2px 6px rgba(56, 142, 60, 0.5),
        0 1px 3px rgba(0,0,0,0.35) !important;
}

/* Global Interval Selector - Not Ready */
vaadin-checkbox.cylindrical-checkbox.checkbox-global-interval.checkbox-not-ready::part(checkbox) {
    background: linear-gradient(180deg,
        #e8e8e8 0%,
        #d0d0d0 30%,
        #c0c0c0 70%,
        #d0d0d0 100%) !important;
    border: none !important;
    opacity: 0.6 !important;
}

/* Global Interval Selector - Ready but Unchecked (white with arrow) */
vaadin-checkbox.cylindrical-checkbox.checkbox-global-interval.checkbox-ready::part(checkbox) {
    background: linear-gradient(180deg,
        #ffffff 0%,
        #fafafa 30%,
        #f5f5f5 70%,
        #fafafa 100%) !important;
    border: 2.5px solid #388E3C !important;
    box-shadow:
        inset 0 2px 4px rgba(255,255,255,0.9),
        inset 0 -2px 4px rgba(0,0,0,0.08),
        0 2px 6px rgba(56, 142, 60, 0.25),
        0 1px 3px rgba(0,0,0,0.1) !important;
    position: relative !important;
}

/* Global Interval Selector - Checked (Dark Green) */
vaadin-checkbox.cylindrical-checkbox.checkbox-global-interval[checked]::part(checkbox) {
    background: linear-gradient(180deg,
        #81C784 0%,
        #66BB6A 30%,
        #4CAF50 50%,
        #43A047 70%,
        #66BB6A 100%) !important;
    border-color: #2E7D32 !important;
    box-shadow:
        inset 0 2px 4px rgba(255,255,255,0.4),
        inset 0 -2px 4px rgba(0,0,0,0.4),
        0 2px 6px rgba(76, 175, 80, 0.5),
        0 1px 3px rgba(0,0,0,0.3) !important;
}

/* Global Gate Selector - Not Ready */
vaadin-checkbox.cylindrical-checkbox.checkbox-global-gate.checkbox-not-ready::part(checkbox) {
    background: linear-gradient(180deg,
        #e8e8e8 0%,
        #d0d0d0 30%,
        #c0c0c0 70%,
        #d0d0d0 100%) !important;
    border: none !important;
    opacity: 0.6 !important;
}

/* Global Gate Selector - Ready but Unchecked */
vaadin-checkbox.cylindrical-checkbox.checkbox-global-gate.checkbox-ready::part(checkbox) {
    background: linear-gradient(180deg,
        #ffffff 0%,
        #fafafa 30%,
        #f5f5f5 70%,
        #fafafa 100%) !important;
    border: 2.5px solid #43A047 !important;
    box-shadow:
        inset 0 2px 4px rgba(255,255,255,0.9),
        inset 0 -2px 4px rgba(0,0,0,0.08),
        0 2px 6px rgba(67, 160, 71, 0.25),
        0 1px 3px rgba(0,0,0,0.1) !important;
}

/* Global Gate Selector - Checked (Medium Green) */
vaadin-checkbox.cylindrical-checkbox.checkbox-global-gate[checked]::part(checkbox) {
    background: linear-gradient(180deg,
        #A5D6A7 0%,
        #81C784 30%,
        #66BB6A 50%,
        #4CAF50 70%,
        #81C784 100%) !important;
    border-color: #43A047 !important;
    box-shadow:
        inset 0 2px 4px rgba(255,255,255,0.5),
        inset 0 -2px 4px rgba(0,0,0,0.3),
        0 2px 6px rgba(102, 187, 106, 0.4),
        0 1px 2px rgba(0,0,0,0.25) !important;
}

/* Individual Interval - Selected via Global (Light Green) */
vaadin-checkbox.cylindrical-checkbox.checkbox-individual-selected::part(checkbox) {
    background: linear-gradient(180deg,
        #C8E6C9 0%,
        #A5D6A7 30%,
        #81C784 50%,
        #66BB6A 70%,
        #A5D6A7 100%) !important;
    border-color: #66BB6A !important;
    box-shadow:
        inset 0 2px 4px rgba(255,255,255,0.6),
        inset 0 -2px 4px rgba(0,0,0,0.2),
        0 2px 4px rgba(129, 199, 132, 0.3),
        0 1px 2px rgba(0,0,0,0.15) !important;
}

/* Arrow indicator for Global Interval Selector using wrapper span */
.checkbox-arrow-indicator {
    position: relative;
    display: inline-flex;
    align-items: center;
}

.checkbox-arrow-indicator::after {
    content: "▼";
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    font-size: 8px;
    color: #388E3C;
    pointer-events: none;
    z-index: 10;
    text-shadow: 0 1px 1px rgba(255,255,255,0.8);
}

/* Hide arrow when checkbox is checked */
.checkbox-arrow-indicator.checkbox-checked::after {
    display: none;
}

/* Hide arrow when not ready */
.checkbox-arrow-indicator.checkbox-not-ready::after {
    display: none;
}

/* Grid cell tooltip on hover for truncated text */
vaadin-grid-cell-content {
    position: relative;
}

/* Show full text in tooltip on hover for cells with ellipsis */
vaadin-grid-cell-content[title]:hover::after {
    content: attr(title);
    position: absolute;
    left: 0;
    top: 100%;
    z-index: 1000;
    background-color: rgba(33, 33, 33, 0.95);
    color: white;
    padding: 8px 12px;
    border-radius: 4px;
    font-size: 14px;
    line-height: 1.4;
    white-space: normal;
    word-wrap: break-word;
    max-width: 400px;
    width: max-content;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
    margin-top: 4px;
    pointer-events: none;
    animation: tooltipFadeIn 0.2s ease-in-out;
}

@keyframes tooltipFadeIn {
    from {
        opacity: 0;
        transform: translateY(-4px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* Alternative approach: show tooltip on top if there's not enough space below */
vaadin-grid::part(header-cell) vaadin-grid-cell-content[title]:hover::after {
    top: auto;
    bottom: 100%;
    margin-top: 0;
    margin-bottom: 4px;
}

vaadin-date-picker-overlay {
    --lumo-font-size-xxl: 1.75rem;
    --lumo-font-size-xl: 1.375rem;
    --lumo-font-size-l: 1.125rem;
    --lumo-font-size-m: 1rem;
    --lumo-font-size-s: 0.875rem;
    --lumo-font-size-xs: 0.8125rem;
    --lumo-size-xl: 3rem;
    --lumo-size-l: 2.5rem;
    --lumo-size-m: 2.25rem;
    --lumo-size-s: 1.875rem;
    --lumo-size-xs: 1.625rem;
    --lumo-space-xl: 1.875rem;
    --lumo-space-l: 1.25rem;
    --lumo-space-m: 0.75rem;
    --lumo-space-s: 0.5rem;
    --lumo-space-xs: 0.25rem;
}

/* ==============================================
   AP Bar (Available Persons) integer field
   ============================================== */

/* Remove internal padding so the input fills the full box */
vaadin-integer-field.ap-bar-field {
    --lumo-space-xs: 0px;
    --vaadin-input-field-value-padding-start: 0;
    --vaadin-input-field-value-padding-end: 0;
}

vaadin-integer-field.ap-bar-field::part(input-field) {
    padding: 0 !important;
    display: flex;
    align-items: center;
    justify-content: center;
}

vaadin-integer-field.ap-bar-field::part(value) {
    font-size: 0.89em;
    font-weight: 800;
    text-align: center !important;
    padding: 0 !important;
    margin: 0;
    width: 100%;
    min-width: 0;
    flex: 1;
}




