:root{--brand:#006a9a;--brand-dark:#004f73;--brand-light:#008ed1;--brand-sky:#00a3d7;--chrono-grey:#b2b2b2;--muted:#64748b;--panel:#ffffff;--soft:#f1f5f9}
body{background:#f5f8fb;color:#111827}
/* Chronopost admin theme v2.0.0.68: menu colors are matched with the attached cube logo (blue + grey). CSS only; no business logic changed. */
.app-navbar{background:linear-gradient(135deg,#004f73 0%,#006a9a 48%,#008ed1 100%);box-shadow:0 12px 30px rgba(0,80,120,.20)}
.app-navbar .navbar-brand img{background:#e9eef1;border-radius:.45rem;padding:.18rem;box-shadow:inset 0 0 0 1px rgba(255,255,255,.70)}
.app-navbar .navbar-brand span{font-weight:800;letter-spacing:.01em;color:#fff}
.app-navbar .nav-link{border-radius:.6rem;color:rgba(255,255,255,.88)!important;font-weight:600;transition:background-color .15s ease,color .15s ease}
.app-navbar .nav-link:hover,.app-navbar .nav-link:focus{background:rgba(178,178,178,.20);color:#fff!important}
.app-navbar .nav-link.active,.app-navbar .show>.nav-link{background:#fff;color:#006a9a!important;box-shadow:0 8px 20px rgba(0,80,120,.18)}
.app-navbar .dropdown-menu{border:1px solid rgba(0,106,154,.18);box-shadow:0 18px 38px rgba(15,23,42,.14);border-radius:.85rem;padding:.45rem}
.app-navbar .dropdown-item{border-radius:.55rem;color:#334155;font-weight:600}
.app-navbar .dropdown-item i{color:#006a9a}
.app-navbar .dropdown-item:hover,.app-navbar .dropdown-item:focus{background:#e6f6fc;color:#004f73}
.app-navbar .dropdown-item.active,.app-navbar .dropdown-item:active{background:#006a9a;color:#fff}
.app-navbar .dropdown-item.active i,.app-navbar .dropdown-item:active i{color:#fff}
.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:#006a9a;border-color:#006a9a}
.btn-primary:hover{background:#004f73;border-color:#004f73}
.btn-outline-primary{color:#006a9a;border-color:#006a9a}
.btn-outline-primary:hover{background:#006a9a;border-color:#006a9a;color:#fff}
.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.75 adds Godex G530 right-edge safe print layout: the printed canvas is kept crisp but made slightly narrower/inset so the right border is not clipped by the printer hardware margin; no label/routing logic changed. */
.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-page{page-break-after:always;break-after:page}
.chrono-label{width:100mm;height:144mm;background:#fff;color:#000;border:.35mm solid #000;margin:10mm auto;box-sizing:border-box;page-break-after:auto;break-after:auto;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{
  html,body{width:100mm;min-height:144mm}
  body.label-print-body{background:#fff;margin:0;padding:0;color:#000;overflow:hidden;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .no-print{display:none!important}
  /* v2.0.0.75 Godex G530 right-edge safe mode.
     The printer was clipping the physical right edge when the outer border was drawn exactly at 100mm.
     Do not use transform scaling here; instead reflow the label to a 96mm-safe canvas so text/barcodes stay
     sharp while the full right border remains inside the printable area. */
  .chrono-label-page{width:100mm;height:144mm;margin:0;padding:.6mm 0 0 0;box-sizing:border-box;overflow:hidden;background:#fff;break-after:page;page-break-after:always}
  .chrono-label{width:96mm!important;height:143mm!important;margin:0!important;border:.30mm solid #000;transform:none!important;transform-origin:top left;break-after:auto;page-break-after:auto}
  .chrono-label,.chrono-label *{text-rendering:geometricPrecision;-webkit-font-smoothing:none}
  .legal-line,.label-address-zone,.chrono-zone,.label-routing,.routing-barcode-box{width:100%}

  /* Horizontal layout reflow from 100mm to 96mm. Heights and barcode data are unchanged. */
  .delivery-address{width:48mm}
  .delivery-side-label{left:48mm;width:22mm}
  .sender-block{left:70mm;width:16.2mm}
  .sender-rotated{width:48.5mm;max-height:15.8mm;font-size:4.55pt}
  .sender-rotated div{max-width:48.5mm}
  .brand-block{left:86.2mm;width:9.8mm}
  .delivery-info{width:48mm}
  .weight-box{left:48mm;width:22mm}
  .chrono-id-block{width:48mm}
  .mar-code{left:48mm;width:22mm}
  .chrono-service-banner{width:70mm;padding-right:2.5mm}
  .chrono-right-blank{left:70mm;width:26mm}
  .main-routing{left:5mm;right:5mm;font-size:23pt}
  .service-text{right:1.1mm}
  .distri-sort{right:1.2mm}
  .routing-barcode{width:76mm}
  svg{shape-rendering:crispEdges}
  @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}}

