/* ASPC_V128_RESPONSIVE_FOUNDATION
 * Enterprise responsive override layer.
 * Loaded after the legacy theme. No business logic, no brand redesign.
 */
:root{
    --aspc-v128-sidebar-width:260px;
    --aspc-v128-gutter:clamp(12px,1.45vw,24px);
    --aspc-v128-radius:12px;
    --aspc-v128-touch:44px;
    --aspc-v128-vh:1vh;
}
*,*::before,*::after{box-sizing:border-box}
html{max-width:100%;overflow-x:hidden;overflow-x:clip}
body.aspc-app{max-width:100%;overflow-x:hidden;overflow-x:clip}
.ecaps-page-wrapper{width:100%;max-width:100%;min-width:0;overflow:visible}
.ecaps-page-content{box-sizing:border-box;min-width:0!important;max-width:none!important;width:auto!important;margin-right:var(--aspc-v128-sidebar-width)!important;margin-left:0!important;transition:margin .22s ease}
#aspc-main-content,.main-content,.main-content>.container-fluid,.ecaps-page-content>.container-fluid{min-width:0!important;max-width:100%!important;width:100%!important}
#aspc-main-content{overflow-x:clip}
.main-content>.container-fluid,#aspc-main-content>.container-fluid{padding-right:var(--aspc-v128-gutter)!important;padding-left:var(--aspc-v128-gutter)!important}
.ecaps-sidemenu-area{max-width:100vw}

/* Flex/grid shrink guards: a single long child must never widen the page. */
.ecaps-page-content,#aspc-main-content,.main-content,.container-fluid,.row,.row>[class*="col-"],.card,.card-body,.aspc-filter-grid,.aspc-filter-grid>*,.aspc-kpi-grid,.aspc-card-head,.aspc-catalog-hero-row{min-width:0}
img,svg,video,canvas,iframe{max-width:100%}
pre,code{max-width:100%;overflow-wrap:anywhere}
.row{min-width:0}
.row>[class*="col-"]{min-width:0}
.card,.card-body,.modal-content,.dropdown-menu,.tab-content,.table-responsive,.dataTables_wrapper,.select2-container{max-width:100%}

/* Header containment. */
.top-header-area{min-width:0!important;max-width:100%!important;width:100%!important;padding-right:var(--aspc-v128-gutter)!important;padding-left:var(--aspc-v128-gutter)!important;gap:10px;flex-wrap:nowrap}
.top-header-area .left-side-content-area,.top-header-area .right-side-navbar{min-width:0;max-width:100%}
.top-header-area .left-side-content-area{flex:1 1 auto;overflow:hidden}
.top-header-area .right-side-navbar{flex:0 0 auto}
.aspc-header-context{min-width:0;max-width:min(360px,32vw)}
.aspc-header-context strong,.aspc-header-context span{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.left-side-navbar,.right-side-content{min-width:0;margin-bottom:0}
.right-side-content .dropdown-menu{max-width:min(390px,calc(100vw - 24px));}

/* Forms, actions, Select2, dropdowns. */
.form-control,.custom-select,.select2-container,.select2-container--default .select2-selection--single,.select2-container--default .select2-selection--multiple{max-width:100%;width:100%!important}
.select2-dropdown{max-width:calc(100vw - 24px)!important}
.form-row,.form-group,.input-group{min-width:0}
.input-group{flex-wrap:nowrap}
.btn-toolbar,.btn-group-responsive,.aspc-filter-actions,.form-actions{max-width:100%;flex-wrap:wrap}
.dropdown-menu{max-width:min(420px,calc(100vw - 24px));overflow-wrap:anywhere}
.modal-dialog{max-width:min(92vw,900px);margin-left:auto;margin-right:auto}

/* Tables/DataTables: overflow belongs to the table surface, never to the page. */
.table-responsive,.aspc-table-wrap,.dataTables_scroll,.dataTables_scrollBody{display:block;width:100%;max-width:100%;overflow-x:auto!important;overflow-y:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior-inline:contain}
.table-responsive>table,.aspc-table-wrap>table{margin-bottom:0}
.dataTables_wrapper{width:100%!important;min-width:0!important;overflow:hidden}
.dataTables_wrapper .row{margin-left:0;margin-right:0}
.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_paginate{max-width:100%}
.aspc-table-wrap{scrollbar-width:thin;position:relative}
.aspc-table-wrap::after{content:"";position:sticky;left:0;display:block;height:1px;width:1px}
.aspc-pagination,.pagination{max-width:100%}
.aspc-pagination .pagination,.pagination{display:flex;flex-wrap:wrap;gap:4px;align-items:center}

/* Global utility containment for legacy fixed-width content. */
.container,.container-fluid{max-width:100%}
.breadcrumb{max-width:100%;flex-wrap:wrap;white-space:normal}
.alert,.jumbotron,.well,.panel{max-width:100%}

/* Product catalog responsive surface. */
.aspc-responsive-surface,.aspc-catalog-page{width:100%;max-width:100%;min-width:0}
.aspc-catalog-page .container-fluid{width:100%;max-width:100%;min-width:0}
.aspc-catalog-hero,.aspc-filter-card,.aspc-table-card{max-width:100%}
.aspc-catalog-hero-row,.aspc-card-head{min-width:0}
.aspc-kpi-grid,.aspc-filter-grid{min-width:0}
.aspc-table{width:100%;max-width:none}
.aspc-filter-grid>*{min-width:0}
.aspc-date-range-filter{min-width:0}

/* Desktop date picker is moved by JS to fixed viewport coordinates. */
.aspc-date-popover.aspc-v128-positioned{position:fixed!important;right:auto!important;transform:none!important;max-width:calc(100vw - 32px)!important;max-height:calc(100vh - 32px);overflow:auto;overscroll-behavior:contain}
.aspc-date-popover .aspc-calendars-wrap,.aspc-date-popover .aspc-jalali-calendar{min-width:0}

/* Large desktop. */
@media (min-width:1600px){
    .aspc-catalog-page .aspc-filter-grid{grid-template-columns:repeat(4,minmax(0,1fr))!important}
    .aspc-catalog-page .aspc-kpi-grid{grid-template-columns:repeat(8,minmax(0,1fr))!important}
}

/* Standard laptops. */
@media (min-width:1280px) and (max-width:1599px){
    :root{--aspc-v128-gutter:18px}
    .aspc-catalog-page .aspc-filter-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important}
    .aspc-catalog-page .aspc-kpi-grid{grid-template-columns:repeat(4,minmax(0,1fr))!important}
    .aspc-catalog-page .aspc-date-range-filter{grid-column:span 2}
    .dashboard-clock{transform:scale(.94);transform-origin:center}
}

