:root{--brand:#111827;--accent:#0ea5e9;--muted:#64748b;--panel:#ffffff;--soft:#f1f5f9}
body{background:#f6f8fb;color:#111827}
.app-navbar{background:linear-gradient(135deg,#111827,#0f172a)}
.app-navbar .navbar-brand img{background:#fff;border-radius:.35rem;padding:.15rem}
.hero-card{background:linear-gradient(135deg,#fff,#eef8ff);border:1px solid #e2e8f0;border-radius:1.25rem;padding:2rem;display:flex;justify-content:space-between;align-items:center;box-shadow:0 20px 50px rgba(15,23,42,.08)}
.metric-card{background:#fff;border:1px solid #e2e8f0;border-radius:1rem;padding:1.1rem 1.2rem;box-shadow:0 12px 30px rgba(15,23,42,.05)}
.metric-card span{display:block;color:#64748b;font-size:.8rem;text-transform:uppercase;letter-spacing:.08em}
.metric-card strong{font-size:2rem;line-height:1.1}
.app-card{border:1px solid #e2e8f0;border-radius:1rem;box-shadow:0 12px 30px rgba(15,23,42,.05);overflow:hidden}
/* Keep sticky right-side cards below the sticky top menu.
   Bootstrap .sticky-lg-top uses top:0!important, so this page-specific
   override also needs !important to prevent the Sender card from sliding
   over the navbar while scrolling. */
.app-navbar{z-index:1040}
.settings-side{top:5.75rem!important;z-index:1000}
@media (max-width:991.98px){.settings-side{top:auto!important;z-index:auto}}
.table thead th{font-size:.76rem;text-transform:uppercase;letter-spacing:.06em;color:#64748b;background:#f8fafc}
.file-preview{background:#0f172a;color:#e5e7eb;padding:1rem;max-height:60vh;overflow:auto;font-size:.78rem}
.btn-primary{background:#008ed1;border-color:#008ed1}
.btn-primary:hover{background:#0078b4;border-color:#0078b4}
.form-label{font-weight:600;color:#334155}
.font-monospace{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}

/* Chronopost ROW/FR/ROE GB V25.01 label layout. The printed label is 100 mm x 144 mm. v2.0.0.46 improves text fit for long GB addresses/sender/contact fields without changing routing logic. */
.label-print-body{background:#d9dde5;margin:0;font-family:Arial,Helvetica,sans-serif;color:#000}
.print-toolbar{position:sticky;top:0;z-index:5;background:#111827;color:#fff;padding:10px 14px;display:flex;gap:10px;align-items:center;font-family:Arial,Helvetica,sans-serif}
.print-toolbar button,.print-toolbar a{background:#fff;color:#111827;border:0;border-radius:6px;padding:8px 12px;text-decoration:none;font-weight:700}
.label-build-id{font-size:12px;color:#d1d5db;margin-left:auto}
.no-print{display:flex}

.chrono-label{width:100mm;height:144mm;background:#fff;color:#000;border:.35mm solid #000;margin:10mm auto;box-sizing:border-box;page-break-after:always;position:relative;overflow:hidden;font-family:Arial,Helvetica,sans-serif}
.legal-line{position:absolute;left:0;top:0;width:100%;height:7mm;border-bottom:.25mm solid #000;text-align:center;font-size:6pt;font-weight:700;line-height:1.05;padding:.8mm 1.5mm 0;box-sizing:border-box;overflow:hidden}

.label-address-zone{position:absolute;left:0;top:7mm;width:100%;height:51mm;border-bottom:.25mm solid #000;box-sizing:border-box;overflow:hidden}
.delivery-address{position:absolute;left:0;top:0;width:50mm;height:36mm;border-bottom:.25mm solid #000;padding:1.2mm 1.2mm .7mm;box-sizing:border-box;font-size:5.45pt;font-weight:700;line-height:1.08;text-transform:uppercase;overflow:hidden}
.label-section-title{font-size:5.7pt;font-weight:400;text-transform:none;margin-bottom:.6mm;color:#000}
.addr-line{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:break-word;word-break:normal;hyphens:none;max-width:100%}
.city-line{margin-top:.7mm}
.delivery-side-label{position:absolute;left:50mm;top:0;width:23mm;height:36mm;/*border-left:.25mm solid #000;*/border-bottom:.25mm solid #000;display:flex;align-items:center;justify-content:center;writing-mode:vertical-rl;text-orientation:mixed;font-size:6pt;font-weight:700;box-sizing:border-box;overflow:hidden}
.sender-block{position:absolute;left:73mm;top:0;width:17mm;height:51mm;border-left:.25mm solid #000;border-right:.25mm solid #000;overflow:hidden;box-sizing:border-box}
.sender-rotated{position:absolute;left:50%;top:50%;width:49.8mm;max-height:16.5mm;transform:translate(-50%,-50%) rotate(90deg);transform-origin:center center;font-size:4.65pt;line-height:1.0;text-align:left;text-transform:uppercase;white-space:nowrap;overflow:hidden}
.sender-title{font-weight:700;text-transform:none;margin-bottom:.25mm}
.sender-rotated div{overflow:hidden;text-overflow:clip;max-width:49.8mm}
.brand-block{position:absolute;left:90mm;top:0;width:10mm;height:51mm;border-left:.25mm solid #000;display:flex;align-items:center;justify-content:center;overflow:hidden;box-sizing:border-box;padding:0}
.brand-text{display:flex;flex-direction:column;align-items:center;justify-content:center;transform:rotate(90deg);transform-origin:center center;white-space:nowrap;text-align:center;line-height:1}
.brand-name{font-size:8pt;font-weight:900;letter-spacing:.04em}
.brand-site{font-size:5.5pt;font-weight:700;margin-top:1.2mm}
.delivery-info{position:absolute;left:0;top:36mm;width:50mm;height:15mm;border-right:.25mm solid #000;padding:.7mm 1.2mm .5mm;box-sizing:border-box;font-size:6.1pt;line-height:1.02;overflow:hidden;white-space:normal}
.delivery-info div{white-space:normal;overflow:visible;overflow-wrap:break-word;word-break:normal;max-width:100%}
.weight-box{position:absolute;left:50mm;top:36mm;width:23mm;height:15mm;border-right:.25mm solid #000;padding:.9mm 1.2mm .5mm;box-sizing:border-box;line-height:1.05;overflow:hidden;white-space:nowrap}
.weight-line{margin-bottom:.25mm}
.weight-line:first-child{font-size:7pt;line-height:1}
.weight-line:first-child strong{font-size:8pt;font-weight:700}
.weight-line:last-child span{display:block;font-size:8pt;font-weight:400;line-height:1}
.weight-line:last-child strong{display:block;font-size:12pt;font-weight:700;line-height:1.05}

.chrono-zone{position:absolute;left:0;top:58mm;width:100%;height:28mm;border-bottom:.25mm solid #000;box-sizing:border-box;overflow:hidden}
.chrono-id-block{position:absolute;left:0;top:0;width:50mm;height:17mm;padding:1.1mm 1.3mm .5mm;box-sizing:border-box;overflow:hidden}
.date-small{font-size:6pt;font-weight:700;line-height:1;white-space:nowrap}
.human-barcode{font-size:10pt;line-height:1.15;letter-spacing:.07em;text-align:center;white-space:nowrap;margin-top:.3mm}
.chrono-id-barcode{display:block;width:40mm;height:6.5mm;margin:.2mm auto 0}
.customs-value{font-size:6pt;font-weight:700;line-height:1;white-space:nowrap;margin-top:.4mm}
.mar-code{position:absolute;left:50mm;top:6.5mm;width:23mm;height:8mm;text-align:center;font-size:20pt;font-weight:900;line-height:1}
.chrono-service-banner{position:absolute;left:0;bottom:1mm;width:73mm;height:11mm;display:flex;align-items:flex-end;justify-content:space-between;padding:0 3.2mm 0 1.4mm;box-sizing:border-box;font-weight:900;font-size:22pt;line-height:.9;white-space:nowrap}
.chrono-right-blank{position:absolute;left:73mm;top:0;width:27mm;height:28mm;border-left:.25mm solid #000;box-sizing:border-box}

.label-routing{position:absolute;left:0;top:86mm;width:100%;height:27mm;border-bottom:.25mm solid #000;box-sizing:border-box;overflow:hidden}
.geopost-track{position:absolute;left:1.3mm;top:1mm;font-size:10pt;letter-spacing:.02em;line-height:1;white-space:nowrap}
.track-word{font-size:5pt;font-weight:400;letter-spacing:0;line-height:1;margin-top:.2mm}
.service-text{position:absolute;right:1.4mm;top:1mm;text-align:right;font-size:10pt;line-height:1;white-space:nowrap}
.parcel-tag{position:absolute;left:2.1mm;top:10.5mm;border:.25mm solid #000;width:5.5mm;height:5.5mm;text-align:center;line-height:5mm;font-size:8pt;font-weight:700;box-sizing:border-box}
.main-routing{position:absolute;left:6mm;right:6mm;top:6.2mm;text-align:center;font-size:24pt;font-weight:900;line-height:1;white-space:nowrap;letter-spacing:0}
.origin-sort{position:absolute;left:1.6mm;bottom:3.2mm;font-size:24pt;font-weight:900;line-height:1;white-space:nowrap}
.distri-sort{position:absolute;right:1.6mm;bottom:3.2mm;font-size:24pt;font-weight:900;line-height:1;white-space:nowrap}
.routing-info{position:absolute;left:0;right:0;bottom:7.2mm;text-align:center;font-size:10pt;font-weight:700;line-height:1;white-space:nowrap}
.label-footer-line{position:absolute;left:0;right:0;bottom:1.8mm;text-align:center;font-size:6pt;line-height:1;white-space:nowrap}

.routing-barcode-box{position:absolute;left:0;top:113mm;width:100%;height:31mm;text-align:center;padding-top:2.3mm;box-sizing:border-box;overflow:hidden}
.routing-barcode{display:block;width:80mm;height:22.5mm;margin:0 auto}
.routing-text{font-weight:700;font-size:10pt;letter-spacing:.03em;line-height:1;white-space:nowrap;margin-top:.5mm}

@media print{
  body.label-print-body{background:#fff;margin:0;color:#000}
  .no-print{display:none!important}
  .chrono-label{margin:0;border:.35mm solid #000;break-after:page;page-break-after:always}
  @page{size:100mm 144mm;margin:0}
}

/* RBAC */
.login-body{background:linear-gradient(135deg,#f8fafc,#e0f2fe)}
.login-card{max-width:460px;width:100%}
.rbac-check-list{max-height:220px;overflow:auto;background:#fff}
.permission-denied{border-left:4px solid #dc3545}


/* GEODATA pre-alert: keep Consolidation controls in their own scroll area. */
.prealert-consolidation-card{max-height:calc(100vh - 6.5rem);display:flex;flex-direction:column}
.prealert-consolidation-body{overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;max-height:calc(100vh - 11rem);scrollbar-gutter:stable;padding-right:1rem}
.prealert-consolidation-body .form-control,.prealert-consolidation-body .form-select{min-width:0}
@media (max-width:991.98px){
  .prealert-consolidation-card{max-height:none}
  .prealert-consolidation-body{max-height:none;overflow:visible;scrollbar-gutter:auto}
}

/* Login screen v2.0.0.49: image captcha and password show/hide toggle. */
.login-password-toggle{min-width:3.25rem;display:flex;align-items:center;justify-content:center}
.login-password-toggle:focus{box-shadow:0 0 0 .25rem rgba(0,142,209,.15)}
.login-captcha-img{width:190px;height:58px;border:1px solid #cbd5e1;border-radius:.65rem;background:#f8fafc;object-fit:cover}
@media (max-width:420px){.login-captcha-img{width:160px;height:52px}}

