/* ==========================================================================
   WMS PERFECTED ZERO-OVERFLOW DESIGN SYSTEM (BEST ULTIMATE MOBILE FIX)
   ========================================================================== */

:root {
    --bg-main: #0f172a;
    --bg-sidebar: #172033;
    --bg-card: rgba(30, 41, 59, 0.92);
    --bg-card-hover: #26364a;
    --surface-soft: rgba(148, 163, 184, 0.10);
    --border-color: rgba(203, 213, 225, 0.24);
    --border-color-glow: rgba(56, 189, 248, 0.52);
    
    --text-primary: #f8fafc;
    --text-muted: #cbd5e1;
    --text-main: #f8fafc;
    
    --color-blue: #38bdf8;
    --color-green: #4ade80;
    --color-red: #fb7185;
    --color-purple: #c4b5fd;
    --color-orange: #fbbf24;
    --color-accent: #fbbf24;

    --font-heading: 'Outfit', 'Sarabun', sans-serif;
    --font-body: 'Inter', 'Sarabun', sans-serif;
}

/* Central account sign-in -------------------------------------------------
   A full-page entry point makes it clear that every workflow starts from a
   verified user profile, while staying compact on small screens. */
.central-login-screen {
    box-sizing: border-box;
    min-height: 100dvh;
    display: grid;
    place-items: center;
    padding: 28px 18px;
    background:
        radial-gradient(circle at 12% 8%, color-mix(in srgb, var(--color-blue) 20%, transparent), transparent 34rem),
        radial-gradient(circle at 90% 92%, color-mix(in srgb, var(--color-accent) 17%, transparent), transparent 30rem),
        var(--bg-main);
}

.central-login-card {
    box-sizing: border-box;
    width: min(100%, 510px);
    overflow: hidden;
    border: 1px solid var(--border-color);
    border-radius: 20px;
    background: var(--bg-card);
    box-shadow: 0 24px 60px rgba(15, 23, 42, 0.22);
}

.central-login-brand {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 18px 24px;
    color: #f8fafc;
    background: linear-gradient(135deg, #102238, #234766);
}

.central-login-brand img {
    width: 42px;
    height: 42px;
    box-sizing: border-box;
    padding: 3px;
    border-radius: 11px;
    background: #fff;
    object-fit: contain;
}

.central-login-brand span,
.central-login-brand strong {
    display: block;
}

.central-login-brand span {
    font-family: 'Outfit', sans-serif;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.08em;
    opacity: 0.78;
}

.central-login-brand strong {
    margin-top: 2px;
    font-size: 15px;
    line-height: 1.25;
}

.central-login-heading {
    display: flex;
    gap: 14px;
    padding: 25px 24px 16px;
}

.central-login-icon {
    display: grid;
    flex: 0 0 42px;
    width: 42px;
    height: 42px;
    place-items: center;
    border-radius: 13px;
    color: #fff;
    background: var(--color-blue);
    font-size: 19px;
}

.central-login-heading h1 {
    margin: 0;
    color: var(--text-main);
    font-size: 21px;
    line-height: 1.25;
}

.central-login-heading p {
    margin: 5px 0 0;
    color: var(--text-muted);
    font-size: 13px;
    line-height: 1.5;
}

.central-login-steps {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 7px;
    margin: 0 24px 20px;
    padding: 11px 12px;
    border: 1px solid var(--border-color);
    border-radius: 11px;
    color: var(--text-muted);
    background: var(--surface-soft);
    font-size: 11px;
    font-weight: 700;
}

.central-login-steps span { white-space: nowrap; }
.central-login-steps b {
    display: inline-grid;
    width: 17px;
    height: 17px;
    margin-right: 3px;
    place-items: center;
    border-radius: 50%;
    color: #fff;
    background: var(--color-blue);
    font-size: 10px;
}
.central-login-steps i { font-size: 9px; opacity: 0.55; }

.central-login-form {
    display: grid;
    gap: 7px;
    padding: 0 24px 24px;
}

.central-login-form > label {
    margin-top: 5px;
    color: var(--text-main);
    font-size: 12px;
    font-weight: 800;
}

.central-login-input {
    display: flex;
    align-items: center;
    gap: 10px;
    min-height: 46px;
    box-sizing: border-box;
    padding: 0 13px;
    border: 1px solid var(--border-color);
    border-radius: 10px;
    background: var(--input-bg, var(--bg-main));
    transition: border-color 160ms ease, box-shadow 160ms ease;
}

.central-login-input:focus-within {
    border-color: var(--color-blue);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-blue) 18%, transparent);
}

.central-login-input > i { color: var(--text-muted); }
.central-login-input input {
    width: 100%;
    min-width: 0;
    border: 0;
    outline: 0;
    color: var(--text-main);
    background: transparent;
    font: inherit;
    font-size: 14px;
}
.central-login-input input::placeholder { color: var(--text-muted); opacity: 0.75; }

.central-login-error {
    margin: 4px 0 0;
    padding: 9px 10px;
    border-radius: 8px;
    color: var(--color-red);
    background: color-mix(in srgb, var(--color-red) 10%, transparent);
    font-size: 12px;
    font-weight: 700;
}

.central-login-submit {
    width: 100%;
    min-height: 46px;
    margin-top: 10px;
    justify-content: center;
}

/* Registration Success Card Styles */
.central-login-success-card {
    padding: 10px 24px 24px;
    display: flex;
    flex-direction: column;
    gap: 18px;
    animation: fadeInSuccess 0.4s cubic-bezier(0.16, 1, 0.3, 1);
}

@keyframes fadeInSuccess {
    from { opacity: 0; transform: translateY(12px) scale(0.98); }
    to { opacity: 1; transform: translateY(0) scale(1); }
}

.central-login-success-header {
    text-align: center;
    padding: 6px 0 2px;
}

.central-login-success-icon-badge {
    width: 68px;
    height: 68px;
    margin: 0 auto 14px;
    border-radius: 50%;
    background: linear-gradient(135deg, rgba(34, 197, 94, 0.2), rgba(16, 185, 129, 0.35));
    border: 2px solid rgba(34, 197, 94, 0.5);
    display: grid;
    place-items: center;
    color: #22c55e;
    font-size: 36px;
    box-shadow: 0 10px 28px rgba(34, 197, 94, 0.25);
    animation: successPulse 2s infinite ease-in-out;
}

@keyframes successPulse {
    0%, 100% { transform: scale(1); box-shadow: 0 10px 28px rgba(34, 197, 94, 0.25); }
    50% { transform: scale(1.05); box-shadow: 0 14px 36px rgba(34, 197, 94, 0.4); }
}

.central-login-success-header h2 {
    margin: 0 0 6px;
    font-size: 22px;
    font-weight: 900;
    color: var(--text-main);
    letter-spacing: -0.01em;
}

.central-login-success-header p {
    margin: 0 auto;
    font-size: 13px;
    color: var(--text-muted);
    line-height: 1.5;
    max-width: 90%;
}

.central-login-success-details {
    background: rgba(255, 255, 255, 0.03);
    border: 1px solid var(--border-color);
    border-radius: 16px;
    padding: 16px 18px;
    display: flex;
    flex-direction: column;
    gap: 12px;
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.05);
}

.success-detail-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 13px;
    padding-bottom: 10px;
    border-bottom: 1px solid var(--border-color);
    gap: 12px;
}

.success-detail-row:last-child {
    padding-bottom: 0;
    border-bottom: none;
}

.detail-label {
    color: var(--text-muted);
    font-weight: 600;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 12.5px;
}

.detail-value {
    font-weight: 700;
    color: var(--text-main);
    font-size: 13px;
    text-align: right;
}

.detail-value.highlight-username {
    color: #10b981;
    font-family: monospace;
    font-size: 14px;
    background: rgba(16, 185, 129, 0.12);
    border: 1px solid rgba(16, 185, 129, 0.3);
    padding: 3px 10px;
    border-radius: 8px;
    font-weight: 800;
}

.status-pending-pill {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 12px;
    border-radius: 20px;
    background: rgba(245, 158, 11, 0.15);
    color: #f59e0b;
    border: 1px solid rgba(245, 158, 11, 0.35);
    font-size: 12px;
    font-weight: 800;
}

.central-login-success-notice {
    display: flex;
    gap: 12px;
    padding: 14px 16px;
    border-radius: 14px;
    background: rgba(56, 189, 248, 0.08);
    border: 1px solid rgba(56, 189, 248, 0.25);
    color: var(--text-main);
    font-size: 12.5px;
    line-height: 1.55;
}

.central-login-success-notice i {
    color: var(--color-blue);
    font-size: 20px;
    margin-top: 2px;
    flex-shrink: 0;
}

.central-login-success-notice strong {
    display: block;
    color: var(--color-blue);
    margin-bottom: 4px;
    font-size: 13px;
}

.central-login-success-notice code {
    background: rgba(0, 0, 0, 0.15);
    padding: 2px 6px;
    border-radius: 6px;
    font-weight: 800;
    color: var(--color-blue);
}

.central-login-help {
    margin: 0;
    padding: 14px 24px 17px;
    border-top: 1px solid var(--border-color);
    color: var(--text-muted);
    background: var(--surface-soft);
    font-size: 11px;
    line-height: 1.5;
}

.account-profile-note {
    margin: 0 0 14px;
    padding: 10px 11px;
    border-radius: 8px;
    color: var(--text-muted);
    background: var(--surface-soft);
    font-size: 12px;
    line-height: 1.45;
}

.account-profile-note i { color: var(--color-green); }
.modal-form-stack input[readonly], .modal-form-stack select:disabled {
    cursor: default;
    opacity: 0.86;
    color: var(--text-main);
    background: var(--surface-soft);
}

.header-account-summary {
    display: inline-flex;
    max-width: 180px;
    align-items: center;
    gap: 6px;
    overflow: hidden;
    padding: 7px 9px;
    border: 1px solid var(--border-color);
    border-radius: 8px;
    color: var(--text-main);
    background: var(--surface-soft);
    font-size: 12px;
    font-weight: 700;
    white-space: nowrap;
    text-overflow: ellipsis;
}
.header-account-summary span { overflow: hidden; text-overflow: ellipsis; }
.header-account-summary i { color: var(--color-green); }

@media (max-width: 560px) {
    .central-login-screen { align-items: start; padding: max(18px, env(safe-area-inset-top)) 12px 18px; }
    .central-login-card { border-radius: 15px; }
    .central-login-brand, .central-login-heading { padding-left: 17px; padding-right: 17px; }
    .central-login-heading { padding-top: 20px; }
    .central-login-heading h1 { font-size: 19px; }
    .central-login-heading p { font-size: 12px; }
    .central-login-steps { margin-left: 17px; margin-right: 17px; padding: 10px 8px; font-size: 10px; }
    .central-login-steps i { display: none; }
    .central-login-form { padding-left: 17px; padding-right: 17px; }
    .central-login-help { padding-left: 17px; padding-right: 17px; }
    .header-account-summary { display: none; }
}

@media (max-width: 768px) {
    .top-header {
        box-sizing: border-box !important;
        max-width: 100% !important;
        overflow: hidden !important;
        padding: 8px 10px !important;
    }
    .top-header__layout {
        box-sizing: border-box !important;
        max-width: 100% !important;
        min-width: 0 !important;
        width: 100% !important;
        overflow: hidden !important;
    }
    .top-header__brand {
        display: flex !important;
        align-items: center !important;
        gap: 6px !important;
        min-width: 0 !important;
        flex: 1 1 auto !important;
        overflow: hidden !important;
    }
    .header-search {
        display: flex !important;
        align-items: center !important;
        gap: 6px !important;
        min-width: 0 !important;
        overflow: hidden !important;
    }
    .header-brand-title {
        display: inline-block !important;
        font-size: 13.5px !important;
        font-weight: 800 !important;
        color: var(--text-main, #1e293b) !important;
        white-space: nowrap !important;
        overflow: hidden !important;
        text-overflow: ellipsis !important;
        min-width: 0 !important;
        max-width: 160px !important;
        margin: 0 !important;
        line-height: 1.2 !important;
    }
    .header-search img {
        height: 26px !important;
        width: auto !important;
        flex-shrink: 0 !important;
    }
    .top-header__status {
        display: flex !important;
        align-items: center !important;
        flex-shrink: 0 !important;
        margin: 0 !important;
        min-width: 0 !important;
    }
    .clock-date-text,
    .clock-divider,
    .clock-unit-text {
        display: none !important;
    }
    .live-clock-widget {
        font-size: 10.5px !important;
        padding: 4px 6px !important;
        white-space: nowrap !important;
        min-height: 26px !important;
    }
    .top-header__account-actions {
        width: auto !important;
        display: flex !important;
        align-items: center !important;
        flex-wrap: nowrap !important;
        gap: 4px !important;
        flex-shrink: 0 !important;
        margin-left: auto !important;
    }
    .header-account-action-label {
        display: none !important;
    }
    .header-account-action {
        padding: 4px 8px !important;
        font-size: 12px !important;
        border-radius: 8px !important;
    }
    .header-account-summary {
        display: none !important;
    }
    .btn-label-text {
        display: none !important;
    }
    .table td, .table th {
        white-space: nowrap;
    }
    .table .btn-secondary,
    .table .btn-primary,
    .table .btn-success,
    .table .btn-danger,
    .table .btn-accent {
        padding: 6px 10px !important;
        white-space: nowrap !important;
        font-size: 13px !important;
    }
    .mobile-stack {
        grid-template-columns: 1fr !important;
        flex-direction: column !important;
        width: 100% !important;
    }
}

/* Unified, step-by-step system notifications */
.notification-center {
    position: fixed;
    top: 16px;
    right: 16px;
    z-index: 999998;
    width: min(420px, calc(100vw - 32px));
    max-height: calc(100dvh - 32px);
    pointer-events: none;
}

.notification-center__panel {
    display: flex;
    flex-direction: column;
    overflow: hidden;
    border: 1px solid color-mix(in srgb, var(--border-color) 82%, transparent);
    border-radius: 16px;
    background: color-mix(in srgb, var(--bg-card) 94%, transparent);
    box-shadow: 0 18px 42px rgba(15, 23, 42, 0.22);
    backdrop-filter: blur(18px);
    -webkit-backdrop-filter: blur(18px);
    pointer-events: auto;
}

.notification-center__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 11px 13px;
    border-bottom: 1px solid var(--border-color);
    background: color-mix(in srgb, var(--surface-soft) 72%, transparent);
}

.notification-center__header > div {
    display: flex;
    min-width: 0;
    align-items: baseline;
    gap: 8px;
}

.notification-center__header strong {
    color: var(--text-primary);
    font-size: 13px;
    white-space: nowrap;
}

.notification-center__header strong i {
    color: var(--color-blue);
    margin-right: 4px;
}

