/* PrimeLink admin - mobile-first. Base rules target phones; min-width queries enhance for larger screens. */
:root{--sb:#0a2a6e;--sb2:#0f3f9c;--brand:#1470e0;--cyan:#10b4f4;--radius:14px;--sbw:268px;--tap:44px}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{font-family:'Inter','Segoe UI',system-ui,sans-serif;font-size:.95rem;overflow-x:hidden;overflow-x:clip;-webkit-tap-highlight-color:transparent}
[data-bs-theme=light] body{background:#fff}
[data-bs-theme=dark] body{background:#0a1226}
img,video,canvas,svg{max-width:100%}
.sb-lock{overflow:hidden}

/* ---- sidebar: off-canvas drawer on phones/tablets, fixed rail on desktop ---- */
.sidebar{position:fixed;top:0;bottom:0;left:0;width:min(86vw,var(--sbw));background:linear-gradient(180deg,var(--sb),#071a45);color:#cfe0ff;display:flex;flex-direction:column;z-index:1040;
  transform:translateX(-100%);visibility:hidden;transition:transform .25s,visibility 0s .25s;overscroll-behavior:contain;padding-top:env(safe-area-inset-top,0px);padding-left:env(safe-area-inset-left,0px)}
.sidebar.open{transform:none;visibility:visible;transition:transform .25s,visibility 0s;box-shadow:0 0 40px rgba(0,0,0,.35)}
.sb-backdrop{position:fixed;inset:0;background:rgba(5,15,40,.55);z-index:1035;opacity:0;pointer-events:none;transition:opacity .25s}
.sb-backdrop.show{opacity:1;pointer-events:auto}
.sidebar .brand{padding:1.1rem 1.25rem;font-weight:800;font-size:1.15rem;color:#fff;display:flex;gap:.6rem;align-items:center;letter-spacing:.2px}
.sidebar .brand i{background:linear-gradient(135deg,var(--brand),var(--cyan));width:34px;height:34px;border-radius:10px;display:grid;place-items:center}
.sidebar nav{overflow-y:auto;flex:1;padding:.25rem .75rem 1rem;-webkit-overflow-scrolling:touch}
.sidebar .grp{font-size:.68rem;text-transform:uppercase;letter-spacing:.12em;color:#7f9bd6;margin:1rem .6rem .35rem}
.sidebar a.nl{display:flex;align-items:center;gap:.7rem;color:#cfe0ff;text-decoration:none;min-height:var(--tap);padding:.55rem .75rem;border-radius:10px;margin-bottom:2px}
.sidebar a.nl:hover{background:rgba(255,255,255,.08);color:#fff}
.sidebar a.nl.active{background:linear-gradient(90deg,var(--brand),#2a8cf0);color:#fff;box-shadow:0 6px 16px rgba(20,112,224,.4)}
.sidebar a.nl i{font-size:1.05rem;width:1.2rem;text-align:center}
.sidebar .badge{margin-left:auto}
.sb-foot{padding:.9rem 1rem calc(.9rem + env(safe-area-inset-bottom,0px));border-top:1px solid rgba(255,255,255,.1);display:flex;gap:.7rem;align-items:center}
.avatar{width:38px;height:38px;border-radius:50%;background:linear-gradient(135deg,var(--brand),var(--cyan));color:#fff;display:grid;place-items:center;font-weight:700;flex:none}

/* ---- layout ---- */
.main{margin-left:0;min-height:100vh;min-height:100dvh;min-width:0}
.topbar{position:sticky;top:0;z-index:1030;background:var(--bs-body-bg);border-bottom:1px solid var(--bs-border-color);
  padding:.55rem max(.9rem,env(safe-area-inset-right,0px)) .55rem max(.9rem,env(safe-area-inset-left,0px));padding-top:calc(.55rem + env(safe-area-inset-top,0px));display:flex;align-items:center;gap:.6rem;backdrop-filter:blur(8px)}
.topbar>div:first-of-type{min-width:0}
.topbar h1{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.content{padding:1rem max(.9rem,env(safe-area-inset-right,0px)) calc(1.25rem + env(safe-area-inset-bottom,0px)) max(.9rem,env(safe-area-inset-left,0px));min-width:0}
.card{border:1px solid var(--bs-border-color);border-radius:var(--radius);box-shadow:0 2px 10px rgba(10,42,110,.05);min-width:0}
.card-header{background:transparent;border-bottom:1px solid var(--bs-border-color);font-weight:700;padding:.85rem 1rem}
.card-body{min-width:0}
.kpi{position:relative;overflow:hidden}
.kpi .ico{width:46px;height:46px;border-radius:12px;display:grid;place-items:center;font-size:1.3rem;color:#fff;flex:none}
.kpi .num{font-size:1.8rem;font-weight:800;line-height:1.1}
.g-blue{background:linear-gradient(135deg,#1470e0,#10b4f4)}.g-green{background:linear-gradient(135deg,#12b76a,#5fe3a1)}
.g-orange{background:linear-gradient(135deg,#f79009,#fdb022)}.g-purple{background:linear-gradient(135deg,#7a5af8,#a48afb)}
.table>:not(caption)>*>*{padding:.75rem 1rem}
.table thead th{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--bs-secondary-color);font-weight:700;border-bottom-width:1px;white-space:nowrap}
.table-hover>tbody>tr:hover>*{background:var(--bs-tertiary-bg)}
.table td a{overflow-wrap:anywhere}
.feed{list-style:none;margin:0;padding:0}.feed li{display:flex;gap:.75rem;padding:.65rem 1rem;border-bottom:1px solid var(--bs-border-color);min-width:0}
.feed li>div{min-width:0}
.feed li:last-child{border:0}.dot{width:9px;height:9px;border-radius:50%;background:var(--brand);margin-top:.45rem;flex:none}
.filter-tabs .nav-link{border-radius:20px;padding:.45rem .95rem;color:var(--bs-secondary-color)}
.filter-tabs .nav-link.active{background:var(--brand);color:#fff}
.star{color:#c9d2e3;cursor:pointer;background:none;border:0;font-size:1.2rem;padding:.25rem}.star.on{color:#f5b301}
.dropzone{border:2px dashed var(--bs-border-color);border-radius:var(--radius);padding:1.25rem;text-align:center;background:var(--bs-tertiary-bg)}
.toast-container{z-index:2000;max-width:100%;padding-bottom:calc(1rem + env(safe-area-inset-bottom,0px))!important}

/* ---- touch-friendly controls ---- */
.form-control,.form-select{font-size:16px}               /* stops iOS zooming into inputs */
input.form-control,select.form-select,.input-group-text{min-height:var(--tap)}
.topbar .btn,.btn:not(.btn-sm):not(.btn-close){min-height:var(--tap)}
.btn-sm{min-height:38px;min-width:38px;display:inline-flex;align-items:center;justify-content:center}
.btn-close{min-width:var(--tap);min-height:var(--tap);background-position:center}
.modal-header .btn-close{margin:0}
.dropdown-item{min-height:var(--tap);display:flex;align-items:center}
.form-check-input{width:1.25em;height:1.25em;margin-top:.15em}
.form-switch .form-check-input{width:2.4em}
.form-check{min-height:var(--tap);display:flex;align-items:center;gap:.5rem;padding-left:0}
.form-check .form-check-input{float:none;margin:0;flex:none}
.input-group[style*="max-width"]{width:100%}

/* ---- modals: full-screen sheets on phones, scrollable everywhere ---- */
.modal-dialog-scrollable .modal-content>form{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;overflow:hidden}
.modal-content{border-radius:var(--radius)}
.modal-fullscreen-sm-down .modal-content{border-radius:0}
.modal-footer{gap:.5rem}
.modal-footer .btn{flex:1 1 auto}
.modal-header{padding-top:max(1rem,env(safe-area-inset-top,0px))}
.modal-footer{padding-bottom:max(.75rem,env(safe-area-inset-bottom,0px))}

/* ---- phones: tables turn into stacked cards (no sideways scrolling) ---- */
@media (max-width:767.98px){
  .table-stack{display:block;width:100%}
  .table-stack thead{display:none}
  .table-stack tbody{display:block}
  .table-stack tr{display:block;padding:.55rem 0;border-bottom:1px solid var(--bs-border-color)}
  .table-stack tbody tr:last-child{border-bottom:0}
  .table-stack td{display:flex;align-items:center;justify-content:space-between;gap:.9rem;width:100%;border:0!important;padding:.35rem 1rem!important;
    text-align:right!important;max-width:none!important;white-space:normal!important;overflow-wrap:anywhere;background:transparent!important}
  .table-stack td::before{content:attr(data-label);flex:none;font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;font-weight:700;color:var(--bs-secondary-color);text-align:left}
  .table-stack td:not([data-label])::before{display:none}
  .table-stack td:not([data-label]){justify-content:flex-end;flex-wrap:wrap}
  .table-stack td.sb{display:block;text-align:left!important}
  .table-stack td.sb::before{display:block;margin-bottom:.2rem}
  .table-stack td[colspan]{justify-content:center;text-align:center!important}
  .table-stack td>form{margin:0;min-width:0}
  .table-stack td>div{min-width:0}
  .table-stack td select.form-select{min-width:9rem}
  .table-stack .text-truncate{white-space:normal;overflow:visible;text-overflow:clip;max-width:none!important}
  .table-stack td .badge{white-space:normal}
  .table-responsive{overflow-x:visible}
}

/* ---- login ---- */
.login-wrap{min-height:100vh;min-height:100dvh;display:grid;grid-template-columns:minmax(0,1fr)}
.login-art{display:none;background:linear-gradient(135deg,var(--sb),var(--brand) 60%,var(--cyan));color:#fff;padding:3rem;flex-direction:column;justify-content:center}
.login-wrap .brand-m{display:flex;align-items:center;gap:.6rem;font-weight:800;font-size:1.3rem;margin-bottom:1.5rem;color:var(--sb)}
.login-wrap .brand-m i{background:linear-gradient(135deg,var(--brand),var(--cyan));color:#fff;width:40px;height:40px;border-radius:12px;display:grid;place-items:center}

/* ================= tablet and up ================= */
@media (min-width:576px){
  .topbar{padding-inline:max(1.1rem,env(safe-area-inset-left,0px)) max(1.1rem,env(safe-area-inset-right,0px))}
  .content{padding-inline:max(1.1rem,env(safe-area-inset-left,0px)) max(1.1rem,env(safe-area-inset-right,0px))}
  .modal-footer .btn{flex:0 0 auto}
  .kpi .num{font-size:1.9rem}
}
@media (min-width:768px){
  .table td,.table th{white-space:normal}
  .card-header{padding:.9rem 1.15rem}
  .feed li{padding:.65rem 1.15rem}
}
@media (min-width:992px){
  .sidebar{width:var(--sbw);transform:none;visibility:visible;box-shadow:none}
  .sb-backdrop{display:none}
  .main{margin-left:var(--sbw)}
  .topbar{padding-block:.7rem;padding-top:.7rem;padding-inline:1.5rem 1.5rem;gap:1rem}
  .content{padding:1.5rem}
  .login-wrap{grid-template-columns:1.1fr 1fr}
  .login-art{display:flex}
  .login-wrap .brand-m{display:none}
}
@media (hover:none){.btn:hover{filter:none}}
@media (prefers-reduced-motion:reduce){.sidebar,.sb-backdrop{transition:none}}

/* logo chips: the logo has dark text, so it sits on a white rounded tile over the blue sidebar / login art */
.logo-chip{display:inline-flex;background:#fff;border-radius:14px;padding:8px 12px;box-shadow:0 6px 18px rgba(0,0,0,.18)}
.logo-chip img{height:34px;width:auto;display:block}.logo-chip.lg img{height:56px}
.sidebar .brand{padding:1rem 1.1rem}
