:root {
    --app-font-family: "Noto Sans Thai", "Segoe UI", Tahoma, Arial, sans-serif;
    --app-text: #1e293b;
    --app-muted: #64748b;
    --app-primary: #2563eb;
    --app-primary-dark: #1d4ed8;
    --app-surface: #ffffff;
    --app-border: #e2e8f0;
}

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

html {
    scroll-behavior: smooth;
    -webkit-text-size-adjust: 100%;
}

body {
    max-width: 100%;
    overflow-x: hidden;
    color: var(--app-text);
    font-family: var(--app-font-family) !important;
    text-rendering: geometricPrecision;
}

body:has(.public-layout),
body:has(.backend-layout),
body:has(.admin-layout) {
    padding-left: env(safe-area-inset-left);
    padding-right: env(safe-area-inset-right);
}

button,
input,
select,
textarea,
.btn,
.form-control,
.form-select,
.dropdown-menu,
.dataTables_wrapper,
.fc {
    font-family: var(--app-font-family) !important;
}

img,
svg,
video,
canvas {
    max-width: 100%;
    height: auto;
}

table {
    max-width: 100%;
}

:where(.public-layout, .backend-layout, .admin-layout, .public-main, .backend-main, .admin-main, main, section, article, div) {
    min-width: 0;
}

.container,
.container-fluid {
    min-width: 0;
}

.row {
    min-width: 0;
}

.row > * {
    min-width: 0;
}

.table-responsive,
.dataTables_wrapper,
.fc-view-harness {
    max-width: 100%;
}