.notification-center__header span {
    overflow: hidden;
    color: var(--text-muted);
    font-size: 11px;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.notification-center__clear,
.system-notification__close {
    border: 0;
    background: transparent;
    color: var(--text-muted);
    cursor: pointer;
}

.notification-center__clear {
    flex: 0 0 auto;
    padding: 5px 6px;
    border-radius: 7px;
    font-size: 11px;
    font-weight: 700;
}

.notification-center__clear:hover,
.system-notification__close:hover {
    background: color-mix(in srgb, var(--text-muted) 12%, transparent);
    color: var(--text-primary);
}

.notification-center__list {
    display: grid;
    gap: 1px;
    max-height: min(600px, calc(100dvh - 90px));
    overflow: auto;
}

.system-notification {
    display: grid;
    grid-template-columns: 34px minmax(0, 1fr) 24px;
    align-items: start;
    gap: 10px;
    padding: 13px 11px 13px 13px;
    border-left: 4px solid var(--notification-color);
    background: color-mix(in srgb, var(--notification-color) 6%, var(--bg-card));
    animation: notification-enter 220ms ease-out both;
}

.system-notification--success { --notification-color: var(--color-green); }
.system-notification--info { --notification-color: var(--color-blue); }
.system-notification--warning { --notification-color: #d97706; }
.system-notification--error { --notification-color: var(--color-red); }

.system-notification__icon {
    display: grid;
    width: 34px;
    height: 34px;
    place-items: center;
    border-radius: 50%;
    background: color-mix(in srgb, var(--notification-color) 15%, transparent);
    color: var(--notification-color);
    font-size: 16px;
}

.system-notification__content {
    min-width: 0;
}

.system-notification__content h4,
.system-notification__content p {
    margin: 0;
}

.system-notification__content h4 {
    color: var(--text-primary);
    font-size: 13px;
    font-weight: 800;
    line-height: 1.35;
}

.system-notification__content > p {
    margin-top: 3px;
    color: var(--text-muted);
    font-size: 12px;
    line-height: 1.45;
    overflow-wrap: anywhere;
}

.system-notification__next-step {
    display: flex;
    align-items: flex-start;
    gap: 6px;
    margin-top: 8px !important;
    padding-top: 8px;
    border-top: 1px solid color-mix(in srgb, var(--notification-color) 20%, transparent);
    color: var(--text-primary) !important;
    font-size: 11px !important;
}

.system-notification__next-step > i {
    margin-top: 3px;
    color: var(--notification-color);
    font-size: 9px;
}

.system-notification__next-step strong {
    color: var(--notification-color);
}

.system-notification__action {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-top: 10px;
    padding: 7px 10px;
    border: 1px solid color-mix(in srgb, var(--notification-color) 45%, transparent);
    border-radius: 8px;
    background: color-mix(in srgb, var(--notification-color) 12%, transparent);
    color: var(--text-primary);
    cursor: pointer;
    font-family: inherit;
    font-size: 11px;
    font-weight: 800;
}

.system-notification__action:hover {
    background: color-mix(in srgb, var(--notification-color) 21%, transparent);
}

.system-notification__close {
    display: grid;
    width: 24px;
    height: 24px;
    place-items: center;
    border-radius: 7px;
    font-size: 13px;
}

@keyframes notification-enter {
    from { opacity: 0; transform: translateX(12px); }
    to { opacity: 1; transform: translateX(0); }
}

@media (max-width: 576px) {
    .notification-center {
        top: calc(8px + env(safe-area-inset-top));
        right: 8px;
        width: calc(100vw - 16px);
        max-height: calc(100dvh - 16px - env(safe-area-inset-top));
    }

    .notification-center__panel {
        border-radius: 14px;
    }

    .notification-center__list {
        max-height: min(560px, calc(100dvh - 78px - env(safe-area-inset-top)));
    }

    .system-notification {
        grid-template-columns: 30px minmax(0, 1fr) 22px;
        gap: 9px;
        padding: 11px 9px 11px 11px;
    }

    .system-notification__icon {
        width: 30px;
        height: 30px;
        font-size: 14px;
    }
}

/* Confirm destructive actions in the application, not in a browser alert. */
.modal-card--confirmation {
    width: min(460px, calc(100vw - 32px));
    overflow: hidden;
    border: 1px solid color-mix(in srgb, var(--color-red) 48%, var(--border-color));
    background: var(--bg-card);
}

.confirmation-dialog__body {
    padding: 22px 24px !important;
    text-align: center;
}

.confirmation-dialog__warning-icon {
    display: grid;
    width: 46px;
    height: 46px;
    place-items: center;
    margin: 0 auto 12px;
    border-radius: 50%;
    background: color-mix(in srgb, var(--color-red) 16%, transparent);
    color: var(--color-red);
    font-size: 20px;
}

.confirmation-dialog__message {
    margin: 0;
    color: var(--text-primary);
    font-size: 14px;
    font-weight: 700;
    line-height: 1.5;
}

.confirmation-dialog__steps {
    display: grid;
    gap: 8px;
    margin: 16px 0 0;
    padding: 0;
    list-style: none;
    text-align: left;
}

.confirmation-dialog__steps li {
    display: grid;
    grid-template-columns: 22px minmax(0, 1fr);
    gap: 8px;
    align-items: start;
    padding: 8px 10px;
    border-radius: 8px;
    background: var(--surface-soft);
    color: var(--text-muted);
    font-size: 12px;
    line-height: 1.4;
}

.confirmation-dialog__steps span {
    display: grid;
    width: 22px;
    height: 22px;
    place-items: center;
    border-radius: 50%;
    background: color-mix(in srgb, var(--color-red) 18%, transparent);
    color: var(--color-red);
    font-size: 11px;
    font-weight: 800;
}

.confirmation-dialog__steps p {
    margin: 2px 0 0;
}

.confirmation-dialog__footer {
    display: grid !important;
    grid-template-columns: 1fr 1.25fr;
    gap: 10px;
    padding: 14px 24px 20px !important;
}

.confirmation-dialog__footer button {
    min-height: 42px;
}

@media (max-width: 576px) {
    .modal-card--confirmation {
        width: calc(100vw - 20px);
    }

    .confirmation-dialog__body {
        padding: 18px 16px !important;
    }

    .confirmation-dialog__footer {
        padding: 12px 16px calc(12px + env(safe-area-inset-bottom)) !important;
    }
}

/* --------------------------------------------------------------------------
   1. GLOBAL ZERO-OVERFLOW & STRICT BOX-SIZING
   -------------------------------------------------------------------------- */
*, *::before, *::after {
    margin: 0;
    padding: 0;
    box-sizing: border-box !important;
    max-width: 100%;
}

h1, h2, h3, h4, h5, h6 {
    color: var(--text-primary) !important;
}

.logo-text h2 {
    color: #ffffff !important;
}

.logo-text span {
    color: #a8bbbf !important;
}

.user-select {
    color: #f2e2ce !important;
}

html, body {
    width: 100% !important;
    max-width: 100vw !important;
    min-height: 100vh;
    overflow-x: hidden !important;
    position: relative !important;
}

body {
    background-color: var(--bg-main);
    color: var(--text-primary);
    font-family: var(--font-body);
    font-size: 14px;
    line-height: 1.5;
    background-image: 
        radial-gradient(at 8% 10%, rgba(56, 189, 248, 0.13) 0px, transparent 48%),
        radial-gradient(at 92% 88%, rgba(251, 191, 36, 0.10) 0px, transparent 50%);
    background-attachment: fixed;
    color-scheme: dark;
}

img, video, canvas, svg {
    max-width: 100% !important;
}

img, video {
    height: auto;
}

/* --------------------------------------------------------------------------
   2. APP CONTAINER & SIDEBAR LAYOUT
   -------------------------------------------------------------------------- */
.app-container {
    display: grid;
    grid-template-columns: 270px 1fr;
    min-height: 100vh;
    width: 100% !important;
    max-width: 100% !important;
    overflow-x: hidden !important;
}

.sidebar {
    background: linear-gradient(180deg, #172033 0%, #101827 100%);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    border-right: 1px solid rgba(168, 187, 191, 0.12);
    display: flex;
    flex-direction: column;
    padding: 20px 16px;
    height: 100vh;
    position: fixed;
    width: 270px;
    top: 0;
    left: 0;
    z-index: 100;
    box-shadow: 4px 0 24px rgba(0, 0, 0, 0.35);
}

.sidebar-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 24px;
}

.btn-close-sidebar {
    background: rgba(255, 255, 255, 0.08);
    border: 1px solid var(--border-color);
    color: var(--text-muted);
    font-size: 20px;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    cursor: pointer;
    display: none;
    align-items: center;
    justify-content: center;
    transition: all 0.2s ease;
    flex-shrink: 0;
}

.btn-close-sidebar:hover {
    color: #ffffff;
    background: rgba(248, 81, 73, 0.25);
    border-color: rgba(248, 81, 73, 0.4);
}

.sidebar-nav {
    display: flex;
    flex-direction: column;
    gap: 6px;
    flex-grow: 1;
    overflow-y: auto;
    padding-right: 4px;
    margin-bottom: 12px;
}

/* Custom Scrollbar for Sidebar Navigation */
.sidebar-nav::-webkit-scrollbar {
    width: 5px;
}
.sidebar-nav::-webkit-scrollbar-track {
    background: transparent;
}
.sidebar-nav::-webkit-scrollbar-thumb {
    background: rgba(168, 187, 191, 0.2);
    border-radius: 4px;
}
.sidebar-nav::-webkit-scrollbar-thumb:hover {
    background: rgba(168, 187, 191, 0.4);
}

.nav-btn {
    display: flex;
    align-items: center;
    gap: 12px;
    background: transparent;
    border: 1px solid transparent;
    border-left: 3px solid transparent;
    padding: 10px 14px;
    border-radius: 10px;
    color: #cbd5e1;
    font-family: var(--font-heading);
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    text-align: left;
    transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
    width: 100%;
}

.nav-btn:hover {
    color: var(--text-primary);
    background-color: rgba(255, 255, 255, 0.06);
    transform: translateX(3px);
}

.nav-btn.active {
    background: linear-gradient(90deg, rgba(74, 134, 140, 0.22), rgba(74, 134, 140, 0.05));
    border-left-color: #4a868c;
    border-color: rgba(74, 134, 140, 0.35);
    color: #f2e2ce;
    font-weight: 700;
    box-shadow: 0 4px 14px rgba(74, 134, 140, 0.18);
}

.sidebar-footer {
    border-top: 1px solid var(--border-color);
    padding-top: 16px;
    margin-top: auto;
}

.active-user-badge {
    display: flex;
    align-items: center;
    gap: 10px;
    background-color: rgba(255, 255, 255, 0.02);
    border: 1px solid var(--border-color);
    padding: 8px 12px;
    border-radius: 10px;
}

.active-user-badge i {
    font-size: 20px;
    color: var(--color-blue);
}

.user-info {
    display: flex;
    flex-direction: column;
    flex-grow: 1;
    overflow: hidden;
}

.user-label {
    font-size: 10px;
    color: var(--text-muted);
}

.user-select {
    background: none;
    border: none;
    color: var(--text-primary);
    font-family: var(--font-heading);
    font-weight: 600;
    font-size: 12px;
    outline: none;
    cursor: pointer;
}

/* Main Content Workspace */
.main-content {
    padding: 20px 24px 24px 24px;
    overflow-y: auto;
    overflow-x: hidden !important;
    min-height: 100vh;
    width: 100% !important;
    max-width: 100% !important;
}

/* Top Header */
.top-header {
    position: relative;
    display: flex;
    justify-content: space-between;
    align-items: center;
    background: var(--bg-card);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border: 1px solid var(--border-color);
    border-radius: 14px;
    padding: 12px 18px;
    margin-bottom: 20px;
    width: 100% !important;
    max-width: 100% !important;
}

.top-header h1 {
    font-family: var(--font-heading);
    font-size: 18px;
    font-weight: 700;
}

.header-actions {
    display: flex;
    align-items: center;
    gap: 10px;
}

/* Buttons */
.btn-primary, .btn-secondary, .btn-success, .btn-danger, .btn-accent {
    font-family: var(--font-heading);
    font-weight: 600;
    padding: 10px 18px;
    border-radius: 12px;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
    outline: none;
    border: 1px solid transparent;
    font-size: 13px;
    white-space: nowrap;
    position: relative;
    overflow: hidden;
}

/* Button active state for click feedback */
.btn-primary:active:not(:disabled),
.btn-secondary:active:not(:disabled),
.btn-success:active:not(:disabled),
.btn-danger:active:not(:disabled),
.btn-accent:active:not(:disabled) {
    transform: scale(0.96) translateY(0) !important;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2) !important;
}

.btn-primary {
    background: linear-gradient(135deg, #38bdf8, #0284c7);
    border-color: rgba(56, 189, 248, 0.35);
    color: #ffffff;
    box-shadow: 0 4px 14px rgba(2, 132, 199, 0.3);
}

.btn-primary:hover:not(:disabled) {
    transform: translateY(-2.5px) scale(1.02);
    border-color: rgba(56, 189, 248, 0.6);
    box-shadow: 0 8px 24px rgba(2, 132, 199, 0.5), 0 0 10px rgba(56, 189, 248, 0.3);
}

.btn-secondary {
    background-color: rgba(255, 255, 255, 0.04);
    border: 1px solid rgba(255, 255, 255, 0.1);
    color: var(--text-primary);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
}

.btn-secondary:hover:not(:disabled) {
    transform: translateY(-2px) scale(1.02);
    background-color: rgba(255, 255, 255, 0.1);
    border-color: rgba(255, 255, 255, 0.25);
    box-shadow: 0 8px 20px rgba(0, 0, 0, 0.3);
}

.btn-success {
    background: linear-gradient(135deg, #10b981, #059669);
    border-color: rgba(16, 185, 129, 0.35);
    color: #ffffff;
    box-shadow: 0 4px 14px rgba(5, 150, 105, 0.3);
}

.btn-success:hover:not(:disabled) {
    transform: translateY(-2.5px) scale(1.02);
    border-color: rgba(16, 185, 129, 0.6);
    box-shadow: 0 8px 24px rgba(5, 150, 105, 0.5), 0 0 10px rgba(16, 185, 129, 0.3);
}

.btn-danger {
    background: linear-gradient(135deg, #f43f5e, #e11d48);
    border-color: rgba(244, 63, 94, 0.35);
    color: #ffffff;
    box-shadow: 0 4px 14px rgba(225, 29, 72, 0.3);
}

.btn-danger:hover:not(:disabled) {
    transform: translateY(-2.5px) scale(1.02);
    border-color: rgba(244, 63, 94, 0.6);
    box-shadow: 0 8px 24px rgba(225, 29, 72, 0.5), 0 0 10px rgba(244, 63, 94, 0.3);
}

.btn-accent {
    background: linear-gradient(135deg, #f59e0b, #d97706);
    border-color: rgba(245, 158, 11, 0.35);
    color: #1e1f1d;
    font-weight: 700;
    box-shadow: 0 4px 14px rgba(217, 119, 6, 0.35);
}

.btn-accent:hover:not(:disabled) {
    transform: translateY(-2.5px) scale(1.02);
    border-color: rgba(245, 158, 11, 0.6);
    box-shadow: 0 8px 24px rgba(217, 119, 6, 0.55), 0 0 10px rgba(245, 158, 11, 0.3);
}

.btn-full {
    width: 100% !important;
    justify-content: center;
}

button:disabled {
    opacity: 0.3;
    cursor: not-allowed;
    transform: none !important;
    box-shadow: none !important;
}

/* Page Panels & Glass Cards */
.page-panel {
    display: none !important;
    animation: fadeIn 0.25s ease forwards;
    width: 100% !important;
    max-width: 100% !important;
    overflow-x: hidden !important;
}

.page-panel.active {
    display: block !important;
}

@keyframes fadeIn {
    /* Do not animate transform here: a transformed page panel becomes the
       containing block for fixed dialogs, causing popups to be clipped to
       the panel rather than the viewport. */
    from { opacity: 0; }
    to { opacity: 1; }
}

.panel-header {
    margin-bottom: 18px;
    width: 100% !important;
}

.panel-header h2 {
    font-family: var(--font-heading);
    font-size: 20px;
    font-weight: 700;
}

.panel-header p {
    color: var(--text-muted);
    font-size: 13px;
    margin-top: 2px;
}

.card-glass, .dashboard-card, .workflow-scan-panel, .workflow-form-panel {
    background: var(--bg-card);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border: 1px solid var(--border-color);
    border-radius: 14px;
    padding: 18px;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2);
    margin-bottom: 18px;
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
    overflow-x: hidden !important;
}

.margin-bottom-20 { margin-bottom: 18px !important; }
.margin-top-15 { margin-top: 14px !important; }

/* Live Thailand Clock & Date Widget */
.live-clock-widget {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(39, 37, 37, 0.8);
    border: 1px solid var(--border-color);
    border-radius: 20px;
    padding: 6px 14px;
    font-family: var(--font-heading);
    font-size: 12px;
    font-weight: 600;
    color: var(--text-primary);
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.25);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    white-space: nowrap;
}

.live-clock-widget .clock-divider {
    color: var(--border-color);
    margin: 0 2px;
}

.live-clock-widget .clock-time-glow {
    font-family: monospace;
    font-weight: 800;
    font-size: 14px;
    color: var(--color-accent);
    letter-spacing: 0.5px;
    text-shadow: 0 0 8px rgba(0, 242, 254, 0.4);
}

body.light-theme .live-clock-widget {
    background: #ffffff;
    border-color: #cbd5e1;
    color: #0f172a;
    box-shadow: 0 2px 8px rgba(15, 23, 42, 0.08);
}

body.light-theme .live-clock-widget .clock-time-glow {
    color: #0284c7;
    text-shadow: none;
}

@media (max-width: 768px) {
    .live-clock-widget {
        padding: 4px 10px;
        font-size: 11px;
    }
    .live-clock-widget #clock-date-text {
        display: none;
    }
    .live-clock-widget .clock-divider {
        display: none;
    }
}
.global-loading-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    background: rgba(11, 15, 23, 0.75);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    z-index: 99999;
    display: flex;
    align-items: center;
    justify-content: center;
    animation: fadeIn 0.2s ease forwards;
}

.global-loading-card {
    background: rgba(22, 30, 49, 0.95);
    border: 1px solid rgba(0, 242, 254, 0.3);
    border-radius: 20px;
    padding: 28px 36px;
    text-align: center;
    box-shadow: 0 16px 48px rgba(0, 0, 0, 0.6), 0 0 24px rgba(0, 242, 254, 0.2);
    max-width: 90%;
    width: 320px;
}

.global-loading-spinner-wrapper {
    margin-bottom: 16px;
    position: relative;
    display: inline-block;
}

.global-loading-icon {
    font-size: 42px;
    color: var(--color-accent);
    filter: drop-shadow(0 0 10px rgba(0, 242, 254, 0.6));
}

.global-loading-text {
    font-family: var(--font-heading);
    font-weight: 700;
    font-size: 15px;
    color: #ffffff;
    margin-bottom: 6px;
    letter-spacing: 0.3px;
}

.global-loading-subtext {
    font-size: 11px;
    color: var(--text-muted);
}

body.light-theme .global-loading-overlay {
    background: rgba(255, 255, 255, 0.8);
}

body.light-theme .global-loading-card {
    background: #ffffff;
    border-color: #cbd5e1;
    box-shadow: 0 16px 48px rgba(15, 23, 42, 0.15);
}

body.light-theme .global-loading-text {
    color: #0f172a;
}

/* Button Loading & Anti-Bounce Lock */
.loading-btn {
    pointer-events: none !important;
    opacity: 0.7 !important;
    position: relative !important;
}
.instant-scan-option {
    margin-top: 10px;
    display: flex;
    align-items: center;
}

.checkbox-container {
    display: inline-flex !important;
    align-items: center !important;
    gap: 8px !important;
    cursor: pointer !important;
    font-family: var(--font-heading) !important;
    font-size: 12px !important;
    font-weight: 600 !important;
    color: var(--text-primary) !important;
    user-select: none !important;
    padding: 6px 14px !important;
    background: rgba(255, 255, 255, 0.03) !important;
    border: 1px solid var(--border-color) !important;
    border-radius: 20px !important;
    transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1) !important;
}

.checkbox-container:hover {
    background: rgba(255, 255, 255, 0.08) !important;
    border-color: rgba(56, 139, 253, 0.4) !important;
}

.checkbox-container input[type="checkbox"] {
    display: none !important;
}

.checkmark {
    width: 36px !important;
    height: 20px !important;
    background-color: rgba(255, 255, 255, 0.15) !important;
    border-radius: 20px !important;
    position: relative !important;
    transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1) !important;
    flex-shrink: 0 !important;
    box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.3) !important;
}

.checkmark::after {
    content: '' !important;
    position: absolute !important;
    top: 2px !important;
    left: 2px !important;
    width: 16px !important;
    height: 16px !important;
    background-color: #ffffff !important;
    border-radius: 50% !important;
    transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1) !important;
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3) !important;
}

.checkbox-container input[type="checkbox"]:checked + .checkmark {
    background: linear-gradient(135deg, var(--color-blue), var(--color-accent)) !important;
    box-shadow: 0 0 12px rgba(56, 139, 253, 0.4) !important;
}

.checkbox-container input[type="checkbox"]:checked + .checkmark::after {
    transform: translateX(16px) !important;
}

body.light-theme .checkbox-container {
    background: #f8fafc !important;
    border-color: #cbd5e1 !important;
    color: #0f172a !important;
}

body.light-theme .checkmark {
    background-color: #cbd5e1 !important;
}

/* Premium Workflow Step Banners */
.workflow-step-banner {
    background: linear-gradient(135deg, rgba(22, 30, 49, 0.85), rgba(30, 41, 67, 0.65)) !important;
    backdrop-filter: blur(16px) !important;
    -webkit-backdrop-filter: blur(16px) !important;
    border: 1px solid var(--border-color) !important;
    border-radius: 14px !important;
    padding: 14px 18px !important;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.25) !important;
    margin-bottom: 18px !important;
}

.step-banner-title {
    font-family: var(--font-heading);
    font-weight: 700;
    font-size: 13px;
    margin-bottom: 10px;
    display: flex;
    align-items: center;
    gap: 8px;
    letter-spacing: 0.3px;
}

.step-items-wrapper {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    width: 100% !important;
}

.step-item {
    display: flex;
    align-items: center;
    gap: 8px;
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid var(--border-color);
    border-radius: 20px;
    padding: 6px 14px;
    font-size: 12px;
    font-weight: 600;
    color: var(--text-primary);
    transition: all 0.2s ease;
    white-space: nowrap;
}

.step-item:hover {
    background: rgba(255, 255, 255, 0.08);
    border-color: rgba(255, 255, 255, 0.2);
}

.step-num {
    color: #ffffff !important;
    border-radius: 50% !important;
    width: 22px !important;
    height: 22px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    font-weight: 800 !important;
    font-size: 11px !important;
    flex-shrink: 0 !important;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3) !important;
}

.step-arrow {
    color: var(--color-accent) !important;
    font-weight: 800 !important;
    font-size: 14px !important;
}

body.light-theme .workflow-step-banner {
    background: #ffffff !important;
    border-color: #e2e8f0 !important;
    box-shadow: 0 4px 16px rgba(15, 23, 42, 0.06) !important;
}

body.light-theme .step-item {
    background: #f8fafc !important;
    border-color: #cbd5e1 !important;
    color: #0f172a !important;
}

/* Stats Cards Grid */
.stats-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 14px;
    margin-bottom: 20px;
    width: 100% !important;
}

.stat-card {
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: 12px;
    padding: 14px;
    display: flex;
    align-items: center;
    gap: 12px;
    transition: transform 0.2s, border-color 0.2s;
    width: 100% !important;
}

.stat-card:hover {
    border-color: var(--border-color-glow);
    transform: translateY(-2px);
}

.stat-icon {
    width: 42px;
    height: 42px;
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 18px;
    color: #fff;
    flex-shrink: 0;
}

.bg-blue { background-color: rgba(56, 139, 253, 0.15); color: var(--color-blue) !important; }
.bg-orange { background-color: rgba(255, 152, 0, 0.15); color: var(--color-orange) !important; }
.bg-green { background-color: rgba(63, 185, 80, 0.15); color: var(--color-green) !important; }
.bg-purple { background-color: rgba(188, 140, 255, 0.15); color: var(--color-purple) !important; }

.stat-info h3 {
    font-family: var(--font-heading);
    font-size: 20px;
    font-weight: 700;
}

.stat-info span {
    color: var(--text-muted);
    font-size: 11px;
}

/* Category & Filter Chips - ZERO OVERFLOW HORIZONTAL SCROLLING */
.swipe-pills-container, .category-filter-pills {
    display: flex !important;
    flex-wrap: nowrap !important;
    gap: 8px !important;
    overflow-x: auto !important;
    white-space: nowrap !important;
    padding-bottom: 6px;
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
}

.swipe-pills-container::-webkit-scrollbar,
.category-filter-pills::-webkit-scrollbar {
    display: none;
}

.pill-chip, .category-pill, .filter-chip {
    background-color: rgba(255, 255, 255, 0.04);
    border: 1px solid var(--border-color);
    color: var(--text-muted);
    padding: 6px 14px;
    border-radius: 20px;
    cursor: pointer;
    font-family: var(--font-heading);
    font-weight: 600;
    font-size: 12px;
    white-space: nowrap;
    transition: all 0.2s;
    flex-shrink: 0 !important;
}

