/* Explicit Rocker compatibility components.
 * Bootstrap/Rocker owns normal .btn, .card, .table and form controls.
 */
:root {
  --rocker-primary:#0d6efd;
  --rocker-primary-hover:#0b5ed7;
  --rocker-success:#15ca20;
  --rocker-warning:#ffc107;
  --rocker-danger:#fd3550;
  --rocker-text:#263238;
  --rocker-muted:#6c757d;
  --rocker-border:#dee2e6;
  --rocker-soft:#f8f9fa;
  --rocker-modal-shadow:0 1rem 3rem rgba(15,23,42,.22);
}

.rc-button {
  display:inline-flex;align-items:center;justify-content:center;gap:5px;min-height:34px;
  padding:.375rem .75rem;border:1px solid transparent;border-radius:5px;font-size:13px;
  font-weight:500;line-height:1.5;text-decoration:none;white-space:nowrap;cursor:pointer;
  transition:color .15s ease,background-color .15s ease,border-color .15s ease;
}
.rc-button.rc-primary{color:#fff;background:var(--rocker-primary);border-color:var(--rocker-primary)}
.rc-button.rc-primary:hover{color:#fff;background:var(--rocker-primary-hover);border-color:var(--rocker-primary-hover)}
.rc-button.rc-success{color:#fff;background:var(--rocker-success);border-color:var(--rocker-success)}
.rc-button.rc-warning{color:#212529;background:var(--rocker-warning);border-color:var(--rocker-warning)}
.rc-button.rc-danger{color:#fff;background:var(--rocker-danger);border-color:var(--rocker-danger)}
.rc-button.rc-secondary{color:var(--rocker-primary);background:#fff;border-color:var(--rocker-primary)}
.rc-button.rc-secondary:hover{color:#fff;background:var(--rocker-primary)}
.rc-button:disabled,.rc-button.disabled{pointer-events:none;opacity:.65}

/* Native Rocker button contract used across admin and agent pages. */
.rocker-button{
  display:inline-flex;align-items:center!important;justify-content:center!important;gap:5px!important;
  min-height:38px;padding:.375rem .875rem!important;border-radius:5px!important;font-size:14px!important;
  font-weight:500!important;line-height:1.5!important;text-decoration:none!important;white-space:nowrap;
  box-shadow:none!important;vertical-align:middle;transition:color .15s ease,background-color .15s ease,border-color .15s ease;
}
.rocker-button.btn-sm{min-height:32px;padding:.25rem .625rem!important;font-size:13px!important}
.rocker-button.radius-30{border-radius:30px!important}
.rocker-button>i{margin:0!important;font-size:1.05em;line-height:1}
.rocker-button.btn-primary{color:#fff!important;background:#0d6efd!important;border-color:#0d6efd!important}
.rocker-button.btn-primary:hover{background:#0b5ed7!important;border-color:#0a58ca!important}
.rocker-button.btn-secondary{color:#fff!important;background:#6c757d!important;border-color:#6c757d!important}
.rocker-button.btn-success{color:#fff!important;background:#198754!important;border-color:#198754!important}
.rocker-button.btn-danger{color:#fff!important;background:#dc3545!important;border-color:#dc3545!important}
.rocker-button.btn-warning{color:#212529!important;background:#ffc107!important;border-color:#ffc107!important}
.rocker-button.btn-info{color:#000!important;background:#0dcaf0!important;border-color:#0dcaf0!important}
.rocker-button.btn-outline-primary{color:#0d6efd!important;background:#fff!important;border-color:#0d6efd!important}
.rocker-button.btn-outline-secondary{color:#6c757d!important;background:#fff!important;border-color:#6c757d!important}
.rocker-button.btn-outline-success{color:#198754!important;background:#fff!important;border-color:#198754!important}
.rocker-button.btn-outline-danger{color:#dc3545!important;background:#fff!important;border-color:#dc3545!important}
.rocker-button.btn-outline-warning{color:#b78103!important;background:#fff!important;border-color:#ffc107!important}
.rocker-button.btn-outline-info{color:#087990!important;background:#fff!important;border-color:#0dcaf0!important}
.rocker-button[class*="btn-outline-"]:hover{color:#fff!important}
.rocker-button.btn-outline-primary:hover{background:#0d6efd!important}
.rocker-button.btn-outline-secondary:hover{background:#6c757d!important}
.rocker-button.btn-outline-success:hover{background:#198754!important}
.rocker-button.btn-outline-danger:hover{background:#dc3545!important}
.rocker-button.btn-outline-warning:hover{color:#212529!important;background:#ffc107!important}
.rocker-button.btn-outline-info:hover{color:#000!important;background:#0dcaf0!important}

/* Rocker input groups: input/select/label and action button form one continuous control. */
body.rocker-enhanced .input-group{display:flex;align-items:stretch;gap:0}
body.rocker-enhanced .input-group>.form-control,
body.rocker-enhanced .input-group>.form-select,
body.rocker-enhanced .input-group>.input-group-text,
body.rocker-enhanced .input-group>.btn,
body.rocker-enhanced .input-group>.rocker-button{min-height:38px;margin:0;box-shadow:none!important}
body.rocker-enhanced .input-group>:not(:first-child){margin-left:-1px!important;border-top-left-radius:0!important;border-bottom-left-radius:0!important}
body.rocker-enhanced .input-group>:not(:last-child){border-top-right-radius:0!important;border-bottom-right-radius:0!important}
body.rocker-enhanced .input-group>.form-control:focus,
body.rocker-enhanced .input-group>.form-select:focus{position:relative;z-index:3}
body.rocker-enhanced .input-group>.btn,
body.rocker-enhanced .input-group>.rocker-button{position:relative;z-index:2;flex:0 0 auto}

/* Exact Rocker ecommerce order-action treatment: compact square icons. */
.rocker-table-icon-action{
  width:34px!important;height:34px!important;min-width:34px!important;min-height:34px!important;padding:0!important;
  display:inline-flex;align-items:center!important;justify-content:center!important;background:#f1f1f1!important;
  border:1px solid #eeecec!important;border-radius:20%!important;color:#2b2a2a!important;font-size:18px!important;
  line-height:1!important;text-align:center;text-decoration:none!important;box-shadow:none!important;cursor:pointer;
}
.order-actions{align-items:center!important;justify-content:center!important;min-height:34px}
.order-actions form{display:inline-flex!important;align-items:center!important;justify-content:center!important;margin:0!important;line-height:1}
.order-actions .rocker-table-icon-action{width:34px!important;height:34px!important;padding:0!important}
.rocker-table-icon-action i,.rocker-table-icon-action svg{display:inline-flex!important;align-items:center!important;justify-content:center!important;width:18px;height:18px;margin:0!important;color:currentColor!important;font-size:18px!important;line-height:1!important;vertical-align:middle}
.rocker-table-icon-action i:before{display:block;line-height:1!important}
.rocker-table-icon-action.rocker-action-edit i{position:relative!important;top:2px!important}
.rocker-table-icon-action.rocker-action-edit{color:#0d6efd!important;background:#eaf2ff!important;border-color:#cfe2ff!important}
.rocker-table-icon-action.rocker-action-delete{color:#f41127!important;background:#fff0f2!important;border-color:#ffd2d8!important}
.rocker-table-icon-action.rocker-action-edit:hover{color:#fff!important;background:#0d6efd!important;border-color:#0d6efd!important}
.rocker-table-icon-action.rocker-action-delete:hover{color:#fff!important;background:#f41127!important;border-color:#f41127!important}
.rocker-table-icon-action:disabled{pointer-events:none;opacity:.55}

/* One-time operation feedback: readable briefly, then removed from layout. */
.page-content .alert[data-rocker-flash="scheduled"]{transition:opacity .2s ease,transform .2s ease}
.page-content .alert.rocker-flash-leave{opacity:0!important;transform:translateY(-6px);pointer-events:none}

.w-modal{position:fixed;inset:0;z-index:2147483000;display:none}
.w-modal.open{display:block}
.w-modal-backdrop{position:absolute;inset:0;background:rgba(15,23,42,.46);backdrop-filter:blur(2px)}
.w-modal-dialog{position:relative;width:calc(100% - 2rem);max-width:520px;margin:3.75rem auto 0;overflow:hidden;color:var(--rocker-text);background:#fff;border:0;border-radius:10px;box-shadow:var(--rocker-modal-shadow)}
.w-modal-head{min-height:58px;padding:1rem 1.25rem;display:flex;align-items:center;justify-content:space-between;gap:.75rem;background:#fff;border-bottom:1px solid #ededed}
.w-modal-title{font-size:1rem;font-weight:600}
.w-modal-body{padding:1.25rem;display:flex;align-items:center;justify-content:center;background:#fff}
.w-modal-body img{max-width:100%;height:auto;border:1px solid #ededed;border-radius:8px}
.w-modal-footer{padding:.875rem 1.25rem;background:var(--rocker-soft);border-top:1px solid #ededed}
.w-modal-close{width:32px;height:32px;padding:0;border:0;border-radius:50%;background:#f1f3f5;color:#6c757d;font-size:20px;line-height:1;cursor:pointer}

.rc-modal{position:fixed;inset:0;z-index:2147483000;display:none;align-items:center;justify-content:center;padding:1rem;background:rgba(15,23,42,.46);backdrop-filter:blur(2px)}
.rc-modal *{box-sizing:border-box}
.rc-modal-dialog{position:relative;width:min(520px,100%);max-height:calc(100vh - 2rem);overflow:auto;background:#fff;border:0;border-radius:10px;box-shadow:var(--rocker-modal-shadow)}
.rc-modal-dialog-lg{width:min(680px,100%)}
.rc-modal-header{display:flex;align-items:center;gap:.75rem;min-height:64px;padding:1rem 1.25rem;background:#fff;border-bottom:1px solid #ededed}
.rc-modal-heading{min-width:0;flex:1}
.rc-modal-icon{width:38px;height:38px;min-width:38px;display:inline-flex;align-items:center;justify-content:center;color:#fff;background:var(--rocker-primary);border-radius:8px;font-size:20px}
.rc-modal-title{margin:0;color:#212529;font-size:1rem;font-weight:600;line-height:1.35}
.rc-modal-subtitle{margin-top:2px;color:var(--rocker-muted);font-size:12px}
.rc-modal-close{width:32px;height:32px;margin-left:auto;padding:0;display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:50%;background:#f1f3f5;color:#6c757d;font-size:20px;line-height:1;cursor:pointer}
.rc-modal-close:hover{background:#e9ecef;color:#212529}
.rc-modal-body{padding:1.25rem;background:#fff}
.rc-modal-footer{display:flex;align-items:center;justify-content:flex-end;gap:.625rem;padding:.875rem 1.25rem;background:var(--rocker-soft);border-top:1px solid #ededed}
.rc-modal input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),.rc-modal select,.rc-modal textarea,.w-modal input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),.w-modal select,.w-modal textarea{display:block;width:100%;min-height:38px;padding:.375rem .75rem;color:#212529;background:#fff;border:1px solid #ced4da;border-radius:5px;box-shadow:none}
.rc-modal input:focus,.rc-modal select:focus,.rc-modal textarea:focus,.w-modal input:focus,.w-modal select:focus,.w-modal textarea:focus{outline:0;border-color:#86b7fe;box-shadow:0 0 0 .2rem rgba(13,110,253,.15)}

#tplPromoModal .promo-content{display:grid;gap:.75rem}
#tplPromoModal .promo-row{display:grid;grid-template-columns:100px minmax(0,1fr) auto;align-items:center;gap:.625rem;padding:.75rem;border:1px solid var(--rocker-border);border-radius:8px;background:var(--rocker-soft)}
#tplPromoModal .promo-label{min-height:36px;display:inline-flex;align-items:center;justify-content:center;gap:.35rem;padding:.375rem .625rem;border-radius:5px;color:#fff;background:var(--rocker-primary);font-size:13px;font-weight:500;white-space:nowrap}
#tplPromoModal .promo-label.cyan{background:#0dcaf0;color:#212529}
#tplPromoModal .promo-input{width:100%;min-width:0}
#tplPromoModal .promo-btn.blue{color:#fff;background:var(--rocker-primary);border-color:var(--rocker-primary)}
#tplPromoModal .promo-btn.cyan{color:#212529;background:#0dcaf0;border-color:#0dcaf0}
#tplPromoModal .promo-qrs{display:grid;grid-template-columns:1fr 1fr;gap:.875rem;margin-top:.25rem}
#tplPromoModal .promo-qr-item{display:flex;flex-direction:column;align-items:center;padding:1rem;border:1px solid var(--rocker-border);border-radius:8px;background:#fff}
#tplPromoModal .promo-qr-item img{display:block;width:160px;height:160px;padding:5px;border:1px solid #ededed;border-radius:6px;background:#fff;object-fit:contain}
#tplPromoModal .promo-qr-title{display:flex;align-items:center;gap:.35rem;margin-top:.75rem;color:var(--rocker-primary);font-size:13px;font-weight:600}
#tplPromoModal .promo-qr-title.cyan-text{color:#087990}
#tplPromoModal .promo-qr-tip{margin-top:.2rem;color:var(--rocker-muted);font-size:12px}

.sd-toast-wrap{position:fixed;left:50%;top:22px;z-index:2147483647;display:flex;flex-direction:column;gap:10px;align-items:center;pointer-events:none;transform:translateX(-50%);width:min(92vw,520px)}
.sd-toast{min-width:220px;max-width:100%;display:flex;align-items:flex-start;gap:10px;padding:12px 15px;border:1px solid #e9ecef;border-radius:8px;background:rgba(255,255,255,.98);box-shadow:0 .5rem 1rem rgba(0,0,0,.15);color:#212529;font:500 14px/1.55 "Microsoft YaHei","Segoe UI",sans-serif;opacity:0;transform:translateY(-8px) scale(.98);transition:opacity .18s ease,transform .18s ease;word-break:break-word}
.sd-toast.show{opacity:1;transform:translateY(0) scale(1)}
.sd-toast-icon{width:20px;height:20px;min-width:20px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;margin-top:1px;color:#fff;font-size:13px;font-weight:700;background:var(--rocker-primary)}
.sd-toast.success .sd-toast-icon{background:var(--rocker-success)}
.sd-toast.error .sd-toast-icon,.sd-toast.danger .sd-toast-icon{background:var(--rocker-danger)}
.sd-toast.warning .sd-toast-icon{background:#d39e00}
.sd-dialog-backdrop{position:fixed;inset:0;z-index:2147483646;display:none;align-items:center;justify-content:center;padding:1rem;background:rgba(15,23,42,.46);opacity:0;transition:opacity .18s ease;backdrop-filter:blur(2px)}
.sd-dialog-backdrop.show{display:flex;opacity:1}
.sd-dialog{width:min(440px,100%);overflow:hidden;color:#212529;background:#fff;border:0;border-radius:10px;box-shadow:var(--rocker-modal-shadow);transform:translateY(8px) scale(.985);transition:transform .18s ease;font-family:"Microsoft YaHei","Segoe UI",sans-serif}
.sd-dialog-backdrop.show .sd-dialog{transform:translateY(0) scale(1)}
.sd-dialog-head{display:flex;align-items:center;gap:.75rem;min-height:58px;padding:1rem 1.25rem;border-bottom:1px solid #ededed}
.sd-dialog-mark{width:34px;height:34px;min-width:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--rocker-primary);background:rgba(13,110,253,.1);border:1px solid rgba(13,110,253,.2);font-weight:700}
.sd-dialog.danger .sd-dialog-mark{color:var(--rocker-danger);background:rgba(253,53,80,.1);border-color:rgba(253,53,80,.2)}
.sd-dialog-title{font-size:1rem;font-weight:600;line-height:1.35;color:#212529}
.sd-dialog-msg{padding:1.25rem;color:#495057;font-size:14px;line-height:1.7;white-space:pre-wrap;word-break:break-word}
.sd-dialog-input{box-sizing:border-box;display:block;width:100%;min-height:96px;margin-top:.625rem;padding:.625rem .75rem;border:1px solid #ced4da;border-radius:5px;background:#fff;color:#212529;font:500 13px/1.55 Consolas,monospace;resize:vertical;outline:none}
.sd-dialog-input:focus{border-color:#86b7fe;box-shadow:0 0 0 .2rem rgba(13,110,253,.15)}
.sd-dialog-actions{display:flex;justify-content:flex-end;gap:.625rem;padding:.875rem 1.25rem;background:var(--rocker-soft);border-top:1px solid #ededed}
.sd-dialog-btn{min-width:76px;min-height:36px;padding:.375rem .875rem;border:1px solid #ced4da;border-radius:5px;background:#fff;color:#495057;font-size:14px;font-weight:500;cursor:pointer}
.sd-dialog-btn:hover{background:#f1f3f5}
.sd-dialog-ok{color:#fff;background:var(--rocker-primary);border-color:var(--rocker-primary)}
.sd-dialog-ok:hover{background:var(--rocker-primary-hover);border-color:var(--rocker-primary-hover)}
.sd-dialog.danger .sd-dialog-ok{background:var(--rocker-danger);border-color:var(--rocker-danger)}

@media(max-width:768px){
  .rc-modal,.sd-dialog-backdrop{padding:.5rem}
  .rc-modal-dialog,.w-modal-dialog{width:100%;max-height:calc(100vh - 1rem);max-height:calc(100dvh - 1rem);margin:.5rem auto}
  body.admin-dashboard-page .page-wrapper .page-content{padding-left:12px!important;padding-right:12px!important}
  body.admin-dashboard-page .dashboard-kpi-row{width:auto;max-width:none}
  body.admin-dashboard-page .dashboard-kpi-row>.col{min-width:0}
  body.admin-dashboard-page .dashboard-kpi-row>.col>.card{width:100%;min-width:0}
  .rocker-table-icon-action.rocker-action-edit i{top:3px!important}
  #tplPromoModal{align-items:center;padding:8px}
  #tplPromoModal .promo-box{display:flex;flex-direction:column;width:100%;max-height:calc(100vh - 16px);max-height:calc(100dvh - 16px);margin:0;border-radius:12px;overflow:hidden}
  #tplPromoModal .promo-head{min-height:58px;padding:.75rem .875rem;flex:0 0 auto}
  #tplPromoModal .promo-head-icon{width:38px;height:38px;min-width:38px;font-size:19px}
  #tplPromoModal .promo-title{font-size:16px}
  #tplPromoModal .promo-subtitle{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}
  #tplPromoModal .promo-close{width:34px;height:34px;min-width:34px}
  #tplPromoModal .promo-content{display:grid;gap:10px;padding:12px;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
  #tplPromoModal .promo-row{grid-template-columns:88px minmax(0,1fr) 64px;gap:0;padding:0;border:0;border-radius:6px;background:transparent;overflow:hidden}
  #tplPromoModal .promo-label{min-width:0;min-height:40px;padding:0 8px;border-radius:6px 0 0 6px;font-size:12px}
  #tplPromoModal .promo-input{min-width:0;min-height:40px;height:40px;padding:0 8px;border-radius:0!important;font-size:13px;line-height:40px}
  #tplPromoModal .promo-btn,#tplPromoModal .promo-btn.rocker-button{min-width:64px;min-height:40px;height:40px;padding:0 8px!important;border-radius:0 6px 6px 0!important;font-size:12px!important}
  #tplPromoModal .promo-qrs{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:0}
  #tplPromoModal .promo-qr-item{min-width:0;padding:10px 6px 9px;border-radius:7px}
  #tplPromoModal .promo-qr-item img{width:min(124px,100%);height:auto;aspect-ratio:1/1;padding:3px}
  #tplPromoModal .promo-qr-title{justify-content:center;margin-top:7px;font-size:12px;white-space:nowrap}
  #tplPromoModal .promo-qr-tip{margin-top:2px;font-size:10px;text-align:center;line-height:1.35}
}

@media(max-width:360px){
  #tplPromoModal .promo-content{padding:10px}
  #tplPromoModal .promo-row{grid-template-columns:76px minmax(0,1fr) 56px}
  #tplPromoModal .promo-label{padding:0 5px;font-size:11px}
  #tplPromoModal .promo-btn,#tplPromoModal .promo-btn.rocker-button{min-width:56px;padding:0 5px!important;font-size:11px!important}
  #tplPromoModal .promo-qr-item img{width:min(112px,100%)}
  #tplPromoModal .promo-qr-tip{display:none}
}
