/* Premium hotel management theme: shared visual layer only. */
:root {
    --app-bg: #f4f7f6;
    --app-body-bg: linear-gradient(180deg, rgba(255, 255, 255, .94) 0%, rgba(244, 247, 246, .96) 48%, rgba(238, 244, 241, 1) 100%);
    --app-surface: #ffffff;
    --app-surface-soft: #f8fbfa;
    --app-ink: #14211f;
    --app-muted: #68766f;
    --app-line: #dfe8e3;
    --app-primary: #0f766e;
    --app-primary-dark: #0b534f;
    --app-accent: #c9a227;
    --app-accent-soft: #fff7da;
    --app-danger: #b42318;
    --app-success: #15803d;
    --app-info: #0f6c81;
    --app-dark: #17211f;
    --app-hover: #eef8f5;
    --app-input-bg: #ffffff;
    --app-input-addon-bg: #f4f8f6;
    --app-table-border: #e4ece8;
    --app-table-head-bg: #17211f;
    --app-table-head-border: #243531;
    --app-table-head-text: #f7faf9;
    --app-table-stripe: rgba(15, 118, 110, .045);
    --app-table-hover: rgba(201, 162, 39, .09);
    --app-alert-success-bg: #edf8f4;
    --app-alert-success-border: #b9e3d4;
    --app-alert-danger-bg: #fff1f0;
    --app-alert-danger-border: #fac8c3;
    --app-alert-warning-bg: #fff7da;
    --app-alert-warning-border: #ead47a;
    --app-alert-info-bg: #eef8fb;
    --app-alert-info-border: #b9dce5;
    --app-nav-bg: linear-gradient(90deg, #111827 0%, #18342f 68%, #23332f 100%);
    --app-footer-bg: linear-gradient(135deg, rgba(255, 255, 255, .98), rgba(248, 251, 250, .98));
    --app-footer-chip-bg: rgba(255, 255, 255, .72);
    --app-login-screen-bg: linear-gradient(145deg, rgba(247, 250, 249, .96), rgba(231, 241, 237, .96));
    --app-login-header-bg: linear-gradient(135deg, #101817 0%, #18342f 76%, #2f382d 100%);
    --app-shadow: 0 14px 36px rgba(20, 33, 31, .08);
    --app-shadow-soft: 0 8px 22px rgba(20, 33, 31, .06);
}

:root[data-theme="dark"] {
    --app-bg: #0d1514;
    --app-body-bg: linear-gradient(180deg, #0d1514 0%, #111d1b 50%, #0b1211 100%);
    --app-surface: #15211f;
    --app-surface-soft: #1a2926;
    --app-ink: #edf7f4;
    --app-muted: #a8b8b2;
    --app-line: #2a3d38;
    --app-primary: #2dd4bf;
    --app-primary-dark: #14b8a6;
    --app-accent: #e2c967;
    --app-accent-soft: #3a3317;
    --app-danger: #f87171;
    --app-success: #34d399;
    --app-info: #38bdf8;
    --app-dark: #0b1211;
    --app-hover: #203631;
    --app-input-bg: #101b19;
    --app-input-addon-bg: #172622;
    --app-table-border: #263a35;
    --app-table-head-bg: #0b1211;
    --app-table-head-border: #1d302b;
    --app-table-head-text: #f7faf9;
    --app-table-stripe: rgba(45, 212, 191, .07);
    --app-table-hover: rgba(226, 201, 103, .12);
    --app-alert-success-bg: #122d25;
    --app-alert-success-border: #245c4c;
    --app-alert-danger-bg: #331918;
    --app-alert-danger-border: #74312f;
    --app-alert-warning-bg: #342d15;
    --app-alert-warning-border: #75652a;
    --app-alert-info-bg: #122835;
    --app-alert-info-border: #2f5d73;
    --app-nav-bg: linear-gradient(90deg, #050908 0%, #0f201d 68%, #20291f 100%);
    --app-footer-bg: linear-gradient(135deg, #121d1b, #182824 72%, #1f281f);
    --app-footer-chip-bg: rgba(255, 255, 255, .06);
    --app-login-screen-bg: linear-gradient(145deg, #08100f 0%, #10201d 60%, #171f1b 100%);
    --app-login-header-bg: linear-gradient(135deg, #060a09 0%, #10201d 76%, #242b21 100%);
    --app-shadow: 0 18px 44px rgba(0, 0, 0, .36);
    --app-shadow-soft: 0 10px 26px rgba(0, 0, 0, .28);
    color-scheme: dark;
}

html {
    background: var(--app-bg);
    overflow-x: hidden;
}

*,
*::before,
*::after {
    box-sizing: border-box;
}

body.app-shell {
    background: var(--app-body-bg);
    color: var(--app-ink);
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    overflow-x: hidden;
}

body.app-shell,
body.login-screen {
    font-family: "Segoe UI", Arial, sans-serif;
    letter-spacing: 0;
}

.app-navbar {
    background: var(--app-nav-bg) !important;
    border-bottom: 1px solid rgba(201, 162, 39, .32);
    box-shadow: 0 12px 30px rgba(10, 20, 18, .2);
    min-height: 66px;
    overflow: visible;
    padding-bottom: .55rem !important;
    padding-top: .55rem !important;
    position: sticky;
    top: 0;
    z-index: 1030;
}

.app-navbar .navbar-brand {
    align-items: center;
    border-right: 1px solid rgba(255, 255, 255, .14);
    display: inline-flex;
    flex: 0 0 auto;
    gap: .55rem;
    letter-spacing: 0;
    margin-right: .8rem;
    max-width: 215px;
    min-width: 0;
    padding: .15rem .85rem .15rem 0;
}

.app-navbar .navbar-brand img {
    border: 1px solid rgba(201, 162, 39, .34);
    box-shadow: 0 8px 20px rgba(0, 0, 0, .18);
    flex: 0 0 auto;
    height: 40px;
    width: 40px;
}

.app-navbar .brand-text {
    color: #f7faf9;
    font-weight: 700;
    line-height: 1.05;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.app-navbar .navbar-collapse {
    flex: 1 1 auto;
    min-width: 0;
}

.app-nav-menu {
    align-items: center;
    flex-wrap: wrap;
    gap: .28rem;
    justify-content: flex-end;
    min-width: 0;
    row-gap: .32rem;
}

.app-nav-menu .nav-item {
    align-items: center;
    display: flex;
    flex: 0 0 auto;
}

.app-navbar .nav-link {
    align-items: center;
    border-radius: 6px;
    color: rgba(255, 255, 255, .8) !important;
    display: inline-flex !important;
    font-size: .9rem;
    font-weight: 650;
    gap: .28rem;
    line-height: 1.1;
    margin: 0 .06rem;
    min-height: 38px;
    padding-left: .58rem !important;
    padding-right: .58rem !important;
    text-align: left;
    white-space: nowrap;
}

.app-navbar .nav-link b {
    font-weight: 750;
}

.app-navbar .dropdown-toggle::after {
    margin-left: .22rem;
    vertical-align: middle;
}

.app-navbar .nav-link:hover,
.app-navbar .nav-link:focus,
.app-navbar .nav-link.show {
    background: rgba(255, 255, 255, .09);
    color: #ffffff !important;
}

.app-navbar .app-nav-menu > .nav-item > .nav-link i {
    display: none !important;
}

.app-navbar .navbar-toggler {
    border-color: rgba(255, 255, 255, .2);
    border-radius: 8px;
}

.app-nav-action-start {
    border-left: 1px solid rgba(255, 255, 255, .14);
    margin-left: .35rem;
    padding-left: .5rem;
}

.app-nav-action .theme-toggle,
.app-nav-action .app-logout-btn {
    margin-left: 0 !important;
}

.app-navbar .app-logout-btn {
    align-items: center;
    background: var(--app-primary-dark) !important;
    border-color: rgba(255, 255, 255, .12) !important;
    color: #ffffff !important;
    display: inline-flex;
    gap: .45rem;
    justify-content: center;
    min-height: 38px;
    padding: .45rem .75rem;
}

.app-navbar .app-logout-btn:hover,
.app-navbar .app-logout-btn:focus {
    background: var(--app-primary) !important;
    border-color: rgba(226, 201, 103, .48) !important;
    color: #ffffff !important;
}

.app-content {
    flex: 1 0 auto;
    max-width: 1480px;
    padding-bottom: 2rem;
    padding-left: clamp(.85rem, 2vw, 1.25rem);
    padding-right: clamp(.85rem, 2vw, 1.25rem);
    width: 100%;
}

body.app-shell img,
body.app-shell svg,
body.app-shell video,
body.app-shell canvas {
    height: auto;
    max-width: 100%;
}

body.app-shell .container,
body.app-shell .container-fluid {
    max-width: 100%;
}

body.app-shell .row {
    min-width: 0;
}

body.app-shell .row > [class*="col-"] {
    min-width: 0;
}

body.app-shell h1,
body.app-shell h2,
body.app-shell h3,
body.app-shell h4,
body.app-shell h5,
body.app-shell h6 {
    color: var(--app-ink);
    font-weight: 700;
    letter-spacing: 0;
}

body.app-shell h3.text-center,
body.app-shell h4 {
    margin-bottom: 1rem;
}

body.app-shell hr {
    border-color: rgba(20, 33, 31, .12);
    opacity: 1;
}

.card,
.modal-content,
.dropdown-menu,
.list-group,
.invoice-box,
#printArea,
.filter-box {
    border: 1px solid var(--app-line) !important;
    border-radius: 8px !important;
    box-shadow: var(--app-shadow-soft);
}

.card {
    background: var(--app-surface);
}

.bg-primary {
    background-color: var(--app-primary) !important;
}

.bg-success {
    background-color: var(--app-success) !important;
}

.bg-info {
    background-color: var(--app-info) !important;
}

.bg-secondary {
    background-color: #64748b !important;
}

.bg-warning {
    background-color: var(--app-accent) !important;
}

.bg-danger {
    background-color: var(--app-danger) !important;
}

.bg-dark {
    background-color: var(--app-dark) !important;
}

.text-white {
    color: #ffffff !important;
}

.text-dark {
    color: #17211f !important;
}

.card.bg-primary,
.card.bg-success,
.card.bg-info,
.card.bg-warning,
.card.bg-danger,
.card.bg-dark,
.stat-card.bg-primary,
.stat-card.bg-success,
.stat-card.bg-info,
.stat-card.bg-warning,
.stat-card.bg-danger,
.stat-card.bg-dark {
    border-color: transparent !important;
    box-shadow: var(--app-shadow);
}

.card.bg-primary {
    background: linear-gradient(135deg, #0f766e, #0b534f) !important;
}

.card.bg-success,
.stat-card.bg-success {
    background: linear-gradient(135deg, #15803d, #0f5f33) !important;
}

.card.bg-info,
.stat-card.bg-info {
    background: linear-gradient(135deg, #0f6c81, #0d5264) !important;
}

.card.bg-danger,
.stat-card.bg-danger {
    background: linear-gradient(135deg, #b42318, #8f1b13) !important;
}

.card.bg-dark,
.stat-card.bg-dark {
    background: linear-gradient(135deg, #17211f, #283531) !important;
}

.card.bg-warning,
.stat-card.bg-warning {
    background: linear-gradient(135deg, #d5b13a, #b89019) !important;
    color: #1e211d !important;
}

.card.bg-secondary,
.stat-card.bg-secondary {
    background: linear-gradient(135deg, #64748b, #475569) !important;
}

.card.text-white h1,
.card.text-white h2,
.card.text-white h3,
.card.text-white h4,
.card.text-white h5,
.card.text-white h6,
.card.bg-primary h1,
.card.bg-primary h2,
.card.bg-primary h3,
.card.bg-primary h4,
.card.bg-primary h5,
.card.bg-primary h6,
.card.bg-success h1,
.card.bg-success h2,
.card.bg-success h3,
.card.bg-success h4,
.card.bg-success h5,
.card.bg-success h6,
.card.bg-info h1,
.card.bg-info h2,
.card.bg-info h3,
.card.bg-info h4,
.card.bg-info h5,
.card.bg-info h6,
.card.bg-danger h1,
.card.bg-danger h2,
.card.bg-danger h3,
.card.bg-danger h4,
.card.bg-danger h5,
.card.bg-danger h6,
.card.bg-dark h1,
.card.bg-dark h2,
.card.bg-dark h3,
.card.bg-dark h4,
.card.bg-dark h5,
.card.bg-dark h6,
.card.bg-secondary h1,
.card.bg-secondary h2,
.card.bg-secondary h3,
.card.bg-secondary h4,
.card.bg-secondary h5,
.card.bg-secondary h6 {
    color: #ffffff !important;
}

.card.bg-warning h1,
.card.bg-warning h2,
.card.bg-warning h3,
.card.bg-warning h4,
.card.bg-warning h5,
.card.bg-warning h6 {
    color: #1e211d !important;
}

.card-header,
.modal-header {
    background: linear-gradient(180deg, var(--app-surface) 0%, var(--app-surface-soft) 100%);
    border-bottom: 1px solid var(--app-line);
    color: var(--app-ink);
    font-weight: 700;
}

.card-header.bg-primary,
.card-header.bg-success,
.card-header.bg-info,
.card-header.bg-danger,
.card-header.bg-dark,
.modal-header.bg-primary,
.modal-header.bg-success,
.modal-header.bg-info,
.modal-header.bg-danger,
.modal-header.bg-dark {
    border-bottom-color: rgba(255, 255, 255, .16);
    color: #ffffff !important;
}

.card-header.bg-primary,
.modal-header.bg-primary {
    background: var(--app-primary) !important;
}

.card-header.bg-success,
.modal-header.bg-success {
    background: var(--app-success) !important;
}

.card-header.bg-info,
.modal-header.bg-info {
    background: var(--app-info) !important;
}

.card-header.bg-danger,
.modal-header.bg-danger {
    background: var(--app-danger) !important;
}

.card-header.bg-dark,
.modal-header.bg-dark {
    background: var(--app-dark) !important;
}

.card-header.bg-warning,
.modal-header.bg-warning {
    background: var(--app-accent) !important;
    border-bottom-color: rgba(30, 33, 29, .16);
    color: #1e211d !important;
}

.card-footer,
.modal-footer {
    background: var(--app-surface-soft);
    border-top: 1px solid var(--app-line);
}

.dropdown-menu {
    background: var(--app-surface);
    padding: .45rem;
}

.dropdown-item {
    border-radius: 6px;
    color: var(--app-ink);
}

.list-group-item {
    background: var(--app-surface);
    border-color: var(--app-line);
    color: var(--app-ink);
}

.dropdown-menu .dropdown-item:hover,
.dropdown-item:focus {
    background: var(--app-hover) !important;
    color: var(--app-primary-dark);
    font-weight: 600;
}

.btn {
    border-radius: 7px !important;
    font-weight: 650;
    letter-spacing: 0;
}

.theme-toggle {
    align-items: center;
    background: rgba(255, 255, 255, .09) !important;
    border: 1px solid rgba(255, 255, 255, .18) !important;
    color: #ffffff !important;
    display: inline-flex;
    gap: .45rem;
    justify-content: center;
    min-height: 38px;
    padding: .42rem .72rem;
}

.theme-toggle:hover,
.theme-toggle:focus {
    background: rgba(255, 255, 255, .16) !important;
    border-color: rgba(226, 201, 103, .55) !important;
    color: #ffffff !important;
}

.theme-toggle i {
    color: currentColor;
    min-width: 1rem;
}

.theme-toggle-text {
    font-size: .88rem;
    line-height: 1;
}

.me-2 {
    margin-right: .5rem !important;
}

.btn-primary,
.btn-success,
.btn-info,
.btn-custom {
    background: var(--app-primary) !important;
    border-color: var(--app-primary) !important;
    color: #ffffff !important;
}

.btn-primary:hover,
.btn-success:hover,
.btn-info:hover,
.btn-custom:hover,
.btn-primary:focus,
.btn-success:focus,
.btn-info:focus,
.btn-custom:focus {
    background: var(--app-primary-dark) !important;
    border-color: var(--app-primary-dark) !important;
    color: #ffffff !important;
}

.btn-warning {
    background: var(--app-accent) !important;
    border-color: var(--app-accent) !important;
    color: #1e211d !important;
}

.btn-danger {
    background: var(--app-danger) !important;
    border-color: var(--app-danger) !important;
}

.btn-outline-primary,
.btn-outline-success {
    border-color: var(--app-primary) !important;
    color: var(--app-primary) !important;
}

.btn-outline-primary:hover,
.btn-outline-success:hover {
    background: var(--app-primary) !important;
    color: #ffffff !important;
}

.form-control,
.form-select,
select,
textarea,
input[type="text"],
input[type="number"],
input[type="email"],
input[type="password"],
input[type="date"],
input[type="time"],
input[type="file"] {
    background-color: var(--app-input-bg) !important;
    border-color: var(--app-line);
    border-radius: 7px !important;
    color: var(--app-ink);
}

.form-control::placeholder,
input::placeholder,
textarea::placeholder {
    color: var(--app-muted);
    opacity: .78;
}

.form-control:focus,
.form-select:focus,
select:focus,
textarea:focus,
input:focus {
    border-color: var(--app-primary);
    box-shadow: 0 0 0 .2rem rgba(15, 118, 110, .16) !important;
}

label,
.form-label {
    color: var(--app-ink);
    font-weight: 650;
}

.input-group-text {
    background: var(--app-input-addon-bg);
    border-color: var(--app-line);
    color: var(--app-primary-dark);
}

.table {
    background: var(--app-surface);
    border-color: var(--app-line);
    color: var(--app-ink);
    --bs-table-bg: var(--app-surface);
    --bs-table-color: var(--app-ink);
    --bs-table-border-color: var(--app-table-border);
}

.table > :not(caption) > * > * {
    border-bottom-color: var(--app-table-border);
}

.table td,
.table th {
    background-color: inherit;
    border-color: var(--app-table-border);
    color: var(--app-ink);
}

.table thead th,
.table-dark th,
thead.table-dark th {
    background: var(--app-table-head-bg) !important;
    border-color: var(--app-table-head-border) !important;
    color: var(--app-table-head-text) !important;
    font-weight: 700;
}

.table-striped > tbody > tr:nth-of-type(odd) > * {
    --bs-table-accent-bg: var(--app-table-stripe);
}

.table-hover > tbody > tr:hover > * {
    --bs-table-accent-bg: var(--app-table-hover);
}

.badge {
    border-radius: 6px;
    font-weight: 700;
    letter-spacing: 0;
}

.alert {
    border-radius: 8px;
    border-width: 1px;
}

.alert-success {
    background: var(--app-alert-success-bg);
    border-color: var(--app-alert-success-border);
    color: var(--app-ink);
}

.alert-danger {
    background: var(--app-alert-danger-bg);
    border-color: var(--app-alert-danger-border);
    color: var(--app-ink);
}

.alert-warning {
    background: var(--app-alert-warning-bg);
    border-color: var(--app-alert-warning-border);
    color: var(--app-ink);
}

.alert-info {
    background: var(--app-alert-info-bg);
    border-color: var(--app-alert-info-border);
    color: var(--app-ink);
}

.main-footer,
footer.main-footer {
    background: var(--app-footer-bg) !important;
    border-top: 1px solid var(--app-line) !important;
    color: var(--app-muted) !important;
    flex-shrink: 0;
    margin-top: auto;
    overflow: hidden;
    padding: 0;
    box-shadow: var(--app-shadow-soft);
    text-align: left;
    width: 100%;
}

.main-footer strong,
footer.main-footer strong {
    color: var(--app-ink) !important;
}

.app-footer-inner {
    align-items: stretch;
    display: grid;
    gap: .9rem;
    grid-template-columns: minmax(240px, 1.1fr) minmax(280px, 1.35fr) minmax(220px, .8fr);
    margin: 0 auto;
    max-width: 1480px;
    padding: 1.05rem 1.25rem;
}

.app-footer-brand {
    align-items: center;
    display: flex;
    gap: .75rem;
    min-width: 0;
}

.app-footer-logo {
    background: #ffffff;
    border: 1px solid rgba(201, 162, 39, .28);
    border-radius: 8px;
    box-shadow: 0 8px 18px rgba(0, 0, 0, .12);
    flex: 0 0 auto;
    height: 44px;
    object-fit: contain;
    padding: .25rem;
    width: 44px;
}

.app-footer-brand-text {
    min-width: 0;
}

.app-footer-name {
    color: var(--app-ink);
    font-size: 1rem;
    font-weight: 800;
    line-height: 1.15;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.app-footer-tagline {
    color: var(--app-muted);
    font-size: .82rem;
    line-height: 1.25;
    margin-top: .18rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.app-footer-system {
    align-items: center;
    color: var(--app-primary-dark);
    display: inline-flex;
    font-size: .78rem;
    font-weight: 800;
    gap: .32rem;
    line-height: 1.1;
    margin-top: .38rem;
    max-width: 100%;
}

.app-footer-system .svg-icon-host {
    height: 1em;
    margin-right: 0;
    width: 1em;
}

.app-footer-contact {
    align-items: center;
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
    justify-content: center;
    min-width: 0;
}

.app-footer-contact-link {
    align-items: center;
    background: var(--app-footer-chip-bg);
    border: 1px solid var(--app-line);
    border-radius: 8px;
    color: var(--app-muted);
    display: inline-flex;
    font-size: .84rem;
    gap: .38rem;
    line-height: 1.15;
    max-width: min(100%, 300px);
    min-height: 36px;
    overflow: hidden;
    padding: .45rem .62rem;
    text-overflow: ellipsis;
    text-decoration: none;
    transition: background-color .16s ease, border-color .16s ease, color .16s ease, transform .16s ease;
    white-space: nowrap;
}

.app-footer-contact-link:hover,
.app-footer-contact-link:focus-visible {
    background: var(--app-hover);
    border-color: rgba(15, 118, 110, .28);
    color: var(--app-ink);
    outline: 2px solid rgba(201, 162, 39, .34);
    outline-offset: 2px;
    transform: translateY(-1px);
}

.app-footer-contact-link i {
    color: var(--app-primary-dark);
    flex: 0 0 auto;
}

.app-footer-contact-link .svg-icon-host {
    height: 1em;
    margin-right: 0;
    width: 1em;
}

.app-footer-copy {
    align-content: center;
    color: var(--app-muted);
    display: flex;
    flex-direction: column;
    font-size: .84rem;
    gap: .3rem;
    justify-content: center;
    line-height: 1.25;
    text-align: right;
}

.app-footer-copy span:first-child {
    color: var(--app-ink);
    font-weight: 700;
}

.app-footer-app {
    color: var(--app-muted);
    font-size: .8rem;
    font-weight: 700;
}

body.app-shell table {
    max-width: 100%;
}

body.app-shell pre,
body.app-shell code {
    overflow-wrap: anywhere;
    white-space: pre-wrap;
}

body.app-shell .btn-toolbar,
body.app-shell .btn-group,
body.app-shell .pagination,
body.app-shell .nav-tabs {
    flex-wrap: wrap;
    gap: .35rem;
}

body.app-shell .nav-tabs {
    border-bottom-color: var(--app-line);
}

body.app-shell .nav-tabs .nav-link {
    border-radius: 7px;
    color: var(--app-ink);
    white-space: nowrap;
}

body.app-shell .pagination {
    justify-content: center;
}

body.app-shell .page-link {
    background: var(--app-surface);
    border-color: var(--app-line);
    color: var(--app-ink);
}

body.app-shell .page-item.active .page-link {
    background: var(--app-primary);
    border-color: var(--app-primary);
    color: #ffffff;
}

body.app-shell .card-module h6,
body.app-shell .module-card h6,
body.app-shell .dashboard-card h6 {
    line-height: 1.25;
    margin-bottom: 0;
    overflow-wrap: anywhere;
    white-space: normal;
}

body.app-shell .flex-center {
    max-width: 100%;
}

body.app-shell .invoice-box,
body.app-shell .receipt-box,
body.app-shell .quotation-box,
body.app-shell .box,
body.app-shell .content-box,
body.app-shell .filter-box,
body.app-shell #printArea {
    max-width: 100%;
}

body.app-shell .modal-dialog {
    max-width: calc(100% - 1rem);
}

body.app-shell input,
body.app-shell select,
body.app-shell textarea,
body.app-shell button {
    max-width: 100%;
}

.svg-icon-host {
    align-items: center;
    display: inline-flex;
    flex: 0 0 auto;
    font-style: normal;
    height: 1em;
    justify-content: center;
    line-height: 1;
    vertical-align: -.125em;
    width: 1em;
}

.svg-icon-host::before {
    content: none !important;
    display: none !important;
}

.svg-icon-host .svg-icon {
    color: inherit;
    display: block;
    flex: 0 0 auto;
    height: 1em;
    pointer-events: none;
    stroke: currentColor;
    width: 1em;
}

.svg-icon-host.fa-lg .svg-icon {
    height: 1.25em;
    width: 1.25em;
}

.btn .svg-icon-host,
.nav-link .svg-icon-host,
.dropdown-item .svg-icon-host,
label .svg-icon-host,
.welcome-msg .svg-icon-host,
h1 .svg-icon-host,
h2 .svg-icon-host,
h3 .svg-icon-host,
h4 .svg-icon-host,
h5 .svg-icon-host,
h6 .svg-icon-host {
    margin-right: .28rem;
}

.btn .svg-icon-host:only-child,
.nav-link .svg-icon-host:only-child,
.dropdown-item .svg-icon-host:only-child {
    margin-right: 0;
}

.icon-box .svg-icon-host {
    height: 1.2em;
    margin-right: 0;
    width: 1.2em;
}

.input-group-text .svg-icon-host,
.badge .svg-icon-host {
    margin-right: 0;
}

.welcome-msg,
.page-title,
.dashboard-title {
    color: var(--app-ink);
    font-weight: 800;
}

body.app-shell .welcome-msg,
body.app-shell .tips-box {
    color: var(--app-ink) !important;
}

body.app-shell .welcome-msg {
    align-items: center !important;
    background: linear-gradient(135deg, rgba(255, 255, 255, .96), rgba(238, 248, 245, .96)) !important;
    border: 1px solid var(--app-line) !important;
    border-left: 4px solid var(--app-primary) !important;
    border-radius: 8px !important;
    box-shadow: var(--app-shadow-soft) !important;
    color: var(--app-muted) !important;
    display: inline-flex !important;
    font-size: .98rem !important;
    font-weight: 650 !important;
    gap: .65rem !important;
    line-height: 1.2 !important;
    margin: 0 0 1.15rem !important;
    max-width: 100% !important;
    min-height: 52px !important;
    padding: .55rem .85rem .55rem .65rem !important;
    vertical-align: top !important;
}

:root[data-theme="dark"] body.app-shell .welcome-msg {
    background: linear-gradient(135deg, rgba(21, 33, 31, .96), rgba(24, 40, 36, .96)) !important;
}

body.app-shell .welcome-msg > i:first-child,
body.app-shell .welcome-msg > .svg-icon-host:first-child {
    align-items: center !important;
    background: var(--app-primary) !important;
    border-radius: 8px !important;
    box-shadow: 0 8px 18px rgba(15, 118, 110, .2) !important;
    color: #ffffff !important;
    display: inline-flex !important;
    flex: 0 0 36px !important;
    font-size: 1rem !important;
    height: 36px !important;
    justify-content: center !important;
    margin-right: 0 !important;
    width: 36px !important;
}

body.app-shell .welcome-msg > i:first-child::before,
body.app-shell .welcome-msg > .svg-icon-host:first-child::before {
    margin: 0 !important;
}

body.app-shell .welcome-msg strong {
    color: var(--app-ink) !important;
    font-weight: 850 !important;
    overflow-wrap: anywhere;
}

body.app-shell .tips-box {
    background: linear-gradient(180deg, var(--app-surface), var(--app-surface-soft));
    border: 1px solid var(--app-line);
    border-left: 4px solid var(--app-accent);
    border-radius: 8px;
    box-shadow: var(--app-shadow-soft);
    display: grid;
    gap: .75rem;
    margin: 1.25rem auto 0;
    max-width: 980px;
    padding: 1rem 1.1rem;
    text-align: left !important;
}

body.app-shell .tips-box h4 {
    align-items: center;
    color: var(--app-ink);
    display: flex;
    font-size: 1rem;
    font-weight: 800;
    gap: .5rem;
    line-height: 1.2;
    margin: 0;
}

body.app-shell .tips-box h4 i {
    align-items: center;
    background: var(--app-accent-soft);
    border: 1px solid rgba(201, 162, 39, .34);
    border-radius: 8px;
    color: var(--app-primary-dark);
    display: inline-flex;
    flex: 0 0 auto;
    height: 34px;
    justify-content: center;
    width: 34px;
}

body.app-shell .tips-box h4 .svg-icon-host {
    height: 1.05rem;
    margin-right: 0;
    width: 1.05rem;
}

body.app-shell .tips-box ul {
    display: grid;
    gap: .55rem;
    list-style: none;
    margin: 0;
    padding: 0;
}

body.app-shell .tips-box li {
    align-items: flex-start;
    background: color-mix(in srgb, var(--app-accent-soft) 34%, var(--app-surface));
    border: 1px solid var(--app-line);
    border-radius: 8px;
    color: var(--app-muted);
    display: flex;
    font-size: .92rem;
    line-height: 1.35;
    padding: .72rem .8rem;
}

body.app-shell .tips-box li::before {
    background: var(--app-success);
    border-radius: 999px;
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--app-success) 14%, transparent);
    content: "";
    flex: 0 0 auto;
    height: .5rem;
    margin: .42rem .68rem 0 0;
    width: .5rem;
}

body.app-shell .tips-box strong {
    color: var(--app-ink);
    font-weight: 800;
}

.text-muted {
    color: var(--app-muted) !important;
}

.card-module,
.module-card,
.dashboard-card {
    background: var(--app-surface) !important;
    border-color: var(--app-line) !important;
    color: var(--app-ink) !important;
}

.dashboard-module-grid {
    justify-content: center;
    text-align: center;
}

.dashboard-module-grid > [class*="col-"] {
    display: flex;
}

.dashboard-module-grid .card-module {
    width: 100%;
}

body.app-shell .report-card {
    background: linear-gradient(180deg, var(--app-surface), var(--app-surface-soft)) !important;
    border: 1px solid var(--app-line) !important;
    border-radius: 8px !important;
    box-shadow: var(--app-shadow-soft);
}

body.app-report-page .app-report-banner {
    align-items: center;
    background: linear-gradient(135deg, rgba(255, 255, 255, .98), rgba(248, 251, 250, .96) 58%, rgba(255, 247, 218, .72));
    border: 1px solid var(--app-line);
    border-radius: 8px;
    box-shadow: var(--app-shadow-soft);
    display: flex;
    gap: 1rem;
    justify-content: space-between;
    margin-bottom: 1rem;
    min-height: 78px;
    padding: .85rem 1rem;
}

:root[data-theme="dark"] body.app-report-page .app-report-banner {
    background: linear-gradient(135deg, rgba(21, 33, 31, .98), rgba(26, 41, 38, .98) 58%, rgba(58, 51, 23, .72));
}

body.app-report-page .app-report-brand {
    align-items: center;
    display: flex;
    gap: .85rem;
    min-width: 0;
}

body.app-report-page .app-report-brand img {
    background: #ffffff;
    border: 1px solid rgba(201, 162, 39, .42);
    border-radius: 8px;
    box-shadow: 0 8px 18px rgba(20, 33, 31, .09);
    flex: 0 0 auto;
    height: 48px;
    object-fit: contain;
    padding: .2rem;
    width: 48px;
}

body.app-report-page .app-report-brand span {
    color: var(--app-muted);
    display: block;
    font-size: .78rem;
    font-weight: 800;
    letter-spacing: 0;
    line-height: 1.1;
    text-transform: uppercase;
}

body.app-report-page .app-report-brand strong {
    color: var(--app-ink);
    display: block;
    font-size: 1.08rem;
    font-weight: 900;
    line-height: 1.15;
    overflow-wrap: anywhere;
}

body.app-report-page .app-report-generated {
    background: var(--app-footer-chip-bg);
    border: 1px solid var(--app-line);
    border-radius: 8px;
    color: var(--app-muted);
    flex: 0 0 auto;
    font-size: .86rem;
    font-weight: 750;
    padding: .45rem .65rem;
    white-space: nowrap;
}

body.app-shell .report-card .card-body {
    padding: 1rem !important;
}

body.app-shell .report-card h4,
body.app-shell .report-card h5,
body.app-shell .report-card h6 {
    color: var(--app-muted);
    font-size: .86rem;
    font-weight: 800;
    letter-spacing: 0;
    margin-bottom: .35rem;
    text-transform: uppercase;
}

body.app-shell .report-card h3,
body.app-shell .report-card h4.text-primary,
body.app-shell .report-card h4.text-dark,
body.app-shell .report-card h4.text-success,
body.app-shell .report-card h4.text-warning,
body.app-shell .report-card h4.text-info,
body.app-shell .report-card h4.text-danger,
body.app-shell .report-card h4.text-secondary {
    color: var(--app-ink) !important;
    font-size: 1.35rem;
    font-weight: 900;
    line-height: 1.1;
}

body.app-shell .app-content h3.text-center,
body.app-shell .app-content h4.text-center,
body.app-shell .app-content .text-center > h3,
body.app-shell .app-content .text-center > h4 {
    color: var(--app-ink);
    font-weight: 900;
    letter-spacing: 0;
}

body.app-shell .app-content .table-bordered,
body.app-shell .app-content .table-striped {
    border-color: var(--app-line);
}

body.app-shell .app-content .table thead th,
body.app-shell .app-content table thead th {
    background: var(--app-table-head-bg) !important;
    border-color: var(--app-table-head-border) !important;
    color: var(--app-table-head-text) !important;
}

.card:not(.bg-primary):not(.bg-success):not(.bg-info):not(.bg-warning):not(.bg-danger):not(.bg-dark),
.box,
.content-box,
.invoice-box,
.receipt-box,
.quotation-box,
.filter-box,
#printArea,
body.app-shell table,
body.app-shell .app-content > .container:not(.login-container) {
    background: var(--app-surface) !important;
    border-color: var(--app-line) !important;
    color: var(--app-ink) !important;
}

body.app-shell table td,
body.app-shell table th {
    border-color: var(--app-table-border);
    color: var(--app-ink);
}

.card:not(.bg-primary):not(.bg-success):not(.bg-info):not(.bg-warning):not(.bg-danger):not(.bg-dark) .card-body,
.box *,
.content-box *,
.invoice-box *,
.receipt-box *,
.quotation-box *,
.filter-box *,
#printArea *,
body.app-shell .app-content > .container:not(.login-container) * {
    border-color: var(--app-line);
}

.card-module .card-body,
.module-card .card-body,
.dashboard-card .card-body {
    background: transparent !important;
}

.card-module a,
.module-card a,
.dashboard-card a,
.card-module h6,
.module-card h6,
.dashboard-card h6 {
    color: var(--app-ink) !important;
}

.card-module:hover,
.module-card:hover,
.dashboard-card:hover {
    box-shadow: var(--app-shadow) !important;
}

.logo-box img,
.brand-logo,
.receipt-logo,
.invoice-logo {
    object-fit: contain;
}

body.login-screen {
    align-items: center;
    background: var(--app-login-screen-bg);
    color: var(--app-ink);
    display: flex;
    justify-content: center;
    min-height: 100vh;
    padding: 18px;
}

.login-container {
    max-width: 430px !important;
    width: 100%;
}

.login-card {
    background: var(--app-surface);
    border: 1px solid var(--app-line) !important;
    border-radius: 8px !important;
    box-shadow: var(--app-shadow);
    overflow: hidden;
}

.login-card-header {
    background: var(--app-login-header-bg) !important;
    border-bottom: 1px solid rgba(201, 162, 39, .28);
    padding: 1.35rem 1.25rem 1.25rem;
}

.login-card .card-body {
    padding: 1.35rem;
}

.login-card label {
    color: var(--app-ink);
    font-size: .92rem;
}

.login-card .form-control {
    height: 44px;
}

.login-submit {
    background: var(--app-primary) !important;
    border-color: var(--app-primary) !important;
    color: #ffffff !important;
    height: 44px;
}

.login-submit:hover,
.login-submit:focus {
    background: var(--app-primary-dark) !important;
    border-color: var(--app-primary-dark) !important;
}

.login-theme-toggle {
    background: var(--app-surface) !important;
    border-color: var(--app-line) !important;
    box-shadow: var(--app-shadow-soft);
    color: var(--app-ink) !important;
    position: fixed;
    right: 18px;
    top: 18px;
    z-index: 10;
}

.login-theme-toggle:hover,
.login-theme-toggle:focus {
    background: var(--app-surface-soft) !important;
    color: var(--app-ink) !important;
}

.brand-name {
    color: #ffffff;
    font-weight: 800;
    line-height: 1.2;
}

.brand-name i {
    color: #e2c967;
}

.brand-tagline {
    color: rgba(255, 255, 255, .76);
    font-size: .9rem;
    margin-top: .25rem;
}

.logo-box {
    margin-bottom: .8rem;
    text-align: center;
}

.logo-box img {
    background: #ffffff;
    border: 1px solid rgba(201, 162, 39, .32);
    border-radius: 8px;
    box-shadow: 0 14px 30px rgba(0, 0, 0, .18);
    max-height: 78px;
    max-width: 210px;
    padding: .4rem;
}

@media (min-width: 768px) and (max-width: 1199.98px) {
    .app-content {
        padding-left: 1rem;
        padding-right: 1rem;
    }

    body.app-shell .flex-center {
        gap: 1rem;
    }

    body.app-shell .card-module,
    body.app-shell .module-card,
    body.app-shell .dashboard-card {
        width: min(190px, calc(25vw - 1rem)) !important;
    }

    body.app-shell .invoice-box,
    body.app-shell .receipt-box,
    body.app-shell .quotation-box,
    body.app-shell .box,
    body.app-shell .content-box,
    body.app-shell .filter-box,
    body.app-shell #printArea {
        width: 100%;
    }

    body.app-shell .modal-lg,
    body.app-shell .modal-xl {
        max-width: calc(100% - 2rem);
    }
}

@media (max-width: 767.98px) {
    body.app-shell {
        font-size: 15px;
    }

    .app-content {
        margin-top: 1rem !important;
        padding-left: .75rem !important;
        padding-right: .75rem !important;
    }

    body.app-shell h1,
    body.app-shell h2,
    body.app-shell h3 {
        font-size: 1.35rem;
        line-height: 1.22;
    }

    body.app-shell h4,
    body.app-shell h5 {
        font-size: 1.05rem;
        line-height: 1.25;
    }

    body.app-shell .row {
        --bs-gutter-x: .85rem;
        --bs-gutter-y: .85rem;
    }

    .card,
    .modal-content,
    .dropdown-menu,
    .list-group,
    .invoice-box,
    #printArea,
    .filter-box {
        box-shadow: 0 8px 22px rgba(20, 33, 31, .06);
    }

    .card-body,
    .modal-body {
        padding: 1rem;
    }

    body.app-shell form .row > [class*="col-"],
    body.app-shell .filter-row > [class*="col-"],
    body.app-shell .search-row > [class*="col-"] {
        flex: 0 0 100%;
        max-width: 100%;
    }

    body.app-shell form .btn,
    body.app-shell .no-print .btn,
    body.app-shell .btn-custom {
        width: 100%;
    }

    body.app-shell .btn-toolbar,
    body.app-shell .btn-group {
        align-items: stretch;
        display: flex;
        width: 100%;
    }

    body.app-shell .btn-group > .btn,
    body.app-shell .btn-toolbar .btn {
        border-radius: 7px !important;
        flex: 1 1 auto;
    }

    .app-footer-inner {
        grid-template-columns: 1fr;
        justify-items: center;
        padding: 1rem;
        text-align: center;
    }

    .app-footer-brand {
        justify-content: center;
        width: 100%;
    }

    .app-footer-brand-text {
        max-width: calc(100% - 58px);
    }

    .app-footer-contact {
        width: 100%;
    }

    .app-footer-contact-link {
        justify-content: center;
        max-width: 100%;
        width: 100%;
    }

    .app-footer-copy {
        text-align: center;
    }

    body.app-shell .tips-box {
        margin-top: 1rem;
        padding: .85rem;
        width: min(100%, 680px);
    }

    body.app-shell .tips-box h4 {
        font-size: .96rem;
    }

    body.app-shell .tips-box li {
        font-size: .88rem;
        padding: .68rem .72rem;
    }

    body.app-shell .table:not(.no-mobile-scroll),
    body.app-shell table:not(.no-mobile-scroll) {
        border-radius: 8px;
        display: block;
        max-width: 100%;
        overflow-x: auto;
        box-shadow: none;
        white-space: nowrap;
        width: 100%;
        -webkit-overflow-scrolling: touch;
    }

    body.app-shell .table:not(.no-mobile-scroll) th,
    body.app-shell .table:not(.no-mobile-scroll) td,
    body.app-shell table:not(.no-mobile-scroll) th,
    body.app-shell table:not(.no-mobile-scroll) td {
        min-width: max-content;
    }

    body.app-shell .nav-tabs {
        flex-wrap: nowrap;
        justify-content: flex-start;
        overflow-x: auto;
        padding-bottom: .25rem;
        -webkit-overflow-scrolling: touch;
    }

    body.app-shell .flex-center {
        display: grid !important;
        gap: .75rem;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        justify-content: stretch;
    }

    body.app-shell .card-module,
    body.app-shell .module-card,
    body.app-shell .dashboard-card {
        display: block !important;
        margin: 0 !important;
        min-width: 0;
        width: 100% !important;
    }

    body.app-shell .card-module .card-body,
    body.app-shell .module-card .card-body,
    body.app-shell .dashboard-card .card-body {
        min-height: 118px;
    }

    body.app-shell .modal-dialog {
        margin: .5rem auto;
        width: calc(100% - 1rem);
    }

    body.app-shell .modal-content {
        max-height: calc(100vh - 1rem);
        overflow: auto;
    }

    .btn {
        min-height: 40px;
    }
}

@media (max-width: 480px) {
    .app-content {
        padding-left: .65rem !important;
        padding-right: .65rem !important;
    }

    body.app-shell .flex-center {
        grid-template-columns: 1fr;
    }

    body.app-shell .btn,
    body.app-shell .form-control,
    body.app-shell .form-select,
    body.app-shell select,
    body.app-shell input,
    body.app-shell textarea {
        font-size: .93rem;
    }

    body.app-shell .table:not(.no-mobile-scroll),
    body.app-shell table:not(.no-mobile-scroll) {
        font-size: .86rem;
    }

    body.login-screen {
        padding: 12px;
    }

    .login-card-header {
        padding: 1rem .9rem;
    }

    .login-card .card-body {
        padding: 1rem;
    }

    .logo-box img {
        max-height: 64px;
        max-width: 170px;
    }

    .brand-name {
        font-size: 1rem;
    }

    .login-theme-toggle {
        position: static;
        margin-bottom: .75rem;
        width: 100%;
    }
}

/* Keep the standalone login screen centered on phones. */
@media (max-width: 767.98px) {
    body.login-screen {
        align-items: center;
        flex-direction: column;
        justify-content: center;
        min-height: 100vh;
        overflow-x: hidden;
        padding: 14px !important;
        width: 100%;
    }

    .login-theme-toggle {
        align-self: center;
        flex: 0 0 auto;
        margin: 0 0 .75rem !important;
        max-width: 430px;
        position: static !important;
        right: auto;
        top: auto;
        width: 100%;
    }

    .login-container {
        flex: 0 1 auto;
        margin-left: auto;
        margin-right: auto;
        max-width: 430px !important;
        padding-left: 0 !important;
        padding-right: 0 !important;
        width: 100%;
    }

    .login-card {
        width: 100%;
    }

    .login-card .input-group {
        flex-wrap: nowrap;
    }

    .login-card .form-control {
        min-width: 0;
    }

    .login-card .input-group-text {
        align-items: center;
        display: flex;
        height: 44px;
        justify-content: center;
        min-width: 46px;
    }
}

/* System-wide phone card fit layer. Visual CSS only; page logic stays untouched. */
@media (max-width: 767.98px) {
    body.app-shell .app-content {
        margin-top: .75rem !important;
        padding-left: .65rem !important;
        padding-right: .65rem !important;
    }

    body.app-shell .app-content > .container,
    body.app-shell .app-content > .container-fluid {
        margin-left: auto !important;
        margin-right: auto !important;
        max-width: 100% !important;
        padding-left: 0 !important;
        padding-right: 0 !important;
        width: 100% !important;
    }

    body.app-shell .app-content > .container.mt-4,
    body.app-shell .app-content > .container-fluid.mt-4 {
        margin-top: .75rem !important;
    }

    body.app-shell .card {
        max-width: 100%;
        min-width: 0;
        width: 100%;
    }

    body.app-shell .card .card-body {
        min-width: 0;
    }

    body.app-shell .card h5,
    body.app-shell .card h6,
    body.app-shell .card-title,
    body.app-shell .card-text {
        overflow-wrap: anywhere;
        word-break: normal;
    }

    body.app-shell .row.text-center {
        --bs-gutter-x: .6rem;
        --bs-gutter-y: .6rem;
    }

    body.app-shell .row.text-center > [class*="col-"] > .card .card-body {
        align-items: center;
        display: flex;
        flex-direction: column;
        justify-content: center;
        min-height: 86px;
        padding: .7rem .55rem !important;
    }

    body.app-shell .row.text-center > [class*="col-"] > .card h6 {
        font-size: .78rem;
        line-height: 1.18;
        margin-bottom: .28rem;
    }

    body.app-shell .row.text-center > [class*="col-"] > .card h3,
    body.app-shell .row.text-center > [class*="col-"] > .card h4 {
        font-size: 1.25rem;
        line-height: 1.15;
        margin-bottom: 0;
    }

    body.app-shell .summary-cards {
        display: grid !important;
        gap: .55rem !important;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        width: 100%;
    }

    body.app-shell .summary-cards > .card {
        align-items: center;
        display: flex;
        flex-direction: column;
        font-size: .78rem;
        justify-content: center;
        line-height: 1.2;
        margin: 0 !important;
        min-height: 76px;
        padding: .65rem .45rem !important;
        text-align: center;
    }

    body.app-shell .summary-cards > .card:last-child:nth-child(odd) {
        grid-column: 1 / -1;
    }

    body.app-shell .flex-center {
        align-items: stretch;
        display: grid !important;
        gap: .65rem !important;
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
        justify-content: stretch !important;
        width: 100%;
    }

    body.app-shell .card-module,
    body.app-shell .module-card,
    body.app-shell .dashboard-card {
        align-self: stretch;
        display: flex !important;
        margin: 0 !important;
        min-height: 0;
        min-width: 0;
        width: 100% !important;
    }

    body.app-shell .card-module > a,
    body.app-shell .module-card > a,
    body.app-shell .dashboard-card > a,
    body.app-shell a > .card-module,
    body.app-shell a > .module-card,
    body.app-shell a > .dashboard-card {
        display: flex;
        min-width: 0;
        width: 100%;
    }

    body.app-shell .card-module .card-body,
    body.app-shell .module-card .card-body,
    body.app-shell .dashboard-card .card-body {
        align-items: center;
        display: flex;
        flex: 1 1 auto;
        flex-direction: column;
        justify-content: center;
        min-height: 104px;
        padding: .72rem .48rem !important;
        text-align: center;
    }

    body.app-shell .card-module .icon-box,
    body.app-shell .module-card .icon-box,
    body.app-shell .dashboard-card .icon-box {
        flex: 0 0 44px;
        font-size: 20px !important;
        height: 44px !important;
        margin: 0 auto .42rem !important;
        width: 44px !important;
    }

    body.app-shell .card-module h6,
    body.app-shell .module-card h6,
    body.app-shell .dashboard-card h6 {
        font-size: .78rem !important;
        line-height: 1.18;
        margin: 0;
        max-width: 100%;
    }
}

@supports selector(:has(*)) {
    @media (max-width: 767.98px) {
        body.app-shell .row > [class*="col-"]:has(> a > .card-module),
        body.app-shell .row > [class*="col-"]:has(> .card-module),
        body.app-shell .row > [class*="col-"]:has(> a > .module-card),
        body.app-shell .row > [class*="col-"]:has(> .module-card),
        body.app-shell .row > [class*="col-"]:has(> a > .dashboard-card),
        body.app-shell .row > [class*="col-"]:has(> .dashboard-card) {
            flex: 0 0 50% !important;
            margin-bottom: 0 !important;
            max-width: 50% !important;
        }

        body.app-shell .row.text-center > [class*="col-md-"]:has(> .card) {
            flex: 0 0 50% !important;
            max-width: 50% !important;
        }

        body.app-shell .row.text-center > .col-md-6:has(> .card),
        body.app-shell .row.text-center > [class*="col-md-"]:has(> .card):last-child:nth-child(odd) {
            flex-basis: 100% !important;
            max-width: 100% !important;
        }
    }
}

@media (max-width: 360px) {
    body.app-shell .flex-center {
        grid-template-columns: 1fr !important;
    }

    @supports selector(:has(*)) {
        body.app-shell .row > [class*="col-"]:has(> a > .card-module),
        body.app-shell .row > [class*="col-"]:has(> .card-module),
        body.app-shell .row > [class*="col-"]:has(> a > .module-card),
        body.app-shell .row > [class*="col-"]:has(> .module-card),
        body.app-shell .row > [class*="col-"]:has(> a > .dashboard-card),
        body.app-shell .row > [class*="col-"]:has(> .dashboard-card),
        body.app-shell .row.text-center > [class*="col-md-"]:has(> .card) {
            flex-basis: 100% !important;
            max-width: 100% !important;
        }
    }
}

/* Broad responsive safety layer for forms, reports, tables, and action rows. */
body.app-shell .table-responsive,
body.app-shell .dataTables_wrapper,
body.app-shell .dataTables_scroll,
body.app-shell .dataTables_scrollBody {
    max-width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

body.app-shell .dt-buttons {
    align-items: center;
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
    margin-bottom: .6rem;
}

body.app-shell .dt-buttons .dt-button,
body.app-shell .dt-buttons button.dt-button,
body.app-shell .dt-buttons a.dt-button {
    align-items: center;
    border: 0 !important;
    border-radius: 6px !important;
    box-shadow: 0 8px 18px rgba(20, 33, 31, .12) !important;
    color: #ffffff !important;
    display: inline-flex !important;
    font-weight: 750 !important;
    gap: .4rem;
    justify-content: center;
    line-height: 1.1 !important;
    min-height: 42px;
    padding: .68rem 1rem !important;
    text-shadow: none !important;
    transition: background-color .18s ease, box-shadow .18s ease, transform .18s ease;
}

body.app-shell .dt-buttons .dt-button::before {
    background: rgba(255, 255, 255, .88);
    border-radius: 999px;
    box-shadow: 0 0 0 2px rgba(255, 255, 255, .22);
    content: "";
    display: inline-block;
    height: .55rem;
    width: .55rem;
}

body.app-shell .dt-buttons .buttons-excel {
    background: #15803d !important;
}

body.app-shell .dt-buttons .buttons-pdf {
    background: #b42318 !important;
}

body.app-shell .dt-buttons .buttons-print {
    background: #0f6c81 !important;
}

body.app-shell .dt-buttons .buttons-excel:hover,
body.app-shell .dt-buttons .buttons-excel:focus {
    background: #116a33 !important;
}

body.app-shell .dt-buttons .buttons-pdf:hover,
body.app-shell .dt-buttons .buttons-pdf:focus {
    background: #8f1b13 !important;
}

body.app-shell .dt-buttons .buttons-print:hover,
body.app-shell .dt-buttons .buttons-print:focus {
    background: #0b5668 !important;
}

body.app-shell .dt-buttons .dt-button:hover,
body.app-shell .dt-buttons .dt-button:focus {
    box-shadow: 0 12px 24px rgba(20, 33, 31, .18) !important;
    transform: translateY(-1px);
}

body.app-shell .dt-buttons .dt-button:focus-visible {
    outline: 3px solid rgba(201, 162, 39, .42) !important;
    outline-offset: 2px;
}

body.app-shell .filter-box.row,
body.app-shell form.row,
body.app-shell .search-row,
body.app-shell .filter-row {
    max-width: 100%;
}

body.app-shell #printArea {
    margin-left: auto;
    margin-right: auto;
    overflow-wrap: anywhere;
}

body.app-shell #printArea table {
    width: 100% !important;
}

body.app-shell .no-print.d-flex,
body.app-shell .d-flex.gap-2,
body.app-shell .d-flex.gap-3 {
    min-width: 0;
}

@media (min-width: 1200px) {
    body.app-shell #printArea {
        max-width: 1180px;
    }

    body.app-shell .filter-box {
        max-width: 1180px;
    }
}

@media (min-width: 768px) and (max-width: 1199.98px) {
    body.app-shell .filter-box.row,
    body.app-shell form.row {
        --bs-gutter-x: 1rem;
        --bs-gutter-y: 1rem;
    }

    body.app-shell #printArea {
        max-width: 100%;
        padding: 1rem !important;
    }

    body.app-shell #printArea table {
        font-size: .82rem !important;
    }
}

@media (max-width: 767.98px) {
    body.app-shell .filter-box.row,
    body.app-shell form.row {
        margin-left: 0 !important;
        margin-right: 0 !important;
        padding: .85rem !important;
        row-gap: .75rem;
        width: 100%;
    }

    body.app-shell form.row > [class*="col-"],
    body.app-shell .filter-box.row > [class*="col-"],
    body.app-shell .search-row > [class*="col-"],
    body.app-shell .filter-row > [class*="col-"] {
        flex: 0 0 100% !important;
        max-width: 100% !important;
        padding-left: 0 !important;
        padding-right: 0 !important;
        width: 100% !important;
    }

    body.app-shell .filter-box label,
    body.app-shell form.row label {
        font-size: .86rem;
        margin-bottom: .25rem;
    }

    body.app-shell .no-print.d-flex,
    body.app-shell .mb-3.d-flex.gap-2,
    body.app-shell .mt-3.d-flex.gap-2,
    body.app-shell .mt-4.d-flex.gap-2 {
        align-items: stretch !important;
        flex-wrap: wrap !important;
        width: 100%;
    }

    body.app-shell .no-print.d-flex > .btn,
    body.app-shell .no-print.d-flex > a.btn,
    body.app-shell .mb-3.d-flex.gap-2 > .btn,
    body.app-shell .mb-3.d-flex.gap-2 > a.btn,
    body.app-shell .mt-3.d-flex.gap-2 > .btn,
    body.app-shell .mt-3.d-flex.gap-2 > a.btn,
    body.app-shell .mt-4.d-flex.gap-2 > .btn,
    body.app-shell .mt-4.d-flex.gap-2 > a.btn {
        flex: 1 1 100%;
        margin-left: 0 !important;
        white-space: normal;
        width: 100%;
    }

    body.app-shell .welcome-msg {
        align-items: center !important;
        display: flex !important;
        margin-bottom: 1rem !important;
        width: 100% !important;
    }

    body.app-shell .dt-buttons {
        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        width: 100%;
    }

    body.app-shell .dt-buttons .dt-button,
    body.app-shell .dt-buttons button.dt-button,
    body.app-shell .dt-buttons a.dt-button {
        margin: 0 !important;
        min-width: 0;
        padding-left: .55rem !important;
        padding-right: .55rem !important;
        width: 100%;
    }

    body.app-shell #printArea {
        border-radius: 8px !important;
        max-width: 100% !important;
        overflow-x: hidden;
        padding: .75rem !important;
        width: 100% !important;
    }

    body.app-shell #printArea .text-center,
    body.app-shell #printArea [style*="text-align:center"],
    body.app-shell #printArea [style*="text-align: center"] {
        max-width: 100%;
    }

    body.app-shell #printArea img {
        max-height: 58px;
        max-width: 120px;
    }

    body.app-shell #printArea h1,
    body.app-shell #printArea h2 {
        font-size: 1rem !important;
        letter-spacing: 0 !important;
        line-height: 1.2;
    }

    body.app-shell #printArea h3,
    body.app-shell #printArea h4,
    body.app-shell #printArea h5 {
        font-size: .9rem !important;
        line-height: 1.25;
    }

    body.app-shell #printArea p,
    body.app-shell #printArea small {
        font-size: .76rem !important;
        line-height: 1.25;
    }

    body.app-shell #printArea .table,
    body.app-shell #printArea table {
        border-radius: 7px;
        display: block !important;
        font-size: .72rem !important;
        max-width: 100%;
        overflow-x: auto;
        white-space: nowrap;
        width: 100% !important;
        -webkit-overflow-scrolling: touch;
    }

    body.app-shell #printArea thead,
    body.app-shell #printArea tbody,
    body.app-shell #printArea tfoot,
    body.app-shell #printArea tr {
        width: max-content;
    }

    body.app-shell #printArea th,
    body.app-shell #printArea td {
        font-size: .72rem !important;
        padding: .32rem .38rem !important;
        vertical-align: middle;
    }

    body.app-shell #printArea .table-borderless,
    body.app-shell #printArea table.table-borderless {
        white-space: normal;
    }

    body.app-shell #printArea .table-borderless tbody,
    body.app-shell #printArea .table-borderless tr,
    body.app-shell #printArea .table-borderless td {
        display: block;
        width: 100%;
    }

    body.app-shell #printArea .table-borderless td {
        padding: .22rem 0 !important;
    }
}