.pill-chip:hover, .category-pill:hover, .filter-chip:hover {
    color: var(--text-primary);
    background-color: rgba(255, 255, 255, 0.08);
}

.pill-chip.active, .category-pill.active, .filter-chip.active {
    background-color: var(--color-blue);
    border-color: var(--color-blue);
    color: #fff;
    box-shadow: 0 2px 8px rgba(56, 139, 253, 0.3);
}

/* Tables & Containers */
.table-responsive {
    display: block !important;
    width: 100% !important;
    max-width: 100% !important;
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch;
}

.table {
    width: 100% !important;
    min-width: 480px;
    border-collapse: collapse;
    text-align: left;
    font-size: 13px;
}

.table th, .table td {
    padding: 10px 12px;
    border-bottom: 1px solid var(--border-color);
}

.table th {
    font-family: var(--font-heading);
    font-weight: 600;
    color: var(--text-muted);
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    background-color: rgba(255, 255, 255, 0.02);
}

.table tbody tr:hover {
    background-color: rgba(255, 255, 255, 0.03);
}

/* Forms */
.form-group {
    display: flex;
    flex-direction: column;
    gap: 5px;
    margin-bottom: 14px;
    width: 100% !important;
}

.form-group label {
    font-family: var(--font-heading);
    font-weight: 600;
    font-size: 12px;
    color: var(--text-muted);
}

input[type="text"], input[type="number"], input[type="password"], input[type="date"], select, textarea {
    background-color: rgba(11, 15, 23, 0.6);
    border: 1px solid var(--border-color);
    border-radius: 9px;
    padding: 9px 12px;
    color: #fff;
    font-family: var(--font-body);
    font-size: 13px;
    outline: none;
    transition: all 0.2s;
    width: 100% !important;
    box-sizing: border-box !important;
}

input:focus, select:focus, textarea:focus {
    border-color: var(--color-blue);
    box-shadow: 0 0 0 3px rgba(56, 139, 253, 0.2);
}

.form-row-2 {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 14px;
    width: 100% !important;
}

.form-row-3 {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 14px;
    width: 100% !important;
}

.form-row-2-1 {
    display: grid;
    grid-template-columns: 2fr 1fr;
    gap: 14px;
    width: 100% !important;
}

/* Badges */
.status-badge, .badge {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 10px;
    border-radius: 20px;
    font-size: 11px;
    font-weight: 600;
}

.status-badge.success, .badge-fresh { background: rgba(63, 185, 80, 0.2); color: #8eff9d; border: 1px solid rgba(63, 185, 80, 0.45); }
.status-badge.warning, .badge-dry { background: rgba(255, 152, 0, 0.2); color: #ffca6c; border: 1px solid rgba(255, 152, 0, 0.45); }
.status-badge.danger { background: rgba(248, 81, 73, 0.2); color: #ff938d; border: 1px solid rgba(248, 81, 73, 0.45); }
.status-badge.info, .badge-beverage { background: rgba(74, 134, 140, 0.2); color: #a4e1e8; border: 1px solid rgba(74, 134, 140, 0.4); }
.badge-supply { background: rgba(166, 140, 63, 0.2); color: #ffd666; border: 1px solid rgba(166, 140, 63, 0.4); }

.badge-count-red {
    background-color: var(--color-red);
    color: #fff;
    font-size: 10px;
    font-weight: 700;
    padding: 2px 6px;
    border-radius: 10px;
    margin-left: auto;
}

/* Workflows Grid */
.workflow-grid, .stocktake-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 18px;
    width: 100% !important;
}

/* Barcode Simulation Buttons */
.simulator-groups {
    display: flex;
    flex-direction: column;
    gap: 12px;
    max-height: 340px;
    overflow-y: auto;
    padding-right: 4px;
    width: 100% !important;
}

.sim-product-group {
    background: rgba(255, 255, 255, 0.02);
    border: 1px solid var(--border-color);
    border-radius: 12px;
    padding: 12px;
    width: 100% !important;
}

.sim-product-title {
    font-family: var(--font-heading);
    font-size: 12px;
    font-weight: 700;
    color: var(--color-blue);
    margin-bottom: 8px;
}

.sim-barcode-buttons {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
    gap: 8px;
    width: 100% !important;
}

.btn-sim-scan {
    background: rgba(56, 139, 253, 0.08);
    border: 1px solid rgba(56, 139, 253, 0.25);
    color: var(--text-primary);
    padding: 8px 12px;
    border-radius: 8px;
    font-family: var(--font-body);
    font-size: 12px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    transition: all 0.2s ease;
    word-break: break-word;
    width: 100% !important;
}

.btn-sim-scan:hover {
    background: var(--color-blue);
    color: #ffffff;
    border-color: var(--color-blue);
    box-shadow: 0 4px 12px rgba(56, 139, 253, 0.3);
}

.btn-sim-scan .bc {
    font-family: monospace;
    font-size: 11px;
    opacity: 0.85;
}

/* Toast Notifications */
.toast-container {
    position: fixed !important;
    z-index: 999999 !important;
    display: flex;
    flex-direction: column;
    gap: 10px;
    box-sizing: border-box !important;
}

@media (min-width: 577px) {
    .toast-container {
        top: 20px !important;
        right: 20px !important;
        max-width: 380px !important;
        width: 90% !important;
    }
}

@media (max-width: 576px) {
    .toast-container {
        top: 10px !important;
        left: 10px !important;
        right: 10px !important;
        width: calc(100vw - 20px) !important;
        max-width: calc(100vw - 20px) !important;
    }
}

/* ==========================================================================
   POPUP FINISHING SYSTEM
   Shared visual and interaction rules for every dialog in the application.
   ========================================================================== */
.modal-overlay {
    background:
        radial-gradient(circle at 50% 0%, rgba(112, 164, 171, 0.18), transparent 42%),
        rgba(7, 10, 15, 0.86) !important;
}

.modal-card:not(.modal-card--image) {
    background:
        linear-gradient(145deg, rgba(255, 255, 255, 0.055), transparent 34%),
        var(--bg-sidebar) !important;
    border-color: rgba(112, 164, 171, 0.3) !important;
    border-radius: 22px !important;
    box-shadow: 0 28px 80px rgba(0, 0, 0, 0.56), 0 0 0 1px rgba(255, 255, 255, 0.025) inset !important;
}

.modal-card--compact {
    width: min(100%, 440px) !important;
}

.modal-header {
    min-height: 64px;
    padding: 18px 22px !important;
    background: linear-gradient(90deg, rgba(112, 164, 171, 0.12), rgba(15, 17, 26, 0.16)) !important;
}

.modal-header h3 {
    display: flex;
    align-items: center;
    gap: 9px;
    min-width: 0;
    line-height: 1.35;
}

.modal-header .close-btn {
    display: inline-flex;
    flex: 0 0 36px;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    border: 1px solid var(--border-color);
    border-radius: 10px;
    font-size: 24px;
    line-height: 1;
    transition: background 0.2s ease, border-color 0.2s ease, transform 0.2s ease;
}

.modal-header .close-btn:hover {
    border-color: rgba(112, 164, 171, 0.55);
    background: rgba(112, 164, 171, 0.14);
    transform: rotate(90deg);
}

.modal-body {
    padding: 22px !important;
    scrollbar-gutter: stable;
}

.modal-form-stack {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.modal-field {
    min-width: 0;
}

.modal-field > label {
    display: block;
    margin-bottom: 7px;
    color: var(--text-muted);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.01em;
}

.modal-body input[type="text"],
.modal-body input[type="number"],
.modal-body input[type="date"],
.modal-body input[type="password"],
.modal-body input[type="search"],
.modal-body select,
.modal-body textarea {
    min-height: 44px;
    border: 1px solid rgba(112, 164, 171, 0.28);
    border-radius: 10px;
    background: rgba(0, 0, 0, 0.14);
    box-shadow: 0 1px 0 rgba(255, 255, 255, 0.025) inset;
    transition: border-color 0.18s ease, box-shadow 0.18s ease, background 0.18s ease;
}

.modal-body textarea {
    min-height: 104px;
    padding-top: 11px;
}

.modal-body input:focus,
.modal-body select:focus,
.modal-body textarea:focus {
    border-color: var(--color-blue);
    background: rgba(112, 164, 171, 0.08);
    box-shadow: 0 0 0 3px rgba(112, 164, 171, 0.18);
    outline: none;
}

.modal-field-note {
    margin: 8px 0 0;
    color: var(--color-accent);
    font-size: 12px;
    line-height: 1.45;
}

.modal-footer {
    gap: 10px !important;
    padding: 16px 22px !important;
    background: linear-gradient(90deg, rgba(15, 17, 26, 0.14), rgba(112, 164, 171, 0.1)) !important;
}

.modal-footer .btn-primary,
.modal-footer .btn-secondary,
.modal-footer .btn-success,
.modal-footer .btn-danger,
.modal-footer .btn-accent {
    min-height: 42px;
}

.modal-card.modal-card--image {
    display: block !important;
    width: min(100%, 600px) !important;
    height: auto !important;
    max-height: calc(100dvh - 48px) !important;
    padding: 0 !important;
    overflow: visible !important;
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
}

.modal-card--image img {
    display: block;
    max-height: calc(100dvh - 138px);
    margin: 0 auto;
    object-fit: contain;
}

@media (max-width: 576px) {
    .modal-card:not(.modal-card--image) {
        border-radius: 0 !important;
    }

    .modal-card.modal-card--image {
        width: calc(100% - 24px) !important;
        max-height: calc(100dvh - 24px) !important;
    }

    .modal-header {
        min-height: 58px;
        padding: 14px 16px !important;
    }

    .modal-body {
        padding: 18px 16px !important;
    }

    .modal-footer {
        padding: 12px 16px calc(12px + env(safe-area-inset-bottom)) !important;
    }
}

.toast {
    background: var(--bg-sidebar);
    border: 1px solid var(--border-color-glow);
    border-radius: 12px;
    padding: 12px 16px;
    color: var(--text-primary);
    font-size: 13px;
    font-weight: 600;
    display: flex;
    align-items: center;
    gap: 10px;
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5);
    animation: toastIn 0.3s cubic-bezier(0.16, 1, 0.3, 1) forwards;
    width: 100% !important;
    box-sizing: border-box !important;
}

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

.toast.error, .toast.danger {
    border-left: 4px solid var(--color-red);
    background: #1c1015;
    color: #ffffff;
}

.toast.success {
    border-left: 4px solid var(--color-green);
    background: #0f1c15;
    color: #ffffff;
}

.toast.info {
    border-left: 4px solid var(--color-blue);
    background: #101828;
    color: #ffffff;
}

/* Activity Feed Timeline */
.activity-feed {
    display: flex;
    flex-direction: column;
    gap: 12px;
    width: 100% !important;
}

.activity-item {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 12px 14px;
    background: rgba(255, 255, 255, 0.02);
    border: 1px solid var(--border-color);
    border-radius: 12px;
    transition: all 0.2s ease;
    width: 100% !important;
}

.activity-item:hover {
    background: rgba(255, 255, 255, 0.04);
    border-color: rgba(56, 139, 253, 0.3);
}

.activity-badge {
    padding: 4px 10px;
    border-radius: 8px;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    flex-shrink: 0;
}

.activity-badge.badge-in {
    background: rgba(63, 185, 80, 0.15);
    color: var(--color-green);
    border: 1px solid rgba(63, 185, 80, 0.3);
}

.activity-badge.badge-out {
    background: rgba(56, 139, 253, 0.15);
    color: var(--color-blue);
    border: 1px solid rgba(56, 139, 253, 0.3);
}

.activity-badge.badge-adjust {
    background: rgba(188, 140, 255, 0.15);
    color: var(--color-purple);
    border: 1px solid rgba(188, 140, 255, 0.3);
}

.activity-details {
    flex-grow: 1;
}

.activity-title {
    font-size: 13px;
    font-weight: 600;
    color: var(--text-primary);
    line-height: 1.4;
}

.activity-meta {
    font-size: 11px;
    color: var(--text-muted);
    margin-top: 4px;
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

/* --------------------------------------------------------------------------
   3. PRODUCT CATALOG GRID & CARDS (ZERO OVERFLOW PERFECT FIT)
   -------------------------------------------------------------------------- */
.product-catalog-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
    gap: 10px;
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
    overflow-x: hidden !important;
}

.catalog-card {
    background: rgba(11, 15, 23, 0.5);
    border: 1px solid var(--border-color);
    border-radius: 12px;
    padding: 10px;
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    cursor: pointer;
    transition: all 0.2s ease;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    box-sizing: border-box !important;
    overflow: hidden !important;
}

.catalog-card:hover {
    border-color: var(--color-blue);
    transform: translateY(-2px);
    box-shadow: 0 6px 16px rgba(0, 0, 0, 0.3);
}

.catalog-img-container {
    width: 60px;
    height: 60px;
    border-radius: 10px;
    background: #fff;
    padding: 4px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 8px;
    flex-shrink: 0;
}

.catalog-img-container img {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
}

.catalog-title, .catalog-card-name {
    font-size: 12px;
    font-weight: 700;
    margin-bottom: 4px;
    line-height: 1.3;
    word-break: break-word !important;
    overflow-wrap: break-word !important;
    max-width: 100% !important;
}

/* Quantity Steppers */
.qty-control {
    display: flex;
    align-items: center;
    border: 1px solid var(--border-color);
    border-radius: 9px;
    overflow: hidden;
}

.qty-btn {
    width: 38px;
    height: 38px;
    background: rgba(255, 255, 255, 0.06);
    border: none;
    color: var(--text-primary);
    font-size: 16px;
    font-weight: 700;
    cursor: pointer;
}

.qty-control input {
    border: none !important;
    border-radius: 0 !important;
    text-align: center;
    font-weight: 700;
}

.quick-presets {
    display: flex;
    gap: 6px;
    margin-top: 8px;
}

.preset-btn {
    padding: 4px 8px;
    font-size: 11px;
    font-weight: 600;
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid var(--border-color);
    color: var(--text-muted);
    border-radius: 6px;
    cursor: pointer;
}

/* Modals & Dialogs */
.modal-overlay {
    position: fixed;
    top: 0; left: 0; right: 0; bottom: 0;
    background: rgba(0, 0, 0, 0.75);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    z-index: 99999;
    display: none;
    align-items: center;
    justify-content: center;
    padding: 16px;
    box-sizing: border-box !important;
}

.modal-overlay.active {
    display: flex;
}

.modal-card {
    background: var(--bg-sidebar);
    border: 1px solid var(--border-color);
    border-radius: 18px;
    padding: 20px 24px;
    max-width: 500px;
    width: 100% !important;
    max-height: 90vh;
    overflow-y: auto;
    box-shadow: 0 20px 50px rgba(0, 0, 0, 0.6);
    animation: modalPop 0.25s cubic-bezier(0.16, 1, 0.3, 1) forwards;
    box-sizing: border-box !important;
}

@keyframes modalPop {
    from { opacity: 0; transform: scale(0.95) translateY(10px); }
    to { opacity: 1; transform: scale(1) translateY(0); }
}

.modal-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 16px;
    padding-bottom: 12px;
    border-bottom: 1px solid var(--border-color);
}

.modal-header h3 {
    font-family: var(--font-heading);
    font-size: 15px;
    font-weight: 700;
    line-height: 1.3;
    margin: 0;
    word-break: break-word;
    color: var(--text-primary);
}

.modal-header .close-btn {
    background: transparent;
    border: none;
    color: var(--text-muted);
    font-size: 22px;
    cursor: pointer;
    border-radius: 8px;
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    transition: all 0.2s ease;
}

.modal-header .close-btn:hover {
    color: var(--text-primary);
    background: rgba(255, 255, 255, 0.08);
}

.modal-body {
    padding: 4px 0 16px 0;
}

.modal-footer {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
    margin-top: 16px;
    padding-top: 14px;
    border-top: 1px solid var(--border-color);
}

/* Override Browser Autofill Yellow Background */
input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
input:-webkit-autofill:active {
    -webkit-box-shadow: 0 0 0 30px #1e1f1d inset !important;
    -webkit-text-fill-color: var(--text-primary) !important;
    transition: background-color 5000s ease-in-out 0s;
}

body.light-theme input:-webkit-autofill,
body.light-theme input:-webkit-autofill:hover,
body.light-theme input:-webkit-autofill:focus,
body.light-theme input:-webkit-autofill:active {
    -webkit-box-shadow: 0 0 0 30px #ffffff inset !important;
    -webkit-text-fill-color: #0f172a !important;
}

/* Desktop Requisition Tab Bar */
#requester-desktop-tab-bar {
    display: flex;
}

.req-desktop-tab.active {
    background: linear-gradient(135deg, #4a868c, #3a6f74) !important;
    color: #f2e2ce !important;
    border-color: rgba(74, 134, 140, 0.4) !important;
}

/* Role Isolation Settings */
body.requester-mode .sidebar {
    display: none !important;
}

body.requester-mode .app-container {
    grid-template-columns: 1fr !important;
}

body.requester-mode .main-content {
    padding: 12px 14px 14px 14px !important;
}

body.requester-mode .staff-admin-btn,
body.requester-mode .admin-only,
body.requester-mode .admin-only-panel,
body.requester-mode #btn-seed-demo {
    display: none !important;
}

body.requester-mode .sidebar-footer {
    display: block !important;
}

body.requester-mode .page-panel:not(#panel-outbound) {
    display: none !important;
}

body.requester-mode #panel-outbound.active {
    display: block !important;
}

/* Responsive Mobile Navigation */
.btn-mobile-menu {
    display: none;
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    color: var(--text-primary);
    width: 38px;
    height: 38px;
    border-radius: 10px;
    font-size: 16px;
    cursor: pointer;
    align-items: center;
    justify-content: center;
}

.mobile-bottom-nav {
    display: none;
    position: fixed;
    bottom: 12px; left: 12px; right: 12px;
    height: 58px;
    background: rgba(39, 37, 37, 0.94);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border: 1px solid var(--border-color);
    border-radius: 16px;
    z-index: 99999;
    padding: 4px 8px;
    align-items: center;
    justify-content: space-around;
    box-shadow: 0 10px 30px rgba(0,0,0,0.4);
}

.mobile-nav-btn {
    background: transparent;
    border: none;
    color: var(--text-muted);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    font-size: 10px;
    font-weight: 700;
    cursor: pointer;
    flex: 1;
    height: 46px;
    border-radius: 11px;
}

.mobile-nav-btn i { font-size: 17px; }

.mobile-nav-btn.active {
    color: #4a868c;
    background: rgba(74, 134, 140, 0.15);
}

.mobile-fab-container {
    display: none;
    position: fixed;
    bottom: 80px; right: 16px;
    z-index: 99998;
}

.mobile-fab {
    width: 50px;
    height: 50px;
    border-radius: 50%;
    background: linear-gradient(135deg, #4a868c, #3a6f74);
    color: #f2e2ce;
    border: none;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 19px;
    box-shadow: 0 8px 24px rgba(74, 134, 140, 0.4);
    cursor: pointer;
}

/* --------------------------------------------------------------------------
   4. MEDIA QUERIES & MOBILE BREAKPOINTS (STRICT FIT < 992px & < 576px)
   -------------------------------------------------------------------------- */
@media (max-width: 992px) {
    .app-container {
        grid-template-columns: 1fr !important;
    }

    .sidebar {
        position: fixed !important;
        left: -300px !important;
        top: 0 !important; bottom: 0 !important;
        width: 280px !important;
        max-width: 85vw !important;
        transition: left 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important;
        z-index: 999999 !important;
        box-shadow: 10px 0 30px rgba(0, 0, 0, 0.6) !important;
    }

    .sidebar.sidebar-open, .sidebar.active {
        left: 0 !important;
    }

    .btn-close-sidebar {
        display: flex !important;
    }

    .btn-mobile-menu {
        display: flex !important;
    }

    .main-content {
        padding: 10px 10px 85px 10px !important;
    }

    .stats-grid {
        grid-template-columns: repeat(2, 1fr) !important;
        gap: 10px !important;
    }

    .workflow-grid, .stocktake-grid {
        grid-template-columns: 1fr !important;
        gap: 12px !important;
    }

    .sim-barcode-buttons {
        grid-template-columns: 1fr !important;
    }

    .form-row-2, .form-row-3, .form-row-2-1 {
        grid-template-columns: 1fr !important;
        gap: 10px !important;
    }

    input[type="text"], input[type="number"], select {
        min-height: 44px;
        font-size: 14px;
    }

    .mobile-bottom-nav {
        display: flex !important;
    }

    .mobile-fab-container {
        display: flex !important;
    }

    body.requester-mode #requester-desktop-tab-bar {
        display: none !important;
    }

    body.requester-mode .main-content {
        padding: 12px 14px 95px 14px !important;
    }

    .mobile-stack {
        grid-template-columns: 1fr !important;
        display: flex !important;
        flex-direction: column !important;
        gap: 12px !important;
    }
}

@media (max-width: 576px) {
    .main-content {
        padding: 8px 8px 90px 8px !important;
    }

    .card-glass, .dashboard-card, .workflow-scan-panel, .workflow-form-panel {
        padding: 10px 8px !important;
        margin-bottom: 12px !important;
        border-radius: 12px !important;
    }

    .step-items-wrapper {
        flex-direction: column !important;
        align-items: flex-start !important;
        gap: 6px !important;
    }

    .step-arrow {
        display: none !important;
    }

    .product-catalog-grid {
        display: grid !important;
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
        gap: 6px !important;
        width: 100% !important;
        box-sizing: border-box !important;
        overflow-x: hidden !important;
    }

    .catalog-card {
        min-width: 0 !important;
        padding: 8px 4px !important;
        width: 100% !important;
        box-sizing: border-box !important;
        overflow: hidden !important;
    }

    .catalog-title, .catalog-card-name {
        font-size: 11px !important;
        word-break: break-word !important;
        overflow-wrap: break-word !important;
    }

    .catalog-img-container {
        width: 48px !important;
        height: 48px !important;
    }

    .modal-card {
        width: calc(100vw - 16px) !important;
        max-width: calc(100vw - 16px) !important;
        margin: 8px auto !important;
        padding: 12px !important;
    }

    .panel-header h2 { font-size: 16px !important; }
    .panel-header p { font-size: 11px !important; }
}

/* Light Theme Overrides */
body.light-theme {
    --bg-main: #f4f7fb;
    --bg-sidebar: #ffffff;
    --bg-card: rgba(255, 255, 255, 0.96);
    --bg-card-hover: #f8fbff;
    --surface-soft: #edf3f8;
    --border-color: rgba(71, 85, 105, 0.22);
    --border-color-glow: rgba(3, 105, 161, 0.45);
    --text-primary: #162033;
    --text-muted: #475569;
    --text-main: #162033;
    --color-blue: #0369a1;
    --color-green: #15803d;
    --color-red: #be123c;
    --color-purple: #6d28d9;
    --color-orange: #b45309;
    --color-accent: #a16207;
    background-image:
        radial-gradient(at 4% 8%, rgba(14, 165, 233, 0.10) 0px, transparent 45%),
        radial-gradient(at 94% 92%, rgba(245, 158, 11, 0.10) 0px, transparent 46%);
    color-scheme: light;
}

body.light-theme .sidebar {
    background: #ffffff !important;
    border-right: 1px solid #cbd5e1 !important;
    box-shadow: 4px 0 24px rgba(15, 23, 42, 0.06) !important;
}

body.light-theme .top-header,
body.light-theme .card-glass,
body.light-theme .dashboard-card {
    background: #ffffff;
    border-color: #cbd5e1;
    box-shadow: 0 4px 16px rgba(15, 23, 42, 0.05);
}

body.light-theme input,
body.light-theme select,
body.light-theme textarea {
    background: #ffffff;
    border-color: #94a3b8;
    color: #0f172a;
}

body.light-theme .table th {
    background: #e2e8f0;
    color: #0f172a;
}

body.light-theme .mobile-bottom-nav {
    background: rgba(255, 255, 255, 0.95);
    border-color: #cbd5e1;
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
}

body.light-theme .mobile-nav-btn {
    color: #475569;
}

body.light-theme .mobile-nav-btn.active {
    color: #4a868c !important;
    background: rgba(74, 134, 140, 0.12) !important;
}

body.light-theme h1, 
body.light-theme h2, 
body.light-theme h3, 
body.light-theme h4, 
body.light-theme h5, 
body.light-theme h6 {
    color: #0f172a !important;
}

body.light-theme .logo-text h2 {
    color: #0f172a !important;
}

body.light-theme .logo-text span {
    color: #475569 !important;
}

body.light-theme .user-select {
    color: #0f172a !important;
}

body.light-theme .nav-btn {
    color: #475569 !important;
}

body.light-theme .nav-btn:hover {
    color: #0f172a !important;
    background-color: rgba(15, 23, 42, 0.08) !important;
}

body.light-theme .nav-btn.active {
    background: rgba(74, 134, 140, 0.15) !important;
    border-left-color: #4a868c !important;
    border-color: rgba(74, 134, 140, 0.3) !important;
    color: #1e3a3a !important;
    font-weight: 700 !important;
    box-shadow: 0 2px 8px rgba(74, 134, 140, 0.1) !important;
}

body.light-theme .active-user-badge {
    background-color: #f1f5f9 !important;
    border-color: #cbd5e1 !important;
}

body.light-theme .active-user-badge i {
    color: #4a868c !important;
}

body.light-theme .btn-secondary {
    background-color: #f1f5f9 !important;
    border-color: #cbd5e1 !important;
    color: #0f172a !important;
}

body.light-theme .btn-secondary:hover:not(:disabled) {
    background-color: #e2e8f0 !important;
}

body.light-theme .btn-accent {
    background: linear-gradient(135deg, #a68c3f, #8a7433) !important;
    color: #ffffff !important;
}

/* Light Theme Badges Contrast Fix */
body.light-theme .status-badge.success, 
body.light-theme .badge-fresh { 
    background: rgba(34, 197, 94, 0.18) !important; 
    color: #15803d !important; 
    border: 1px solid rgba(34, 197, 94, 0.35) !important; 
}
body.light-theme .status-badge.warning, 
body.light-theme .badge-dry { 
    background: rgba(249, 115, 22, 0.18) !important; 
    color: #c2410c !important; 
    border: 1px solid rgba(249, 115, 22, 0.35) !important; 
}
body.light-theme .status-badge.danger { 
    background: rgba(239, 68, 68, 0.18) !important; 
    color: #b91c1c !important; 
    border: 1px solid rgba(239, 68, 68, 0.35) !important; 
}
body.light-theme .status-badge.info, 
body.light-theme .badge-beverage { 
    background: rgba(74, 134, 140, 0.18) !important; 
    color: #1e3a3a !important; 
    border: 1px solid rgba(74, 134, 140, 0.35) !important; 
}
body.light-theme .badge-supply { 
    background: rgba(166, 140, 63, 0.18) !important; 
    color: #71581e !important; 
    border: 1px solid rgba(166, 140, 63, 0.35) !important; 
}

/* Global Disabled Button Contrast Override */
button:disabled {
    opacity: 0.6 !important;
    background: #cbd5e1 !important;
    color: #475569 !important;
    border-color: #cbd5e1 !important;
    cursor: not-allowed !important;
    transform: none !important;
    box-shadow: none !important;
}

/* Requisition Card Item Styles */
.req-card-item {
    padding: 12px 14px;
    margin-bottom: 10px;
    border-radius: 12px;
    width: 100%;
    box-sizing: border-box;
    background: rgba(39, 37, 37, 0.65) !important;
    border: 1px solid var(--border-color) !important;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15) !important;
    transition: all 0.25s ease;
}

body.light-theme .req-card-item {
    background: #ffffff !important;
    border-color: #cbd5e1 !important;
    box-shadow: 0 4px 12px rgba(15, 23, 42, 0.04) !important;
}

.req-card-id {
    font-family: monospace;
    font-weight: 700;
    font-size: 13px;
    color: #82c3c9 !important;
}

body.light-theme .req-card-id {
    color: #0f766e !important;
}

.req-card-audit {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 11px;
    color: #cbd5e1 !important;
    margin-bottom: 8px;
    flex-wrap: wrap;
    background: rgba(0, 0, 0, 0.25) !important;
    padding: 6px 10px;
    border-radius: 8px;
    border: 1px solid rgba(255, 255, 255, 0.05) !important;
}

body.light-theme .req-card-audit {
    background: #f1f5f9 !important;
    border: 1px solid #cbd5e1 !important;
    color: #334155 !important;
}

/* Sidebar placeholder layout slot helper for fixed positioning */
.sidebar-placeholder {
    width: 270px;
    height: 100vh;
    flex-shrink: 0;
    display: block;
}
@media (max-width: 1180px) {
    .sidebar-placeholder {
        display: none !important;
    }
}

/* Horizontal scroll without scrollbar track */
.scroll-x-no-scrollbar {
    display: flex !important;
    gap: 8px !important;
    overflow-x: auto !important;
    white-space: nowrap !important;
    scrollbar-width: none !important; /* Firefox */
    -ms-overflow-style: none !important;  /* IE and Edge */
}
.scroll-x-no-scrollbar::-webkit-scrollbar {
    display: none !important; /* Chrome, Safari, Opera */
}

/* Upload Dropzone Hover State */
.upload-dropzone:hover {
    background-color: rgba(255, 255, 255, 0.06) !important;
    border-color: #38bdf8 !important;
    box-shadow: 0 0 12px rgba(56, 189, 248, 0.15) !important;
}

/* Click-to-copy hover effect */
.truncate-hover-effect:hover {
    color: var(--color-accent) !important;
    border-bottom-color: var(--color-accent) !important;
    transition: all 0.2s ease;
}

/* ==========================================================================
   MOBILE & VIEWPORT RESPONSIVENESS OVERRIDES (ANTIGRAVITY PREMIUM POLISH)
   ========================================================================== */
@media (max-width: 768px) {
    /* 1. Global Workspace Padding Reduction (Reduce Cramped Feeling) */
    .main-content {
        padding: 10px 10px 80px 10px !important;
    }
    
    .top-header {
        padding: 8px 12px !important;
        margin-bottom: 12px !important;
        border-radius: 10px !important;
    }
    
    .top-header h1 {
        font-size: 15px !important;
    }
    
    .panel-header {
        margin-bottom: 15px !important;
        padding: 10px !important;
    }
    
    .panel-header h2 {
        font-size: 16px !important;
    }
    
    .panel-header p {
        font-size: 11px !important;
    }

    /* 2. Glass Cards Padding and Spacing Adjustments */
    .card-glass {
        padding: 12px !important;
        border-radius: 12px !important;
        margin-bottom: 12px !important;
    }
    
    .card-glass h3 {
        font-size: 14px !important;
    }

    /* 3. Table Denseness & Horizontal Scrolling */
    .table-responsive {
        border-radius: 8px !important;
        overflow-x: auto !important;
        -webkit-overflow-scrolling: touch !important;
    }
    
    .table {
        font-size: 11.5px !important;
    }
    
    .table th, .table td {
        padding: 6px 8px !important;
        height: auto !important;
    }
    
    /* 4. Form Controls & Buttons */
    .input-text, .input-select, select {
        height: 36px !important;
        padding: 6px 10px !important;
        font-size: 12px !important;
    }
    
    .btn-primary, .btn-secondary, .btn-success, .btn-danger, .btn-accent {
        padding: 8px 12px !important;
        font-size: 12px !important;
        border-radius: 8px !important;
        height: 36px !important;
    }

    /* 5. Metrics Grid Layout for Dashboard */
    .metrics-grid {
        grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important;
        gap: 10px !important;
        margin-top: 10px !important;
    }
    
    .metric-card {
        padding: 10px 8px !important;
        gap: 8px !important;
        border-radius: 10px !important;
    }
    
    .metric-icon {
        width: 36px !important;
        height: 36px !important;
        font-size: 15px !important;
        border-radius: 8px !important;
    }
    
    .metric-card div div {
        font-size: 18px !important;
    }
    
    .metric-card div span {
        font-size: 10px !important;
    }

    /* 6. Modal / Popups Responsiveness */
    .modal-card {
        padding: 15px !important;
        width: 95% !important;
        max-width: 95% !important;
        border-radius: 16px !important;
        margin: 20px auto !important;
    }
    
    .modal-card h3 {
        font-size: 15px !important;
    }
}

@media (max-width: 576px) {
    /* Tighten margins further on extra small mobile devices */
    .main-content {
        padding: 6px 6px 70px 6px !important;
    }
    
    .top-header {
        flex-direction: column !important;
        align-items: stretch !important;
        gap: 8px !important;
        padding: 10px !important;
    }
    
    .header-actions {
        justify-content: space-between !important;
        width: 100% !important;
    }
    
    /* Forms Stack vertically */
    .mobile-stack {
        grid-template-columns: 1fr !important;
        gap: 8px !important;
    }
    
    /* Horizontal tab scroll height */
    .scroll-x-no-scrollbar {
        padding-bottom: 5px !important;
    }
}
@media (max-width: 1024px) {
    /* Forms and grids Stack vertically on iPad/Tablets to prevent horizontal clipping */
    .mobile-stack {
        grid-template-columns: 1fr !important;
        gap: 16px !important;
    }
}

/* ==========================================================================
   UNIVERSAL FULL-SCREEN OVERLAY MODALS (PC, IPAD, MOBILE)
   ========================================================================== */
.modal-overlay {
    padding: 0 !important;
    align-items: stretch !important;
    justify-content: stretch !important;
    position: fixed !important;
    top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important;
    background: rgba(10, 12, 18, 0.95) !important;
    backdrop-filter: blur(15px) !important;
    -webkit-backdrop-filter: blur(15px) !important;
    z-index: 999999 !important;
}

.modal-overlay.active,
.modal-overlay[style*="display: flex"],
.modal-overlay[style*="display:flex"] {
    display: flex !important;
}

.modal-card {
    width: 100vw !important;
    max-width: 100vw !important;
    height: 100vh !important;
    max-height: 100vh !important;
    border-radius: 0 !important;
    margin: 0 !important;
    border: none !important;
    display: flex !important;
    flex-direction: column !important;
    box-shadow: none !important;
    background: rgba(10, 12, 18, 0.98) !important;
    animation: modalPopFullscreen 0.3s cubic-bezier(0.16, 1, 0.3, 1) forwards !important;
}

@keyframes modalPopFullscreen {
    from { opacity: 0; transform: scale(1.01); }
    to { opacity: 1; transform: scale(1); }
}

.modal-header {
    padding: 18px 24px !important;
    border-bottom: 1px solid rgba(255, 255, 255, 0.08) !important;
    display: flex !important;
    justify-content: space-between !important;
    align-items: center !important;
    flex-shrink: 0 !important;
    background: rgba(15, 17, 26, 0.5) !important;
}

.modal-body {
    flex-grow: 1 !important;
    overflow-y: auto !important;
    padding: 30px 24px !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
}

/* Constrain and center form content on PC/iPad screen widths */
.modal-body > * {
    max-width: 800px !important;
    width: 100% !important;
    text-align: left !important;
}

.modal-footer {
    padding: 16px 24px !important;
    border-top: 1px solid rgba(255, 255, 255, 0.08) !important;
    display: flex !important;
    justify-content: flex-end !important;
    gap: 12px !important;
    flex-shrink: 0 !important;
    background: rgba(15, 17, 26, 0.5) !important;
}

/* Adjust close button for full screen modals */
.close-btn {
    font-size: 28px !important;
    background: none !important;
    border: none !important;
    color: var(--text-muted) !important;
    cursor: pointer !important;
    transition: color 0.2s ease;
}

.close-btn:hover {
    color: var(--color-red) !important;
}

/* ==========================================================================
   PIN PAD SECURITY OVERLAY SYSTEM (PREMIUM GLARED PAD)
   ========================================================================== */
.pin-pad-container {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 10px;
    width: 100%;
    max-width: 360px;
    margin: 0 auto;
}

.pin-shield-icon {
    width: 72px;
    height: 72px;
    background: rgba(56, 189, 248, 0.08);
    border: 2px solid rgba(56, 189, 248, 0.25);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 30px;
    color: var(--color-blue);
    margin-top: 10px;
    margin-bottom: 15px;
    box-shadow: 0 0 24px rgba(56, 189, 248, 0.15);
    animation: pulseIcon 2.5s infinite ease-in-out;
}

@keyframes pulseIcon {
    0%, 100% { transform: scale(1); box-shadow: 0 0 24px rgba(56, 189, 248, 0.15); }
    50% { transform: scale(1.06); box-shadow: 0 0 36px rgba(56, 189, 248, 0.35); }
}

.pin-dots-container {
    display: flex;
    justify-content: center;
    gap: 20px;
    margin: 20px 0 25px 0;
}

.pin-dot {
    width: 16px;
    height: 16px;
    border-radius: 50%;
    border: 2px solid rgba(255, 255, 255, 0.2);
    background: transparent;
    transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1);
}