/* Small laptop / tablet landscape: preserve desktop sidebar but lower density. */
@media (min-width:1024px) and (max-width:1279px){
    :root{--aspc-v128-gutter:14px}
    .aspc-catalog-page .aspc-filter-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
    .aspc-catalog-page .aspc-kpi-grid{grid-template-columns:repeat(4,minmax(0,1fr))!important}
    .aspc-catalog-page .aspc-date-range-filter{grid-column:1/-1}
    .aspc-header-context{max-width:220px}
    .dashboard-clock{display:none!important}
    .top-header-area{gap:6px}
}

/* Tablet/mobile foundation: sidebar becomes an off-canvas drawer. */
@media (max-width:1023px){
    :root{--aspc-v128-sidebar-width:0px;--aspc-v128-gutter:14px}
    html,body{width:100%;max-width:100%;overflow-x:hidden!important}
    body.aspc-v128-nav-open{overflow:hidden!important;touch-action:auto}
    .ecaps-page-content{width:100%!important;max-width:100%!important;margin-right:0!important;margin-left:0!important}
    .ecaps-sidemenu-area{position:fixed!important;z-index:1202!important;top:0!important;right:0!important;bottom:0!important;left:auto!important;width:min(86vw,320px)!important;max-width:320px!important;height:100vh!important;height:calc(var(--aspc-v128-vh) * 100)!important;transform:translate3d(105%,0,0)!important;transition:transform .22s ease!important;box-shadow:-18px 0 45px rgba(10,42,48,.18);overflow:hidden!important;visibility:visible!important}
    body.aspc-v128-nav-open .ecaps-sidemenu-area{transform:translate3d(0,0,0)!important}
    .ecaps-sidemenu-area .ecaps-sidenav{height:calc(100% - 72px);overflow-y:auto!important;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
    .aspc-nav-backdrop{display:block!important;position:fixed!important;z-index:1201!important;inset:0!important;width:100%!important;height:100%!important;border:0!important;background:rgba(7,33,39,.46)!important;opacity:0!important;visibility:hidden!important;pointer-events:none!important;transition:opacity .2s ease,visibility .2s ease!important}
    body.aspc-v128-nav-open .aspc-nav-backdrop{opacity:1!important;visibility:visible!important;pointer-events:auto!important}
    #mobileMenuOpen{display:flex!important;align-items:center;justify-content:center;min-width:var(--aspc-v128-touch);min-height:var(--aspc-v128-touch);cursor:pointer}
    #menuCollasped{display:none!important}
    .top-header-area{min-height:64px!important;flex-wrap:nowrap!important}
    .aspc-header-context{max-width:42vw}
    .dashboard-clock{display:none!important}
    .mobile-logo{display:block!important;flex:0 0 auto}
    .right-side-content{max-width:52vw}
    .dropdown-menu{position:absolute!important;max-width:calc(100vw - 24px)!important}
    .aspc-catalog-page .aspc-filter-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
    .aspc-catalog-page .aspc-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
    .aspc-catalog-page .aspc-date-range-filter{grid-column:1/-1!important}
    .aspc-date-popover,.aspc-date-popover.aspc-v128-positioned{position:fixed!important;z-index:1300!important;left:12px!important;right:12px!important;top:auto!important;bottom:12px!important;width:auto!important;max-width:none!important;max-height:min(86vh,720px)!important;transform:none!important;border-radius:16px!important;overflow:auto!important}
    .aspc-calendars-wrap{grid-template-columns:1fr!important}
    .aspc-jalali-calendar[data-calendar="1"]{display:none!important}
    .aspc-date-picker-head{align-items:flex-start!important;flex-direction:column!important}
    .aspc-date-summary{white-space:normal!important;max-width:100%}
}

/* Mobile landscape / small tablet. */
@media (max-width:767px){
    :root{--aspc-v128-gutter:12px}
    .top-header-area{padding-right:10px!important;padding-left:10px!important}
    .aspc-header-context{max-width:48vw}
    .aspc-header-context span{display:none!important}
    .right-side-content{max-width:44vw;gap:2px}
    .right-side-content>li>.btn,.right-side-trigger{min-width:40px;min-height:40px}
    .main-content>.container-fluid,#aspc-main-content>.container-fluid{padding-right:12px!important;padding-left:12px!important}
    .aspc-catalog-page .aspc-filter-grid{grid-template-columns:1fr!important}
    .aspc-catalog-page .aspc-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
    .aspc-catalog-page .aspc-date-range-filter{grid-column:1!important}
    .aspc-filter-body,.card-body{padding-left:12px!important;padding-right:12px!important}
    .aspc-card-head{align-items:flex-start!important;flex-direction:column!important}
    .aspc-filter-actions{display:grid!important;grid-template-columns:1fr 1fr;width:100%;gap:8px}
    .aspc-filter-actions .btn{width:100%!important;min-height:var(--aspc-v128-touch);display:flex;align-items:center;justify-content:center}
    .aspc-catalog-hero-row{align-items:stretch!important}
    .aspc-catalog-hero-row>.btn{width:100%;min-height:var(--aspc-v128-touch);display:flex;align-items:center;justify-content:center}
    .form-control,.custom-select,.select2-container--default .select2-selection--single{min-height:var(--aspc-v128-touch)}
    .modal-dialog{max-width:calc(100vw - 20px);margin:10px auto}
    .aspc-date-picker-foot{align-items:stretch!important;flex-direction:column!important}
    .aspc-date-picker-actions{display:grid!important;grid-template-columns:1fr 1fr;width:100%}
    .aspc-date-picker-actions .btn{width:100%;min-height:42px}
}

/* Narrow phones. */
@media (max-width:479px){
    :root{--aspc-v128-gutter:10px}
    .ecaps-sidemenu-area{width:min(92vw,312px)!important}
    .aspc-header-context{max-width:45vw;font-size:12px}
    .mobile-logo{margin-left:4px!important;margin-right:0!important}
    .right-side-navbar .right-side-content{display:none!important}
    .right-side-trigger{display:flex!important}
    .aspc-catalog-page .aspc-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px!important}
    .aspc-kpi{padding:11px!important;min-height:80px!important}
    .aspc-filter-actions{grid-template-columns:1fr!important}
    .aspc-date-presets{display:grid!important;grid-template-columns:1fr 1fr!important}
    .aspc-date-preset{width:100%;min-height:40px}
    .aspc-date-picker-actions{grid-template-columns:1fr!important}
    .aspc-date-popover,.aspc-date-popover.aspc-v128-positioned{left:8px!important;right:8px!important;bottom:8px!important;max-height:calc(var(--aspc-v128-vh) * 88)!important}
    .aspc-calendar-day{min-height:38px!important;height:38px!important}
    .pagination .page-link{padding:.45rem .62rem}
}

