
:root{--gp:#5b2486;--gp-dark:#3b1458;--gp-mid:#7c3caf;--gp-soft:#f1e8f8;--ink:#30263d;--muted:#756d80;--line:#e8e4ec;--bg:#f7f7fa}
*{box-sizing:border-box}
html{font-size:14px}
html,body{min-height:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;font-size:.94rem;line-height:1.42}
a{text-decoration:none}
h1{font-size:1.85rem}h2{font-size:1.65rem}h3{font-size:1.35rem}h4{font-size:1.15rem}h5,h6{font-size:1rem}
.form-control,.form-select,.btn{font-size:.9rem}
.table{font-size:.88rem}.table th{font-size:.86rem}.table td{vertical-align:middle}
.table td:first-child,.inventory-table td:first-child{font-size:.9rem;font-weight:650}
.gp-watermark{position:fixed;inset:0;background:url('/static/brand-mark.svg') no-repeat 76% 60%;background-size:min(38vw,500px);opacity:.018;pointer-events:none;z-index:0}
.gp-topbar{height:60px;position:fixed;left:0;right:0;top:0;z-index:1060;background:linear-gradient(100deg,#672792,#35124f);display:flex;align-items:center;justify-content:space-between;padding:0 16px;color:#fff;box-shadow:0 2px 12px rgba(42,18,62,.18)}
.gp-top-brand{display:flex;align-items:center;height:100%}.gp-top-brand img{height:38px;width:auto;filter:brightness(0) invert(1)}
.gp-top-actions{display:flex;align-items:center;gap:12px}.gp-user{font-size:.88rem}.gp-logout{background:#fff;color:#3f2352;border:0;min-height:36px;padding:.45rem .8rem}.gp-logout:hover{background:#f3edf7;color:#3f2352}
.gp-mobile-menu{display:none;background:transparent;border:0;color:#fff;font-size:1.65rem;line-height:1}
.gp-sidebar{position:fixed;top:60px;bottom:0;left:0;width:220px;background:#fff;border-right:1px solid var(--line);z-index:1040;padding:12px 9px 40px;overflow-y:auto}
.gp-side-home,.gp-side-nav>a,.gp-menu-group>summary{display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:9px;color:#4d4560;font-weight:500;margin-bottom:2px}
.gp-side-home{background:#efe5f8;color:#512474;font-weight:700;margin-bottom:7px}.gp-side-mark{width:24px;height:24px;border-radius:7px}
.gp-side-nav>a:hover,.gp-menu-group>summary:hover{background:#f6f2f9;color:#512474}.gp-icon{width:18px;text-align:center;color:#6b3a91;font-weight:700}
.gp-menu-group{margin:1px 0}.gp-menu-group>summary{cursor:pointer;list-style:none;justify-content:space-between}.gp-menu-group>summary::-webkit-details-marker{display:none}.gp-menu-group>summary>span:first-child{display:flex;align-items:center;gap:10px}.gp-chevron{transition:transform .15s ease;color:#816c8d}.gp-menu-group[open] .gp-chevron{transform:rotate(180deg)}
.gp-menu-group>a{display:block;padding:7px 10px 7px 39px;color:#655b70;border-radius:8px;font-size:.86rem}.gp-menu-group>a:hover{background:#f4eff7;color:#512474}
.gp-version{position:absolute;left:16px;bottom:9px;color:#a29aa9;font-size:.68rem}
.gp-main{position:relative;z-index:1;margin-left:220px;padding:82px 16px 34px;min-height:100vh}.gp-main-login{min-height:100vh;padding:0;position:relative;z-index:1}
.gp-title{color:#4c226c;font-weight:750}.btn-gp{background:linear-gradient(90deg,#6c2b98,#8a3eb8);border:0;color:#fff}.btn-gp:hover{background:#552177;color:#fff}.btn-outline-gp{color:#5b2c83;border:1px solid #5b2c83;background:#fff}
.card{border:1px solid #ece8ef;border-radius:11px;box-shadow:0 3px 14px rgba(45,30,55,.045)}.card-header{font-size:.94rem}
.muted,.text-muted{color:var(--muted)!important}
.dashboard-tile{display:block;color:inherit}.dashboard-tile .stat{transition:transform .15s ease,box-shadow .15s ease}.dashboard-tile:hover .stat{transform:translateY(-2px);box-shadow:0 8px 22px rgba(56,32,74,.09)}
.stat{border:0;min-height:98px}.stat .card-body{display:grid;grid-template-columns:43px 1fr auto;align-items:center;gap:10px;padding:15px}.stat .number{font-size:1.7rem;line-height:1;font-weight:800;color:#20182a;margin-top:4px}.stat-icon{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;font-size:1.15rem;font-weight:800}.stat-arrow{font-size:1.5rem;opacity:.7}
.stat-purple{background:linear-gradient(135deg,#f1e6fa,#fbf8fd)}.stat-purple .stat-icon{background:#e2cdf3;color:#64298e}.stat-green{background:linear-gradient(135deg,#e2f8ec,#f7fdf9)}.stat-green .stat-icon{background:#c7efd8;color:#0d9c54}.stat-orange{background:linear-gradient(135deg,#fff0d7,#fffaf0)}.stat-orange .stat-icon{background:#ffe0ac;color:#e77b00}.stat-blue{background:linear-gradient(135deg,#e1f1ff,#f6fbff)}.stat-blue .stat-icon{background:#c8e5fb;color:#1765b4}
.chart-card{height:100%;overflow:hidden}.chart-card .card-header{background:#fff;border-bottom:0;padding:14px 16px 7px;font-weight:750;color:#4a2169}.chart-card .card-body{padding:12px 16px 16px}
.donut-wrap{display:flex;align-items:center;gap:18px;min-height:190px}.donut-visual{flex:0 0 135px}.css-donut{width:135px;height:135px;border-radius:50%;background:conic-gradient(#9b68d4 0 var(--p1),#2e78df var(--p1) calc(var(--p1) + var(--p2)),#22b3a4 calc(var(--p1) + var(--p2)) 100%);position:relative}.css-donut:after{content:"";position:absolute;inset:31px;border-radius:50%;background:#fff}
.chart-legend{flex:1;min-width:0}.chart-legend>div{display:grid;grid-template-columns:11px 1fr auto;gap:7px;align-items:center;margin:9px 0;font-size:.8rem}.legend-dot{width:9px;height:9px;border-radius:50%}.legend-1{background:#9b68d4}.legend-2{background:#2e78df}.legend-3{background:#22b3a4}
.vbar-row{display:grid;grid-template-columns:minmax(95px,1.3fr) 2.4fr auto;gap:9px;align-items:center;margin:11px 0}.vbar-label{font-size:.78rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vbar-track,.status-track{height:13px;background:#f0edf3;border-radius:4px;overflow:hidden}.vbar{display:block;height:100%;border-radius:4px;min-width:2px}.fill-1{background:#9b68d4}.fill-2{background:#3e8fe7}.fill-3{background:#25b4a2}.fill-4{background:#f1a43c}.fill-5{background:#ec6a78}.fill-alert{background:#f1a43c}
.status-row{display:grid;grid-template-columns:125px 1fr 30px;gap:9px;align-items:center;margin:18px 0;font-size:.8rem}.status-track i{display:block;height:100%}.status-ok{background:#42b97b}.status-low{background:#f0a23a}
.action-buttons{display:inline-flex;gap:.3rem;align-items:center}.icon-action{width:33px;height:33px;padding:1px 5px;font-size:1rem;border:1px solid #ded8e3}.icon-delete{font-size:1.3rem;line-height:1;color:#a22f42}
.issue-thumb{width:50px;height:50px;object-fit:cover;border-radius:7px;border:1px solid #ddd;margin-right:4px}

/* Full-page login inspired by the supplied proposal, without reusing the old mark. */
.login-fullpage{position:fixed;inset:0;min-height:100vh;background:url('/static/login-background.svg') center/cover no-repeat;display:grid;place-items:center;padding:24px}
.login-overlay{position:absolute;inset:0;background:linear-gradient(90deg,rgba(25,39,54,.10),rgba(255,255,255,.04) 50%,rgba(49,18,67,.08))}
.login-center{position:relative;z-index:1;width:min(390px,92vw);padding:28px 28px 24px;border-radius:18px;background:rgba(255,255,255,.20);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:0 18px 60px rgba(24,28,36,.16)}
.login-brand-panel{text-align:center}.login-brand-logo{width:min(315px,82vw);height:auto;filter:drop-shadow(0 2px 1px rgba(255,255,255,.7))}.login-brand-panel p{margin:3px 0 18px;color:#3e3150;font-size:.82rem;font-weight:600}
.login-form-panel{display:grid;gap:9px}.login-field{height:44px;background:rgba(255,255,255,.94);border:1px solid rgba(255,255,255,.7);border-radius:7px;display:flex;align-items:center;padding:0 12px;box-shadow:0 2px 9px rgba(27,30,35,.06)}.login-field span{width:24px;color:#33273e}.login-field input{flex:1;border:0;outline:0;background:transparent;font-size:.85rem;color:#30263d}.login-field input::placeholder{color:#9a93a1}.login-button{height:44px;border:0;border-radius:7px;color:#fff;background:linear-gradient(90deg,#7330a0,#8b3db4);font-weight:700;font-size:.9rem}.login-button:hover{color:#fff;background:#602786}.login-meta{text-align:center;color:#51475a;font-size:.7rem;margin-top:10px}
.gp-offcanvas-logo{width:165px;height:auto}.gp-offcanvas a{display:block;padding:9px 8px;color:#4d4560;border-radius:8px}.gp-offcanvas a:hover{background:#f2ebf7}.mobile-group summary{padding:9px 8px;font-weight:650;cursor:pointer}.mobile-group a{padding-left:24px}
.gp-mobile-bottom{display:none}

@media(max-width:991.98px){
 html{font-size:13.5px}.gp-sidebar{display:none}.gp-main{margin-left:0;padding:76px 11px 78px}.gp-topbar{height:56px;padding:0 11px}.gp-top-brand img{height:34px}.gp-user,.gp-logout{display:none}.gp-mobile-menu{display:block}
 .gp-mobile-bottom{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;z-index:1050;background:#fff;border-top:1px solid #e6e0e9;padding:5px 4px calc(5px + env(safe-area-inset-bottom));box-shadow:0 -4px 16px rgba(40,20,55,.08)}.gp-mobile-bottom a{display:flex;flex-direction:column;align-items:center;gap:1px;color:#62576d;font-size:1rem}.gp-mobile-bottom small{font-size:.62rem}.gp-mobile-bottom a:first-child{color:#5b2486;font-weight:700}
 .gp-stat-grid .stat{min-height:90px}.stat .card-body{grid-template-columns:35px 1fr auto;padding:11px;gap:7px}.stat-icon{width:33px;height:33px;font-size:.95rem}.stat .number{font-size:1.5rem}.donut-wrap{min-height:170px}.donut-visual{flex-basis:115px}.css-donut{width:115px;height:115px}.css-donut:after{inset:27px}.btn{min-height:40px}
}
@media(max-width:575.98px){
 html{font-size:13px}.gp-main{padding-left:9px;padding-right:9px}.gp-dashboard-head p{font-size:.78rem}.stat .card-body{grid-template-columns:29px 1fr;padding:10px}.stat-arrow{display:none}.stat-icon{width:29px;height:29px}.stat .muted{font-size:.68rem}.stat .number{font-size:1.3rem}.vbar-row{grid-template-columns:1fr auto}.vbar-track{grid-column:1/-1}.vbar-label{grid-column:1}.vbar-row strong{grid-column:2}.status-row{grid-template-columns:1fr auto}.status-track{grid-column:1/-1}.donut-wrap{gap:10px}.donut-visual{flex-basis:100px}.css-donut{width:100px;height:100px}.css-donut:after{inset:23px}.chart-legend>div{font-size:.72rem;margin:7px 0}
 .inventory-table table,.inventory-table thead,.inventory-table tbody,.inventory-table th,.inventory-table td,.inventory-table tr{display:block}.inventory-table thead{display:none}.inventory-table tr{background:#fff;border-radius:.7rem;margin-bottom:.7rem;padding:.45rem .7rem;box-shadow:0 2px 8px rgba(0,0,0,.05)}.inventory-table td{border:0;border-bottom:1px solid #f0edf2;padding:.4rem 0;display:flex;justify-content:space-between;gap:1rem;text-align:right!important;font-size:.82rem}.inventory-table td:last-child{border-bottom:0}.inventory-table td::before{content:attr(data-label);font-weight:600;color:#665b6d;text-align:left}
 .login-fullpage{padding:16px}.login-center{width:min(350px,94vw);padding:22px 18px 19px}.login-brand-logo{width:min(275px,78vw)}.login-field,.login-button{height:42px}
}


/* V6.4 approved full-screen HD login */
.login-photo{
  background-image:url('/static/login-hd-background.jpg');
  background-position:center center;
  background-size:cover;
  background-repeat:no-repeat;
}
.login-photo-shade{
  position:absolute;inset:0;
  background:linear-gradient(90deg,rgba(24,40,58,.10),rgba(255,255,255,.05) 42%,rgba(31,27,45,.05));
}
.login-center-clean{
  width:min(400px,92vw);
  background:rgba(244,248,252,.34);
  border:1px solid rgba(255,255,255,.36);
  box-shadow:0 18px 60px rgba(19,31,44,.18);
  backdrop-filter:blur(9px);
  -webkit-backdrop-filter:blur(9px);
}
.login-center-clean .login-brand-logo{width:min(320px,82vw)}
.login-center-clean .login-field{background:rgba(255,255,255,.95)}
.password-toggle{border:0;background:transparent;color:#28123f;font-size:1.15rem;padding:4px 2px 4px 10px}
.login-button{display:flex;align-items:center;justify-content:center;gap:10px}
.login-options{display:flex;align-items:center;justify-content:flex-start;margin-top:2px}
.remember-label{display:flex;align-items:center;gap:7px;color:#352a45;font-size:.78rem;cursor:pointer}
.remember-label input{width:15px;height:15px;accent-color:#6f2c9d}
@media(max-width:575.98px){
  .login-photo{background-position:60% center}
  .login-center-clean{background:rgba(244,248,252,.50)}
}

/* GlasPro-M 6.6 clean full-page login */
.login66{position:fixed;inset:0;z-index:2000;display:grid;place-items:center;padding:22px;background:url('/static/login-hd-clean.jpg') center/cover no-repeat}
.login66-shade{position:absolute;inset:0;background:linear-gradient(90deg,rgba(18,39,61,.08),rgba(255,255,255,.02) 50%,rgba(20,35,55,.06))}
.login66-card{position:relative;z-index:1;width:min(440px,92vw);padding:28px 30px 24px;border:1px solid rgba(255,255,255,.72);border-radius:24px;background:rgba(240,247,253,.78);box-shadow:0 22px 70px rgba(16,34,55,.24);backdrop-filter:blur(15px);-webkit-backdrop-filter:blur(15px)}
.login66-brand{text-align:center}.login66-brand img{display:block;width:min(315px,80vw);height:auto;margin:0 auto}.login66-brand p{margin:4px 0 20px;font-size:.86rem;font-weight:600;color:#40354d}
.login66-form{display:grid;gap:12px}.login66-field{height:52px;display:flex;align-items:center;gap:10px;padding:0 15px;border-radius:10px;background:rgba(255,255,255,.96);border:1px solid rgba(219,221,228,.9);box-shadow:0 3px 12px rgba(24,37,50,.05)}
.login66-field>span{width:22px;color:#351455;font-size:1rem}.login66-field input{flex:1;min-width:0;border:0;outline:0;background:transparent;font:inherit;font-size:.88rem}.login66-field button{border:0;background:transparent;color:#351455;font-size:1.15rem;padding:4px}
.login66-options{font-size:.8rem;color:#43394c}.login66-options label{display:flex;align-items:center;gap:7px;cursor:pointer}.login66-options input{width:16px;height:16px;accent-color:#772da4}
.login66-submit{height:50px;border:0;border-radius:9px;background:linear-gradient(90deg,#70299d,#963bc1);color:#fff;font-weight:750;font-size:.95rem}.login66-submit b{margin-left:10px;font-size:1.15rem}.login66-version{text-align:center;margin-top:10px;color:#71677b;font-size:.72rem}
@media(max-width:600px){.login66{background-position:58% center;padding:14px}.login66-card{padding:23px 18px 20px;border-radius:19px;background:rgba(241,247,252,.86)}.login66-brand img{width:min(275px,78vw)}.login66-field{height:48px}.login66-submit{height:47px}}


/* GlasPro-M v6.8 mobile refinements */
.gp-top-brand-v68{display:flex!important;align-items:center;gap:9px;text-decoration:none;color:#fff}
.gp-top-brand-v68 img{width:38px!important;height:38px!important;object-fit:contain}
.gp-top-brand-v68 strong{font-size:1.22rem;line-height:1;color:#fff;white-space:nowrap}
.gp-mobile-logout-link{margin-top:8px!important;background:#f6eef9!important;color:#6a258d!important;font-weight:750!important}
.gp-bicon{width:24px;height:24px;display:grid;place-items:center}
.gp-bicon svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:2.35;stroke-linecap:round;stroke-linejoin:round}

/* Custom mobile select: replaces Android's oversized native popup with a clean in-app list. */
.gp-select{position:relative;width:100%}
.gp-native-select{position:absolute!important;opacity:0!important;pointer-events:none!important;width:1px!important;height:1px!important}
.gp-select-button{width:100%;min-height:46px;padding:.58rem 2.4rem .58rem .8rem;text-align:left;border:1px solid #d8d4dc;border-radius:.5rem;background:#fff;color:#29242d;font:inherit;position:relative;white-space:normal;line-height:1.25}
.gp-select-button:after{content:"⌄";position:absolute;right:.8rem;top:50%;transform:translateY(-54%);font-size:1.35rem;color:#302738}
.gp-select-panel{position:absolute;z-index:1200;left:0;right:0;top:calc(100% + 5px);max-height:min(48vh,360px);overflow:auto;background:#fff;border:1px solid #ddd5e2;border-radius:.65rem;box-shadow:0 14px 35px rgba(34,21,43,.18);padding:5px}
.gp-select-panel[hidden]{display:none}
.gp-select-option{display:block;width:100%;border:0;border-bottom:1px solid #eee9f1;background:#fff;text-align:left;padding:.72rem .78rem;color:#302b34;font:inherit;font-size:.88rem;line-height:1.28}
.gp-select-option:last-child{border-bottom:0}.gp-select-option.selected{background:#f1e7f7;color:#572178;font-weight:700}.gp-select-option:disabled{opacity:.45}

/* Retour: more useful room for date/article, less for numeric columns. */
.gp-return-table table{table-layout:fixed;width:100%}
.gp-return-table th:nth-child(1),.gp-return-table td:nth-child(1){width:18%}
.gp-return-table th:nth-child(2),.gp-return-table td:nth-child(2){width:28%}
.gp-return-table th:nth-child(3),.gp-return-table td:nth-child(3){width:24%}
.gp-return-table th:nth-child(4),.gp-return-table td:nth-child(4){width:10%;text-align:center}
.gp-return-table th:nth-child(5),.gp-return-table td:nth-child(5){width:10%;text-align:center}
.gp-return-table th:nth-child(6),.gp-return-table td:nth-child(6){width:10%}

@media(max-width:991.98px){
  .gp-top-brand img{height:auto}
  .gp-top-brand-v68 img{width:37px!important;height:37px!important}
  .gp-top-brand-v68 strong{font-size:1.35rem}
  .gp-mobile-bottom{grid-template-columns:repeat(6,1fr);padding-left:2px;padding-right:2px}
  .gp-mobile-bottom a{min-width:0;gap:2px}
  .gp-mobile-bottom small{font-size:.57rem;white-space:nowrap}
  .gp-bicon{width:25px;height:25px}.gp-bicon svg{width:24px;height:24px;stroke-width:2.5}
  .gp-return-table{overflow-x:auto}
  .gp-return-table table{min-width:610px;font-size:.82rem}
  .gp-return-table th,.gp-return-table td{padding:.55rem .38rem;vertical-align:middle;white-space:normal;word-break:normal}
  .gp-return-table th:nth-child(1),.gp-return-table td:nth-child(1){width:17%}
  .gp-return-table th:nth-child(2),.gp-return-table td:nth-child(2){width:29%}
  .gp-return-table th:nth-child(3),.gp-return-table td:nth-child(3){width:24%}
  .gp-return-table th:nth-child(4),.gp-return-table td:nth-child(4){width:9%}
  .gp-return-table th:nth-child(5),.gp-return-table td:nth-child(5){width:10%}
  .gp-return-table th:nth-child(6),.gp-return-table td:nth-child(6){width:11%}
  .gp-return-table td form{gap:3px!important}.gp-return-table td form input{max-width:48px!important;padding:.3rem}.gp-return-table td form button{padding:.3rem .4rem;min-height:34px}
}
@media(max-width:575.98px){
  .gp-main{padding-bottom:84px}
  .gp-mobile-bottom small{font-size:.54rem}
  .gp-bicon svg{stroke-width:2.65}
  .gp-select-panel{position:fixed;left:12px;right:12px;top:18vh;max-height:62vh;border-radius:.8rem;padding:6px;box-shadow:0 20px 55px rgba(25,15,32,.28)}
  .gp-select-option{font-size:.84rem;padding:.72rem .7rem}
}

/* GlasPro-M v7.0 */
.css-donut-4{
  background:conic-gradient(
    #9b68d4 0 var(--p1),
    #2e78df var(--p1) calc(var(--p1) + var(--p2)),
    #22b3a4 calc(var(--p1) + var(--p2)) calc(var(--p1) + var(--p2) + var(--p3)),
    #ef9b3f calc(var(--p1) + var(--p2) + var(--p3)) 100%
  );
}
.legend-4{background:#ef9b3f!important}
@media(max-width:991.98px){
  .gp-user-mobile-visible{
    display:inline-block!important;
    max-width:115px;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
    color:#fff;
    font-size:.76rem;
    font-weight:650;
    margin-left:auto;
  }
  .gp-top-actions{gap:8px}
}
@media(max-width:380px){
  .gp-user-mobile-visible{max-width:86px;font-size:.7rem}
}

/* GlasPro-M v7.1 - PBM / Bus M&M */
.gp-equipment-table th{white-space:nowrap}
@media(max-width:767.98px){
 .gp-equipment-table thead{display:none}
 .gp-equipment-table,.gp-equipment-table tbody,.gp-equipment-table tr,.gp-equipment-table td{display:block;width:100%}
 .gp-equipment-table tr{padding:.6rem .75rem;border-bottom:1px solid #e5e0e8}
 .gp-equipment-table td{border:0;padding:.3rem 0;display:grid;grid-template-columns:110px 1fr;gap:.5rem}
 .gp-equipment-table td:before{content:attr(data-label);font-weight:700;color:#5a5061}
}

/* GlasPro-M v7.2 - Auto's horizontal submenu */
.gp-auto-head{display:flex;align-items:center;gap:28px;flex-wrap:wrap}
.gp-auto-tabs{display:flex;align-items:center;gap:8px}
.gp-auto-tabs a{display:inline-flex;align-items:center;justify-content:center;min-width:118px;padding:8px 15px;border:1px solid #d8d0df;border-radius:8px;background:#fff;color:#4c226c;text-decoration:none;font-weight:650;transition:.15s ease}
.gp-auto-tabs a:hover{background:#f5eef9;border-color:#bca8ca}
.gp-auto-tabs a.active{background:#ede1f5;border-color:#8a3eb8;box-shadow:inset 0 -2px 0 #6c2b98}
.gp-section-title{color:#4c226c;font-size:1.15rem;font-weight:700;margin:0 0 12px}
@media(max-width:767.98px){.gp-auto-head{gap:10px}.gp-auto-tabs{width:100%}.gp-auto-tabs a{flex:1;min-width:0;padding:8px 10px}}