.pin-dot.filled {
    background: var(--color-blue) !important;
    border-color: var(--color-blue) !important;
    box-shadow: 0 0 14px var(--color-blue), 0 0 4px var(--color-blue) !important;
    transform: scale(1.2);
}

.pin-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 15px;
    width: 100%;
    max-width: 300px;
    margin-bottom: 20px;
}

.pin-key {
    width: 64px;
    height: 64px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.03) !important;
    border: 1px solid rgba(255, 255, 255, 0.08) !important;
    color: var(--text-main) !important;
    font-size: 22px;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    user-select: none;
    transition: all 0.15s cubic-bezier(0.16, 1, 0.3, 1);
    margin: 0 auto;
}

.pin-key:hover {
    background: rgba(56, 189, 248, 0.12) !important;
    border-color: var(--color-blue) !important;
    color: var(--color-blue) !important;
    transform: scale(1.08);
}

.pin-key:active {
    background: var(--color-blue) !important;
    color: #fff !important;
    transform: scale(0.92);
}

.pin-key.special {
    font-size: 14px !important;
    font-weight: 600;
    color: var(--text-muted) !important;
    background: transparent !important;
    border: none !important;
}

.pin-key.special:hover {
    color: var(--color-red) !important;
    background: rgba(239, 68, 68, 0.08) !important;
}

.pin-key.special-clear:hover {
    color: var(--color-orange) !important;
    background: rgba(245, 158, 11, 0.08) !important;
}

/* ===========================================================================
   RESPONSIVE HARDENING — final precedence for React panels (mobile + iPad)
   ========================================================================== */

/* Keep grid and flex children from forcing their parents wider than the viewport. */
.page-panel,
.page-panel > *,
.card-glass,
.dashboard-card,
.workflow-scan-panel,
.workflow-form-panel,
.form-group,
.search-box,
.header-search,
.top-header > div,
.mobile-stack {
    min-width: 0;
}

.search-box {
    position: relative;
}

.search-box > i {
    position: absolute;
    left: 12px;
    top: 50%;
    z-index: 1;
    color: var(--text-muted);
    pointer-events: none;
    transform: translateY(-50%);
}

.search-box > input {
    padding-left: 36px !important;
}

input[type="email"],
input[type="tel"],
input[type="search"],
input[type="month"],
input[type="time"],
input[type="file"],
.input-text,
.input-select,
.input-field {
    width: 100% !important;
    min-width: 0;
    min-height: 42px;
    border: 1px solid var(--border-color);
    border-radius: 9px;
    background-color: rgba(11, 15, 23, 0.6);
    color: var(--text-primary);
    font: inherit;
}

textarea {
    min-height: 96px;
    resize: vertical;
}

input[type="file"] {
    padding: 7px 9px;
}

input[type="file"]::file-selector-button {
    margin-right: 10px;
    padding: 6px 9px;
    border: 0;
    border-radius: 6px;
    background: rgba(112, 164, 171, 0.18);
    color: var(--text-primary);
    font: inherit;
    font-size: 12px;
    cursor: pointer;
}

.table-responsive {
    overscroll-behavior-x: contain;
    scrollbar-width: thin;
    scrollbar-color: rgba(112, 164, 171, 0.55) transparent;
}

.table-responsive::-webkit-scrollbar {
    height: 8px;
    width: 8px;
}

.table-responsive::-webkit-scrollbar-thumb {
    border-radius: 999px;
    background: rgba(112, 164, 171, 0.45);
}