@media (max-width: 575.98px) {
    body.app-shell .container,
    body.app-shell .container-fluid {
        padding-left: .65rem;
        padding-right: .65rem;
    }

    body.app-shell .app-content > .container,
    body.app-shell .app-content > .container-fluid {
        padding-left: 0 !important;
        padding-right: 0 !important;
    }

    body.app-shell .table-responsive,
    body.app-shell .dataTables_wrapper {
        font-size: .84rem;
    }

    body.app-report-page .app-report-banner {
        align-items: flex-start;
        flex-direction: column;
        gap: .7rem;
        padding: .8rem;
    }

    body.app-report-page .app-report-generated {
        white-space: normal;
        width: 100%;
    }
}

@media print {
    html,
    body.app-shell,
    body.login-screen {
        background: #ffffff !important;
    }

    .app-navbar,
    .main-footer,
    footer,
    .no-print {
        display: none !important;
    }

    body.app-shell:not(.app-report-page) .app-content::before {
        background-image: var(--app-logo-url);
        background-position: center;
        background-repeat: no-repeat;
        background-size: contain;
        content: "";
        display: block;
        height: 64px;
        margin: 0 auto .75rem;
        width: 64px;
    }

    body.app-report-page .app-report-banner {
        background: #ffffff !important;
        border-color: #dddddd;
        box-shadow: none;
    }

    .card,
    .modal-content,
    .invoice-box,
    #printArea,
    .filter-box {
        border-color: #dddddd !important;
        box-shadow: none !important;
    }
}