.table-responsive {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

.dataTables_wrapper {
    overflow-x: auto;
}

.dropdown-menu {
    max-width: min(92vw, 380px);
    overflow-wrap: anywhere;
}

.public-main,
.backend-main,
.admin-main {
    min-width: 0;
}

.public-panel,
.public-card,
.public-summary-card,
.admin-panel,
.summary-card,
.soft-card {
    max-width: 100%;
}

.form-control,
.form-select,
textarea {
    max-width: 100%;
}

.btn,
button,
a {
    text-wrap: balance;
}

.btn,
button,
a.btn,
.public-primary-btn,
.public-soft-btn,
.public-topbar-login,
.public-topbar-register,
.public-icon-btn,
.public-menu-item,
.fc .fc-button {
    will-change: transform, box-shadow, background-color;
    transition:
        transform .25s ease-in-out,
        box-shadow .25s ease-in-out,
        background-color .25s ease-in-out,
        border-color .25s ease-in-out,
        color .25s ease-in-out !important;
}

.btn:hover,
button:hover,
a.btn:hover,
.public-primary-btn:hover,
.public-soft-btn:hover,
.public-topbar-login:hover,
.public-topbar-register:hover,
.public-icon-btn:hover,
.fc .fc-button:hover {
    transform: translateY(-2px);
}

.btn:active,
button:active,
a.btn:active,
.public-primary-btn:active,
.public-soft-btn:active,
.public-topbar-login:active,
.public-topbar-register:active,
.public-icon-btn:active,
.fc .fc-button:active {
    transform: translateY(0) scale(.98);
}

.card,
.soft-card,
.admin-card,
.public-card,
.public-panel {
    overflow-wrap: break-word;
    word-break: normal;
}

:where(td, th, p, span, strong, small, label, a, button, .btn) {
    word-break: normal;
}

:where(td, th, p, span, strong, small, label, a, button, .btn):not(.allow-anywhere) {
    overflow-wrap: break-word;
}

.smart-scroll-actions {
    position: fixed;
    right: max(clamp(14px, 2vw, 24px), env(safe-area-inset-right));
    bottom: max(clamp(18px, 3vw, 28px), env(safe-area-inset-bottom));
    z-index: 1100;
    display: grid;
    gap: 10px;
    pointer-events: none;
}

.smart-scroll-btn {
    width: 44px;
    height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    pointer-events: auto;
    border: 1px solid rgba(37, 99, 235, .18);
    border-radius: 14px;
    color: #ffffff;
    background: linear-gradient(135deg, var(--app-primary), #06b6d4);
    box-shadow: 0 16px 34px rgba(37, 99, 235, .24);
    opacity: .96;
    transform: translateY(0);
    transition: opacity .25s ease-in-out, transform .25s ease-in-out, box-shadow .25s ease-in-out;
}

.smart-scroll-btn:hover {
    opacity: 1;
    transform: translateY(-2px);
    box-shadow: 0 20px 40px rgba(37, 99, 235, .32);
}

.smart-scroll-btn:focus-visible {
    outline: 3px solid rgba(37, 99, 235, .25);
    outline-offset: 3px;
}

.smart-scroll-btn.is-disabled {
    opacity: .42;
    cursor: default;
    transform: none;
}

.smart-alert-popup {
    width: min(92vw, 440px) !important;
    padding: 1.75rem !important;
    border: 1px solid rgba(226, 232, 240, .9) !important;
    border-radius: 20px !important;
    background: rgba(255, 255, 255, .98) !important;
    box-shadow: 0 28px 70px rgba(15, 23, 42, .18) !important;
}

.smart-alert-icon {
    margin-top: .25rem !important;
    border-width: 3px !important;
}

.smart-alert-title {
    padding-top: .4rem !important;
    color: var(--app-text) !important;
    font-size: 1.35rem !important;
    font-weight: 950 !important;
}

.smart-alert-text {
    margin-top: .35rem !important;
    color: var(--app-muted) !important;
    font-weight: 650 !important;
    line-height: 1.7 !important;
}

.smart-alert-confirm {
    min-width: 132px;
    min-height: 44px;
    padding: 0 1.25rem;
    color: #fff;
    border: 0;
    border-radius: 12px;
    background: linear-gradient(135deg, var(--app-primary), var(--app-primary-dark));
    box-shadow: 0 14px 28px rgba(37, 99, 235, .24);
    font-weight: 850;
    transition: transform .25s ease-in-out, box-shadow .25s ease-in-out;
}

.smart-alert-confirm:hover {
    transform: translateY(-1px);
    box-shadow: 0 18px 34px rgba(37, 99, 235, .3);
}

@media (max-width: 1199px) {
    .container,
    .container-lg,
    .container-xl,
    .container-xxl {
        max-width: calc(100% - 24px);
    }
}

@media (max-width: 991px) {
    .backend-layout,
    .admin-layout,
    .public-layout {
        min-height: 100vh;
    }

    .backend-main,
    .admin-main,
    .public-main {
        width: 100%;
    }

    .admin-topbar,
    .public-topbar,
    .backend-topbar {
        padding-left: 16px;
        padding-right: 16px;
    }

    .admin-content,
    .public-content,
    .page-shell,
    main {
        min-width: 0;
    }

    .table {
        min-width: 680px;
    }

    .public-sidebar,
    .admin-sidebar {
        width: min(86vw, 300px);
        max-width: 300px;
    }

    body.public-sidebar-open,
    body.admin-sidebar-open {
        overflow: hidden;
    }
}

@media (max-width: 640px) {
    body {
        font-size: 15px;
    }

    h1,
    .h1 {
        font-size: clamp(1.65rem, 8vw, 2.15rem) !important;
        line-height: 1.2;
    }

    h2,
    .h2 {
        font-size: clamp(1.35rem, 6vw, 1.75rem) !important;
        line-height: 1.25;
    }

    .btn,
    .public-primary-btn,
    .public-soft-btn {
        min-height: 42px;
        white-space: normal;
    }

    .admin-topbar,
    .public-topbar,
    .backend-topbar {
        gap: 10px;
        min-width: 0;
    }

    .admin-topbar-right,
    .public-topbar-right,
    .admin-topbar-left,
    .public-topbar-left {
        min-width: 0;
    }

    .admin-search,
    .public-search,
    .topbar-search {
        max-width: 100%;
    }

    .table-responsive {
        margin-left: -2px;
        margin-right: -2px;
    }

    input,
    select,
    textarea {
        font-size: 16px !important;
    }

    .dropdown-menu {
        max-width: calc(100vw - 24px);
    }

    .smart-scroll-actions {
        right: 12px;
        bottom: 14px;
        gap: 8px;
    }

    .smart-scroll-btn {
        width: 40px;
        height: 40px;
        border-radius: 12px;
    }
}

@media print {
    .smart-scroll-actions {
        display: none !important;
    }
}