/* Correct the former global full-screen rule: dialogs remain focused on larger screens. */
.modal-overlay {
    padding: clamp(12px, 3vw, 32px) !important;
    align-items: center !important;
    justify-content: center !important;
    inset: 0 !important;
    background: rgba(10, 12, 18, 0.82) !important;
    backdrop-filter: blur(12px) !important;
    -webkit-backdrop-filter: blur(12px) !important;
}

.modal-card {
    width: min(100%, 800px) !important;
    max-width: 100% !important;
    height: auto !important;
    max-height: calc(100dvh - clamp(24px, 6vw, 64px)) !important;
    margin: auto !important;
    border: 1px solid var(--border-color) !important;
    border-radius: 18px !important;
    overflow: hidden !important;
    box-shadow: 0 24px 64px rgba(0, 0, 0, 0.5) !important;
    background: var(--bg-sidebar) !important;
    animation: modalPop 0.25s cubic-bezier(0.16, 1, 0.3, 1) forwards !important;
}

/* Respect the intentional compact and wide dialog sizes declared by each panel. */
.modal-card[style*="width: 400px"],
.modal-card[style*="max-width: 400px"] {
    width: min(100%, 400px) !important;
}

.modal-card[style*="width: 450px"],
.modal-card[style*="max-width: 450px"] {
    width: min(100%, 450px) !important;
}

.modal-card[style*="width: 500px"],
.modal-card[style*="max-width: 500px"] {
    width: min(100%, 500px) !important;
}

.modal-card[style*="width: 600px"],
.modal-card[style*="max-width: 600px"] {
    width: min(100%, 600px) !important;
}

.modal-card[style*="width: 700px"] {
    width: min(100%, 700px) !important;
}

.modal-card[style*="width: 900px"] {
    width: min(100%, 900px) !important;
}

.modal-card > form {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
    min-height: 0;
    overflow: hidden;
}

.modal-header {
    margin: 0 !important;
    padding: 16px 20px !important;
    border-bottom-color: var(--border-color) !important;
    background: rgba(15, 17, 26, 0.28) !important;
}

.modal-body {
    flex: 1 1 auto !important;
    min-height: 0 !important;
    overflow: auto !important;
    padding: 20px !important;
    display: block !important;
}

.modal-body > * {
    max-width: 100% !important;
}

.modal-footer {
    margin: 0 !important;
    padding: 14px 20px !important;
    flex-wrap: wrap !important;
    border-top-color: var(--border-color) !important;
    background: rgba(15, 17, 26, 0.28) !important;
}

/* Mobile navigation is rendered by Sidebar; the scrim makes the drawer dismissible. */
.mobile-nav-scrim {
    display: none;
}

@media (max-width: 992px) {
    .mobile-nav-scrim {
        position: fixed;
        z-index: 999998;
        inset: 0;
        width: 100%;
        height: 100%;
        border: 0;
        background: rgba(5, 8, 12, 0.56);
        opacity: 0;
        pointer-events: none;
        transition: opacity 0.25s ease;
    }

    .app-container.mobile-nav-open .mobile-nav-scrim {
        display: block;
        opacity: 1;
        pointer-events: auto;
    }

    .mobile-bottom-nav {
        right: max(10px, env(safe-area-inset-right)) !important;
        bottom: max(10px, env(safe-area-inset-bottom)) !important;
        left: max(10px, env(safe-area-inset-left)) !important;
        height: 62px !important;
        padding: 5px 6px !important;
    }

    .mobile-nav-btn {
        min-width: 0;
        min-height: 50px;
        padding: 4px 2px;
        line-height: 1.15;
    }

    .mobile-nav-btn span {
        overflow: hidden;
        max-width: 100%;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    .main-content {
        padding-bottom: calc(84px + env(safe-area-inset-bottom)) !important;
    }

    .top-header > div {
        gap: 10px !important;
    }

    .top-header > div > div:first-child {
        min-width: 0;
    }

    .header-search h1 {
        min-width: 0;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    .workflow-grid,
    .stocktake-grid,
    .mobile-stack {
        min-width: 0 !important;
    }
}

@media (max-width: 768px) {
    .panel-header {
        gap: 8px;
    }

    .panel-header[style] > .btn-primary,
    .panel-header[style] > .btn-secondary,
    .panel-header[style] > .btn-success,
    .panel-header[style] > .btn-danger,
    .panel-header[style] > .btn-accent {
        min-height: 40px;
    }

    .table {
        min-width: 560px;
    }

    .table th,
    .table td {
        white-space: nowrap;
    }

    .filmstrip-roll-card {
        min-width: min(88vw, 290px) !important;
        max-width: min(88vw, 330px) !important;
    }

    .film-strip-row {
        scroll-snap-type: x proximity;
        padding-bottom: 10px !important;
    }

    .film-strip-row > * {
        scroll-snap-align: start;
    }
}

@media (max-width: 576px) {
    .main-content > div[style*="margin-top"] {
        margin-top: 12px !important;
    }

    .top-header > div > div:first-child {
        width: 100%;
    }

    .header-search {
        flex: 1 1 auto;
    }

    .header-search h1 {
        font-size: 15px !important;
    }

    .top-header > div > div:last-child {
        width: 100%;
    }

    .top-header > div > div:last-child .btn-accent {
        width: 100%;
    }

    .page-panel [style*="grid-template-columns"]:not(.product-catalog-grid):not(.metrics-grid) {
        grid-template-columns: minmax(0, 1fr) !important;
    }

    .panel-header[style] > .btn-primary,
    .panel-header[style] > .btn-secondary,
    .panel-header[style] > .btn-success,
    .panel-header[style] > .btn-danger,
    .panel-header[style] > .btn-accent {
        width: 100%;
    }

    .card-glass,
    .dashboard-card,
    .workflow-scan-panel,
    .workflow-form-panel {
        padding: 12px !important;
    }

    .modal-overlay {
        padding: 0 !important;
    }

    .modal-card {
        width: 100% !important;
        height: 100dvh !important;
        max-height: 100dvh !important;
        border: 0 !important;
        border-radius: 0 !important;
    }

    .modal-header {
        padding: 14px 16px !important;
    }

    .modal-body {
        padding: 16px !important;
    }

    .modal-footer {
        padding: 12px 16px calc(12px + env(safe-area-inset-bottom)) !important;
    }

    .modal-footer .btn-primary,
    .modal-footer .btn-secondary,
    .modal-footer .btn-success,
    .modal-footer .btn-danger,
    .modal-footer .btn-accent {
        flex: 1 1 140px;
    }
}

/* Keep the popup finishing system last so individual legacy dialog styles
   cannot override the shared presentation. */
.modal-overlay {
    background:
        radial-gradient(circle at 50% 0%, rgba(112, 164, 171, 0.18), transparent 42%),
        rgba(7, 10, 15, 0.86) !important;
}

.modal-header {
    min-height: 64px;
    padding: 18px 22px !important;
    background: linear-gradient(90deg, rgba(112, 164, 171, 0.12), rgba(15, 17, 26, 0.16)) !important;
}

.modal-body {
    padding: 22px !important;
}

.modal-footer {
    padding: 16px 22px !important;
    background: linear-gradient(90deg, rgba(15, 17, 26, 0.14), rgba(112, 164, 171, 0.1)) !important;
}

@media (max-width: 576px) {
    .modal-header {
        min-height: 58px;
        padding: 14px 16px !important;
    }

    .modal-body {
        padding: 18px 16px !important;
    }

    .modal-footer {
        padding: 12px 16px calc(12px + env(safe-area-inset-bottom)) !important;
    }
}

/* Requisition preview mirrors the hierarchy of the printable A4 document. */
.requisition-preview {
    display: flex;
    flex-direction: column;
    gap: 16px;
    color: var(--text-primary);
}

.requisition-preview__header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    padding-bottom: 14px;
    border-bottom: 1px solid var(--border-color);
}

.requisition-preview__eyebrow {
    margin: 0 0 4px;
    color: var(--text-muted);
    font-size: 11px;
    font-weight: 700;
}

.requisition-preview__header h4 {
    margin: 0;
    color: var(--text-primary);
    font-family: monospace;
    font-size: 16px;
}

.requisition-preview__header > div > span {
    display: block;
    margin-top: 4px;
    color: var(--text-muted);
    font-size: 11px;
}

.requisition-preview__status {
    display: inline-flex;
    flex: 0 0 auto;
    align-items: center;
    gap: 6px;
    padding: 6px 10px;
    border: 1px solid var(--border-color);
    border-radius: 999px;
    font-size: 11px;
    font-weight: 700;
}

.requisition-preview__status--approved { color: var(--color-green); background: rgba(63, 185, 80, 0.1); }
.requisition-preview__status--rejected { color: var(--color-red); background: rgba(248, 81, 73, 0.1); }
.requisition-preview__status--dispatched { color: var(--color-blue); background: rgba(112, 164, 171, 0.12); }
.requisition-preview__status--pending { color: var(--color-accent); background: rgba(166, 140, 63, 0.12); }

.requisition-preview__meta {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
    margin: 0;
}

.requisition-preview__meta > div {
    min-width: 0;
    padding: 11px 12px;
    border: 1px solid var(--border-color);
    border-radius: 10px;
    background: rgba(255, 255, 255, 0.025);
}

.requisition-preview__meta dt {
    margin-bottom: 4px;
    color: var(--text-muted);
    font-size: 10px;
    font-weight: 700;
}

.requisition-preview__meta dd {
    overflow: hidden;
    margin: 0;
    color: var(--text-primary);
    font-size: 13px;
    font-weight: 700;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.requisition-preview__table-wrap {
    overflow-x: auto;
    border: 1px solid var(--border-color);
    border-radius: 10px;
}

.requisition-preview__table {
    width: 100%;
    min-width: 560px;
    border-collapse: collapse;
    font-size: 12px;
    text-align: left;
}

.requisition-preview__table th,
.requisition-preview__table td {
    padding: 10px 12px;
    border-bottom: 1px solid var(--border-color);
}

.requisition-preview__table th {
    color: var(--text-muted);
    background: rgba(112, 164, 171, 0.1);
    font-size: 10px;
    font-weight: 700;
}

.requisition-preview__table tr:last-child td { border-bottom: 0; }
.requisition-preview__table td:last-child { color: var(--color-green); font-weight: 700; text-align: right; }
.requisition-preview__table code { color: var(--text-muted); font-size: 11px; }

.requisition-preview__note {
    margin: 0;
    padding: 10px 12px;
    border-left: 3px solid var(--color-accent);
    border-radius: 0 8px 8px 0;
    background: rgba(166, 140, 63, 0.1);
    color: var(--text-primary);
    font-size: 12px;
}

@media (max-width: 576px) {
    .requisition-preview__header { align-items: stretch; flex-direction: column; }
    .requisition-preview__status { align-self: flex-start; }
    .requisition-preview__meta { grid-template-columns: 1fr; }
}

/* --------------------------------------------------------------------------
   ACCESSIBLE THEME REFINEMENT
   Keeps the existing WMS identity while making text, controls and data states
   easy to read in both light and dark environments.
   -------------------------------------------------------------------------- */
body:not(.light-theme) .nav-btn.active {
    background: linear-gradient(90deg, rgba(56, 189, 248, 0.22), rgba(56, 189, 248, 0.05));
    border-left-color: var(--color-blue);
    border-color: rgba(56, 189, 248, 0.40);
    color: var(--text-primary);
    box-shadow: 0 4px 14px rgba(14, 165, 233, 0.18);
}

body:not(.light-theme) .nav-btn:hover {
    background-color: rgba(203, 213, 225, 0.09);
}

body:not(.light-theme) .btn-secondary,
body:not(.light-theme) .active-user-badge {
    background-color: var(--surface-soft);
    border-color: var(--border-color);
}

.table th {
    background-color: var(--surface-soft);
    color: var(--text-primary);
}

.table tbody tr:hover {
    background-color: var(--surface-soft);
}

input[type="text"],
input[type="number"],
input[type="password"],
input[type="date"],
input[type="email"],
input[type="tel"],
input[type="search"],
select,
textarea,
.input-text,
.input-select,
.input-field {
    color: var(--text-primary);
}

input::placeholder,
textarea::placeholder {
    color: var(--text-muted);
    opacity: 0.88;
}

input:focus-visible,
select:focus-visible,
textarea:focus-visible,
button:focus-visible,
a:focus-visible {
    outline: 3px solid rgba(56, 189, 248, 0.62);
    outline-offset: 2px;
}

.status-badge.success,
.badge-fresh {
    background: rgba(34, 197, 94, 0.18);
    color: #bbf7d0;
    border-color: rgba(74, 222, 128, 0.46);
}

.status-badge.warning,
.badge-dry {
    background: rgba(251, 191, 36, 0.17);
    color: #fde68a;
    border-color: rgba(251, 191, 36, 0.45);
}

.status-badge.danger {
    background: rgba(251, 113, 133, 0.17);
    color: #fecdd3;
    border-color: rgba(251, 113, 133, 0.45);
}

.status-badge.info,
.badge-beverage {
    background: rgba(56, 189, 248, 0.16);
    color: #bae6fd;
    border-color: rgba(56, 189, 248, 0.42);
}

.badge-supply {
    background: rgba(251, 191, 36, 0.16);
    color: #fef3c7;
    border-color: rgba(251, 191, 36, 0.42);
}

.modal-overlay {
    background:
        radial-gradient(circle at 50% 0%, rgba(56, 189, 248, 0.20), transparent 42%),
        rgba(7, 12, 22, 0.86) !important;
}

.modal-card:not(.modal-card--image) {
    border-color: rgba(56, 189, 248, 0.32) !important;
}

.modal-header,
.modal-footer {
    background: linear-gradient(90deg, rgba(56, 189, 248, 0.11), rgba(15, 23, 42, 0.12)) !important;
}

.modal-body input[type="text"],
.modal-body input[type="number"],
.modal-body input[type="date"],
.modal-body input[type="password"],
.modal-body input[type="search"],
.modal-body select,
.modal-body textarea {
    border-color: rgba(148, 163, 184, 0.45);
    background: rgba(15, 23, 42, 0.62);
}

.modal-body input:focus,
.modal-body select:focus,
.modal-body textarea:focus {
    background: rgba(30, 41, 59, 0.96);
    box-shadow: 0 0 0 3px rgba(56, 189, 248, 0.22);
}

body.light-theme .sidebar {
    background: linear-gradient(180deg, #ffffff 0%, #f0f5fa 100%) !important;
    border-right-color: rgba(71, 85, 105, 0.20) !important;
}

body.light-theme .top-header,
body.light-theme .card-glass,
body.light-theme .dashboard-card {
    border-color: var(--border-color);
    box-shadow: 0 6px 20px rgba(15, 23, 42, 0.07);
}

body.light-theme .nav-btn:hover {
    background-color: #e7f0f7 !important;
}

body.light-theme .nav-btn.active {
    background: linear-gradient(90deg, rgba(3, 105, 161, 0.15), rgba(3, 105, 161, 0.05)) !important;
    border-left-color: var(--color-blue) !important;
    border-color: rgba(3, 105, 161, 0.28) !important;
    color: #0f3f5d !important;
    box-shadow: 0 3px 10px rgba(3, 105, 161, 0.10) !important;
}

body.light-theme .btn-accent {
    background: linear-gradient(135deg, #b45309, #92400e) !important;
    border-color: rgba(146, 64, 14, 0.44) !important;
    color: #ffffff !important;
}

body.light-theme .status-badge.success,
body.light-theme .badge-fresh {
    background: #dcfce7 !important;
    color: #166534 !important;
    border-color: #86efac !important;
}

body.light-theme .status-badge.warning,
body.light-theme .badge-dry {
    background: #fef3c7 !important;
    color: #92400e !important;
    border-color: #fcd34d !important;
}

body.light-theme .status-badge.danger {
    background: #ffe4e6 !important;
    color: #9f1239 !important;
    border-color: #fda4af !important;
}

body.light-theme .status-badge.info,
body.light-theme .badge-beverage {
    background: #e0f2fe !important;
    color: #075985 !important;
    border-color: #7dd3fc !important;
}

body.light-theme .badge-supply {
    background: #fef3c7 !important;
    color: #92400e !important;
    border-color: #fcd34d !important;
}

body.light-theme .modal-overlay {
    background:
        radial-gradient(circle at 50% 0%, rgba(14, 165, 233, 0.22), transparent 42%),
        rgba(15, 23, 42, 0.60) !important;
}

body.light-theme .modal-card:not(.modal-card--image) {
    background: #ffffff !important;
    border-color: rgba(3, 105, 161, 0.28) !important;
    box-shadow: 0 28px 80px rgba(15, 23, 42, 0.28) !important;
}

body.light-theme .modal-header,
body.light-theme .modal-footer {
    background: linear-gradient(90deg, #edf7ff, #f8fbff) !important;
}

body.light-theme .modal-body input[type="text"],
body.light-theme .modal-body input[type="number"],
body.light-theme .modal-body input[type="date"],
body.light-theme .modal-body input[type="password"],
body.light-theme .modal-body input[type="search"],
body.light-theme .modal-body select,
body.light-theme .modal-body textarea {
    background: #ffffff;
    border-color: #94a3b8;
    color: var(--text-primary);
}

body.light-theme .modal-body input:focus,
body.light-theme .modal-body select:focus,
body.light-theme .modal-body textarea:focus {
    background: #ffffff;
    box-shadow: 0 0 0 3px rgba(3, 105, 161, 0.16);
}

body.light-theme input:focus-visible,
body.light-theme select:focus-visible,
body.light-theme textarea:focus-visible,
body.light-theme button:focus-visible,
body.light-theme a:focus-visible {
    outline-color: rgba(3, 105, 161, 0.62);
}

/* --------------------------------------------------------------------------
   REQUISITION QUEUE & DOCUMENT DIALOGS
   Dedicated sizing prevents long slips from being clipped while preserving
   fixed headers and action buttons on every screen size.
   -------------------------------------------------------------------------- */
.modal-overlay {
    position: fixed !important;
    inset: 0 !important;
    width: 100vw !important;
    height: 100dvh !important;
    min-height: 100dvh !important;
    overflow: hidden !important;
}

.modal-card {
    display: flex !important;
    flex-direction: column !important;
    min-height: 0 !important;
}

.modal-card > .modal-header,
.modal-card > .modal-footer {
    flex: 0 0 auto !important;
}

.modal-card > .modal-body {
    min-height: 0 !important;
    overflow: auto !important;
    -webkit-overflow-scrolling: touch;
}

.modal-card--document {
    width: min(100%, 820px) !important;
    height: min(820px, calc(100dvh - 48px)) !important;
    max-height: calc(100dvh - 48px) !important;
}

.modal-card--document .modal-body {
    padding: 20px 22px !important;
}

.requisition-queue-table th:nth-child(1) { width: 11%; }
.requisition-queue-table th:nth-child(2) { width: 14%; }
.requisition-queue-table th:nth-child(3) { width: 12%; }
.requisition-queue-table th:nth-child(4) { width: 9%; }
.requisition-queue-table th:nth-child(5) { width: 31%; }
.requisition-queue-table th:nth-child(6) { width: 23%; }

.requisition-queue-actions {
    display: table-cell !important;
    min-width: 260px;
    vertical-align: middle;
    white-space: normal;
}

.requisition-queue-actions > button,
.requisition-queue-actions > .status-badge {
    margin: 3px 4px;
}

.requisition-queue-department {
    display: inline-flex;
    padding: 3px 8px;
    border-radius: 999px;
    background: var(--surface-soft);
    color: var(--text-primary);
    font-size: 11px;
    font-weight: 700;
}

@media (max-width: 576px) {
    .modal-card--document {
        width: 100% !important;
        height: 100dvh !important;
        max-height: 100dvh !important;
        border: 0 !important;
        border-radius: 0 !important;
    }

    .modal-card--document .modal-body {
        padding: 14px 16px !important;
    }

    .modal-card--document .modal-footer {
        display: grid !important;
        grid-template-columns: 1fr 1fr;
        padding: 12px 16px calc(12px + env(safe-area-inset-bottom)) !important;
    }

    .modal-card--document .modal-footer .btn-secondary {
        grid-column: 1 / -1;
    }

    .requisition-preview {
        gap: 12px;
    }

    .requisition-preview__table {
        min-width: 0;
        table-layout: fixed;
        font-size: 11px;
    }

    .requisition-preview__table th,
    .requisition-preview__table td {
        padding: 8px 6px;
        overflow-wrap: anywhere;
        white-space: normal;
    }

    .requisition-preview__table th:nth-child(1) { width: 45%; }
    .requisition-preview__table th:nth-child(2) { width: 27%; }
    .requisition-preview__table th:nth-child(3) { width: 28%; }

    .requisition-preview__table code {
        font-size: 10px;
        overflow-wrap: anywhere;
    }

    .requisition-queue-table-wrap {
        overflow: visible !important;
    }

    .requisition-queue-table,
    .requisition-queue-table tbody,
    .requisition-queue-table tr,
    .requisition-queue-table td {
        display: block;
        min-width: 0 !important;
        width: 100% !important;
    }

    .requisition-queue-table thead {
        display: none;
    }

    .requisition-queue-table tbody {
        display: grid;
        gap: 12px;
    }

    .requisition-queue-table .requisition-queue-row {
        overflow: hidden;
        padding: 4px 12px;
        border: 1px solid var(--border-color);
        border-radius: 12px;
        background: var(--bg-card);
        box-shadow: 0 4px 12px rgba(15, 23, 42, 0.05);
    }

    .requisition-queue-table .requisition-queue-row td {
        display: grid;
        grid-template-columns: minmax(94px, 0.8fr) minmax(0, 1.2fr);
        gap: 10px;
        align-items: start;
        padding: 9px 0 !important;
        border-bottom: 1px solid var(--border-color);
        color: var(--text-primary);
        font-size: 12px;
        text-align: left;
        white-space: normal !important;
    }

    .requisition-queue-table .requisition-queue-row td::before {
        content: attr(data-label);
        color: var(--text-muted);
        font-size: 10px;
        font-weight: 700;
    }

    .requisition-queue-table .requisition-queue-row td:last-child {
        border-bottom: 0;
    }

    .requisition-queue-table .requisition-queue-items {
        overflow: visible !important;
        max-width: none !important;
        text-overflow: clip !important;
    }

    .requisition-queue-table .requisition-queue-actions {
        display: flex !important;
        flex-wrap: wrap;
        gap: 8px !important;
        justify-content: stretch !important;
    }

    .requisition-queue-table .requisition-queue-actions::before {
        flex: 0 0 100%;
    }

    .requisition-queue-table .requisition-queue-actions .btn-secondary,
    .requisition-queue-table .requisition-queue-actions .btn-success,
    .requisition-queue-table .requisition-queue-actions .btn-danger {
        flex: 1 1 130px;
        min-height: 40px;
        margin: 0;
    }
}

/* Compact, purposeful empty state for the outbound product catalog. */
.outbound-catalog-card {
    min-height: 0 !important;
}

.product-catalog-grid.product-catalog-grid--empty {
    grid-template-columns: minmax(0, 1fr) !important;
}

.catalog-empty-state {
    grid-column: 1 / -1;
    display: flex;
    min-height: 190px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 24px;
    border: 1px dashed var(--border-color);
    border-radius: 12px;
    background: var(--surface-soft);
    color: var(--text-muted);
    text-align: center;
}

.catalog-empty-state__icon {
    display: grid;
    width: 42px;
    height: 42px;
    place-items: center;
    margin-bottom: 10px;
    border-radius: 50%;
    background: color-mix(in srgb, var(--color-blue) 12%, transparent);
    color: var(--color-blue);
    font-size: 18px;
}

.catalog-empty-state h4 {
    margin: 0;
    color: var(--text-primary);
    font-size: 14px;
}

.catalog-empty-state p {
    max-width: 290px;
    margin: 6px 0 0;
    font-size: 12px;
    line-height: 1.45;
}

.catalog-empty-state .btn-secondary {
    margin-top: 12px;
}

@media (max-width: 576px) {
    .outbound-catalog-card {
        padding-bottom: 12px !important;
    }

    .catalog-empty-state {
        min-height: 160px;
        padding: 18px 14px;
    }
}

/* Operations hub: guided setup, purchasing, reporting and account controls. */
.operations-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 14px;
}

.operations-tabs {
    display: flex;
    gap: 8px;
    margin: 18px 0;
    overflow-x: auto;
    padding-bottom: 2px;
}

.operations-tabs button {
    flex: 0 0 auto;
    min-height: 40px;
    padding: 9px 13px;
    border: 1px solid var(--border-color);
    border-radius: 9px;
    background: var(--bg-card);
    color: var(--text-muted);
    cursor: pointer;
    font-family: inherit;
    font-size: 12px;
    font-weight: 700;
}

.operations-tabs button.active {
    border-color: color-mix(in srgb, var(--color-blue) 55%, var(--border-color));
    background: color-mix(in srgb, var(--color-blue) 14%, var(--bg-card));
    color: var(--text-primary);
}

.operations-tabs i { margin-right: 4px; }

.operations-layout {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
}

.operations-progress-card,
.operations-purchase-card,
.operations-report-card,
.operations-user-card,
.operations-tip-card,
.operations-checklist {
    min-width: 0;
    border: 1px solid var(--border-color);
    border-radius: 14px;
    background: var(--bg-card);
    box-shadow: 0 7px 20px rgba(15, 23, 42, 0.06);
}

.operations-progress-card,
.operations-purchase-card,
.operations-report-card,
.operations-user-card,
.operations-tip-card {
    padding: 18px;
}

.operations-progress-card { grid-column: 1 / -1; }
.operations-wide-card { grid-column: 1 / -1; }

.operations-progress-card__summary {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 12px;
    color: var(--text-muted);
    font-size: 13px;
    font-weight: 700;
}

.operations-progress-card__summary strong {
    color: var(--text-primary);
    font-size: 24px;
}

.operations-progress-card p,
.operations-tip-card p { margin: 9px 0 0; color: var(--text-muted); font-size: 12px; line-height: 1.45; }

.operations-progress-bar {
    height: 9px;
    margin-top: 10px;
    overflow: hidden;
    border-radius: 99px;
    background: var(--surface-soft);
}

.operations-progress-bar span { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--color-blue), var(--color-green)); transition: width 240ms ease; }

.operations-checklist { grid-column: 1 / -1; overflow: hidden; }

.operations-step {
    display: grid;
    grid-template-columns: 32px minmax(0, 1fr) auto;
    gap: 11px;
    align-items: center;
    padding: 13px 14px;
    border-bottom: 1px solid var(--border-color);
}

.operations-step:last-child { border-bottom: 0; }
.operations-step.done { background: color-mix(in srgb, var(--color-green) 5%, transparent); }

.operations-step__number {
    display: grid;
    width: 30px;
    height: 30px;
    place-items: center;
    border: 1px solid var(--border-color);
    border-radius: 50%;
    color: var(--text-muted);
    font-size: 12px;
    font-weight: 800;
}

.operations-step.done .operations-step__number { border-color: color-mix(in srgb, var(--color-green) 55%, transparent); background: color-mix(in srgb, var(--color-green) 14%, transparent); color: var(--color-green); }
.operations-step h3, .operations-purchase-card h3, .operations-report-card h3, .operations-user-card h3 { margin: 0; color: var(--text-primary); font-size: 14px; }
.operations-step p { margin: 3px 0 0; color: var(--text-muted); font-size: 11px; }
.operations-step .btn-secondary { font-size: 11px; }

.operations-tip-card { grid-column: 1 / -1; display: flex; align-items: flex-start; gap: 12px; }
.operations-tip-card > i { color: var(--color-blue); font-size: 23px; }
.operations-tip-card strong { color: var(--text-primary); font-size: 13px; }
.inbound-offline-queue { margin-top: 14px; padding: 12px 14px; border-color: color-mix(in srgb, var(--color-accent) 45%, var(--border-color)); }
.inbound-offline-queue p { flex: 1; }
.inbound-offline-queue .btn-secondary { margin-left: auto; white-space: nowrap; font-size: 11px; }

.operations-purchase-card h3,
.operations-report-card h3,
.operations-user-card h3 { margin-bottom: 13px; }
.operations-low-stock-list,
.operations-order-list,
.operations-user-list,
.operations-ranking,
.operations-lot-list,
.operations-location-report,
.operations-outbox-list,
.operations-backup-list { display: grid; gap: 9px; }

.operations-low-stock-list > div,
.operations-order,
.operations-user-list > div,
.operations-ranking > div,
.operations-lot-list > div,
.operations-location-report > div,
.operations-outbox-list > div,
.operations-backup-list > div {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 10px;
    border: 1px solid var(--border-color);
    border-radius: 10px;
    background: var(--surface-soft);
}

.operations-low-stock-list strong,
.operations-order strong,
.operations-user-list strong,
.operations-ranking strong,
.operations-lot-list strong,
.operations-location-report strong,
.operations-outbox-list strong,
.operations-backup-list strong { display: block; overflow-wrap: anywhere; color: var(--text-primary); font-size: 12px; }
.operations-low-stock-list span,
.operations-order span,
.operations-user-list span,
.operations-lot-list span,
.operations-location-report span,
.operations-outbox-list span,
.operations-backup-list span { display: block; margin-top: 2px; color: var(--text-muted); font-size: 10px; }

.operations-form { display: grid; gap: 10px; margin-top: 14px; }
.operations-form label { display: grid; gap: 5px; color: var(--text-muted); font-size: 11px; font-weight: 700; }
.operations-form input,
.operations-form textarea,
.operations-form select { width: 100%; min-height: 40px; padding: 9px 10px; border: 1px solid var(--border-color); border-radius: 8px; outline: none; background: var(--bg-main); color: var(--text-primary); font: inherit; font-size: 12px; }
.operations-form textarea { min-height: 62px; resize: vertical; }
.operations-form input:focus,
.operations-form textarea:focus,
.operations-form select:focus { border-color: var(--color-blue); box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-blue) 14%, transparent); }
.operations-form .btn-success { min-height: 42px; }