@media (prefers-reduced-motion:reduce){
    .ecaps-page-content,.ecaps-sidemenu-area,.aspc-nav-backdrop,*{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}
}

/* ASPC responsive compatibility revision 12.8.1 — existing theme integration. */
.aspc-responsive-nav-close{display:none}
@media screen {
    body.aspc-app .top-header-area{
        right:var(--aspc-v128-sidebar-width)!important;left:0!important;
        width:calc(100% - var(--aspc-v128-sidebar-width))!important;
    }
    body.aspc-app .input-group>.form-control{width:1%!important;min-width:0;flex:1 1 auto}
    body.aspc-app .input-group-append,body.aspc-app .input-group-prepend{flex-shrink:0}
}
@media screen and (max-width:1023px){
    body.aspc-app .top-header-area{right:0!important;width:100%!important}
    body.aspc-app .ecaps-sidemenu-area{visibility:hidden!important}
    body.aspc-v128-nav-open .ecaps-sidemenu-area{visibility:visible!important}
    .aspc-responsive-nav-close{
        display:block;position:absolute;left:8px;top:8px;z-index:1001;
        min-width:44px;min-height:44px;padding:8px 12px;border:1px solid #88b6bc;
        border-radius:10px;background:#123a43;color:#fff;font:inherit;cursor:pointer;
    }
    body.aspc-app .ecaps-sidemenu-area .ecaps-logo a{
        right:0!important;width:100%!important;padding-left:118px;
    }
    body.aspc-app .ecaps-sidemenu-area .slimScrollDiv{
        position:absolute!important;top:var(--aspc-header)!important;bottom:0!important;
        height:auto!important;width:100%!important;padding-bottom:0!important;
    }
    body.aspc-app .ecaps-sidemenu-area .ecaps-sidenav{
        height:100%!important;padding-bottom:max(20px,env(safe-area-inset-bottom));
        overflow-y:auto!important;touch-action:pan-y;overscroll-behavior:contain;
    }
    body.aspc-app .ecaps-sidemenu-area > .ecaps-sidenav{
        position:absolute;top:var(--aspc-header);bottom:0;height:auto!important;
    }
    .aspc-responsive-nav-close:focus-visible,#mobileMenuOpen:focus-visible,#rightSideTrigger:focus-visible{
        outline:3px solid #4fb9b1;outline-offset:2px;
    }
}
@media screen and (max-width:767px){
    body.aspc-app .aspc-header-context{display:block;min-width:0;flex:1;max-width:48vw}
    body.aspc-app .aspc-header-context strong{font-size:13px}
    body.aspc-app .top-header-area .right-side-navbar .right-side-content{
        display:none!important;position:fixed!important;top:var(--aspc-header)!important;
        left:0!important;right:0!important;width:auto!important;max-width:100%!important;
        height:auto!important;min-height:64px;flex-wrap:wrap;justify-content:flex-start;
        padding:10px max(12px,env(safe-area-inset-left)) 10px max(12px,env(safe-area-inset-right));
    }
    body.aspc-app .top-header-area .right-side-navbar .right-side-content.active{display:flex!important}
    body.aspc-app .right-side-trigger{min-width:44px;min-height:44px}
    body.aspc-app .top-header-area .nav-item.dropdown .dropdown-menu.dropdown-menu-right{
        max-height:calc(100vh - var(--aspc-header) - 90px);max-height:calc(100dvh - var(--aspc-header) - 90px);
        overflow-y:auto!important;max-width:calc(100vw - 24px)!important;
    }
    body.aspc-app input.form-control,body.aspc-app select.form-control,body.aspc-app textarea.form-control,
    body.aspc-login-page .form-control,.select2-search__field{font-size:16px!important}
    body.aspc-app .main-content h1{font-size:clamp(1.4rem,5vw,2rem);line-height:1.5;overflow-wrap:anywhere}
    .aspc-login-shell{padding:16px 12px;padding-bottom:max(16px,env(safe-area-inset-bottom));min-height:100vh;min-height:100dvh}
    .aspc-login-card,.aspc-login-form-panel{min-width:0;max-width:100%}
    .aspc-login-form-panel{padding:28px 18px}
    body.aspc-app .modal-dialog{margin-top:max(10px,env(safe-area-inset-top));margin-bottom:max(10px,env(safe-area-inset-bottom))}
}
@media screen {
    body.aspc-app .dataTables_length label,body.aspc-app .dataTables_filter label{
        display:flex;align-items:center;flex-wrap:wrap;gap:8px;max-width:100%;
    }
    body.aspc-app .dataTables_length select.form-control{width:auto!important;min-width:64px}
    body.aspc-app .dataTables_filter input.form-control{width:auto!important;min-width:0;max-width:100%;flex:1 1 120px;margin:0}
}
