/* API Hub v1.2.1 — premium component layer */
:root{--api-blue:#1267f4;--api-blue-dark:#0b4fc2;--api-navy:#071b45;--api-border:#dce5f1;--api-surface:#fff;--api-muted:#6b7b95;--api-bg:#f6f8fc;--api-danger:#ef4444;--api-success:#18a875;--api-warning:#e99a17;--api-shadow:0 18px 50px rgba(20,43,82,.14)}

/* Select2 — fully positioned custom theme (no default-theme artefacts) */
.select2-container{width:100%!important;font-size:.875rem;vertical-align:middle}.select2-container--apihub{display:inline-block;position:relative}.select2-container--apihub .select2-selection{position:relative;width:100%;min-height:42px;border:1px solid var(--api-border);border-radius:10px;background:#fff;box-shadow:none;transition:border-color .18s ease,box-shadow .18s ease,background .18s ease;outline:0}.select2-container--apihub .select2-selection--single{display:block;height:42px}.select2-container--apihub.select2-container--focus .select2-selection,.select2-container--apihub.select2-container--open .select2-selection{border-color:rgba(18,103,244,.68);box-shadow:0 0 0 3px rgba(18,103,244,.10)}.select2-container--apihub .select2-selection--single .select2-selection__rendered{display:block;height:40px;padding:0 44px 0 13px;color:#21304b;line-height:40px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container--apihub .select2-selection--single .select2-selection__placeholder{color:#8a96a9}.select2-container--apihub .select2-selection--single .select2-selection__arrow{position:absolute;top:50%;right:12px;width:22px;height:22px;transform:translateY(-50%);pointer-events:none}.select2-container--apihub .select2-selection--single .select2-selection__arrow b{position:absolute;display:block;left:50%;top:46%;width:8px;height:8px;margin:0;border:0;border-right:1.8px solid #71809a;border-bottom:1.8px solid #71809a;transform:translate(-50%,-50%) rotate(45deg);transform-origin:center;transition:transform .16s ease,top .16s ease}.select2-container--apihub.select2-container--open .select2-selection__arrow b{top:56%;transform:translate(-50%,-50%) rotate(225deg)}.select2-container--apihub .select2-selection__clear{position:absolute;right:39px;top:50%;transform:translateY(-50%);z-index:2;margin:0;color:#8c98aa;font-size:18px;line-height:1}.select2-container--apihub .select2-selection__clear:hover{color:#43536c}.select2-container--apihub .select2-selection--multiple{display:flex;align-items:center;flex-wrap:wrap;min-height:42px;padding:4px 40px 4px 8px;gap:4px}.select2-container--apihub .select2-selection--multiple .select2-selection__rendered{display:flex;align-items:center;flex-wrap:wrap;gap:4px;margin:0;padding:0;list-style:none}.select2-container--apihub .select2-selection--multiple .select2-selection__choice{display:inline-flex;align-items:center;background:#eef4ff;border:1px solid #d7e5ff;border-radius:7px;color:#1759c7;margin:0;padding:3px 8px}.select2-container--apihub .select2-selection--multiple .select2-selection__choice__remove{position:static;border:0;color:#6e8cc5;margin:0 5px 0 0;padding:0;background:transparent}.select2-container--apihub .select2-search--inline{display:inline-flex;align-items:center;flex:1;min-width:90px}.select2-container--apihub .select2-search--inline .select2-search__field{width:100%!important;margin:0!important;padding:4px 2px;border:0!important;outline:0!important;box-shadow:none!important;color:#283852}.select2-container--apihub .select2-dropdown{position:absolute;left:-100000px;z-index:1055;width:100%;border:1px solid var(--api-border);border-radius:12px;overflow:hidden;background:#fff;box-shadow:0 18px 42px rgba(24,45,81,.14)}.select2-container--apihub.select2-container--open .select2-dropdown{left:0}.select2-container--apihub .select2-dropdown--below{margin-top:6px}.select2-container--apihub .select2-dropdown--above{margin-top:-6px}.select2-container--apihub .select2-search--dropdown{display:block;padding:9px;background:#fff;border-bottom:1px solid #edf1f6}.select2-container--apihub .select2-search--dropdown .select2-search__field{width:100%;border:1px solid var(--api-border);border-radius:8px;padding:8px 10px;outline:none;color:#263650}.select2-container--apihub .select2-search--dropdown .select2-search__field:focus{border-color:#8bb6ff;box-shadow:0 0 0 3px rgba(18,103,244,.08)}.select2-container--apihub .select2-results{display:block}.select2-container--apihub .select2-results__options{max-height:260px;overflow-y:auto;margin:0;padding:5px;list-style:none}.select2-container--apihub .select2-results__option{padding:9px 10px;border-radius:8px;color:#283852;cursor:pointer}.select2-container--apihub .select2-results__option--highlighted.select2-results__option--selectable{background:#edf4ff;color:#0c55c8}.select2-container--apihub .select2-results__option--selected{background:#f5f8fd;color:#0a4cb4;font-weight:650}.select2-container--apihub .select2-results__option--disabled{color:#a6afbd;cursor:not-allowed}.select2-container--disabled .select2-selection{background:#f4f6fa!important;color:#8c97aa}.input-group .select2-container{flex:1 1 auto;width:1%!important}.form-select-sm.select2-hidden-accessible + .select2-container .select2-selection{min-height:34px}.form-select-sm.select2-hidden-accessible + .select2-container .select2-selection--single{height:34px}.form-select-sm.select2-hidden-accessible + .select2-container .select2-selection--single .select2-selection__rendered{height:32px;line-height:32px;font-size:.78rem;padding-left:10px}.form-select-sm.select2-hidden-accessible + .select2-container .select2-selection--single .select2-selection__arrow{right:8px;width:18px;height:18px}

/* SweetAlert2 — API Hub modal + toast skin */
.swal2-container{font-family:inherit}.swal2-container.api-swal-container{padding:20px;background:rgba(8,24,53,.34);backdrop-filter:blur(7px)}.swal2-popup.api-swal{position:relative;overflow:hidden;width:min(470px,calc(100vw - 32px));border-radius:22px;padding:1.65rem 1.65rem 1.4rem;border:1px solid rgba(217,227,240,.92);background:#fff;box-shadow:0 34px 100px rgba(7,28,67,.26);font-family:inherit}.swal2-popup.api-swal:before{content:'';position:absolute;left:0;right:0;top:0;height:4px;background:linear-gradient(90deg,#0f5be7,#2f7cff,#69a2ff)}.api-swal .swal2-title{font-size:1.24rem;color:#102344;font-weight:780;line-height:1.32;padding:.25rem .25rem 0}.api-swal .swal2-html-container{color:#66758e;font-size:.9rem;line-height:1.6;margin:.65rem .2rem .1rem}.api-swal .swal2-icon{width:4.35rem;height:4.35rem;margin:1.05rem auto .55rem;border-width:3px}.api-swal .swal2-actions{gap:.6rem;margin-top:1.35rem}.api-swal .swal2-close{right:12px;top:9px;color:#8b97aa;transition:transform .15s ease,color .15s ease}.api-swal .swal2-close:hover{color:#122b55;transform:rotate(8deg)}.api-swal .btn{min-width:116px;border-radius:10px;font-weight:680;padding:.62rem 1rem}.api-swal .secret-box{text-align:left;background:#f7f9fd;border:1px solid var(--api-border);border-radius:13px;padding:13px}.api-swal .secret-code{margin-top:9px;background:#0b1831;color:#dce9ff;padding:11px;border-radius:9px;overflow:auto}.api-swal .swal2-input{height:44px;margin:.8rem 0 0;border:1px solid var(--api-border);border-radius:10px;box-shadow:none;color:#263650}.api-swal .swal2-input:focus{border-color:#8bb6ff;box-shadow:0 0 0 3px rgba(18,103,244,.09)}
.swal2-popup.api-swal-toast{position:relative;overflow:hidden;width:min(390px,calc(100vw - 28px));padding:12px 14px 12px 13px;border-radius:14px;border:1px solid #dce5f1;background:#fff;box-shadow:0 18px 55px rgba(20,43,82,.18);font-family:inherit}.swal2-popup.api-swal-toast:before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--api-blue)}.api-swal-toast .swal2-title{margin:0;padding:0;color:#263650;font-size:.86rem;font-weight:700;line-height:1.35;text-align:left}.api-swal-toast .swal2-icon{margin:0 9px 0 2px;width:1.65rem;height:1.65rem;min-width:1.65rem;border-width:2px}.api-swal-toast .swal2-timer-progress-bar{height:2px;background:rgba(18,103,244,.3)}.api-swal-toast .swal2-close{font-size:1.25rem;color:#8a96a8}.api-swal-show{animation:apiSwalIn .32s cubic-bezier(.2,.85,.3,1.15) both}.api-swal-hide{animation:apiSwalOut .2s ease both}.api-swal-backdrop-show{animation:apiBackdropIn .22s ease both}.api-swal-backdrop-hide{animation:apiBackdropOut .18s ease both}.api-swal-icon-show{animation:apiIconIn .38s .08s cubic-bezier(.2,.9,.28,1.25) both}.api-toast-show{animation:apiToastIn .3s cubic-bezier(.16,.9,.3,1.08) both}.api-toast-hide{animation:apiToastOut .2s ease both}

/* Native fallback notification stack (only when SweetAlert2 is unavailable) */
.api-notification-stack{position:fixed;top:86px;right:20px;z-index:6000;display:grid;gap:10px;width:min(390px,calc(100vw - 30px));pointer-events:none}.api-notification{position:relative;overflow:hidden;display:flex;align-items:flex-start;gap:10px;padding:13px 15px 13px 14px;border:1px solid var(--api-border);border-radius:14px;background:#fff;box-shadow:0 18px 55px rgba(20,43,82,.18);color:#263650;animation:apiToastIn .3s cubic-bezier(.16,.9,.3,1.08) both;pointer-events:auto}.api-notification:before{content:'';position:absolute;inset:0 auto 0 0;width:4px;background:var(--api-blue)}.api-notification.success:before{background:var(--api-success)}.api-notification.warning:before{background:var(--api-warning)}.api-notification.error:before{background:var(--api-danger)}.api-notification i{font-size:18px;color:var(--api-blue)}.api-notification.success i{color:var(--api-success)}.api-notification.warning i{color:var(--api-warning)}.api-notification.error i{color:var(--api-danger)}.api-notification span{font-size:.84rem;font-weight:650;line-height:1.4}.api-notification.is-leaving{animation:apiToastOut .2s ease both}

/* DataTables — no generic plugin chrome */
.dt-container{font-size:.86rem}.dt-container .dt-layout-row{margin:0!important;padding:12px 14px;border-top:1px solid #edf1f7;gap:12px;align-items:center}.dt-container .dt-layout-row:first-child{display:none}.dt-container .dt-info{color:#7a879b;font-size:.8rem;padding:0!important}.dt-container .dt-length{display:flex;align-items:center;gap:7px;color:#7a879b;font-size:.8rem}.dt-container .dt-length select.dt-input{min-width:66px;border:1px solid var(--api-border);border-radius:8px;padding:6px 26px 6px 8px;background-color:#fff;color:#283852;outline:none}.dt-container .dt-paging{display:flex;justify-content:flex-end;gap:4px}.dt-container .dt-paging .dt-paging-button{min-width:34px;height:34px;border:1px solid var(--api-border)!important;border-radius:8px!important;background:#fff!important;color:#55657f!important;box-shadow:none!important;margin:0 2px!important;padding:0 9px!important}.dt-container .dt-paging .dt-paging-button:hover{border-color:#a7c5fa!important;background:#eff5ff!important;color:var(--api-blue)!important}.dt-container .dt-paging .dt-paging-button.current{background:var(--api-blue)!important;border-color:var(--api-blue)!important;color:#fff!important}.dt-container .dt-paging .dt-paging-button.disabled{opacity:.42}.dt-container table.dataTable{margin:0!important;border-collapse:separate!important;border-spacing:0!important}.dt-container table.dataTable thead th{background:#fbfcfe;color:#53627b;font-size:.74rem;text-transform:none;letter-spacing:0;border-bottom:1px solid #e7edf5!important;padding:11px 12px}.dt-container table.dataTable tbody td{border-bottom:1px solid #edf1f6!important;padding:11px 12px;vertical-align:middle}.dt-container table.dataTable tbody tr:hover>*{background:#f8fbff!important;box-shadow:none!important}.dt-container .dt-processing{border:0!important;border-radius:14px!important;background:rgba(255,255,255,.96)!important;box-shadow:var(--api-shadow)!important;color:#31415d!important;padding:16px 22px!important;z-index:9}.dt-container .dt-processing:before{content:'';display:inline-block;width:18px;height:18px;border:2px solid #d7e5fb;border-top-color:var(--api-blue);border-radius:50%;animation:apiSpin .7s linear infinite;vertical-align:-4px;margin-right:9px}.datatable-panel>.panel-footer,.datatable-panel>.table-footer{display:none!important}table.dataTable.dtr-inline.collapsed>tbody>tr>td.dtr-control:before{background:var(--api-blue)!important;border:0!important;box-shadow:none!important}.dtr-details{width:100%;padding:5px 0}.dtr-details li{display:flex!important;justify-content:space-between;gap:15px;padding:7px 0!important;border-bottom:1px solid #edf1f6!important}.dtr-title{color:#6c7890;font-weight:600!important}

/* Full-screen API loader */
.app-loader{background:rgba(246,249,254,.92)!important;backdrop-filter:blur(9px);transition:opacity .32s ease,visibility .32s ease}.app-loader .loader-card{min-width:235px;border:1px solid rgba(215,226,242,.9);border-radius:22px!important;padding:28px 30px 24px!important;background:rgba(255,255,255,.96)!important;box-shadow:0 28px 90px rgba(9,35,80,.16)!important}.app-loader .loader-mark{position:relative;width:62px!important;height:62px!important;margin:0 auto 18px!important;border-radius:18px!important;background:linear-gradient(145deg,#1972ff,#0b54d7)!important;color:#fff;display:grid!important;place-items:center;font-size:25px;box-shadow:0 12px 35px rgba(18,103,244,.28);animation:apiCore 1.8s ease-in-out infinite}.app-loader .loader-mark:before,.app-loader .loader-mark:after{content:'';position:absolute;inset:-12px;border-radius:25px;border:1.5px solid rgba(18,103,244,.22);animation:apiOrbit 2.2s linear infinite}.app-loader .loader-mark:after{inset:-22px;border-style:dashed;border-color:rgba(18,103,244,.14);animation-duration:3.2s;animation-direction:reverse}.app-loader .loader-line{height:4px!important;background:#e8eef9!important;border-radius:20px!important;overflow:hidden;width:174px;margin:0 auto 14px}.app-loader .loader-line span{height:100%;display:block;width:38%;background:linear-gradient(90deg,transparent,var(--api-blue),transparent);border-radius:20px;animation:apiScan 1.15s ease-in-out infinite}.app-loader .loader-label{text-align:center;color:#283b5d!important;font-size:.82rem!important;font-weight:650;letter-spacing:.01em}.app-loader .loader-label:after{content:' · synchronisation';color:#8490a5;font-weight:500}.app-loader.hidden{opacity:0;visibility:hidden;pointer-events:none}

/* Button / inline loaders */
.api-btn-loader{width:16px;height:16px;border-radius:50%;border:2px solid rgba(255,255,255,.42);border-top-color:#fff;display:inline-block;animation:apiSpin .65s linear infinite}.btn-light .api-btn-loader,.btn-soft .api-btn-loader{border-color:#ced9e8;border-top-color:var(--api-blue)}.btn.is-loading{pointer-events:none;display:inline-flex;align-items:center;justify-content:center;gap:8px;opacity:.92}.api-inline-loader{display:inline-flex;align-items:center;gap:9px;color:#66758e;font-size:.82rem}.api-inline-loader:before{content:'';width:19px;height:19px;border-radius:50%;border:2px solid #dbe5f3;border-top-color:var(--api-blue);animation:apiSpin .7s linear infinite}

/* API Upload — premium drag & drop component */
.upload-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.upload-block{min-width:0}.upload-block .form-label{margin-bottom:8px}.upload-hint{display:block;margin-top:7px;color:#8290a5;font-size:.75rem;line-height:1.45}.upload-hint.is-consumed{display:none}.api-upload{position:relative;min-height:172px;border:1.5px dashed #c8d7eb;border-radius:16px;background:linear-gradient(180deg,#fbfdff 0%,#f6f9ff 100%);transition:border-color .2s ease,background .2s ease,box-shadow .2s ease,transform .2s ease;overflow:hidden;outline:0}.api-upload:hover,.api-upload:focus-visible{border-color:#87b1f8;background:#f4f8ff;box-shadow:0 0 0 4px rgba(18,103,244,.06)}.api-upload.is-dragover{border-color:var(--api-blue);background:#eef5ff;box-shadow:0 0 0 4px rgba(18,103,244,.09);transform:translateY(-1px)}.api-upload.is-ready{border-style:solid;border-color:#d6e2f1;background:#fff}.api-upload-input{position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important;overflow:hidden!important}.api-upload-empty{min-height:172px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:22px 18px}.api-upload-icon{position:relative;width:54px;height:54px;border-radius:16px;display:grid;place-items:center;margin-bottom:11px;background:linear-gradient(145deg,#e9f2ff,#f5f9ff);color:var(--api-blue);font-size:25px;box-shadow:inset 0 0 0 1px #dce9fb}.api-upload-icon:after{content:'';position:absolute;inset:-5px;border:1px solid rgba(18,103,244,.12);border-radius:20px}.api-upload-title{color:#263750;font-size:.87rem;font-weight:760;line-height:1.35}.api-upload-copy{margin-top:4px;color:#7c8aa0;font-size:.78rem;line-height:1.4}.api-upload-browse{border:0;background:transparent;padding:0;color:var(--api-blue);font:inherit;font-weight:700;text-decoration:none}.api-upload-browse:hover{text-decoration:underline}.api-upload-meta{display:inline-flex;align-items:center;gap:5px;margin-top:10px;padding:5px 9px;border:1px solid #e3eaf4;border-radius:999px;background:#fff;color:#8793a7;font-size:.69rem;line-height:1.2}.api-upload-preview{min-height:172px;display:none;align-items:center;gap:14px;padding:17px}.api-upload.is-ready .api-upload-empty{display:none}.api-upload.is-ready .api-upload-preview{display:flex}.api-upload-thumb{width:92px;height:92px;flex:0 0 92px;border-radius:14px;border:1px solid #e0e8f3;background:#f5f8fd;display:grid;place-items:center;overflow:hidden;color:var(--api-blue);font-size:28px}.api-upload-thumb img{display:block;width:100%;height:100%;object-fit:contain;background:#fff;padding:8px}.api-upload-file{min-width:0;flex:1}.api-upload-file strong{display:block;color:#263750;font-size:.84rem;font-weight:760;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.api-upload-file small{display:block;margin-top:4px;color:#8190a5;font-size:.73rem}.api-upload-state{display:flex;align-items:center;gap:6px;margin-top:9px;color:var(--api-success);font-size:.72rem;font-weight:700}.api-upload-state i{font-size:14px}.api-upload-actions{display:flex;gap:7px;margin-top:11px;flex-wrap:wrap}.api-upload-action{border:1px solid #dce5f1;border-radius:8px;background:#fff;color:#4e5f78;font-size:.72rem;font-weight:680;padding:6px 9px;transition:.15s ease}.api-upload-action:hover{border-color:#b6cae7;color:var(--api-blue);background:#f8fbff}.api-upload-action.danger:hover{border-color:#f2b5b5;color:#d73535;background:#fff8f8}.api-upload-progress{position:absolute;left:0;right:0;bottom:0;height:3px;background:#eaf0f8;opacity:0;transition:opacity .16s ease}.api-upload-progress span{display:block;width:0;height:100%;background:linear-gradient(90deg,#0f5be7,#4386ff);transition:width .45s cubic-bezier(.2,.8,.25,1)}.api-upload.is-processing .api-upload-progress{opacity:1}.api-upload.is-processing .api-upload-progress span{width:100%}

@keyframes apiSpin{to{transform:rotate(360deg)}}@keyframes apiOrbit{to{transform:rotate(360deg)}}@keyframes apiCore{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-4px) scale(1.03)}}@keyframes apiScan{0%{transform:translateX(-105%)}100%{transform:translateX(270%)}}@keyframes apiSwalIn{from{opacity:0;transform:translateY(14px) scale(.965)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes apiSwalOut{to{opacity:0;transform:translateY(8px) scale(.98)}}@keyframes apiBackdropIn{from{opacity:0}to{opacity:1}}@keyframes apiBackdropOut{to{opacity:0}}@keyframes apiIconIn{from{opacity:0;transform:scale(.65) rotate(-6deg)}to{opacity:1;transform:scale(1) rotate(0)}}@keyframes apiToastIn{from{opacity:0;transform:translateX(28px) scale(.97)}to{opacity:1;transform:translateX(0) scale(1)}}@keyframes apiToastOut{to{opacity:0;transform:translateX(24px) scale(.98)}}
@media(max-width:767.98px){.upload-grid{grid-template-columns:1fr}.dt-container .dt-layout-row{flex-direction:column;align-items:stretch}.dt-container .dt-paging{justify-content:center}.dt-container .dt-info{text-align:center}.api-upload-preview{align-items:flex-start}.api-upload-thumb{width:76px;height:76px;flex-basis:76px}.api-notification-stack{top:74px;right:15px}}
@media(prefers-reduced-motion:reduce){.api-swal-show,.api-swal-hide,.api-toast-show,.api-toast-hide,.api-notification,.app-loader .loader-mark,.app-loader .loader-mark:before,.app-loader .loader-mark:after,.app-loader .loader-line span,.api-btn-loader,.api-inline-loader:before{animation:none!important}}

/* Header notifications — compact premium inbox */
.notification-menu{width:382px!important;padding:0!important;border:1px solid #dde6f1!important;border-radius:16px!important;background:#fff!important;overflow:hidden;box-shadow:0 24px 70px rgba(15,39,80,.18)!important}.notification-menu .dropdown-header{padding:14px 15px!important;background:linear-gradient(180deg,#fbfdff,#f7faff);border-bottom:1px solid #e9eef6;color:#172943}.notification-menu .dropdown-header strong{font-size:.88rem;font-weight:780}.notification-menu .dropdown-header .badge{border:1px solid #dbe6f6;background:#eef5ff!important;color:#2864bd!important;font-size:.66rem;font-weight:700;padding:5px 7px}.notification-menu .notification-item{position:relative;min-height:67px;padding:12px 15px!important;gap:11px!important;border-top:1px solid #eef2f7!important;background:#fff!important;transition:background .15s ease,transform .15s ease}.notification-menu .notification-item:first-of-type{border-top:0!important}.notification-menu .notification-item:hover{background:#f8fbff!important;transform:translateX(2px)}.notification-menu .notification-item:after{content:'';position:absolute;right:14px;top:17px;width:6px;height:6px;border-radius:50%;background:var(--api-blue);box-shadow:0 0 0 3px #eaf2ff}.notification-menu .notification-item>span:last-child{padding-right:15px;min-width:0}.notification-menu .notification-item strong{color:#253750;font-size:.78rem;font-weight:740;line-height:1.25}.notification-menu .notification-item small{color:#8592a6!important;font-size:.69rem;line-height:1.35;margin-top:4px!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.notification-menu .notification-icon{width:36px!important;height:36px!important;flex:0 0 36px;border-radius:11px!important;font-size:15px}.notification-menu .dropdown-footer{padding:11px 14px!important;border-top:1px solid #e9eef6!important;background:#fbfcff!important;color:#1267f4!important;font-size:.75rem;font-weight:740!important;transition:background .15s ease}.notification-menu .dropdown-footer:hover{background:#f2f7ff!important}.notification-count{box-shadow:0 0 0 2px #fff}