.operations-order__actions { display: flex; align-items: center; justify-content: flex-end; gap: 7px; flex-wrap: wrap; }
.operations-order__actions .btn-secondary,
.operations-order__actions .btn-success { padding: 6px 8px; font-size: 10px; }

.operations-metrics { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; margin-bottom: 14px; }
.operations-metrics > div { padding: 11px 8px; border-radius: 10px; background: var(--surface-soft); text-align: center; }
.operations-metrics span { display: block; color: var(--text-muted); font-size: 10px; }
.operations-metrics strong { display: block; margin-top: 5px; color: var(--text-primary); font-size: 21px; }
.operations-report-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.operations-report-actions .btn-secondary,
.operations-report-actions .btn-success { min-height: 38px; padding: 8px 12px; font-size: 11px; }
.operations-ranking > div { justify-content: flex-start; }
.operations-ranking > div > span { display: grid; width: 25px; height: 25px; flex: 0 0 25px; place-items: center; border-radius: 50%; background: color-mix(in srgb, var(--color-accent) 16%, transparent); color: var(--color-accent); font-size: 11px; font-weight: 800; }
.operations-ranking em { margin-left: auto; color: var(--text-muted); font-size: 11px; font-style: normal; white-space: nowrap; }
.operations-lot-list > div > div:last-child,
.operations-location-report > div > div:last-child { text-align: right; }
.operations-lot-list em,
.operations-location-report em,
.operations-backup-list em { color: var(--text-primary); font-size: 11px; font-style: normal; font-weight: 700; white-space: nowrap; }
.operations-lot-list > div > div:last-child span { font-size: 10px; }

.operations-receipt-header,
.operations-card-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; }
.operations-receipt-header h3,
.operations-card-heading h3 { margin-bottom: 4px; }
.operations-receipt-header p,
.operations-card-heading p,
.operations-backup-card p { margin: 0; color: var(--text-muted); font-size: 11px; line-height: 1.5; }
.operations-receipt-form { display: grid; gap: 11px; margin-top: 14px; }
.operations-receipt-line { display: grid; grid-template-columns: minmax(130px, 1.4fr) repeat(5, minmax(104px, 1fr)); gap: 9px; align-items: end; padding: 11px; border: 1px solid var(--border-color); border-radius: 10px; background: var(--surface-soft); }
.operations-receipt-line strong { display: grid; gap: 3px; color: var(--text-primary); font-size: 12px; overflow-wrap: anywhere; }
.operations-receipt-line small { color: var(--text-muted); font-size: 10px; font-weight: 600; }
.operations-receipt-line label,
.operations-endpoint { display: grid; gap: 5px; color: var(--text-muted); font-size: 10px; font-weight: 700; }
.operations-receipt-line input,
.operations-receipt-line select,
.operations-endpoint input { width: 100%; min-width: 0; min-height: 38px; padding: 8px 9px; border: 1px solid var(--border-color); border-radius: 8px; outline: none; background: var(--bg-main); color: var(--text-primary); font: inherit; font-size: 11px; }
.operations-receipt-line input:focus,
.operations-receipt-line select:focus,
.operations-endpoint input:focus { border-color: var(--color-blue); box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-blue) 14%, transparent); }

.operations-alert-card,
.operations-integration-card,
.operations-backup-card { min-width: 0; padding: 18px; border: 1px solid var(--border-color); border-radius: 14px; background: var(--bg-card); box-shadow: 0 7px 20px rgba(15, 23, 42, 0.06); }
.operations-alert-list { display: grid; gap: 10px; margin-top: 14px; }
.operations-alert { display: grid; grid-template-columns: 30px minmax(0, 1fr) auto; gap: 10px; align-items: center; padding: 11px; border: 1px solid var(--border-color); border-left-width: 4px; border-radius: 10px; background: var(--surface-soft); }
.operations-alert--critical { border-left-color: var(--color-red); }
.operations-alert--warning { border-left-color: var(--color-accent); }
.operations-alert--info { border-left-color: var(--color-blue); }
.operations-alert__icon { display: grid; width: 28px; height: 28px; place-items: center; border-radius: 50%; background: color-mix(in srgb, var(--color-blue) 12%, transparent); color: var(--color-blue); font-size: 12px; }
.operations-alert--critical .operations-alert__icon { background: color-mix(in srgb, var(--color-red) 12%, transparent); color: var(--color-red); }
.operations-alert--warning .operations-alert__icon { background: color-mix(in srgb, var(--color-accent) 12%, transparent); color: var(--color-accent); }
.operations-alert strong { display: block; color: var(--text-primary); font-size: 12px; }
.operations-alert p { margin: 3px 0; color: var(--text-muted); font-size: 11px; line-height: 1.4; }
.operations-alert small { color: var(--text-muted); font-size: 10px; }
.operations-alert .btn-secondary { font-size: 11px; white-space: nowrap; }

.operations-integration-list { display: grid; gap: 10px; margin-top: 14px; }
.operations-integration-row { display: grid; grid-template-columns: minmax(160px, 1.1fr) auto minmax(190px, 1fr) auto; gap: 12px; align-items: end; padding: 12px; border: 1px solid var(--border-color); border-radius: 10px; background: var(--surface-soft); }
.operations-integration-row strong { display: block; color: var(--text-primary); font-size: 12px; }
.operations-integration-row > div > span { display: block; margin-top: 3px; color: var(--text-muted); font-size: 10px; line-height: 1.4; }
.operations-switch { display: inline-flex; align-items: center; gap: 7px; padding-bottom: 9px; color: var(--text-muted); font-size: 10px; cursor: pointer; white-space: nowrap; }
.operations-switch input { position: absolute; opacity: 0; pointer-events: none; }
.operations-switch span { position: relative; width: 34px; height: 19px; border-radius: 99px; background: var(--border-color); transition: background 160ms ease; }
.operations-switch span::after { content: ''; position: absolute; top: 3px; left: 3px; width: 13px; height: 13px; border-radius: 50%; background: #fff; transition: transform 160ms ease; }
.operations-switch input:checked + span { background: var(--color-green); }
.operations-switch input:checked + span::after { transform: translateX(15px); }
.operations-switch b { font-size: 10px; }
.operations-integration-row .btn-secondary { min-height: 38px; font-size: 11px; }
.operations-outbox-list { margin-top: 12px; }

.operations-backup-card { display: grid; align-content: start; gap: 12px; }
.operations-backup-card h3 { margin: 0; color: var(--text-primary); font-size: 14px; }
.operations-backup-card .btn-success { min-height: 42px; }
.operations-empty { margin: 15px 0; padding: 16px; border: 1px dashed var(--border-color); border-radius: 10px; color: var(--text-muted); font-size: 12px; text-align: center; }
.operations-loading { min-height: 180px; display: grid; place-items: center; color: var(--text-muted); }

@media (max-width: 768px) {
    .operations-header { flex-direction: column; }
    .operations-header .btn-secondary { width: 100%; }
    .operations-layout { grid-template-columns: minmax(0, 1fr); }
    .operations-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .operations-report-actions .btn-secondary,
    .operations-report-actions .btn-success { flex: 1 1 120px; }
}

@media (max-width: 576px) {
    .operations-progress-card,
    .operations-purchase-card,
    .operations-report-card,
    .operations-user-card,
    .operations-tip-card { padding: 14px; }
    .operations-step { grid-template-columns: 30px minmax(0, 1fr); }
    .operations-step .btn-secondary { grid-column: 2; width: 100%; }
    .operations-order,
    .operations-user-list > div { align-items: flex-start; flex-direction: column; }
    .operations-order__actions { width: 100%; justify-content: space-between; }
    .inbound-offline-queue { flex-wrap: wrap; }
    .inbound-offline-queue .btn-secondary { width: 100%; margin-left: 0; }
    .operations-card-heading,
    .operations-receipt-header { flex-direction: column; }
    .operations-alert { grid-template-columns: 28px minmax(0, 1fr); }
    .operations-alert .btn-secondary { grid-column: 2; width: 100%; }
    .operations-integration-row { grid-template-columns: minmax(0, 1fr); gap: 9px; }
    .operations-switch { padding-bottom: 0; }
    .operations-receipt-line { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .operations-receipt-line > strong { grid-column: 1 / -1; }
    .operations-lot-list > div,
    .operations-location-report > div,
    .operations-outbox-list > div,
    .operations-backup-list > div { align-items: flex-start; flex-direction: column; }
    .operations-lot-list > div > div:last-child,
    .operations-location-report > div > div:last-child { text-align: left; }
}

.account-login-modal { width: min(420px, calc(100vw - 28px)); background: var(--bg-card); }
.account-login-modal__body { display: grid; gap: 12px; padding: 20px 24px !important; }
.account-login-modal__body > p { margin: 0 0 3px; color: var(--text-muted); font-size: 12px; line-height: 1.45; }
.account-login-modal__body label { display: grid; gap: 5px; color: var(--text-muted); font-size: 11px; font-weight: 700; }
.account-login-modal__body input { width: 100%; min-height: 42px; padding: 9px 10px; border: 1px solid var(--border-color); border-radius: 8px; outline: none; background: var(--bg-main); color: var(--text-primary); font: inherit; }
.account-login-modal__body input:focus { border-color: var(--color-blue); box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-blue) 14%, transparent); }
.account-login-modal__error { padding: 9px 10px; border-radius: 8px; background: color-mix(in srgb, var(--color-red) 11%, transparent); color: var(--color-red); font-size: 11px; line-height: 1.4; }
.account-login-modal__footer { display: grid !important; grid-template-columns: 1fr 1.2fr; gap: 10px; padding: 12px 24px 20px !important; }

@media (max-width: 576px) {
    .header-account-action-label { display: none; }
}

/* --------------------------------------------------------------------------
   FINAL UI CONSISTENCY LAYER
   Purpose: keep compact dialogs and optional admin settings easy to scan on
   every screen size without changing the established warehouse workflow.
   -------------------------------------------------------------------------- */

.operations-integration-note {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    margin-top: 14px;
    padding: 10px 12px;
    border: 1px solid color-mix(in srgb, var(--color-blue) 34%, var(--border-color));
    border-radius: 10px;
    background: color-mix(in srgb, var(--color-blue) 8%, var(--surface-soft));
    color: var(--text-muted);
    font-size: 11px;
    line-height: 1.5;
}

.operations-integration-note > i {
    margin-top: 2px;
    color: var(--color-blue);
}

.operations-integration-row {
    grid-template-columns: minmax(0, 1.35fr) auto minmax(220px, 1fr) auto;
    align-items: center;
}

.operations-integration-row__summary {
    display: flex;
    min-width: 0;
    align-items: flex-start;
    gap: 10px;
}

.operations-integration-row__summary > div {
    min-width: 0;
}

.operations-integration-row__icon {
    display: grid;
    width: 34px;
    height: 34px;
    flex: 0 0 34px;
    place-items: center;
    border-radius: 10px;
    background: color-mix(in srgb, var(--color-blue) 13%, transparent);
    color: var(--color-blue);
    font-size: 14px;
}

.operations-integration-row__summary strong {
    font-size: 13px;
}

.operations-integration-row__summary span {
    overflow-wrap: anywhere;
}

.operations-integration-ready {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 7px 10px;
    border: 1px solid color-mix(in srgb, var(--color-green) 45%, var(--border-color));
    border-radius: 999px;
    background: color-mix(in srgb, var(--color-green) 12%, transparent);
    color: var(--color-green);
    font-size: 11px;
    font-weight: 800;
    white-space: nowrap;
}

.modal-card.account-login-modal {
    display: block;
    overflow: hidden;
}

.account-login-modal > form {
    display: flex;
    min-height: 0;
    flex-direction: column;
}

.account-login-modal .modal-body {
    flex: 0 0 auto;
}

body.light-theme .operations-progress-card,
body.light-theme .operations-purchase-card,
body.light-theme .operations-report-card,
body.light-theme .operations-user-card,
body.light-theme .operations-tip-card,
body.light-theme .operations-alert-card,
body.light-theme .operations-integration-card,
body.light-theme .operations-backup-card,
body.light-theme .operations-checklist {
    border-color: #cbd5e1;
    box-shadow: 0 6px 18px rgba(15, 23, 42, 0.06);
}

body.light-theme .operations-integration-note {
    background: #eff6ff;
    border-color: #bfdbfe;
    color: #334155;
}

@media (max-width: 768px) {
    .operations-integration-row {
        grid-template-columns: minmax(0, 1fr) auto;
        align-items: end;
    }

    .operations-integration-row__summary,
    .operations-endpoint {
        grid-column: 1 / -1;
    }
}

@media (max-width: 576px) {
    .modal-card.account-login-modal {
        width: min(calc(100vw - 24px), 420px) !important;
        height: auto !important;
        max-height: calc(100dvh - 24px) !important;
        border: 1px solid var(--border-color) !important;
        border-radius: 18px !important;
    }

    .account-login-modal .modal-body {
        overflow: visible !important;
    }

    .account-login-modal__body {
        padding: 18px 20px !important;
    }

    .account-login-modal__footer {
        grid-template-columns: 1fr 1fr;
        padding: 12px 20px 18px !important;
    }

    .operations-integration-row {
        grid-template-columns: minmax(0, 1fr);
        align-items: stretch;
        padding: 14px;
    }

    .operations-integration-row__summary,
    .operations-endpoint {
        grid-column: auto;
    }

    .operations-integration-row .btn-secondary {
        width: 100%;
    }

    .operations-switch {
        justify-content: space-between;
        min-height: 34px;
        padding: 0;
        border-top: 1px solid var(--border-color);
        border-bottom: 1px solid var(--border-color);
    }
}

/* Operations panel: compact, readable controls on phones and tablets. */
.operations-tabs {
    scroll-snap-type: x proximity;
    scrollbar-width: none;
}

.operations-tabs::-webkit-scrollbar { display: none; }
.operations-tabs button { scroll-snap-align: center; }

.operations-integration-card .operations-card-heading h3 {
    font-size: 16px;
}

.operations-integration-card .operations-card-heading p {
    max-width: 62ch;
    font-size: 12px;
}

.operations-integration-note {
    margin-top: 12px;
    padding: 11px 12px;
    font-size: 12px;
}

.operations-integration-row {
    grid-template-columns: minmax(0, 0.9fr) minmax(300px, 1.1fr);
    align-items: start;
    gap: 16px;
    padding: 16px;
    background: color-mix(in srgb, var(--surface-soft) 86%, var(--bg-main));
}

.operations-integration-row > .operations-integration-row__summary > .operations-integration-row__icon {
    display: grid !important;
    width: 34px;
    height: 34px;
    margin: 0 !important;
    place-items: center;
    line-height: 1;
}

.operations-integration-row__summary > div > span {
    display: block;
    margin-top: 4px;
    color: var(--text-muted);
    font-size: 11px;
    font-weight: 500;
    line-height: 1.45;
}

.operations-integration-row__controls {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    gap: 10px;
    align-items: end;
}

.operations-integration-row__controls .operations-switch {
    min-height: 40px;
    padding: 0 0 1px;
}

.operations-integration-row__controls .operations-endpoint {
    font-size: 11px;
}

.operations-integration-row__controls .operations-endpoint input {
    min-height: 40px;
    font-size: 12px;
}

.operations-integration-row__controls .btn-secondary {
    min-height: 40px;
    padding-inline: 13px;
}

.operations-integration-row__controls .operations-integration-ready {
    justify-self: start;
    min-height: 40px;
    padding-inline: 13px;
}

.operations-backup-card {
    padding: 20px;
}

.operations-backup-card > p {
    max-width: 62ch;
    font-size: 12px;
}

.operations-backup-list {
    gap: 10px;
    margin-top: 2px;
}

.operations-backup-list > .operations-backup-list__item {
    min-width: 0;
    padding: 12px 13px;
    border-color: color-mix(in srgb, var(--border-color) 82%, var(--color-blue));
    background: color-mix(in srgb, var(--surface-soft) 86%, var(--bg-main));
}

.operations-backup-list__details {
    min-width: 0;
}

.operations-backup-list__details strong {
    font-size: 12px;
    line-height: 1.35;
}

.operations-backup-list__details span {
    margin-top: 4px;
    font-size: 11px;
    line-height: 1.4;
}

.operations-backup-list > .operations-backup-list__item em {
    flex: 0 0 auto;
    padding: 5px 7px;
    border-radius: 7px;
    background: color-mix(in srgb, var(--color-blue) 12%, transparent);
    color: var(--text-primary);
}

@media (max-width: 768px) {
    .operations-integration-row {
        grid-template-columns: minmax(0, 1fr);
        gap: 12px;
    }
}

@media (max-width: 576px) {
    .operations-tabs {
        gap: 7px;
        margin: 14px 0 12px;
        padding: 0 2px 4px;
    }

    .operations-tabs button {
        min-height: 38px;
        padding: 8px 11px;
        font-size: 11px;
    }

    .operations-integration-card,
    .operations-backup-card {
        padding: 16px;
        border-radius: 14px;
    }

    .operations-integration-card .operations-card-heading {
        gap: 6px;
    }

    .operations-integration-card .operations-card-heading h3 {
        font-size: 15px;
    }

    .operations-integration-card .operations-card-heading p,
    .operations-integration-note,
    .operations-backup-card > p {
        font-size: 11px;
        line-height: 1.45;
    }

    .operations-integration-row {
        gap: 12px;
        padding: 14px;
    }

    .operations-integration-row__controls {
        grid-template-columns: minmax(0, 1fr);
        gap: 9px;
    }

    .operations-integration-row__controls .operations-switch {
        justify-content: space-between;
        min-height: 38px;
        padding: 0;
        border-top: 1px solid var(--border-color);
        border-bottom: 1px solid var(--border-color);
    }

    .operations-integration-row__controls .btn-secondary,
    .operations-integration-row__controls .operations-integration-ready {
        width: 100%;
        justify-content: center;
    }

    .operations-backup-list > .operations-backup-list__item {
        flex-direction: row !important;
        align-items: center !important;
        gap: 9px;
        padding: 12px;
    }

    .operations-backup-list__details span {
        font-size: 10px;
    }
}

/* Stocktake: make completion, pending items, and adjustments unambiguous. */
.stocktake-layout {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px;
    margin-top: 20px;
}

.stocktake-card {
    min-width: 0;
    margin-bottom: 0 !important;
}

.stocktake-form {
    display: grid;
    gap: 12px;
    margin-top: 15px;
}

.stocktake-form .btn-primary {
    min-height: 43px;
    margin-top: 3px !important;
}

.stocktake-queue-card {
    display: flex;
    min-height: 0;
    flex-direction: column;
}

.stocktake-queue-list {
    flex: 1;
    min-height: 200px;
    margin-top: 15px;
    overflow-y: auto;
}

.stocktake-queue-table,
.stocktake-report-table {
    font-size: 12px;
}

.stocktake-queue-table td,
.stocktake-report-table td {
    vertical-align: middle;
}

.stocktake-remove-button {
    display: inline-grid;
    width: 32px;
    height: 32px;
    padding: 0 !important;
    place-items: center;
    border: 1px solid color-mix(in srgb, var(--color-red) 34%, var(--border-color)) !important;
    border-radius: 8px;
    background: color-mix(in srgb, var(--color-red) 8%, transparent) !important;
}

.stocktake-submit {
    display: flex;
    width: 100%;
    min-height: 46px;
    align-items: center;
    justify-content: center;
    gap: 8px;
    margin-top: 15px;
    padding: 12px;
    border: 0;
    border-radius: 9px;
    font-size: 14px;
    font-weight: 800;
}

.stocktake-result {
    margin-bottom: 22px !important;
    border: 2px solid color-mix(in srgb, var(--color-green) 75%, var(--border-color)) !important;
}

.stocktake-success-banner {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 16px;
    padding: 14px;
    border: 1px solid color-mix(in srgb, var(--color-green) 38%, var(--border-color));
    border-radius: 11px;
    background: color-mix(in srgb, var(--color-green) 12%, transparent);
    text-align: left;
}

.stocktake-success-banner > i {
    color: var(--color-green);
    font-size: 24px;
}

.stocktake-success-banner h4 {
    margin: 0;
    color: var(--color-green);
    font-size: 14px;
}

.stocktake-success-banner p {
    margin: 4px 0 0;
    color: var(--text-muted);
    font-size: 12px;
    line-height: 1.45;
}

.stocktake-result-heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

.stocktake-result-heading h3 {
    margin: 0;
    color: var(--text-primary);
    font-size: 15px;
}

.stocktake-result-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.stocktake-result-actions .btn-secondary {
    min-height: 38px;
    font-size: 11px;
}

.stocktake-result-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 14px;
    margin-top: 12px;
    color: var(--text-muted);
    font-size: 12px;
    text-align: left;
}

.stocktake-result-meta span {
    display: inline-flex;
    align-items: center;
    gap: 5px;
}

@media (max-width: 768px) {
    .stocktake-layout {
        grid-template-columns: minmax(0, 1fr);
        gap: 14px;
    }
}

@media (max-width: 576px) {
    #panel-stocktake {
        padding-bottom: 104px;
    }

    .stocktake-layout {
        gap: 12px;
        margin-top: 14px;
    }

    .stocktake-card {
        padding: 14px 12px !important;
    }

    .stocktake-queue-list {
        min-height: 0;
        max-height: 520px;
        overflow-y: auto;
        padding-bottom: 12px;
        -webkit-overflow-scrolling: touch;
    }

    .stocktake-queue-table,
    .stocktake-queue-table tbody,
    .stocktake-queue-table tr,
    .stocktake-queue-table td,
    .stocktake-report-table,
    .stocktake-report-table tbody,
    .stocktake-report-table tr,
    .stocktake-report-table td {
        display: block;
        width: 100%;
    }

    .stocktake-queue-table thead,
    .stocktake-report-table thead {
        display: none;
    }

    .stocktake-queue-table tbody,
    .stocktake-report-table tbody {
        display: grid;
        gap: 10px;
    }

    .stocktake-queue-table tr,
    .stocktake-report-table tr {
        overflow: hidden;
        padding: 4px 12px;
        border: 1px solid var(--border-color);
        border-radius: 11px;
        background: color-mix(in srgb, var(--surface-soft) 88%, var(--bg-main));
    }

    .stocktake-queue-table td,
    .stocktake-report-table td {
        display: grid;
        grid-template-columns: minmax(96px, 0.82fr) minmax(0, 1.18fr);
        gap: 10px;
        align-items: center;
        padding: 9px 0 !important;
        border-bottom: 1px solid var(--border-color);
        font-size: 12px;
        text-align: right !important;
        white-space: normal;
    }

    .stocktake-queue-table td::before,
    .stocktake-report-table td::before {
        content: attr(data-label);
        color: var(--text-muted);
        font-size: 10px;
        font-weight: 800;
        text-align: left;
    }

    .stocktake-queue-table td:first-child,
    .stocktake-report-table td:nth-child(2) {
        text-align: left !important;
    }

    .stocktake-queue-table td:last-child,
    .stocktake-report-table td:last-child {
        border-bottom: 0;
    }

    .stocktake-queue-table td:last-child {
        display: flex;
        align-items: center;
        justify-content: space-between;
    }

    .stocktake-queue-table td:last-child::before {
        flex: 0 0 auto;
    }

    .stocktake-submit {
        position: sticky !important;
        bottom: 0 !important;
        margin-top: 12px;
        z-index: 10;
        box-shadow: 0 -4px 16px rgba(0, 0, 0, 0.4), 0 4px 15px color-mix(in srgb, var(--color-green) 28%, transparent);
    }

    .stocktake-result {
        padding: 14px 12px !important;
    }

    .stocktake-success-banner {
        align-items: flex-start;
        margin-bottom: 14px;
        padding: 12px;
    }

    .stocktake-success-banner > i {
        margin-top: 1px;
        font-size: 21px;
    }

    .stocktake-success-banner h4 {
        font-size: 13px;
    }

    .stocktake-success-banner p,
    .stocktake-result-meta {
        font-size: 11px;
    }

    .stocktake-result-heading {
        align-items: flex-start;
        flex-direction: column;
    }

    .stocktake-result-actions {
        width: 100%;
    }

    .stocktake-result-actions .btn-secondary {
        flex: 1 1 120px;
    }

    .stocktake-report-table td:last-child {
        align-items: start;
        text-align: left !important;
    }
}

/* ========================================================================
   WMS UNIFIED INTERFACE — production interface baseline
   A single, restrained visual language for every workflow: dashboard,
   inventory, requisitions, stocktake, reports, forms, tables and dialogs.
   ======================================================================== */
:root {
    --bg-main: #0b1220;
    --bg-sidebar: #101a2d;
    --bg-card: #172338;
    --bg-card-hover: #1e2e46;
    --surface-soft: rgba(148, 163, 184, 0.11);
    --border-color: rgba(148, 163, 184, 0.25);
    --border-color-glow: rgba(56, 189, 248, 0.62);
    --text-primary: #f8fafc;
    --text-main: #f8fafc;
    --text-muted: #b9c6d8;
    --color-blue: #38bdf8;
    --color-green: #34d399;
    --color-red: #fb7185;
    --color-purple: #c4b5fd;
    --color-orange: #fbbf24;
    --color-accent: #fbbf24;
    --radius-sm: 8px;
    --radius-md: 12px;
    --radius-lg: 16px;
    --shadow-card: 0 12px 32px rgba(2, 6, 23, 0.20);
    --focus-ring: 0 0 0 3px rgba(56, 189, 248, 0.22);
    --font-heading: 'Sarabun', 'Outfit', system-ui, sans-serif;
    --font-body: 'Sarabun', 'Inter', system-ui, sans-serif;
    --space-1: 4px;
    --space-2: 8px;
    --space-3: 12px;
    --space-4: 16px;
    --space-5: 20px;
    --space-6: 24px;
    --space-8: 32px;
    --control-height: 42px;
    --tap-target: 44px;
    --content-max-width: 1520px;
    --z-header: 50;
    --z-mobile-nav: 100;
    --z-modal: 1000100;
}

body {
    font-size: 14px;
    line-height: 1.55;
    letter-spacing: 0;
    background-image: radial-gradient(circle at 4% 0%, rgba(56, 189, 248, 0.10), transparent 30rem);
}

*, *::before, *::after { box-sizing: border-box; }

button, input, select, textarea { font: inherit; }
button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, a:focus-visible {
    outline: none;
    box-shadow: var(--focus-ring);
}

/* Shell, navigation and page rhythm */
.app-container { grid-template-columns: 264px minmax(0, 1fr); }
.sidebar {
    width: 264px;
    padding: 18px 14px;
    background: linear-gradient(180deg, #101a2d 0%, #0d1627 100%);
    border-right-color: var(--border-color);
    box-shadow: 3px 0 24px rgba(2, 6, 23, 0.24);
}
.sidebar-header { margin-bottom: 18px; }
.sidebar-nav { gap: 4px; }
.nav-btn {
    min-height: 42px;
    padding: 9px 12px;
    border: 1px solid transparent;
    border-left: 3px solid transparent;
    border-radius: var(--radius-sm);
    color: var(--text-muted);
    font-size: 13px;
    font-weight: 700;
}
.nav-btn:hover { transform: none; color: var(--text-primary); background: var(--surface-soft); }
.nav-btn.active {
    border-color: rgba(56, 189, 248, 0.32);
    border-left-color: var(--color-blue);
    color: #f8fafc;
    background: linear-gradient(90deg, rgba(14, 165, 233, 0.18), rgba(14, 165, 233, 0.05));
    box-shadow: none;
}
.main-content { padding: 20px 24px 32px; }
.top-header {
    min-height: 66px;
    padding: 11px 16px;
    margin-bottom: 24px;
    border-radius: var(--radius-lg);
    background: color-mix(in srgb, var(--bg-card) 92%, transparent);
    box-shadow: var(--shadow-card);
}
.top-header h1 { font-size: 17px; line-height: 1.25; }
.live-clock-widget { border-radius: var(--radius-sm); box-shadow: none; }
.panel-header { margin-bottom: 20px; }
.panel-header h2 { font-size: clamp(20px, 2vw, 24px); line-height: 1.25; }
.panel-header p { max-width: 720px; margin-top: 4px; color: var(--text-muted); }

/* Shared surfaces */
.card-glass, .dashboard-card, .workflow-scan-panel, .workflow-form-panel,
.operations-progress-card, .operations-purchase-card, .operations-report-card,
.operations-user-card, .operations-tip-card, .operations-alert-card,
.operations-backup-card, .operations-checklist, .stocktake-card,
.requisition-queue-card, .req-card-item {
    border-color: var(--border-color);
    border-radius: var(--radius-lg);
    background: var(--bg-card);
    box-shadow: var(--shadow-card);
}
.card-glass, .dashboard-card, .workflow-scan-panel, .workflow-form-panel { padding: 20px; }
.page-panel h3 { line-height: 1.35; }
.page-panel p, .operations-empty { color: var(--text-muted); }

/* One control standard, including compact action controls inside tables */
.btn-primary, .btn-secondary, .btn-success, .btn-danger, .btn-accent {
    min-height: 40px;
    padding: 8px 14px;
    border-radius: var(--radius-sm);
    font-size: 13px;
    font-weight: 800;
    line-height: 1.25;
    box-shadow: none;
}
.btn-primary { background: #0284c7; border-color: #38bdf8; }
.btn-success { background: #059669; border-color: #34d399; }
.btn-danger { background: #e11d48; border-color: #fb7185; }
.btn-accent { background: #b45309; border-color: #fbbf24; color: #fff; }
.btn-secondary { background: var(--surface-soft); border-color: var(--border-color); color: var(--text-primary); }
.btn-primary:hover:not(:disabled), .btn-success:hover:not(:disabled), .btn-danger:hover:not(:disabled), .btn-accent:hover:not(:disabled), .btn-secondary:hover:not(:disabled) {
    transform: translateY(-1px) !important;
    filter: brightness(1.08);
    box-shadow: 0 6px 16px rgba(2, 6, 23, 0.20) !important;
}
button:disabled { opacity: 0.52 !important; filter: grayscale(0.25); }

input:not([type='checkbox']):not([type='radio']), select, textarea,
.input-text, .input-select {
    width: 100%;
    min-height: 42px;
    height: 42px;
    box-sizing: border-box;
    border: 1px solid var(--border-color);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    background: color-mix(in srgb, var(--bg-main) 76%, var(--bg-card));
    padding: 9px 11px;
    font-size: 13px;
    transition: border-color 150ms ease, box-shadow 150ms ease, background 150ms ease;
}

input[type="date"], input[type="month"], input[type="datetime-local"], input[type="time"] {
    color-scheme: dark;
    font-family: inherit;
    font-size: 13px;
    line-height: 1.2;
    box-sizing: border-box;
    padding: 8px 11px;
}
body.light-theme input[type="date"], body.light-theme input[type="month"], body.light-theme input[type="datetime-local"], body.light-theme input[type="time"] {
    color-scheme: light;
}

textarea { min-height: 92px; height: auto; resize: vertical; }
input::placeholder, textarea::placeholder { color: var(--text-muted); opacity: 0.76; }
input:not([type='checkbox']):not([type='radio']):focus, select:focus, textarea:focus,
.input-text:focus, .input-select:focus {
    border-color: var(--color-blue);
    box-shadow: var(--focus-ring);
    background: var(--bg-main);
}
label { color: var(--text-primary); font-size: 12px; font-weight: 800; display: block; margin-bottom: 5px; }

/* Responsive Form Grid Baseline */
.wms-form-grid-4 {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
    align-items: end;
}

.wms-form-grid-3 {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 14px;
    align-items: end;
}

.wms-form-grid-2 {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
    align-items: end;
}

@media (max-width: 1024px) {
    .wms-form-grid-4 {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 12px;
    }
}

@media (max-width: 640px) {
    .wms-form-grid-4, .wms-form-grid-3, .wms-form-grid-2 {
        grid-template-columns: minmax(0, 1fr);
        gap: 10px;
    }
}

/* Tables keep their hierarchy on desktop and remain scrollable when needed. */
.table-responsive {
    margin-top: 14px;
    border: 1px solid var(--border-color);
    border-radius: var(--radius-md);
    background: color-mix(in srgb, var(--bg-main) 32%, var(--bg-card));
}
.table { min-width: 680px; margin: 0; border-collapse: separate; border-spacing: 0; }
.table th, .table td { padding: 12px 14px; border-bottom-color: var(--border-color); vertical-align: middle; }
.table th { color: var(--text-muted); background: color-mix(in srgb, var(--surface-soft) 88%, var(--bg-card)); font-size: 11px; letter-spacing: 0.01em; }
.table tbody tr:last-child td { border-bottom: 0; }
.table tbody tr:hover { background: color-mix(in srgb, var(--color-blue) 5%, transparent); }
.status-badge, .badge { min-height: 26px; padding: 4px 9px; border-radius: 999px; font-size: 11px; font-weight: 800; }

/* Dialogs always fit the viewport, with the actions available after scrolling. */
.modal-overlay {
    z-index: 2000 !important;
    padding: 20px;
    background: rgba(2, 6, 23, 0.72);
    backdrop-filter: blur(5px);
    -webkit-backdrop-filter: blur(5px);
}
.modal-card:not(.modal-card--image) {
    width: min(720px, calc(100vw - 40px));
    max-height: min(760px, calc(100dvh - 40px));
    display: flex;
    flex-direction: column;
    overflow: hidden;
    border: 1px solid var(--border-color);
    border-radius: var(--radius-lg);
    background: var(--bg-card);
    box-shadow: 0 24px 70px rgba(2, 6, 23, 0.48);
}
.modal-header, .modal-footer { flex: 0 0 auto; padding: 15px 20px; border-color: var(--border-color); background: color-mix(in srgb, var(--surface-soft) 62%, var(--bg-card)); }
.modal-header h3 { font-size: 16px; }
.modal-body { min-height: 0; overflow: auto; padding: 20px; overscroll-behavior: contain; }
.modal-footer { display: flex; justify-content: flex-end; gap: 8px; }
.close-btn { width: 36px; height: 36px; border-radius: 50%; }

/* Light theme uses the same contrast and spacing rules, not a separate design. */
body.light-theme {
    --bg-main: #f3f6fa;
    --bg-sidebar: #ffffff;
    --bg-card: #ffffff;
    --bg-card-hover: #f7fafc;
    --surface-soft: #eef3f8;
    --border-color: rgba(71, 85, 105, 0.22);
    --text-primary: #172033;
    --text-main: #172033;
    --text-muted: #526174;
    --color-blue: #0369a1;
    --color-green: #047857;
    --color-red: #be123c;
    --color-orange: #b45309;
    --color-accent: #a16207;
    --shadow-card: 0 8px 24px rgba(15, 23, 42, 0.08);
    --focus-ring: 0 0 0 3px rgba(3, 105, 161, 0.18);
    background-image: radial-gradient(circle at 4% 0%, rgba(14, 165, 233, 0.08), transparent 30rem);
}
body.light-theme .sidebar { background: #ffffff; border-right-color: #d7e0ea; box-shadow: 3px 0 20px rgba(15, 23, 42, 0.06); }
body.light-theme .nav-btn.active { color: #0c4a6e; background: #e0f2fe; border-color: #bae6fd; border-left-color: #0284c7; }
body.light-theme .top-header, body.light-theme .card-glass, body.light-theme .dashboard-card { background: #fff; border-color: #d7e0ea; }
body.light-theme input:not([type='checkbox']):not([type='radio']), body.light-theme select, body.light-theme textarea, body.light-theme .input-text, body.light-theme .input-select { background: #fff; border-color: #b7c4d3; color: #172033; }
body.light-theme .table-responsive { background: #fff; border-color: #d7e0ea; }
body.light-theme .table th { background: #eef3f8; color: #334155; }
body.light-theme .modal-overlay { background: rgba(15, 23, 42, 0.42); }

@media (max-width: 900px) {
    .main-content { padding: 16px 16px 100px; }
    .top-header { margin-bottom: 18px; }
    .header-account-summary { max-width: 146px; }
    .card-glass, .dashboard-card, .workflow-scan-panel, .workflow-form-panel { padding: 16px; }
}

@media (max-width: 640px) {
    body { font-size: 13px; }
    .main-content { padding: 12px 10px calc(92px + env(safe-area-inset-bottom)); }
    .top-header { min-height: 0; padding: 10px 12px; margin-bottom: 14px; border-radius: var(--radius-md); }
    .top-header h1 { max-width: 190px; font-size: 14px; }
    .header-account-summary { max-width: 108px; padding: 7px; }
    .header-account-action-label, .live-clock-widget .clock-divider, .live-clock-widget small { display: none; }
    .live-clock-widget { padding: 6px 8px; font-size: 10px; }
    .panel-header { margin-bottom: 14px; }
    .panel-header h2 { font-size: 18px; }
    .panel-header p { font-size: 12px; }
    .card-glass, .dashboard-card, .workflow-scan-panel, .workflow-form-panel,
    .operations-progress-card, .operations-purchase-card, .operations-report-card,
    .operations-user-card, .operations-tip-card, .operations-alert-card,
    .operations-backup-card, .operations-checklist, .stocktake-card,
    .requisition-queue-card { border-radius: var(--radius-md); }
    .card-glass, .dashboard-card, .workflow-scan-panel, .workflow-form-panel { padding: 14px; }
    .btn-primary, .btn-secondary, .btn-success, .btn-danger, .btn-accent { min-height: 42px; padding: 9px 11px; font-size: 12px; }
    .table-responsive { margin-top: 12px; border-radius: var(--radius-sm); }
    .modal-overlay { align-items: flex-end; padding: 10px; }
    .modal-card:not(.modal-card--image) { width: 100%; max-height: calc(100dvh - 20px); border-radius: var(--radius-lg) var(--radius-lg) 10px 10px; }
    .modal-header, .modal-footer { padding: 13px 14px; }
    .modal-body { padding: 14px; }
    .modal-footer > .btn-primary, .modal-footer > .btn-secondary, .modal-footer > .btn-success, .modal-footer > .btn-danger { flex: 1 1 0; }
}

/* Composite controls own one visual frame.  The input inside is deliberately
   borderless so global form styles cannot create a second, nested rectangle. */
.central-login-input > input:not([type='checkbox']):not([type='radio']) {
    min-height: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    outline: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
}
.central-login-input > input:not([type='checkbox']):not([type='radio']):focus {
    border: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
}

/* Requester receipt confirmation: a separate proof from the warehouse POD. */
.receipt-action-card,
.receipt-confirmed-card {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 11px;
    border-radius: 10px;
}
.receipt-action-card {
    border: 1px solid color-mix(in srgb, var(--color-blue) 42%, var(--border-color));
    background: color-mix(in srgb, var(--color-blue) 9%, var(--bg-card));
}
.receipt-action-card__copy,
.receipt-confirmed-card {
    display: flex;
    align-items: flex-start;
    gap: 9px;
}
.receipt-action-card__copy > i { color: var(--color-blue); margin-top: 2px; }
.receipt-action-card__copy strong,
.receipt-confirmed-card strong,
.receipt-action-card__copy small,
.receipt-confirmed-card small { display: block; }
.receipt-action-card__copy strong,
.receipt-confirmed-card strong { font-size: 12px; color: var(--text-main); }
.receipt-action-card__copy small,
.receipt-confirmed-card small { margin-top: 2px; color: var(--text-muted); font-size: 10px; line-height: 1.4; }
.receipt-action-card .btn-success { flex: 0 0 auto; min-height: 38px; font-size: 11px; }
.receipt-confirmed-card {
    border: 1px solid color-mix(in srgb, var(--color-green) 38%, var(--border-color));
    background: color-mix(in srgb, var(--color-green) 9%, var(--bg-card));
}
.receipt-confirmed-card > i { color: var(--color-green); margin-top: 2px; }
.receipt-confirmation-intro {
    display: flex;
    gap: 10px;
    padding: 12px;
    border-radius: 10px;
    background: color-mix(in srgb, var(--color-blue) 9%, var(--surface-soft));
    color: var(--text-main);
}
.receipt-confirmation-intro > i { color: var(--color-blue); padding-top: 2px; }
.receipt-confirmation-intro strong,
.receipt-confirmation-intro span { display: block; }
.receipt-confirmation-intro strong { font-size: 13px; }
.receipt-confirmation-intro span { margin-top: 3px; color: var(--text-muted); font-size: 11px; line-height: 1.45; }
.receipt-reference-row { display: flex; justify-content: space-between; gap: 12px; padding: 0 2px; font-size: 12px; }
.receipt-reference-row span { color: var(--text-muted); }
.receipt-uploader {
    min-height: 132px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 16px;
    border: 1.5px dashed color-mix(in srgb, var(--color-blue) 55%, var(--border-color));
    border-radius: 12px;
    background: color-mix(in srgb, var(--color-blue) 5%, var(--bg-card));
    color: var(--color-blue);
    cursor: pointer;
    text-align: center;
}
.receipt-uploader:hover { background: color-mix(in srgb, var(--color-blue) 11%, var(--bg-card)); }
.receipt-uploader input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.receipt-uploader > i { font-size: 24px; }
.receipt-uploader strong { font-size: 13px; }
.receipt-uploader small { color: var(--text-muted); font-size: 11px; }
.receipt-photo-preview { overflow: hidden; border: 1px solid var(--border-color); border-radius: 12px; background: var(--surface-soft); }
.receipt-photo-preview img { display: block; width: 100%; max-height: 250px; object-fit: contain; background: #020617; }
.receipt-photo-preview span { display: block; padding: 8px 10px; color: var(--color-green); font-size: 11px; font-weight: 700; }
.receipt-required-note { margin: 0; color: var(--color-orange); font-size: 11px; text-align: center; }
.requisition-preview__receipt { display: grid; grid-template-columns: 1fr 116px; gap: 12px; align-items: center; margin-top: 14px; padding: 10px; border: 1px solid color-mix(in srgb, var(--color-green) 38%, var(--border-color)); border-radius: 10px; background: color-mix(in srgb, var(--color-green) 8%, var(--bg-card)); }
.requisition-preview__receipt strong, .requisition-preview__receipt span { display: block; }
.requisition-preview__receipt strong { color: var(--color-green); font-size: 12px; }
.requisition-preview__receipt span { margin-top: 4px; color: var(--text-muted); font-size: 11px; }
.requisition-preview__receipt img { width: 116px; height: 82px; border-radius: 7px; object-fit: cover; background: #020617; }

@media (max-width: 640px) {
    .receipt-action-card { align-items: stretch; flex-direction: column; }
    .receipt-action-card .btn-success { width: 100%; }
    .receipt-reference-row { align-items: flex-start; flex-direction: column; gap: 3px; }
    .requisition-preview__receipt { grid-template-columns: 1fr; }
    .requisition-preview__receipt img { width: 100%; height: 170px; }
}

/* Compact mobile header: keep the account actions beside the identity rather
   than creating a third row with unused space. */
@media (max-width: 640px) {
    .top-header { padding: 10px; }
    .top-header__layout {
        display: grid !important;
        grid-template-columns: minmax(0, 1fr) auto;
        grid-template-areas:
            "brand actions"
            "clock actions";
        align-items: center !important;
        column-gap: 8px !important;
        row-gap: 7px !important;
    }
    .top-header__brand {
        grid-area: brand;
        min-width: 0;
        gap: 8px !important;
    }
    .top-header__brand .header-search {
        min-width: 0;
        gap: 7px !important;
    }
    .top-header__brand .header-search img {
        width: 31px !important;
        height: 31px !important;
        padding: 2px !important;
        border-radius: 7px !important;
    }
    .top-header h1 {
        min-width: 0;
        max-width: none;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }
    .live-clock-widget {
        grid-area: clock;
        justify-self: start;
        min-width: 0;
    }
    .top-header__account-actions {
        grid-area: actions;
        align-self: center;
        display: flex !important;
        gap: 6px !important;
    }
    .top-header__account-actions .header-account-summary { display: none; }
    .top-header__account-actions .btn-secondary {
        width: 36px;
        min-width: 36px;
        min-height: 36px;
        height: 36px;
        padding: 0 !important;
        justify-content: center;
        border-radius: 9px !important;
    }
    .top-header__account-actions .btn-secondary:last-child {
        width: auto;
        min-width: 60px;
        padding: 0 9px !important;
        gap: 5px !important;
        font-size: 0 !important;
    }
    .top-header__account-actions .btn-secondary:last-child::after {
        content: "ออก";
        font-size: 11px;
        font-weight: 800;
        line-height: 1;
    }
    .top-header__account-actions .btn-secondary i { font-size: 14px; margin: 0; }
}

/* Dialogs always take priority over fixed mobile controls.  The body class is
   supplied by ModalPortal, so this rule covers every existing popup. */
body.has-modal-open {
    overflow: hidden;
}
body.has-modal-open .mobile-bottom-nav,
body.has-modal-open .mobile-fab-container {
    visibility: hidden !important;
    pointer-events: none !important;
}
.modal-overlay {
    z-index: 1000100 !important;
}

/* Mobile dialogs use only the space their content needs.  Long content scrolls
   inside the body, while the footer remains visible and reachable. */
@media (max-width: 640px) {
    .modal-overlay {
        padding: max(10px, env(safe-area-inset-top)) 10px max(10px, env(safe-area-inset-bottom)) !important;
        align-items: center !important;
        justify-content: center !important;
    }
    .modal-card:not(.modal-card--image):not(.modal-card--document) {
        width: 100% !important;
        height: auto !important;
        max-height: 100% !important;
        margin: 0 !important;
        border-radius: 14px !important;
    }
    .modal-card--document {
        height: 100% !important;
        max-height: 100% !important;
    }
    .modal-card > .modal-header,
    .modal-card > .modal-footer {
        flex: 0 0 auto !important;
    }
    .modal-card > .modal-body {
        flex: 1 1 auto !important;
        min-height: 0 !important;
        overflow-y: auto !important;
        overscroll-behavior: contain;
    }
    .modal-footer {
        position: relative;
        z-index: 1;
    }
    .modal-footer > .btn-primary,
    .modal-footer > .btn-secondary,
    .modal-footer > .btn-success,
    .modal-footer > .btn-danger,
    .modal-footer > .btn-accent {
        min-width: 0;
    }
}

/* Account self-service ----------------------------------------------------
   Registration and recovery stay within the same calm entry screen.  These
   controls are intentionally compact so no dialog is required on a phone. */
.central-login-form--long { gap: 7px; }
.central-login-note,
.central-login-password-hint,
.central-login-notice {
    margin: 2px 0 5px;
    padding: 10px 11px;
    border-radius: 9px;
    font-size: 11px;
    line-height: 1.45;
}
.central-login-note {
    color: var(--text-muted);
    background: var(--surface-soft);
}
.central-login-note > i { margin-right: 5px; color: var(--color-blue); }
.central-login-password-hint { padding: 0; color: var(--text-muted); background: transparent; }
.central-login-notice {
    color: var(--color-green);
    border: 1px solid color-mix(in srgb, var(--color-green) 35%, var(--border-color));
    background: color-mix(in srgb, var(--color-green) 10%, transparent);
    font-weight: 700;
}
.central-login-secondary-actions {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 9px;
    margin-top: 2px;
}
.central-login-secondary-actions button,
.central-login-back {
    min-height: 38px;
    border: 0;
    color: var(--color-blue);
    background: transparent;
    font: inherit;
    font-size: 12px;
    font-weight: 800;
    cursor: pointer;
}
.central-login-secondary-actions button {
    border: 1px solid var(--border-color);
    border-radius: 9px;
    background: var(--surface-soft);
}
.central-login-secondary-actions button > i { margin-right: 4px; }
.central-login-secondary-actions button:hover:not(:disabled),
.central-login-back:hover:not(:disabled) { filter: brightness(1.16); text-decoration: underline; }
.central-login-secondary-actions button:focus-visible,
.central-login-back:focus-visible { outline: 3px solid color-mix(in srgb, var(--color-blue) 35%, transparent); outline-offset: 2px; }

/* Administrator account queue ------------------------------------------- */
.operations-account-help {
    margin: -3px 0 12px;
    color: var(--text-muted);
    font-size: 11px;
    line-height: 1.45;
}
.operations-user-list__item--pending {
    border-left: 3px solid var(--color-accent) !important;
    background: color-mix(in srgb, var(--color-accent) 7%, var(--surface-soft)) !important;
}
.operations-user-list__item em {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    margin-top: 6px;
    color: var(--color-accent);
    font-size: 10px;
    font-style: normal;
    font-weight: 800;
}
.operations-reset-request-list { display: grid; gap: 10px; margin-top: 12px; }
.operations-reset-request {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 12px;
    align-items: center;
    padding: 12px;
    border: 1px solid var(--border-color);
    border-radius: 11px;
    background: var(--surface-soft);
}
.operations-reset-request__summary { min-width: 0; }
.operations-reset-request__summary strong,
.operations-reset-request__summary span,
.operations-reset-request__summary small { display: block; overflow-wrap: anywhere; }
.operations-reset-request__summary strong { color: var(--text-primary); font-size: 12px; }
.operations-reset-request__summary span { margin-top: 3px; color: var(--text-muted); font-size: 10px; line-height: 1.4; }
.operations-reset-request__summary small { margin-top: 4px; color: var(--text-muted); font-size: 10px; }
.operations-reset-request > .btn-primary { min-height: 38px; font-size: 11px; white-space: nowrap; }
.operations-reset-form { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px; padding-top: 11px; border-top: 1px solid var(--border-color); }
.operations-reset-form label { display: grid; gap: 5px; color: var(--text-muted); font-size: 10px; font-weight: 800; }
.operations-reset-form p { grid-column: 1 / -1; margin: 0; color: var(--text-muted); font-size: 10px; line-height: 1.4; }
.operations-reset-form > div { grid-column: 1 / -1; display: flex; justify-content: flex-end; gap: 8px; }
.operations-reset-form .btn-secondary,
.operations-reset-form .btn-success { min-height: 38px; font-size: 11px; }

@media (max-width: 576px) {
    .central-login-secondary-actions { grid-template-columns: 1fr; }
    .operations-reset-request { grid-template-columns: minmax(0, 1fr); align-items: stretch; }
    .operations-reset-request > .btn-primary { width: 100%; }
    .operations-reset-form { grid-template-columns: minmax(0, 1fr); }
    .operations-reset-form > div { display: grid; grid-template-columns: 1fr 1fr; }
}
