:root{
  --green-950:#031d0d;
  --green-900:#063018;
  --green-850:#0a3c20;
  --green-800:#0d4b27;
  --green-700:#176735;
  --green-600:#2f8a3d;
  --lime:#93d34f;
  --lime-soft:#e7f4dc;
  --ink:#121512;
  --muted:#666b67;
  --line:#dde2dd;
  --surface:#fff;
  --canvas:#f4f6f4;
  --blue:#3f78b6;
  --purple:#65459a;
  --gold:#efb737;
  --danger:#dc4046;
  --shadow:0 4px 15px rgba(15,39,22,.10);
  --shadow-soft:0 2px 8px rgba(15,39,22,.07);
  --radius:14px;
}
*{box-sizing:border-box}
html{min-height:100%;background:var(--canvas);scrollbar-gutter:stable;overscroll-behavior:none}
body{margin:0;min-height:100vh;color:var(--ink);background:var(--canvas);font-family:Manrope,"Segoe UI Variable Text","Segoe UI",Arial,sans-serif;font-optical-sizing:auto;font-variant-numeric:tabular-nums lining-nums;-webkit-font-smoothing:antialiased;overflow-x:hidden;overscroll-behavior:none}
html:has(body.is-login-page),body.is-login-page{background:#00371d}
html:has(body.is-login-page){height:100%;overflow:hidden}
body.is-login-page{position:relative;height:100vh;height:100svh;height:100dvh;height:calc(100dvh - var(--install-banner-h,0px));overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch}
button,input,select{font:inherit}
button{cursor:pointer}
select:not(.cycle-select){appearance:none;-webkit-appearance:none;-moz-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M5.5 7.5l4.5 4.5 4.5-4.5' stroke='%2368736d' stroke-width='1.6' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") !important;background-repeat:no-repeat !important;background-position:right 9px center !important;background-size:12px !important;padding-right:28px !important;cursor:pointer}
.svg-sprite{position:absolute;width:0;height:0;overflow:hidden}
.icon{width:1.35em;height:1.35em;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.icon{stroke-width:1.5!important}
.is-hidden{display:none!important}
.muted{color:var(--muted)}
.positive{color:var(--green-600)!important}
.negative{color:var(--danger)!important}
.nowrap{white-space:nowrap}
.skeleton{min-height:160px;display:grid;place-items:center;color:var(--muted)}
.spinner{width:30px;height:30px;border:3px solid #dce7de;border-top-color:var(--green-700);border-radius:50%;animation:spin .75s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes enter{from{opacity:0;transform:translateY(18px) scale(.992);filter:blur(2px)}to{opacity:1;transform:none;filter:none}}
@keyframes leave-content{to{opacity:.18;transform:translateY(-10px) scale(.992);filter:blur(1px)}}
@keyframes view-old{to{opacity:0;transform:translateY(-9px);filter:blur(2px)}}
@keyframes view-new{from{opacity:0;transform:translateY(16px) scale(.994);filter:blur(2px)}to{opacity:1;transform:none;filter:none}}
@keyframes screen-pass{0%{opacity:0;transform:translateX(-125%) skewX(-14deg)}18%{opacity:.16}58%{opacity:.28}100%{opacity:0;transform:translateX(360%) skewX(-14deg)}}
.view-enter{animation:enter .48s cubic-bezier(.18,.8,.2,1)}
.driver-content.is-leaving,.admin-main.is-leaving{pointer-events:none;animation:leave-content .15s ease-in both}
.screen-transition{position:fixed;z-index:99999;top:0;bottom:0;left:0;width:34vw;min-width:170px;pointer-events:none;background:linear-gradient(90deg,transparent,#b9efb33d 38%,#f3ffd15e 56%,#b9efb33d 78%,transparent);filter:blur(7px);animation:screen-pass .68s cubic-bezier(.2,.72,.2,1) both}
.test-environment-badge{position:fixed;left:50%;right:auto;transform:translateX(-50%);width:min(100%,520px);bottom:76px;z-index:100000;padding:6px 10px;background:#ffc541;color:#3d2900;font:800 .62rem/1.3 Manrope,sans-serif;letter-spacing:.04em;text-align:center;box-shadow:0 -2px 6px #0002;pointer-events:none;opacity:0;box-sizing:border-box}.test-environment-badge.badge-ready{opacity:1}.test-environment-badge.badge-top{position:static;bottom:auto;left:auto;width:auto;transform:none;display:block;padding:calc(6px + env(safe-area-inset-top)) 10px 6px;box-shadow:0 2px 6px #0002}.test-environment-badge.badge-login-card{display:none}.test-environment-badge.badge-app-shell{position:fixed;left:auto;right:auto;bottom:auto;transform:none;box-shadow:0 -2px 6px #0002}
.login-card-badge{width:min(92%,382px);margin:0 auto -22px;padding:6px 12px 24px;font-size:.58rem;line-height:1.5;text-align:center;font-weight:800;letter-spacing:.04em;color:#3d2900;background:#ffc541;border-radius:18px;box-shadow:0 6px 16px #0004;text-transform:uppercase;animation:loginCardDrop .5s ease both}
@media(min-width:1000px){.login-card-badge{display:none}}.test-environment-badge.badge-shell{position:fixed;left:auto;bottom:auto;transform:none;width:auto;max-width:280px;padding:6px 14px;border-radius:999px;box-shadow:none;text-transform:uppercase}.test-environment-badge strong{display:block;white-space:nowrap}.test-environment-badge[data-expanded="1"]{width:min(240px,calc(100vw - 16px));padding:10px;border-radius:12px;text-align:center}.test-environment-badge[data-expanded="1"] strong{font-size:.58rem}.test-badge-panel{display:grid;gap:6px;margin-top:7px;min-width:0;font-size:.62rem;line-height:1.25;letter-spacing:0;text-transform:none}.test-badge-panel span{display:block;white-space:normal}.test-badge-panel button{width:100%;border:0;border-radius:7px;padding:7px 8px;background:#0b6636;color:#fff;font:700 .62rem Manrope,sans-serif}.test-badge-panel button:last-child{background:#fff;color:#5a3b00}.test-badge-panel button:disabled{opacity:.6}

.install-banner{display:flex;align-items:center;gap:10px;padding:10px 14px;padding-top:calc(10px + env(safe-area-inset-top));background:var(--green-900);color:#fff}
.install-banner[hidden]{display:none}
.install-banner-icon{flex:none;font-size:1.35rem;line-height:1}
.install-banner-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
.install-banner-text strong{font:800 .8rem/1.25 Manrope,sans-serif}
.install-banner-text span{font:500 .68rem/1.25 Manrope,sans-serif;color:#fffc;opacity:.85}
.install-banner-btn{flex:none;border:0;border-radius:999px;padding:8px 16px;background:#fff;color:var(--green-900);font:800 .74rem Manrope,sans-serif}
.install-banner-close{flex:none;border:0;background:transparent;color:#fff;opacity:.7;font-size:1.25rem;line-height:1;padding:4px 6px}
.install-banner-close:active{opacity:1}

.install-steps-modal{position:fixed;inset:0;z-index:100001;display:flex;align-items:flex-end;justify-content:center;background:#00000066}
.install-steps-modal[hidden]{display:none}
.install-steps-card{position:relative;width:100%;max-width:420px;background:#fff;border-radius:18px 18px 0 0;padding:22px 20px calc(20px + env(safe-area-inset-bottom));box-shadow:0 -8px 24px #0003}
.install-steps-card h3{margin:0 0 14px;font:800 1rem Manrope,sans-serif;color:var(--green-900)}
.install-steps-card ol{list-style:none;margin:0;padding:0;display:grid;gap:14px}
.install-steps-card li{display:flex;align-items:flex-start;gap:10px;font:500 .82rem/1.4 Manrope,sans-serif;color:var(--ink)}
.install-steps-card li svg{width:20px;height:20px;flex:none;color:var(--green-900);margin-top:1px;vertical-align:-4px}
.install-steps-card .step-num{flex:none;width:22px;height:22px;border-radius:50%;background:var(--green-900);color:#fff;font:800 .7rem/22px Manrope,sans-serif;text-align:center}
.install-steps-close{position:absolute;top:10px;right:12px;border:0;background:transparent;font-size:1.3rem;color:var(--muted)}

/* Login */
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.login-page{min-height:100vh;min-height:100svh;min-height:100dvh;min-height:calc(100dvh - var(--install-banner-h,0px));display:grid;place-items:start center;padding:0;background:linear-gradient(155deg,#073d24 0%,#004321 56%,#00371d 100%)}
.login-stack{width:100%;min-height:100vh;min-height:100svh;min-height:100dvh;min-height:calc(100dvh - var(--install-banner-h,0px));display:flex;flex-direction:column;justify-content:flex-start}
.login-shell{position:relative;min-height:100vh;min-height:100svh;min-height:100dvh;height:100vh;height:100svh;height:100dvh;padding-bottom:calc(60px + env(safe-area-inset-bottom));display:flex;flex-direction:column;overflow:hidden;border:0;border-radius:0;color:#fff;background:linear-gradient(155deg,#073d24 0%,#004321 56%,#00371d 100%);box-shadow:none}
.login-main{flex:1;min-height:0;display:flex;flex-direction:column;justify-content:flex-start}
.login-hero{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:clamp(10px,2.5vh,20px);flex:0 1 clamp(318px,58.3vh,495px);min-height:0;overflow:hidden}
.login-hero:before{content:'';position:absolute;inset:0;background:radial-gradient(circle at 50% 78%,#86c97035 0 19%,transparent 48%),repeating-conic-gradient(from 206deg at 50% 104%,#d5efca0b 0deg 4deg,transparent 4deg 11deg);-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 40%,#000 92%,transparent 100%);mask-image:linear-gradient(to bottom,transparent 0,#000 40%,#000 92%,transparent 100%);pointer-events:none}
.login-hero:after{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 50% 74%,transparent 0 40%,#002d1775 92%);-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 40%,#000 92%,transparent 100%);mask-image:linear-gradient(to bottom,transparent 0,#000 40%,#000 92%,transparent 100%);pointer-events:none}
.bottom-fade{position:absolute;left:0;right:0;bottom:0;height:25%;pointer-events:none;z-index:3;background:linear-gradient(to bottom,rgba(0,67,33,0) 0%,rgba(0,67,33,.12) 20%,rgba(0,67,33,.42) 46%,rgba(0,67,33,.78) 70%,#004321 90%,#004321 100%)}
.login-brand{position:relative;z-index:5;flex:0 0 auto;width:max-content;padding-top:max(calc(clamp(12px,2.8vh,24px) + env(safe-area-inset-top)),44px)}
.login-brand .brand-lockup{gap:clamp(17px,4.8vw,24px)}
.login-brand img{opacity:0;transform:translateY(8px);transition:opacity .4s ease,transform .4s ease}
.login-brand img.is-loaded{opacity:1;transform:none}
.login-brand .brand-logo{width:clamp(106px,26.4vw,150px);max-height:none;border-radius:7px;clip-path:inset(0 round 7px);filter:brightness(.9) contrast(1.1) saturate(1.1)}
.login-brand .program-logo{width:clamp(108px,26.4vw,156px);height:auto;margin-left:-5px}.login-brand .brand-divider{height:auto;align-self:stretch;margin:0 2px}
.login-program-lockup{position:absolute;z-index:4;top:72px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:10px;white-space:nowrap}
.login-program-lockup img{display:block;width:210px;height:67px;object-fit:contain}
.login-program-lockup>span{display:grid;width:156px;text-align:center;font-size:1.38rem;line-height:.9}
.login-program-lockup b,.login-program-lockup strong{display:flex;width:100%;justify-content:space-between}
.login-program-lockup b{font-weight:700;color:#f4f8f5}.login-program-lockup strong{font-weight:800;color:#8dcc45}
.login-program-lockup i{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;color:#f2c536;background:radial-gradient(circle,#ffffff12,transparent 68%);filter:drop-shadow(0 0 8px #f2c53673)}
.login-program-lockup .icon{width:36px;height:36px;stroke-width:1.9}
.login-mascot-halo{display:none}
.login-mascot-frame{position:relative;z-index:3;flex:1 1 0;min-height:0;width:100%;max-width:320px;margin:0 auto;display:flex;justify-content:center;overflow:hidden;opacity:0;transform:translateY(-8px);transition:opacity .4s ease,transform .4s ease}
.login-mascot-frame.is-loaded{opacity:1;transform:none}
.login-mascot{display:block;height:100%;width:auto;max-width:100%;aspect-ratio:320/335;object-fit:cover;object-position:center top;filter:drop-shadow(0 9px 12px #001b0f59);pointer-events:none;user-select:none}
.login-auth-zone{position:relative;z-index:6;margin-top:clamp(-42px,-5.5vh,-22px)}
.login-card{--pad:clamp(12px,4vw,16px);position:relative;z-index:2;width:min(92%,382px);margin:0 auto;padding:var(--pad);background:#fff;border:1px solid #dfe6e1;border-radius:18px;color:var(--ink);box-shadow:0 15px 34px #001d1145}
.login-welcome{margin:0 0 8px}
.login-welcome h2{margin:0;color:#1a5d35;font-size:1.18rem;line-height:1.1;font-weight:800}
.login-welcome p{margin:3px 0 0;color:#4f5d54;font-size:.62rem;line-height:1.3}
.login-error{padding:9px 11px;border-radius:7px;background:#fde7e8;color:#9f262c;font-size:.68rem;line-height:1.35;margin-bottom:12px;white-space:pre-line;opacity:1;transform:translateY(0);max-height:140px;overflow:hidden;transition:opacity .3s ease,transform .3s ease,max-height .35s ease .15s,margin-bottom .35s ease .15s,padding-top .35s ease .15s,padding-bottom .35s ease .15s}.login-error.is-leaving{opacity:0;transform:translateY(-6px);max-height:0;margin-bottom:0;padding-top:0;padding-bottom:0}
.login-field{position:relative;height:46px;display:flex;align-items:center;border:1px solid #dce3de;border-radius:8px;background:#fff;transition:border-color .18s,box-shadow .18s}
.login-field~.login-field{margin-top:12px}
.login-field:focus-within{border-color:#4f9868;box-shadow:0 0 0 3px #3b8b5617}
.login-field>.icon{position:absolute;left:12px;width:17px;height:17px;color:#8c9690;stroke-width:1.6}
.login-field input{width:100%;height:100%;border:0;border-radius:inherit;padding:0 15px 0 39px;background:transparent;color:#1b2820;font:500 16px/1 Manrope,sans-serif;outline:none}
.login-field:has(.password-toggle) input{padding-right:42px}
.login-field input::placeholder{color:#949d97;font-weight:400}
.password-toggle{position:absolute;right:5px;width:36px;height:36px;display:grid;place-items:center;border:0;border-radius:7px;background:transparent;color:#77827b}
.password-toggle:hover,.password-toggle:focus-visible{background:#edf5ef;color:#176d39;outline:none}
.password-toggle .icon{width:17px;height:17px}
.login-options{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:8px 1px 0;font-size:.59rem}
.login-options label{display:flex;align-items:center;gap:6px;color:#4e5a53;white-space:nowrap}
.login-options input{width:14px;height:14px;margin:0;accent-color:#126f3d}
.login-options button{border:0;background:transparent;color:#08713b;font:700 .59rem/1 Manrope,sans-serif;padding:5px 0}
.primary-btn{width:100%;height:46px;border:0;border-radius:8px;background:linear-gradient(180deg,#117840,#096534);color:#fff;font-weight:800}
.login-shell .primary-btn{display:flex;align-items:center;justify-content:center;gap:7px;margin-top:8px;box-shadow:0 5px 12px #07552a30}
.login-shell .primary-btn .icon{width:15px;height:15px}
.login-shell .primary-btn:hover,.login-shell .primary-btn:focus-visible{background:#075f31;outline:3px solid #4aa16b33}
.login-mode-toggle{position:absolute;top:var(--pad);right:var(--pad);z-index:3;display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:1px solid #dfe6e1;border-radius:50%;background:#f4f7f5;color:#0d6b3f;padding:0;cursor:pointer;transition:background-color .15s,color .15s,border-color .15s}
.login-mode-toggle svg{width:18px;height:18px}
.login-mode-toggle:focus-visible{background:#0d6b3f;border-color:#0d6b3f;color:#fff;outline:none}
@media(hover:hover) and (pointer:fine){.login-mode-toggle:hover{background:#0d6b3f;border-color:#0d6b3f;color:#fff;outline:none}}
.login-mode-toggle-tip{position:absolute;bottom:calc(100% + 9px);right:0;white-space:nowrap;background:#1c2b22;color:#fff;font:700 .62rem Manrope,sans-serif;padding:7px 11px;border-radius:8px;opacity:0;visibility:hidden;pointer-events:none;transform:translateY(4px);transition:opacity .15s,transform .15s,visibility .15s;box-shadow:0 6px 16px #0004}
.login-mode-toggle-tip:after{content:'';position:absolute;top:100%;right:11px;border:5px solid transparent;border-top-color:#1c2b22}
.login-mode-toggle:focus-visible .login-mode-toggle-tip{opacity:1;visibility:visible;transform:translateY(0)}
@media(hover:hover) and (pointer:fine){.login-mode-toggle:hover .login-mode-toggle-tip{opacity:1;visibility:visible;transform:translateY(0)}}
.login-shell .primary-btn:disabled{opacity:.68}
.demo-login-panel{width:min(92%,382px);margin:10px auto 0;padding:10px 11px;border:1px solid #ffffff29;border-radius:12px;background:#ffffff0e;color:#fff;box-shadow:0 9px 22px #001b0e24;backdrop-filter:blur(4px)}
.demo-login-panel>summary{list-style:none;cursor:pointer;display:flex;justify-content:flex-end;align-items:center;min-height:12px}.demo-login-panel>summary::-webkit-details-marker{display:none}.demo-login-panel>summary>div,.demo-login-panel>summary>span{display:none}.demo-login-panel>summary:after{content:'';display:block;width:18px;height:18px;box-sizing:border-box;border:1px solid #ffffff55;border-radius:50%;background-image:linear-gradient(#d5e8d8,#d5e8d8),linear-gradient(#d5e8d8,#d5e8d8);background-repeat:no-repeat;background-position:center;background-size:8px 1.4px,1.4px 8px;transition:transform .32s cubic-bezier(.4,0,.2,1),background-color .32s ease}.demo-login-panel[open]>summary:after{transform:rotate(135deg);background-color:#ffffff1c}.demo-login-panel:not([open]){padding:4px 8px}.demo-login-panel:not([open]) .demo-login-head{margin-bottom:0}
.demo-login-panel:not([open]){margin-top:8px;padding:0;border:0;background:transparent;box-shadow:none;backdrop-filter:none}.demo-login-panel:not([open])>summary{min-height:20px;padding:0 2px;justify-content:center}
.demo-login-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}
.demo-login-head div{display:grid;gap:1px}.demo-login-head b{font-size:.69rem}.demo-login-head small{color:#cbd9cf;font-size:.52rem}
.demo-login-head>span{padding:3px 6px;border-radius:999px;background:#f5cf4d;color:#4b3a00;font-size:.46rem;font-weight:800;text-transform:uppercase}
.demo-login-collapse{overflow:hidden;height:0;transition:height .34s cubic-bezier(.4,0,.2,1)}
.demo-login-panel[open] .demo-login-collapse{height:auto}
.demo-login-collapse>.demo-login-list{opacity:0;transform:translateY(-4px);transition:opacity .2s ease,transform .2s ease}
.demo-login-panel[open] .demo-login-collapse>.demo-login-list{opacity:1;transform:translateY(0);transition:opacity .3s ease .1s,transform .3s ease .1s}
.demo-login-list{display:grid;grid-template-columns:1fr 1fr;gap:7px}
.demo-login-item{min-width:0;padding:8px;border:1px solid #ffffff24;border-radius:9px;background:#ffffff0c;display:flex;flex-direction:column}
.real-account-chip{align-self:flex-start;padding:2px 5px;border-radius:999px;background:#99d46c;color:#0b3e22;font-size:.42rem;font-weight:800;text-transform:uppercase}
.demo-driver-name{display:block;min-height:28px;margin-top:5px;color:#fff;font-size:.59rem;line-height:1.2}
.demo-scenario{min-height:22px;color:#cfe0d3;font-size:.47rem;line-height:1.2}
.demo-fill-btn{width:100%;height:29px;margin-top:auto;border:1px solid #ffffffb8;border-radius:7px;background:#f7fbf8;color:#0b6536;font:800 .54rem/1 Manrope,sans-serif}
.demo-fill-btn:hover,.demo-fill-btn:focus-visible{background:#dff2e4;outline:none}
.demo-shortcut-error{grid-column:1/-1;margin:0}
.demo-manager-button{width:100%;height:39px;margin-top:7px;padding:0 9px;border:1px solid #ffffff2b;border-radius:8px;background:#ffffff0d;color:#fff;display:grid;grid-template-columns:24px 1fr 16px;align-items:center;text-align:left}
.demo-manager-button>.icon{width:18px;height:18px}.demo-manager-button>.icon:last-child{width:14px;height:14px;justify-self:end}
.demo-manager-button span{display:grid}.demo-manager-button b{font-size:.58rem}.demo-manager-button small{font-size:.46rem;color:#c8d7cd}
.demo-manager-button:hover,.demo-manager-button:focus-visible{background:#ffffff1c;outline:none}
.login-footer{position:fixed;left:0;right:0;bottom:0;z-index:6;padding-bottom:env(safe-area-inset-bottom);pointer-events:none}
.login-copyright{padding:0 14px 0;color:#b8cdbd;text-align:center;font-size:.5rem;line-height:1.35;letter-spacing:.01em}
.login-version{display:block;text-align:center;color:#b8cdbd;opacity:.6;font-size:.55rem;font-weight:500;letter-spacing:.02em;padding:8px 14px 2px}

/* Shared brand */
.brand-lockup{display:flex;align-items:center;gap:10px;min-width:0}
.brand-logo{display:block;width:132px;height:auto;max-height:42px;object-fit:contain;border-radius:6px;flex:0 0 auto}
.brand-divider{display:block;width:1px;height:40px;margin-left:0;background:#ffffff55;font-size:0;flex:0 0 1px}
.program-logo{display:block;width:130px;height:45px;object-fit:contain;flex:0 1 auto;transform:translateX(-3.9%)}
.driver-top .brand-lockup{gap:17px}
.product-name{color:#fff;font-style:italic;font-size:.98rem;font-weight:600;white-space:nowrap}

/* Driver shell */
.driver-app{width:min(100%,520px);height:100vh;height:100dvh;margin:auto;background:linear-gradient(135deg,var(--green-950),#0b4824 60%,#174c2b);position:relative;box-shadow:0 0 40px #0a231333;display:flex;flex-direction:column;overflow:hidden}
.driver-top{flex:0 0 auto;height:112px;padding:calc(17px + env(safe-area-inset-top)) 20px 24px;display:flex;align-items:center;gap:12px}
.driver-top .brand-lockup{flex:1}
.driver-top .product-name{font-size:.88rem;margin-left:6px}
.cycle-select-wrap{position:relative;flex:0 0 auto;overflow:hidden;max-width:140px;opacity:1;transform:translateX(0);visibility:visible;will-change:max-width,opacity,transform;transition:max-width .52s cubic-bezier(.22,.78,.18,1),opacity .3s ease,transform .52s cubic-bezier(.22,.78,.18,1),visibility 0s linear 0s}
.cycle-select-wrap.is-hidden{display:block!important;max-width:0;opacity:0;transform:translateX(12px);visibility:hidden;pointer-events:none;transition:max-width .52s cubic-bezier(.22,.78,.18,1),opacity .24s ease,transform .52s cubic-bezier(.22,.78,.18,1),visibility 0s linear .52s}
.cycle-select{height:42px;appearance:none;border:1px solid #ffffff35;border-radius:10px;background:#0c3b22;color:#fff;font-weight:600;padding:0 34px 0 12px;outline:none}
.cycle-select-wrap .icon{position:absolute;right:10px;top:12px;color:#fff;width:17px;height:17px;pointer-events:none}
.driver-sheet{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;background:#f8faf8;border-radius:25px 25px 0 0;padding:14px 14px calc(88px + env(safe-area-inset-bottom));box-shadow:0 -8px 30px #001e0d24}
.driver-sheet.profile-mode{min-height:calc(100vh - 92px);padding-bottom:calc(88px + env(safe-area-inset-bottom))}.driver-sheet.profile-mode .driver-content{min-height:0}
.profile-card{display:grid;grid-template-columns:62px minmax(0,1fr) 20px;align-items:center;gap:13px;background:#fff;border:1px solid #e6e9e6;border-radius:12px;padding:14px 13px;box-shadow:var(--shadow);margin-bottom:13px;min-height:98px}
@keyframes profile-card-enter{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
.driver-sheet>.profile-card{animation:profile-card-enter .45s ease both}
.profile-card.profile-card-entering{animation:profile-card-enter .45s ease both}
.avatar{width:62px;height:62px;border-radius:50%;display:grid;place-items:center;color:#fff;background:#176735;box-shadow:inset 0 0 0 1px #ffffff36}
.avatar .icon{width:38px;height:38px;stroke-width:1.5}
.profile-main{min-width:0}
.profile-main h2{font-size:1.2rem;margin:0 0 5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.profile-meta{display:flex;align-items:center;gap:8px;min-width:0;color:var(--muted);font-size:.74rem}
.profile-hierarchy{display:grid;gap:4px;margin-top:9px;padding-top:8px;border-top:1px solid #edf0ed;min-width:0}
.profile-hierarchy-row{position:relative;display:grid;grid-template-columns:18px 96px minmax(0,1fr);align-items:center;gap:6px;min-width:0;color:var(--muted);font-size:.67rem}
.profile-hierarchy-icon{display:grid;place-items:center;width:18px;height:18px;color:var(--green-700)}
.profile-hierarchy-icon .icon{width:14px;height:14px;flex:0 0 auto}
.profile-hierarchy-label{white-space:nowrap}
.profile-hierarchy-row strong{min-width:0;color:#2f3430;font-size:.7rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.profile-arrow{color:#565b57}
.profile-card-expanded{display:block;padding:14px 15px 0;animation:profile-card-expand .42s cubic-bezier(.18,.8,.2,1) both}.profile-card-expanded .profile-arrow{display:none}.profile-card-expanded .profile-main{min-width:0}.profile-card-expanded .profile-view{margin:14px -1px 0;padding:14px 0 calc(14px + env(safe-area-inset-bottom));border:0;border-top:1px solid #edf0ed;border-radius:0;box-shadow:none;animation:profile-details-reveal .38s .06s ease both}
@keyframes profile-card-expand{from{opacity:.82;transform:translateY(-7px);box-shadow:0 2px 7px #0b2d1710}to{opacity:1;transform:none;box-shadow:var(--shadow)}}
@keyframes profile-details-reveal{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
.profile-card-expanded .profile-meta,.profile-card-expanded .profile-hierarchy{display:none}
.profile-card-expanded .avatar,.profile-card-expanded .profile-main{display:none}.profile-card-expanded{padding-top:0}.profile-card-expanded .profile-view{margin-top:0;border-top:0;padding-top:14px}
.driver-content{min-height:400px}
.bottom-nav{position:fixed;z-index:30;left:50%;bottom:0;transform:translateX(-50%);width:min(100%,520px);height:76px;padding:7px 12px calc(5px + env(safe-area-inset-bottom));display:grid;grid-template-columns:repeat(5,1fr);background:#fff;border-top:1px solid var(--line);box-shadow:0 -5px 18px #0b2d1712}
.driver-app.profile-layout .bottom-nav{position:fixed;left:50%;bottom:0;transform:translateX(-50%);width:min(100%,520px);margin-top:0}
.driver-app.profile-layout{background:linear-gradient(135deg,var(--green-950),#0b4824 60%,#174c2b)}
.nav-item{position:relative;border:0;background:transparent;color:#6e726f;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:.67rem;padding:2px}
.nav-item .icon{width:25px;height:25px;stroke-width:1.65}
.nav-item.active{color:var(--green-700);font-weight:600}
.nav-item.active:after{content:'';position:absolute;left:21%;right:21%;height:4px;border-radius:4px 4px 0 0;background:var(--green-700);bottom:-7px}
.surface{background:#fff;border:1px solid #e2e6e2;border-radius:var(--radius);box-shadow:var(--shadow-soft)}
.section-gap{margin-top:12px}
.section-title{font-size:1rem;margin:0}
.surface-head{display:flex;align-items:center;justify-content:space-between;padding:13px 14px 7px}
.surface-link{border:0;background:transparent;color:var(--muted);font-size:.7rem;text-decoration:underline;display:flex;align-items:center;gap:4px}

/* Driver home */
.green-hero{color:#fff;background:linear-gradient(135deg,#0b4625,#082f1a 68%,#195632);border-radius:13px;box-shadow:var(--shadow);position:relative;overflow:hidden}
.green-hero:after{content:'';position:absolute;inset:0;background:linear-gradient(135deg,transparent 62%,#ffffff08 62%);pointer-events:none}
.journey-hero{min-height:155px;padding:11px 12px}
.hero-title{font-size:1rem;margin:0 0 5px}
.status-line{display:flex;align-items:center;gap:7px;font-size:.8rem}
.journey-hero>.status-line{position:absolute;top:14px;right:15px;z-index:2;font-weight:400}
.journey-hero>.status-line{padding:5px 10px 5px 8px;border:1px solid #4c9b5b;border-radius:999px;background:#06351f;color:#fff;font-size:.64rem;box-shadow:inset 0 0 0 1px #0b2a1b}.journey-hero>.status-line .status-dot{animation:status-pulse 1.45s ease-in-out infinite}
.status-line.is-partial{color:#c0c7c2}
.status-line.is-concluded{color:#a8db73}
.status-dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex:0 0 auto}
.status-line.is-partial .status-dot{background:#79c94b;animation:status-pulse 1.45s ease-in-out infinite}
.status-line.is-concluded .status-dot{background:#9bd859;animation:none}
.status-dot.status-check{display:grid;place-items:center;width:12px;height:12px;color:#07351c;font-size:9px;font-weight:800;line-height:1}
@keyframes status-pulse{50%{opacity:.38;transform:scale(.82)}}
.journey-grid{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,32%) minmax(0,68%);align-items:center;margin-top:8px}
.journey-values{min-width:0}
.journey-values small{display:block;color:#dce9de;font-size:.72rem;margin-bottom:3px}
.journey-values strong{display:block;max-width:100%;font-size:2.25rem;line-height:1;font-weight:500;white-space:nowrap;letter-spacing:-.04em}
.journey-values strong.is-long{font-size:clamp(1.3rem,7vw,2.15rem);letter-spacing:-.06em}
.journey-values .target-value{display:block;font-size:1.65rem;color:#a9df58;margin-top:-2px}
.journey-values .target-block{margin-top:6px}
.gauge-wrap{min-width:0;text-align:center;position:relative;height:112px;display:flex;align-items:center;justify-content:center}
.gauge-svg{display:block;width:76%;height:auto;margin-left:-45%;transform:translateY(-12px);overflow:visible}
.gauge-track,.gauge-fill{fill:none;stroke-width:12;stroke-linecap:round}
.gauge-track{stroke:#6f84757a}
.gauge-fill{stroke:url(#gaugeGradient)}
.gauge-knob{fill:#fff;filter:drop-shadow(0 2px 3px #0005)}
.gauge-center{fill:#80cb4f;filter:drop-shadow(0 3px 6px #0003)}
.gauge-center.is-progress{fill:transparent;filter:none}
.gauge-center.is-neutral{fill:#718079}
.gauge-trophy{fill:none;stroke:#a9df58;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.gauge-check{fill:none;stroke:#fff;stroke-width:5;stroke-linecap:round;stroke-linejoin:round}
.gauge-neutral{fill:none;stroke:#fff;stroke-width:4;stroke-linecap:round}
.gauge-loading-dot{fill:#fff;animation:gauge-dot 1.1s ease-in-out infinite}.gauge-loading-dot:nth-child(2){animation-delay:.16s}.gauge-loading-dot:nth-child(3){animation-delay:.32s}
@keyframes gauge-dot{0%,70%,100%{opacity:.35;transform:translateY(0)}35%{opacity:1;transform:translateY(-4px)}}
.gauge-label{fill:#fff;font-size:12px;font-weight:700}
.gauge-goal-label{fill:#dff2d7}
.gauge-percent{fill:#fff;font-size:25px;font-weight:800}
.gauge-percent-label{fill:#dff2d7;font-size:10px;font-weight:600}
.gauge-result{position:absolute;right:0;top:38px;width:42%;margin:0;color:#fff;font-size:.72rem;font-weight:600;text-align:left;white-space:normal}
.gauge-result b.is-hit{white-space:nowrap}
.gauge-center.is-hit{fill:transparent;filter:none}
.gauge-result b{display:block;color:#a6df5d;font-size:.9rem;line-height:1.1;font-weight:700}
.gauge-result span{display:block;color:#fff;font-size:.76rem;line-height:1.15;margin-top:2px}
.gauge-result b.is-fail,.big-status.is-fail{color:#fff}
.gauge-result b.is-progress,.big-status.is-progress{color:#fff}
/* Rótulo "Em evolução" é intencionalmente oculto (fica só a mensagem "Faltam X para atingir a meta"); a classe continua no <b> para os seletores :has(b.is-progress) funcionarem. */
.journey-hero .gauge-result b.is-progress{display:none!important}
.gauge-no-target-message{display:none}
.gauge-wrap.no-target .gauge-result{display:none}
.gauge-wrap.no-target .gauge-no-target-message{display:block;position:absolute;right:0;top:38px;width:42%;margin:0;color:#d4ddd7;font-size:.72rem;font-weight:600;text-align:left}
.gauge-wrap.no-target .gauge-no-target-message b{display:block;color:#d5ddd8;font-size:.92rem;line-height:1.1;white-space:normal;overflow-wrap:anywhere}
.kpi-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin-top:10px;min-width:0}
.driver-kpi{min-width:0;min-height:84px;padding:11px 8px;display:grid;grid-template-columns:37px minmax(0,1fr);gap:8px;align-items:start;overflow:hidden}
.kpi-icon{width:39px;height:39px;border-radius:50%;display:grid;place-items:center;background:#176735;color:#fff;box-shadow:inset 0 0 0 1px #ffffff35,0 2px 4px #07351c25}
.kpi-icon .icon{width:23px;height:23px;stroke-width:2}
.driver-kpi .label{min-width:0;font-size:.68rem;line-height:1.2;color:#272b28;overflow-wrap:anywhere}
.driver-kpi .value{min-width:0;font-size:1.18rem;font-weight:600;color:#0c4925;line-height:1.1;margin-top:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.driver-kpi .value small{font-size:.62rem;font-weight:400;color:var(--muted)}
.driver-kpi .sub{font-size:.62rem;color:var(--green-600);margin-top:4px;white-space:nowrap}
.goal-callout{display:grid;grid-template-columns:58px 1fr;gap:12px;align-items:center;padding:13px}
.callout-medallion{width:54px;height:54px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,#489d3b,#99d66f);color:#fff}
.callout-medallion .icon{width:30px;height:30px;fill:#fff;stroke:#fff}
.kpi-icon .icon-route{stroke-width:1.5}
.kpi-icon .icon-road{stroke-width:1.5}
.kpi-icon .ranking-icon{width:21px;height:21px;stroke-width:1.5;transform:translateY(-1px)}
.kpi-icon .activity-icon{stroke-width:1.5}
.kpi-icon .fuel-icon{width:25px;height:25px;stroke-width:1.5;transform:translateX(1px)}
.evolution-icon{stroke-width:2}
.callout-medallion .evolution-icon{width:30px;height:30px;fill:none;stroke:#fff;stroke-width:1.5}
.callout-medallion .goal-face{width:42px;height:42px}.callout-medallion.is-sad{background:linear-gradient(135deg,#b9363f,#f08a83)}.callout-medallion.is-happy{background:linear-gradient(135deg,#489d3b,#99d66f)}.callout-medallion.is-neutral{background:linear-gradient(135deg,#7b8580,#b0b9b4)}.goal-copy b.neutral{color:#6c7771}
.goal-copy h3{font-size:.9rem;margin:0 0 5px}
.goal-copy p{font-size:.7rem;margin:0;line-height:1.4}
.goal-copy p+p{margin-top:5px}
.goal-copy .goal-km-needed{color:var(--ink)}.goal-copy .goal-km-needed b{color:#2f8b3f}
.admin-settings-page{display:grid;gap:14px}.admin-settings-page .admin-users-head{margin-bottom:0}
.admin-settings-page .admin-users-head{padding:12px 14px;border:1px solid #dbe5de;border-radius:14px;background:linear-gradient(130deg,#ffffff,#f2f8f3 58%,#e7f2e9)}
.admin-settings-page .admin-users-head h1{margin:0;font-size:1.14rem;color:#143223}
.admin-settings-page .admin-users-head p{margin:5px 0 0;color:#53645a;font-size:.73rem;line-height:1.4}

.admin-settings-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;align-items:start}
.admin-panel-pair{display:grid;grid-template-columns:1fr 1fr;gap:14px;align-items:stretch}
.admin-panel-pair .admin-panel{display:flex;flex-direction:column;min-height:0}
.admin-panel-pair .admin-pin-list{flex:1;min-height:0;display:flex;flex-direction:column}
.admin-panel-pair .pins-empty{flex:1}
.admin-settings-page .admin-panel{border-radius:14px;box-shadow:0 7px 18px #0b2d170d}
.admin-settings-page .admin-panel .admin-panel-head{margin-bottom:10px}
.admin-settings-page .admin-panel .admin-panel-head h2{font-size:.84rem;color:#193325}
.admin-settings-page .admin-panel .muted{margin:0 0 12px;color:#5a6960;line-height:1.45}

.admin-settings-page select,
.admin-settings-page input[type=search],
.admin-settings-page input[type=file],
.admin-settings-page input[type=date]{height:36px;border:1px solid #d7dfda;border-radius:10px;background:#fff;color:var(--ink);padding:0 10px;font-size:.68rem;outline:none;font-family:inherit}
.admin-settings-page select:focus,
.admin-settings-page input:focus{border-color:#69a776;box-shadow:0 0 0 3px #69a77622}
.admin-settings-page input[type=date]{color-scheme:light}
.admin-settings-page input[type=date]::-webkit-calendar-picker-indicator{cursor:pointer;border-radius:6px;padding:3px;opacity:.6}
.admin-settings-page input[type=date]::-webkit-calendar-picker-indicator:hover{opacity:1;background:#eef6f0}

.file-picker{display:flex;align-items:center;gap:8px;min-width:0;padding:8px;border:1px solid #dbe5de;border-radius:10px;background:#fbfefb}
.file-picker input[type=file]{position:absolute;opacity:0;pointer-events:none;width:1px;height:1px;padding:0;margin:0;border:0}
.file-picker-btn{height:30px;display:inline-flex;align-items:center;justify-content:center;padding:0 12px;border-radius:8px;border:1px solid #c2d8c8;background:#f1f8f3;color:#1a5f33;font-size:.66rem;font-weight:700;cursor:pointer;white-space:nowrap}
.file-picker-btn:hover{background:#e8f3ec}
.file-picker-name{min-width:0;flex:1;font-size:.66rem;color:#4c5e54;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.admin-settings-page .primary-btn{height:36px;border-radius:10px;font-weight:700;letter-spacing:.01em}
.pin-upload-row{display:grid;grid-template-columns:minmax(110px,130px) minmax(0,1fr) auto;gap:8px;align-items:center;padding:10px;border:1px dashed #c8d7cb;border-radius:12px;background:linear-gradient(180deg,#fbfefb,#f4f9f5)}

.pins-panel .admin-panel-head{margin-bottom:8px}

.admin-pin-list{margin-top:12px;border:1px solid #d9e4dc;border-radius:12px;background:#fff;overflow:auto}
.pins-table{width:100%;border-collapse:collapse;min-width:460px}
.pins-table thead th{position:sticky;top:0;z-index:1;padding:10px 12px;text-align:left;font-size:.64rem;letter-spacing:.04em;text-transform:uppercase;color:#5a6a5f;background:#f2f7f3;border-bottom:1px solid #d9e4dc}
.pins-table tbody td{padding:10px 12px;border-bottom:1px solid #edf2ee;vertical-align:middle;font-size:.7rem;color:#22352a}
.pins-table tbody tr:nth-child(even){background:#f7faf8}
.pins-table tbody tr:hover{background:#eef5f0}
.pins-table tbody tr:last-child td{border-bottom:0}
.pins-table td:first-child{width:40px;color:#607165}
.pins-table td:last-child{width:170px}
.pins-table .row-actions-cell{display:flex;gap:6px;flex-wrap:wrap;align-items:center;justify-content:center}
.pins-table .row-actions-cell .panel-select,.pins-table .row-actions-cell .danger-btn{height:28px;padding:0 12px;font-size:.64rem;border-radius:7px;display:inline-flex;align-items:center;line-height:1}
.pins-table-footer{margin-top:auto;flex:0 0 auto;padding:7px 12px;font-size:.62rem;color:#7c8a80;text-align:right;border-top:1px solid #d9e4dc;background:#fafcfa}
.sync-history-table td:first-child,.sync-history-table th:first-child{width:150px;color:#22352a}
.sync-history-table td:nth-child(2),.sync-history-table th:nth-child(2){width:170px}
.sync-history-table td:nth-child(3),.sync-history-table th:nth-child(3){width:72px}
.sync-history-table td:nth-child(4),.sync-history-table th:nth-child(4){width:84px}
.sync-history-table td:last-child,.sync-history-table th:last-child{width:auto}
.schedule-table td:first-child{width:auto;min-width:100px;color:#22352a}
.schedule-table td:last-child{width:160px}
.schedule-table th:first-child{min-width:100px}
.pin-preview{height:96px;border:1px solid #d9e3dc;border-radius:10px;background:#fff;display:grid;place-items:center;padding:6px}
.pin-preview-inline{width:66px;height:66px;padding:4px;border-radius:8px}
.pin-preview-inline img{width:54px;height:54px;object-fit:contain}
.pin-preview-btn{cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease}
.pin-preview-btn:hover{border-color:#69a776;box-shadow:0 0 0 3px #3b8b5617}
.image-preview-overlay{position:fixed;inset:0;z-index:999;background:#0b2317c2;display:flex;align-items:center;justify-content:center;padding:24px}
.image-preview-box{position:relative;width:min(92vw,520px);background:#fff;border-radius:16px;padding:28px;box-shadow:0 24px 60px #001d1155;display:flex;flex-direction:column;align-items:center;gap:14px}
.image-preview-box img{max-width:100%;max-height:min(70vh,460px);object-fit:contain}
.image-preview-caption{font-size:.78rem;font-weight:700;color:#193325}
.image-preview-close{position:absolute;top:10px;right:10px;width:32px;height:32px;border:0;border-radius:50%;background:#f2f7f3;color:#22352a;font-size:1.2rem;line-height:1;cursor:pointer;display:grid;place-items:center}
.image-preview-close:hover{background:#e4ede6}
.pins-empty{grid-column:1/-1;padding:16px;border:1px dashed #cfdbd2;border-radius:12px;background:#fbfefb;color:#4e6256}
.pins-empty strong{display:block;font-size:.82rem;color:#244c35}
.pins-empty p{margin:6px 0 0;font-size:.7rem;line-height:1.4}

.danger-btn{border:0;border-radius:8px;padding:6px 12px;background:#d92d39;color:#fff;cursor:pointer;font-size:.65rem;transition:filter .16s ease,transform .16s ease}
.danger-btn:hover{filter:brightness(1.05)}
.danger-btn:active{transform:translateY(1px)}

.job-picker-layout{display:grid;grid-template-columns:1.3fr .9fr;gap:10px;margin:10px 0}
.job-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-height:340px;overflow:auto;padding:2px 4px 2px 0}
.job-option-btn{height:36px;border:1px solid #dce5df;border-radius:10px;background:#fff;color:#22352a;font-size:.68rem;padding:0 10px;text-align:left;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:border-color .16s ease,box-shadow .16s ease,background .16s ease,color .16s ease}
.job-option-btn:hover{border-color:#c0d9c4;background:#f8fcf8}
.job-option-btn.is-selected{border-color:#69a776;background:#eef8eb;color:var(--green-800);box-shadow:inset 0 0 0 1px #69a776}

.job-selected-panel{padding:10px;border:1px solid #dbe5de;border-radius:12px;background:linear-gradient(180deg,#fcfefc,#f4f9f5)}
.job-selected-panel h3{margin:0 0 8px;font-size:.74rem;color:#1d3b2a}
.job-selected-tags{display:flex;flex-wrap:wrap;gap:6px;max-height:220px;overflow:auto;padding-right:3px}
.selected-job-tag{border:1px solid #bcd7c2;background:#e9f5ed;color:#194e2f;border-radius:999px;padding:4px 9px;font-size:.64rem;cursor:pointer;display:inline-flex;align-items:center;gap:5px;line-height:1.2}
.selected-job-tag span{font-weight:700}

.participant-jobs-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:10px}
.participant-jobs-actions .panel-select,
.participant-jobs-actions .primary-btn{width:auto;min-width:132px;height:34px;padding:0 14px}
.participant-jobs-actions .cancel-btn{background:#fff;color:#456052;border:1px solid #cedacf}
.participant-jobs-actions .cancel-btn:hover{background:#f5faf6}

.jobs-actions{display:flex;gap:6px}
.jobs-actions .panel-select{height:34px;font-size:.62rem;padding:0 10px}

.jobs-toolbar{display:flex;align-items:center;gap:10px;margin:10px 0 2px}
.jobs-toolbar input{flex:1;min-width:160px}
.jobs-toolbar .settings-count{margin:0}
.settings-count{margin-top:10px;color:#66736c;font-size:.75rem}
.sync-panel{grid-column:1/-1}
.sync-source-row{padding:11px 0;border-bottom:1px solid var(--line)}
.sync-source-row:first-of-type{padding-top:4px}
.sync-source-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}
.sync-source-head h3{margin:0;font-size:.76rem;color:var(--ink)}
.sync-source-head .primary-btn{width:auto;height:32px;padding:0 14px;font-size:.68rem}
.sync-source-config{margin-top:8px}
.sync-source-config summary{cursor:pointer;color:#0b7138;font-size:.66rem;font-weight:700;list-style:none}
.sync-source-config summary::-webkit-details-marker{display:none}
.sync-source-config summary:before{content:'▸ '}
.sync-source-config[open] summary:before{content:'▾ '}
.sync-source-config[open] summary{margin-bottom:8px}
.sync-field{display:grid;gap:4px;font-size:.66rem;color:#4f5550;margin-bottom:8px}
.sync-field input{height:32px;border:1px solid #dfe4df;border-radius:6px;background:#fff;padding:0 9px;font-size:.68rem;color:var(--ink)}
.sync-field input:focus{outline:none;border-color:#69a776}
.sync-tabs-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:8px 12px}
.sync-source-config .sync-save-btn{width:auto;height:30px;padding:0 12px;font-size:.66rem;margin-top:2px}
.sync-cycle-picker{margin-top:14px;max-width:320px}
.sync-cycle-picker-label{display:block;font-size:.68rem;color:#5a6960;margin-bottom:6px}
.sync-cycle-dropdown{position:relative}
.sync-cycle-dropdown-trigger{list-style:none;cursor:pointer;user-select:none;display:flex;align-items:center;justify-content:space-between;gap:8px;height:38px;padding:0 12px;border:1px solid #d7dfda;border-radius:8px;background:#fff;font-size:.7rem;color:var(--ink)}
.sync-cycle-dropdown-trigger::-webkit-details-marker{display:none}
.sync-cycle-dropdown-arrow{width:13px;height:13px;color:#68736d;transition:transform .18s ease;flex:0 0 auto}
.sync-cycle-dropdown[open] .sync-cycle-dropdown-trigger{border-color:#69a776}
.sync-cycle-dropdown[open] .sync-cycle-dropdown-arrow{transform:rotate(180deg)}
.sync-cycle-dropdown-panel{position:absolute;z-index:5;top:calc(100% + 4px);left:0;right:0;max-height:220px;overflow:auto;display:flex;flex-direction:column;gap:2px;padding:6px;border:1px solid #d7dfda;border-radius:10px;background:#fff;box-shadow:0 8px 20px #0b2d1718}
.sync-cycle-chip{display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:6px;font-size:.68rem;color:var(--ink);cursor:pointer;user-select:none}
.sync-cycle-chip:hover{background:#f5f9f6}
.sync-cycle-chip:has(input:checked){background:#e7f4ea;color:#155a29;font-weight:600}
.filter-dropdown{position:relative}
.filter-dropdown-control{display:flex;align-items:center;gap:6px;height:30px;padding:0 8px 0 10px;border:1px solid #dfe4df;border-radius:6px;background:#fff}
.filter-dropdown-control:focus-within{border-color:#69a776}
.filter-dropdown-search-icon{display:none;color:#8a938d;flex:0 0 auto}
.filter-dropdown-control:focus-within .filter-dropdown-search-icon{display:block}
.filter-dropdown-input{flex:1;min-width:0;border:0;outline:none;background:transparent;font-size:.62rem;color:var(--ink);padding:0}
.filter-dropdown-input::placeholder{color:#5a6960;opacity:1}
.filter-dropdown-toggle{flex:0 0 auto;width:18px;height:18px;padding:0;border:0;background:transparent;color:#8a938d;cursor:pointer;line-height:1;display:grid;place-items:center;border-radius:6px;transition:transform .18s ease,background .18s ease,color .18s ease}
.filter-dropdown-caret{display:block}
.filter-dropdown:has(.filter-dropdown-panel:not([hidden])) .filter-dropdown-toggle{transform:rotate(180deg);color:#1c7438}
.filter-dropdown-toggle:hover{background:#f0f4f1;color:#3a453e}
.filter-dropdown-panel{position:absolute;z-index:6;top:calc(100% + 4px);left:0;min-width:100%;width:max-content;max-width:260px;display:flex;flex-direction:column;padding:8px;border:1px solid #d7dfda;border-radius:10px;background:#fff;box-shadow:0 10px 24px #0b2d1720}
.filter-dropdown-panel[hidden]{display:none}
.filter-dropdown-list{max-height:264px;overflow-y:auto;display:flex;flex-direction:column;gap:1px;scrollbar-color:#c2d2c6 transparent;scrollbar-width:thin}
.filter-dropdown-list::-webkit-scrollbar{width:8px}
.filter-dropdown-list::-webkit-scrollbar-track{background:transparent}
.filter-dropdown-list::-webkit-scrollbar-thumb{background:#c2d2c6;border-radius:999px}
.filter-dropdown-row{display:flex;align-items:center;gap:9px;padding:2px 8px;border-radius:5px;font-size:.7rem;line-height:1.35;color:var(--ink);cursor:pointer;user-select:none}
.filter-dropdown-row:hover{background:#f5f9f6}
.filter-dropdown-row span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.filter-dropdown-row input[type=checkbox]{appearance:none;-webkit-appearance:none;box-sizing:border-box;width:14px;height:14px;min-width:14px;min-height:14px;max-width:14px;max-height:14px;border:1.5px solid #c7d4cb;border-radius:3px;background:#fff;cursor:pointer;flex:0 0 14px;position:relative;margin:0;padding:0}
.filter-dropdown-row input[type=checkbox]:checked{background:#1c7438;border-color:#1c7438}
.filter-dropdown-row input[type=checkbox]:checked::after{content:'';position:absolute;left:4px;top:1.2px;width:3px;height:7px;border:solid #fff;border-width:0 1.6px 1.6px 0;transform:rotate(45deg)}
.filter-dropdown-hint{margin:6px 2px 0;font-size:.56rem;color:#7b847e;text-align:center}
.filter-dropdown-hint[hidden]{display:none}
.filter-dropdown-actions{display:flex;justify-content:center;gap:10px;margin-top:8px;padding-top:8px;border-top:1px solid #edf2ee}
.filter-dropdown-actions button{flex:0 1 auto;min-width:88px;height:32px;padding:0 16px;border:1px solid #dfe4df;border-radius:999px;background:#fff;font-size:.66rem;font-weight:600;color:var(--ink);cursor:pointer}
.filter-dropdown-actions button:hover{background:#f5f9f6}
.filter-dropdown-actions .filter-dropdown-all{background:#1c7438;border-color:#1c7438;color:#fff}
.filter-dropdown-actions .filter-dropdown-all:hover{background:#176735}
.sync-global-actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-top:14px}
.sync-global-actions .primary-btn{width:auto;height:36px;padding:0 16px}
.publish-pending{margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}
.publish-pending h3{margin:0 0 10px;font-size:.76rem;color:var(--ink)}
.publish-pending-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;padding:9px 11px;border-radius:8px;background:#fff3d6;margin-bottom:8px;font-size:.72rem;color:#5c4200}
.publish-pending-btn{width:auto;height:32px;padding:0 14px;font-size:.68rem}
.sync-progress{display:flex;align-items:center;gap:10px;margin-top:10px}
.sync-progress-track{flex:1;height:8px;border-radius:999px;background:#e4ede6;overflow:hidden}
.sync-progress-bar{height:100%;width:0%;background:linear-gradient(90deg,#1c7438,#2b8944);border-radius:999px}
.sync-progress-label{font-size:.62rem;color:#5a6a5f;min-width:32px;text-align:right}
.sync-log{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:5px;font-size:.68rem}
.sync-log li{padding:6px 9px;border-radius:6px;background:#f4f6f4;color:#4f5550}
.sync-log li.is-ok{background:#e8f4e3;color:#176d39}
.sync-log li.is-error{background:#fde7e8;color:#9f262c}
.sync-log[hidden]{display:none}

@media(max-width:1024px){
  .admin-settings-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .job-picker-layout{grid-template-columns:1fr}
  .job-options{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:800px){
  .admin-settings-grid{grid-template-columns:1fr}
  .admin-panel-pair{grid-template-columns:1fr}
  .job-options{grid-template-columns:repeat(2,minmax(0,1fr))}
  .pin-upload-row{grid-template-columns:1fr}
  .file-picker{width:100%}
}
@media(max-width:560px){
  .jobs-toolbar{flex-direction:column;align-items:stretch}
  .jobs-actions{display:grid;grid-template-columns:1fr 1fr}
  .job-options{grid-template-columns:1fr;max-height:none;overflow:visible}
  .job-selected-tags{max-height:none}
  .participant-jobs-actions{flex-direction:column}
  .participant-jobs-actions .panel-select,
  .participant-jobs-actions .primary-btn{width:100%}
}
.sparkline{width:90px;height:55px}
.sparkline polyline{fill:none;stroke:#438b42;stroke-width:3}
.sparkline .area{fill:url(#sparkFade);stroke:none}
.events-card{padding-bottom:13px}
.events-grid{display:grid;grid-template-columns:repeat(3,1fr);padding:6px 13px 8px}
.event-metric{display:grid;grid-template-columns:36px 1fr;gap:8px;align-items:center;padding:4px 8px}
.event-metric+.event-metric{border-left:1px solid var(--line)}
.event-metric .kpi-icon{width:34px;height:34px;background:#d87916}
.event-metric .label{font-size:.67rem}
.event-metric .value{font-size:1.1rem;font-weight:700;line-height:1.1;margin-top:3px}
.event-metric .pill{display:inline-block;font-size:.6rem;border-radius:10px;padding:2px 8px;margin-top:4px;background:#dcedd6}
.event-metric.consumption .kpi-icon{background:#3676b4}.event-metric.consumption .value{color:var(--blue)}.event-metric.consumption .pill{background:#d7e8f8;color:#2668a6}
.event-metric.total .kpi-icon{background:#624596}.event-metric.total .value{color:var(--purple)}.event-metric.total .pill{background:#e3d8f3;color:#513682}
.event-bar{height:8px;border-radius:8px;overflow:hidden;display:flex;margin:4px 14px 0;background:#eef1ee}
.event-bar span:first-child{background:#d87916}.event-bar span:last-child{background:#3f78b6}

/* Evolution */
.evolution-summary{padding:14px}
.evolution-summary h2{margin:0 0 12px;font-size:1.18rem}
.evolution-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.evo-mini{color:var(--ink);background:#fff;border-radius:10px;padding:11px 9px;min-height:120px;position:relative;display:flex;flex-direction:column;container-type:inline-size}
.evo-mini.highlight{background:#eaf6e3}
.evo-mini .mini-label{font-size:.67rem;line-height:1.3;height:42px;min-height:42px;padding-right:34px;overflow-wrap:anywhere}
.evo-mini .mini-icon{position:absolute;top:10px;right:9px;width:28px;height:28px;border-radius:50%;background:#e8f4e3;color:var(--green-600);display:grid;place-items:center}
.evo-mini .mini-icon .icon{width:17px;height:17px;stroke-width: 1.5}
.icon.target-icon{stroke-width:1.5!important}
.icon.ranking-icon{stroke-width:1.5!important}
.icon.trend-icon{stroke-width:1.5!important}
.evo-mini strong{display:block;font-size:clamp(0.7rem,16cqw,1.9rem);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;color:#0a5228;margin-top:7px;font-weight:500}
.evo-mini small{color:var(--muted);font-size:.65rem}
.evo-mini>small,.evo-mini>.success-tag{margin-top:auto}
.evo-mini .success-tag{display:inline-block;background:#318d38;color:#fff;border-radius:5px;padding:4px 6px;margin-top:7px;font-size:.59rem}
.chart-card{padding:0 8px 10px;overflow:hidden}
.chart-card h3{font-size:1rem;line-height:1.2;color:var(--ink);font-weight:700;margin:12px 6px}
.chart-title-row{display:flex;align-items:center;justify-content:space-between;padding:0 6px}.chart-title-row h3{margin:12px 0}.chart-toggle{display:flex;align-items:center;gap:5px;color:var(--muted);font-size:.62rem;white-space:nowrap}.chart-toggle select{border:1px solid #d7dfda;border-radius:6px;background:#fff;color:var(--ink);font:inherit;padding:4px 22px 4px 7px;min-width:82px}
.chart-scroll{overflow-x:auto;scrollbar-width:thin;padding-bottom:2px}
.mkpe-chart-card .chart-scroll{overflow-y:hidden;scrollbar-width:none}.mkpe-chart-card .chart-scroll::-webkit-scrollbar{height:0;width:0}
.line-chart{min-width:0;height:180px;width:100%;display:block}
.line-chart.fit{min-width:0}
.line-grid{display:block;stroke:#eef1ee;stroke-width:1}
.chart-axis{stroke:#dde2dd;stroke-width:1}
.chart-vertical-grid{display:none}
.line-axis{fill:#5f645f;font-size:10px}
.line-series{fill:none;stroke:#267735;stroke-width:2.5}
.line-series.target-series{stroke:#8b9390;stroke-width:2;stroke-dasharray:5 5}
.line-projection{fill:none;stroke:#8f948f;stroke-width:2;stroke-dasharray:6 5}
.line-dot,.target-dot{cursor:pointer}.line-dot{fill:#2c8439}.target-dot{fill:#8b9390;stroke:#fff;stroke-width:1.5}.chart-card{position:relative}.chart-tooltip{position:absolute;z-index:5;min-width:132px;padding:8px 10px;border-radius:8px;background:#1f5b3d;color:#fff;box-shadow:0 5px 16px #0b2f1d40;font-size:.68rem;line-height:1.35;pointer-events:none}.chart-tooltip[hidden]{display:none}.chart-tooltip strong{display:block;margin-bottom:4px;font-size:.72rem}.chart-tooltip span{display:flex;justify-content:space-between;gap:10px}.chart-tooltip b{font-weight:700}.chart-tooltip .positive{color:#eaffb5!important}.chart-tooltip .negative{color:#ff827a!important}
.line-dot.current{fill:#176735;stroke:#dff3d9;stroke-width:4}
.line-value{font-size:9px;fill:#161916;text-anchor:middle}
.line-value.current{fill:#176735;font-weight:800;font-size:10px}
.line-period{font-size:9px;fill:#121512;text-anchor:middle}
.line-period.current{fill:#176735;font-weight:800}
.km-bars{position:relative;display:flex;align-items:flex-end;gap:11px;min-width:560px;height:180px;padding:15px 14px 24px;border-left:0;border-bottom:0}
.km-bars::after{content:'';position:absolute;left:14px;right:14px;bottom:23px;border-bottom:1px solid var(--line)}
.km-bars.fit{min-width:0;width:100%;gap:6px}
.km-col{height:100%;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;position:relative}
.km-col b{font-size:9px;margin-bottom:4px;font-weight:400}
.km-col i{display:block;width:26px;max-height:125px;background:linear-gradient(#398651,#176735);border-radius:4px 4px 0 0}
.km-col span{position:absolute;bottom:-18px;font-size:9px;white-space:nowrap;color:var(--ink)}
.km-col.current b,.km-col.current span{color:#176735;font-weight:800}
.km-col.current b{font-size:10px}
.event-column.event-security i{background:linear-gradient(#f4b45a,#d87916)}.event-column.event-consumption i{background:linear-gradient(#5d8fc6,#376da8)}
.km-bars-km .km-col i{background:linear-gradient(#6b716c,#3a3f3b)}.km-bars-km .km-col.current b,.km-bars-km .km-col.current span{color:#3a3f3b}
.km-bars-km .km-col i{transform-origin:bottom;animation:km-bar-grow .7s cubic-bezier(.2,.75,.3,1) both}.km-bars-km .km-col:nth-child(2) i{animation-delay:.05s}.km-bars-km .km-col:nth-child(3) i{animation-delay:.1s}.km-bars-km .km-col:nth-child(4) i{animation-delay:.15s}.km-bars-km .km-col:nth-child(5) i{animation-delay:.2s}.km-bars-km .km-col:nth-child(6) i{animation-delay:.25s}.km-bars-km .km-col:nth-child(7) i{animation-delay:.3s}@keyframes km-bar-grow{from{transform:scaleY(0)}to{transform:scaleY(1)}}
.event-column i{transform-origin:bottom;animation:event-bar-grow .65s cubic-bezier(.2,.75,.3,1) both}.event-column:nth-child(2) i{animation-delay:.05s}.event-column:nth-child(3) i{animation-delay:.1s}.event-column:nth-child(4) i{animation-delay:.15s}.event-column:nth-child(5) i{animation-delay:.2s}.event-column:nth-child(6) i{animation-delay:.25s}.event-column:nth-child(7) i{animation-delay:.3s}@keyframes event-bar-grow{from{transform:scaleY(0)}to{transform:scaleY(1)}}
.stacked-chart{position:relative;height:180px;min-width:540px;display:flex;align-items:flex-end;gap:18px;padding:15px 15px 23px;border-bottom:0}
.stacked-chart::after{content:'';position:absolute;left:15px;right:15px;bottom:22px;border-bottom:1px solid var(--line)}
.stacked-chart.fit{min-width:0;width:100%;gap:8px}
.stack-col{height:125px;flex:1;display:flex;flex-direction:column;justify-content:flex-end;position:relative}
.stack-col i{display:grid;place-items:center;color:#fff;font-style:normal;font-size:9px;font-weight:700}
.stack-col .consumption{background:#3f78b6}.stack-col .safety{background:#4c9b42}
.stack-col span{position:absolute;bottom:-18px;width:100%;text-align:center;font-size:9px;white-space:nowrap}
.chart-legend{display:flex;gap:15px;font-size:.65rem;margin:0 7px 7px}.chart-legend i{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:4px}
.history-wrap{overflow:hidden}
.history-table{width:100%;min-width:0;table-layout:fixed;border-collapse:collapse;font-size:.62rem}
.history-table th{background:var(--green-800);color:#fff;text-align:left;padding:7px 5px}
.history-table th:nth-child(1){width:16%}.history-table th:nth-child(2){width:23%}.history-table th:nth-child(3){width:15%}.history-table th:nth-child(4){width:16%}.history-table th:nth-child(5){width:17%}.history-table th:nth-child(6){width:13%}
.history-table th:nth-child(n+3),.history-table td:nth-child(n+3){text-align:center}
.history-table th:last-child,.history-table td:last-child{text-align:center}
.history-table td{padding:7px 5px;border-bottom:1px solid var(--line);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.history-table tr.current td{color:var(--green-700);font-weight:700}
.history-status{text-align:center}.history-status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#4da341}.history-meta-cell{white-space:nowrap}.history-meta-dot{display:inline-block;width:4px;height:4px;border-radius:50%;margin-right:5px;vertical-align:middle}
.evolution-callout{display:grid;grid-template-columns:52px 1fr;gap:12px;align-items:center;padding:13px;background:linear-gradient(90deg,#f7fbf5,#edf7e9)}
.evolution-callout h3{font-size:.85rem;margin:0 0 5px}.evolution-callout p{font-size:.7rem;line-height:1.45;margin:0}

/* Ranking */
.rank-tabs{display:grid;grid-template-columns:1fr 1fr;border:1px solid #d8ddd8;border-radius:9px;overflow:hidden;margin:5px 2px 12px;background:#fff}
.rank-tab{min-width:0;height:48px;border:0;background:#fff;color:#171a17;font-size:.76rem;font-weight:600;white-space:nowrap!important;display:flex;align-items:center;justify-content:center;gap:6px;line-height:1;overflow:hidden}.rank-tab .icon{width:18px;height:18px;flex:0 0 auto}.rank-tab{ text-overflow:ellipsis }
.rank-tab.active{color:#fff;background:linear-gradient(135deg,#176735,#0b4b26)}
.rank-summary{display:grid;grid-template-columns:72px minmax(0,1.4fr) minmax(0,1fr);align-items:center;padding:10px 14px;min-height:96px}
.rank-orb{width:56px;height:56px;border-radius:50%;display:grid;place-items:center;justify-self:center;transform:translateX(-4px);border:1px solid #b7d7ba;background:#ffffff12}
.rank-orb span{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:transparent;color:#fff}.rank-orb .icon{width:34px;height:34px;stroke:#fff}
.rank-summary-block{min-width:0;padding:0 11px;border-left:1px solid #ffffff3d;text-align:center}
.rank-summary-block:first-of-type{border-left:0}.rank-summary-block:nth-child(2){border-left:1px solid #ffffff3d}
.rank-summary-block small{color:#d9e6db;font-size:.69rem}.rank-summary-block strong{min-width:0;font-size:1.75rem;display:block;white-space:nowrap;overflow:visible}.rank-summary-block strong em{font-size:.72rem;font-style:normal;font-weight:400}.rank-summary-block .rank-metric-value.medium{font-size:1.5rem;letter-spacing:-.03em}.rank-summary-block .rank-metric-value.long{font-size:1.2rem;letter-spacing:-.04em}
.rank-status{display:flex;align-items:center;gap:8px}.rank-status span:first-child{width:43px;height:43px;display:grid;place-items:center;border-radius:50%;background:#82c849}.rank-status b{font-size:.7rem;line-height:1.35}.rank-status b em{color:#9bdd58;font-style:normal}
.ranking-list{padding:0 10px 8px}
.ranking-head{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding:13px 3px 10px;font-size:.8rem}
.ranking-title{display:flex;align-items:center;gap:7px;font-weight:700}.ranking-title .square-icon{width:28px;height:28px;border-radius:4px;background:var(--green-700);color:#fff;display:grid;place-items:center}
.rank-row{display:grid;grid-template-columns:42px minmax(0,1fr) minmax(70px,28%);align-items:center;min-width:0;min-height:43px;border-bottom:1px solid var(--line);padding:3px 5px}
.rank-row.me{background:#e7f3df;border-radius:8px;border-bottom-color:transparent;font-weight:700}
.rank-position{width:30px;height:30px;border-radius:50%;background:#edf0ed;display:grid;place-items:center;font-size:.68rem;letter-spacing:-.03em;line-height:1;white-space:nowrap}
.rank-position.long{font-size:.52rem;letter-spacing:-.04em}
.rank-position.gold{background:#f2c444}.rank-position.silver{background:#dadddd}.rank-position.bronze{background:#cd995e}.rank-row.me .rank-position{background:#4c9f3e;color:#fff}
.rank-name{font-size:.75rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rank-score{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:right;color:var(--green-700);font-size:.88rem;font-weight:700}
.ranking-more{display:flex;align-items:center;justify-content:center;gap:5px;border:0;background:transparent;color:var(--green-700);font-weight:600;width:100%;padding:12px 0 5px;font-size:.72rem}
.ranking-more .ranking-more-icon{display:grid;place-items:center;width:16px;height:16px;transform:rotate(90deg);transition:transform .24s ease,opacity .2s ease;opacity:.9}
.ranking-more .ranking-more-icon .icon{width:14px;height:14px;stroke-width:2.2}
.ranking-more .ranking-more-icon.is-open{transform:rotate(-90deg);opacity:1}
.ranking-top{position:sticky;top:calc(8px + env(safe-area-inset-top));z-index:2;display:flex;align-items:center;justify-content:center;gap:5px;margin:4px auto 2px;border:1px solid #2d8a50;border-radius:999px;background:var(--green-800);color:#fff;padding:5px 10px;font-size:.64rem;font-weight:700;box-shadow:0 3px 8px #0b2f1d2b;opacity:1;transform:translateY(0) scale(1);transition:background .2s,box-shadow .2s,opacity .25s ease,transform .25s ease}.ranking-top:hover{background:var(--green-700);box-shadow:0 5px 11px #0b2f1d38}
.ranking-top:hover:not([hidden]){transform:translateY(-1px) scale(1)}
.ranking-top[hidden]{display:flex!important;opacity:0;transform:translateY(-6px) scale(.92);pointer-events:none}
.sector-card{display:grid;grid-template-columns:48px 1fr;align-items:center;padding:13px}
.sector-card .kpi-icon{width:46px;height:46px}
.sector-card small{font-size:.7rem}.sector-card strong{display:block;font-size:1.7rem;margin-top:2px}.sector-card strong em{font-size:.72rem;font-weight:400;color:var(--muted);font-style:normal;margin-left:8px}
.info-note{display:grid;grid-template-columns:27px 1fr;gap:10px;align-items:start;padding:12px;color:#202420;font-size:.68rem;line-height:1.45;background:#fbfcfa}
.info-note .icon{color:var(--green-700);width:25px;height:25px}

/* Conquests */
.conquest-hero{min-height:86px;padding:8px 12px;display:grid;grid-template-columns:1.05fr .95fr;align-items:start}
.conquest-hero h2{font-size:1.1rem;margin:0}.conquest-hero .big-status{font-size:1.75rem;color:#9bd954;font-weight:700;margin-top:30px}.conquest-hero .big-status small{display:block;color:#fff;font-size:1rem;font-weight:500;margin-top:5px}
.award-art{height:68px;display:grid;place-items:center;position:relative}
.award-art svg{width:150px;height:150px;filter:drop-shadow(0 8px 8px #0005)}
.conquest-trophy{display:block;width:66px;height:66px;object-fit:contain;filter:drop-shadow(0 5px 5px #0005)}
.conquest-hero.conquest-link{width:100%;min-height:82px;padding:14px 18px;display:grid;grid-template-columns:52px 1px minmax(0,1fr) 20px;align-items:center;column-gap:14px;text-align:left;cursor:pointer;border:1px solid #2a7447;color:#fff;background:linear-gradient(135deg,#0a4526,#0a3b22 58%,#155b36);transition:filter .18s,box-shadow .18s}
.conquest-hero.conquest-link:hover{filter:brightness(1.07);box-shadow:0 5px 14px #052c1838}.conquest-hero.conquest-link:active{filter:brightness(.98)}.conquest-hero.conquest-link:focus-visible{outline:3px solid #a9e56a;outline-offset:2px}
.conquest-hero.conquest-link .conquest-card-icon{width:52px;height:52px;display:grid;place-items:center}.conquest-hero.conquest-link .conquest-card-divider{width:1px;height:38px;background:#73b47b80}.conquest-hero.conquest-link .conquest-card-copy{min-width:0;display:grid;gap:3px}.conquest-hero.conquest-link .conquest-card-copy strong{font-size:1rem;line-height:1.2;font-weight:800}.conquest-hero.conquest-link .conquest-card-copy small{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#ffffffc7;font-size:.7rem;line-height:1.25}.conquest-hero.conquest-link>.icon{width:20px;height:20px;color:#a9e56a;justify-self:end}.conquest-hero.conquest-link .conquest-trophy{width:48px;height:48px}
.conquest-hero.conquest-static{cursor:default}.conquest-hero.conquest-static:hover{filter:none;box-shadow:var(--shadow)}
.award-confetti{position:absolute;inset:3px;background:radial-gradient(circle at 10% 35%,#8fd24a 0 3px,transparent 4px),radial-gradient(circle at 84% 20%,#f4c850 0 3px,transparent 4px),radial-gradient(circle at 70% 72%,#65b44a 0 3px,transparent 4px)}
.badge-collection{padding:11px}
.badge-collection h2,.prize-card h2{font-size:1rem;margin:0 0 10px}
.badge-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}
.badge-card{border:1px solid #d8ddd8;border-radius:10px;background:#f4f5f4;text-align:center;overflow:hidden;min-width:0;container-type:inline-size}
.badge-card.conquered{border:2px solid #a7ce37;background:#eef9df;box-shadow:0 0 0 2px #eef6a4}
.badge-card header{height:23px;background:#e1e3e1;display:grid;place-items:center;font-weight:700;font-size:.62rem}.badge-card.conquered header{background:var(--green-700);color:#fff}
.mini-shield{height:64px;display:grid;place-items:center}
.pin-image{display:block;width:100%;height:64px;object-fit:contain;filter:none;opacity:1}.pin-image.is-muted{filter:grayscale(1);opacity:.48}.pin-placeholder{display:grid;place-items:center;width:46px;height:54px;border-radius:12px;background:#c7cbc8;color:#fff;font-size:1.4rem;font-weight:800}
.badge-state{display:block;width:calc(100% - 6px);box-sizing:border-box;margin:0 3px 5px;padding:3px 1px;border-radius:7px;background:#e1e3e1;white-space:nowrap;overflow:hidden;text-overflow:clip;text-align:center;font-size:clamp(.34rem,8cqw,.5rem);line-height:1.1;letter-spacing:-.03em}.badge-card.conquered .badge-state{background:#b5df70;color:#17441f}
.prize-card{padding:14px;position:relative}
.prize-history-heading{margin:4px 0 8px;font-size:.78rem;font-weight:700;color:#173e26}.prize-history-chart{height:180px;display:flex;align-items:stretch;gap:7px;padding:10px 5px 0;border-bottom:1px solid var(--line);overflow-x:auto}.prize-history-group{min-width:48px;flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:6px}.prize-history-bars{height:145px;width:100%;display:flex;align-items:flex-end;justify-content:center;gap:3px}.prize-history-bar{position:relative;display:flex;align-items:flex-start;justify-content:center;min-height:0;width:18px;border-radius:4px 4px 0 0}.prize-history-bar.meta{background:#4b9b58}.prize-history-bar.evolution{background:#a2c85b}.prize-history-bar b{position:absolute;bottom:100%;padding-bottom:3px;color:#34563b;font-size:.48rem;line-height:1;white-space:nowrap;font-weight:700}.prize-history-group small{font-size:.52rem;color:var(--muted);white-space:nowrap}.prize-history-legend{display:flex;justify-content:center;gap:14px;margin-top:9px;color:var(--muted);font-size:.58rem}.prize-history-legend span{display:flex;align-items:center;gap:4px}.prize-history-legend i{width:8px;height:8px;border-radius:2px;background:#4b9b58}.prize-history-legend i.evolution{background:#a2c85b}
.conquest-callout h3{line-height:1.45}
.conquest-callout h3 br+br{content:"";display:block;margin-bottom:3px}
.prize-values{display:grid;grid-template-columns:repeat(3,1fr);text-align:center}
.prize-value{padding:7px}.prize-value+.prize-value{border-left:1px solid var(--line)}.prize-value small{display:flex;align-items:center;justify-content:center;font-size:.72rem;line-height:1.3;min-height:30px;color:#3f5447;font-weight:600}.prize-value strong{display:block;color:#0c4a25;font-size:1.3rem;margin:5px 0}.prize-value em{font-size:.55rem;font-style:normal;min-height:9px}.prize-value em:empty{display:block}
.prize-message-enter{animation:prizeMessageIn .45s ease both}@keyframes prizeMessageIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.prize-card-refresh{animation:prizeCardRefresh .42s ease both}@keyframes prizeCardRefresh{from{opacity:.35;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}
.chart-refresh{animation:chartRefresh .42s ease both}.chart-refresh .line-chart{animation:chartPlotRefresh .6s cubic-bezier(.22,.61,.36,1) both;transform-origin:center bottom}@keyframes chartRefresh{from{opacity:.55}to{opacity:1}}@keyframes chartPlotRefresh{from{opacity:.15;transform:translateY(9px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}
.timeline{display:grid;grid-template-columns:repeat(4,1fr);margin-top:18px;padding-top:3px;border-top:1px solid var(--line)}
.timeline-step{text-align:center;position:relative;padding-top:10px}
.timeline-step:before{content:'';position:absolute;top:28px;left:-50%;width:100%;border-top:2px dotted #b9bdb9;z-index:0}.timeline-step:first-child:before{display:none}.timeline-step.done:before,.timeline-step.current:before{border-top-style:solid;border-top-color:#4e9d43}
.timeline-icon{position:relative;z-index:1;width:35px;height:35px;border-radius:50%;margin:auto;display:grid;place-items:center;background:#9b9e9b;color:#fff}.timeline-step.done .timeline-icon,.timeline-step.current .timeline-icon{background:#25783a}
.timeline-step.scheduled .timeline-icon{background:#9b9e9b}.timeline-step.scheduled b{color:#5f635f}
.timeline-step.ineligible .timeline-icon{background:#dc4146}.timeline-step.ineligible b{color:#5f635f}.timeline-step.ineligible:before{border-top-color:#4e9d43;border-top-style:solid}
.timeline-step .icon{width:20px;height:20px}.timeline-step b{display:block;font-size:.57rem;margin-top:6px;color:#5f635f}.timeline-step.done b,.timeline-step.current b{color:#237436}.timeline-step small{font-size:.52rem;color:var(--muted)}
.conquest-callout{display:grid;grid-template-columns:50px 1fr;gap:10px;align-items:center;margin-top:15px;padding:10px;background:linear-gradient(90deg,#f4faef,#eef7e9);border:1px solid #d7e6d2;border-radius:10px}.conquest-callout .callout-medallion{width:48px;height:48px}.conquest-callout h3{font-size:.78rem;margin:0 0 4px}.conquest-callout p{font-size:.64rem;margin:0;line-height:1.4}
.premiacao-status-card{display:grid;grid-template-columns:104px 1px minmax(0,1fr);align-items:center;gap:24px;margin-top:16px;padding:22px 24px;border:1px solid;border-radius:18px;box-shadow:0 5px 16px #17301b12}.premiacao-status-icon{width:104px;height:104px;border-radius:50%;display:grid;place-items:center;background:#ffffffaa}.premiacao-status-icon>span{width:76px;height:76px;border-radius:50%;display:grid;place-items:center}.premiacao-status-icon .icon{width:45px;height:45px;stroke-width:1.5}.premiacao-status-icon img{width:70px;height:70px;object-fit:contain}.premiacao-status-icon .goal-face{width:58px;height:58px;stroke-width:1.5}.premiacao-status-divider{width:1px;height:78%;background:currentColor;opacity:.35}.premiacao-status-copy{min-width:0;color:#1c1c1c}.premiacao-status-copy h3{margin:0 0 9px;font-size:1.35rem;line-height:1.2;font-weight:800}.premiacao-status-copy p{margin:0;font-size:.88rem;line-height:1.5}.premiacao-status-copy p+p{margin-top:10px}.premiacao-status-copy strong{font-weight:800}.premiacao-status-card.status-complete,.premiacao-status-card.status-mkpe{color:#145a24;background:linear-gradient(135deg,#f5fbf2,#eef8ea);border-color:#a8d39b}.status-complete .premiacao-status-icon,.status-mkpe .premiacao-status-icon{color:#2e8b35}.status-complete .premiacao-status-icon>span,.status-mkpe .premiacao-status-icon>span{background:#fffdf0}.status-complete .premiacao-status-copy h3,.status-mkpe .premiacao-status-copy h3,.status-complete .premiacao-status-copy strong,.status-mkpe .premiacao-status-copy strong{color:#145a24}.status-mkpe{border-color:#a9d79e}.premiacao-status-card.status-evolution{color:#174d8a;background:linear-gradient(135deg,#f3f8fe,#edf5fd);border-color:#8dc0f2}.status-evolution .premiacao-status-icon{color:#246bb3}.status-evolution .premiacao-status-icon>span{background:#e5f1fd}.status-evolution .premiacao-status-copy h3,.status-evolution .premiacao-status-copy strong{color:#174d8a}.premiacao-status-card.status-none{color:#c92823;background:linear-gradient(135deg,#fff5f4,#fff0ef);border-color:#f28f89}.status-none .premiacao-status-icon{color:#d53832}.status-none .premiacao-status-icon>span{background:#ffe4e1}.status-none .premiacao-status-copy p:first-child{font-weight:700}.status-none .premiacao-status-copy h3,.status-none .premiacao-status-copy strong{color:#c92823}
.profile-view{padding:16px 18px;text-align:left}.profile-view h2{margin:0 0 10px;font-size:1rem}.profile-view .profile-details{display:none!important}.profile-group{padding:9px 0 11px;border-top:1px solid var(--line)}.profile-group:first-of-type{border-top:0;padding-top:0}.profile-group h3{margin:0 0 8px;font-size:.78rem;color:var(--green-800)}.profile-group dl{margin:0;display:grid;grid-template-columns:minmax(120px,.7fr) minmax(0,1.3fr);column-gap:14px;row-gap:7px}.profile-group dt{font-size:.68rem;color:var(--muted)}.profile-group dd{margin:0;font-weight:600;font-size:.78rem;overflow-wrap:anywhere}
.profile-details dt:nth-of-type(7),.profile-details dd:nth-of-type(7),.profile-details dt:nth-of-type(8),.profile-details dd:nth-of-type(8),.profile-details dt:nth-of-type(9),.profile-details dd:nth-of-type(9){display:none}
.profile-view>dl{display:none!important}
.validity-remaining{color:var(--muted);font-size:.7rem;font-weight:500}
.journey-hero .gauge-result,.journey-hero .gauge-no-target-message{display:none!important}
.journey-hero .gauge-wrap:not(.no-target) .gauge-result{display:block;right:-2px;top:8px;width:43%;text-align:left;color:#fff}.journey-hero .gauge-result b,.journey-hero .gauge-result span{display:none}.journey-hero .gauge-result:before{content:'Em andamento';display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border:1px solid #4c9b5b;border-radius:999px;background:#06351f;color:#fff;font-size:.64rem;font-weight:600;white-space:nowrap}.journey-hero .gauge-result:before{box-shadow:inset 0 0 0 1px #0b2a1b}.journey-hero .gauge-result:after{content:'Faltam ' attr(data-gap) ' para atingir a meta';display:block;margin-top:30px;padding-left:25px;color:#fff;font-size:.72rem;line-height:1.35;white-space:pre-line}.journey-hero .gauge-result:has(b.is-hit):before{content:'Meta atingida';border-color:#75c753;color:#dff6c8}.journey-hero .gauge-result:has(b.is-hit):after{content:'Meta atingida';font-size:.86rem;font-weight:700;color:#b9ed72}.journey-hero .gauge-result:has(b.is-fail):before{content:'Concluído';border-color:#75c753}.journey-hero .gauge-result:has(b.is-fail):after{content:'Meta não atingida';font-size:.82rem;font-weight:700;color:#fff}
.logout-btn{width:100%;height:44px;display:flex;align-items:center;justify-content:center;gap:9px;border:0;background:linear-gradient(135deg,#d92f38,#b91f2a);color:#fff;border-radius:10px;padding:0 18px;margin-top:20px;font-size:.8rem;font-weight:800;box-shadow:0 5px 12px #a5282e35;transition:background .18s,transform .18s,box-shadow .18s}.logout-btn .icon{width:18px;height:18px}.logout-btn:hover,.logout-btn:focus-visible{background:linear-gradient(135deg,#e33a43,#a91924);box-shadow:0 7px 15px #a5282e4a;outline:3px solid #d92f3830}.logout-btn:active{transform:translateY(1px);box-shadow:0 3px 8px #a5282e35}
.profile-logout-wrap{margin:10px 0 0}.profile-logout-wrap .logout-btn{margin-top:0}

/* Admin */
.admin-app{min-height:100vh;background:#f4f6f4;display:grid;grid-template-columns:188px minmax(0,1fr);grid-template-rows:59px 1fr;font-size:12px;transition:grid-template-columns .22s ease}
.admin-app.sidebar-collapsed{grid-template-columns:64px minmax(0,1fr)}
.admin-sidebar{grid-row:1/3;background:linear-gradient(160deg,#032711,#075026);color:#fff;padding:0 12px 12px;display:flex;flex-direction:column;min-height:100vh;max-height:100vh;position:sticky;top:0;overflow:hidden;transition:padding .22s ease}
.admin-sidebar.collapsed{padding:15px 8px}
.admin-sidebar.collapsed .brand-lockup{opacity:0;max-width:0;padding:0;margin:0}
.admin-sidebar.collapsed .admin-nav button{justify-content:center;padding:0;gap:0}
.admin-sidebar.collapsed .nav-label{opacity:0;max-width:0}
.admin-sidebar.collapsed .admin-nav-caret{display:none}
.admin-sidebar.collapsed .admin-nav-sub{display:none !important}
.admin-sidebar.collapsed .collapse-label{opacity:0;max-width:0}
.admin-sidebar.collapsed .collapse-arrow{transform:rotate(180deg)}
/* A faixa dos logos tem EXATAMENTE os 59px da linha do cabecalho: as duas sao
   a mesma tira visual, e alturas diferentes desalinhavam o topo. */
.admin-sidebar .brand-lockup{gap:8px;max-width:100%;height:59px;flex:0 0 auto;align-items:center;padding:0 2px;margin:0 0 9px;justify-content:center;overflow:hidden;opacity:1;transition:opacity .16s ease,max-width .22s ease,padding .22s ease,margin .22s ease}
.admin-sidebar .brand-logo{width:66px;height:18px;max-height:none;border-radius:3px}
.admin-sidebar .program-logo{width:64px;height:22px;transform:none}
.admin-sidebar .brand-divider{height:22px}
/* So a LISTA de itens rola quando a tela e baixa. Os logos no topo e o rodape
   (recolher + versao) ficam parados: sao o cabecalho e o rodape do menu, nao
   itens dele. Antes o menu inteiro crescia alem da tela e a rolagem levava os
   logos embora enquanto a faixa verde do cabecalho ficava — desalinhado. */
.admin-nav{display:grid;gap:5px;flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;align-content:start;scrollbar-width:thin;scrollbar-color:#ffffff2e transparent}
.admin-nav::-webkit-scrollbar{width:5px}
.admin-nav::-webkit-scrollbar-thumb{background:#ffffff2e;border-radius:3px}.admin-nav button{height:41px;border:0;border-radius:9px;background:transparent;color:#dbe8df;text-align:left;padding:0 13px;display:flex;align-items:center;gap:11px;font-size:.72rem;overflow:hidden;transition:padding .22s ease,gap .22s ease}.admin-nav button.active{background:linear-gradient(90deg,#1c7438,#2b8944);color:#fff;font-weight:700}.admin-nav .icon{width:19px;height:19px;flex:0 0 auto}
.nav-label{overflow:hidden;white-space:nowrap;opacity:1;max-width:140px;transition:opacity .16s ease,max-width .22s ease}
.admin-nav-group{display:flex;flex-direction:column}.admin-nav-parent{width:100%}.admin-nav-caret{width:14px !important;height:14px !important;margin-left:auto;opacity:.75;transition:transform .2s ease}.admin-nav-group.is-open .admin-nav-caret{transform:rotate(180deg)}
.admin-nav-sub{max-height:0;overflow:hidden;display:flex;flex-direction:column;gap:2px;transition:max-height .22s ease}.admin-nav-group.is-open .admin-nav-sub{max-height:340px}
.admin-nav-subitem{height:34px !important;font-size:.67rem !important;color:#c3d6c8 !important;padding-left:30px !important;flex:0 0 auto}.admin-nav-subitem.active{background:#ffffff1e !important;color:#fff !important;font-weight:600}.admin-nav-subitem:not(.active):hover{background:#ffffff10}
.admin-cycle{margin-top:auto;padding:12px 3px 4px}
/* Versao do sistema no rodape do menu, abaixo do botao de recolher — discreta,
   como no login e no app do motorista. */
.admin-version{padding:0 4px 9px;text-align:center;color:#ffffff4d;font-size:.54rem;letter-spacing:.03em;white-space:nowrap}
.admin-sidebar.collapsed .admin-version{visibility:hidden}
.collapse-menu{width:100%;height:36px;border:1px solid #ffffff32;border-radius:8px;background:transparent;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden}
.collapse-menu:hover{background:#ffffff10}
.collapse-label{overflow:hidden;white-space:nowrap;opacity:1;max-width:140px;transition:opacity .16s ease,max-width .22s ease}
.admin-header{grid-column:2;display:flex;align-items:center;padding:0 17px;background:linear-gradient(90deg,#052c15,#02351a);color:#fff}
.admin-header .header-sep{height:24px;border-left:1px solid #ffffff4b;margin:0 10px}.admin-header .mode-label{font-weight:600}
.admin-header-right{margin-left:auto;display:flex;align-items:center;gap:19px;font-size:.63rem;color:#cbd9cf}.admin-header-right .icon{width:18px;height:18px}.admin-user{display:flex;align-items:center;gap:9px;padding-left:17px;border-left:1px solid #ffffff33;color:#fff}.admin-user .avatar{width:34px;height:34px}.admin-user .avatar .icon{width:22px;height:22px}.admin-user b{display:block}.admin-user small{color:#c9d8ce}
.admin-logout-btn{height:32px;padding:0 11px;border:1px solid #ffffff55;border-radius:7px;background:#ffffff12;color:#fff;display:flex;align-items:center;justify-content:center;gap:6px;font-size:.64rem;font-weight:700}.admin-logout-btn .icon{width:15px;height:15px}.admin-logout-btn:hover,.admin-logout-btn:focus-visible{background:#fff;color:#8d252b;outline:none}
.admin-main{grid-column:2;padding:10px;min-width:0;overflow:hidden;position:relative}
.content-loading-overlay{position:absolute;inset:0;z-index:40;display:flex;align-items:center;justify-content:center;background:#4d554fb3;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);animation:contentLoadingFade .15s ease}
@keyframes contentLoadingFade{from{opacity:0}to{opacity:1}}
.content-loading-spinner{width:34px;height:34px;border:3px solid #ffffff55;border-top-color:#fff;border-radius:50%;animation:spin .75s linear infinite}
.filter-bar{background:#fff;border:1px solid #e2e6e2;border-radius:10px;box-shadow:var(--shadow-soft);padding:8px 10px;display:grid;grid-template-columns:120px 140px 1.05fr 1.25fr 1fr 140px 150px auto;gap:10px;align-items:end}
.filter-bar-engagement{grid-template-columns:1.2fr 1fr 1fr 1fr auto;margin-bottom:16px}
.filter-field>label{display:block;font-size:.57rem;color:#4f5550;margin:0 0 3px 3px}.filter-field>select,.filter-field>input{width:100%;height:30px;border:1px solid #dfe4df;border-radius:6px;background:#fff;padding:0 9px;font-size:.62rem;outline:none}.filter-field>input:focus,.filter-field>select:focus{border-color:#69a776}
.filter-actions{display:grid;gap:4px;align-self:end}
/* Limpar filtros: so o icone, com a mesma moldura dos controles ao lado — o
   texto ocupava uma coluna de 150px na barra. O que ele faz vive no title. */
.filtro-limpar{width:30px;height:30px;padding:0;border:1px solid #dfe4df;border-radius:6px;background:#fff;color:#64806d;display:grid;place-items:center;cursor:pointer;transition:color .15s,border-color .15s,background .15s}
.filtro-limpar:hover:not(:disabled){color:#b8342c;border-color:#e7c4c1;background:#fdf3f2}
.filtro-limpar:disabled{color:#c9cfc9;border-color:#e9ede9;cursor:default}
.filtro-limpar:focus-visible{outline:2px solid var(--green-700);outline-offset:1px}
.clear-filter-icon{width:14px;height:14px;flex:0 0 auto}
.admin-kpis{display:grid;grid-template-columns:repeat(6,1fr);gap:9px;margin-top:9px}
.admin-kpi{min-height:68px;padding:10px 11px;display:grid;grid-template-columns:38px 1fr;gap:8px;align-items:start}
.admin-kpi .kpi-icon{width:36px;height:36px;grid-row:1/span 2;align-self:center}.admin-kpi .kpi-icon .icon{width:18px;height:18px}.admin-kpi .label{font-size:.6rem}.admin-kpi .value{font-size:1.12rem;font-weight:600;margin-top:3px;white-space:nowrap}.admin-kpi .delta{grid-column:2;font-size:.54rem;color:#59615b;margin-top:-6px}.admin-kpi .delta b{color:#21813a;margin-left:7px}
.admin-grid-top{display:grid;grid-template-columns:1.25fr 1fr;gap:9px;margin-top:9px}
.admin-grid-bottom{display:grid;grid-template-columns:.78fr .83fr .93fr .9fr;gap:9px;margin-top:9px}
.admin-panel{padding:11px;min-width:0}.admin-panel-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.admin-panel-head h2{font-size:.75rem;margin:0}.panel-select{height:26px;border:1px solid var(--line);border-radius:5px;background:#fff;font-size:.56rem}
.admin-grid-bottom .admin-panel,.admin-grid-top .admin-panel{display:flex;flex-direction:column}
#dashboardTrendCard,#dashboardTopAllocations,#dashboardCompanyBars,#dashboardSectorBars,#dashboardDistribution,#dashboardQuality,#dashboardDetailTable{display:contents}
.trend-chart{flex:1;min-height:190px;display:flex;align-items:stretch;gap:10px;padding:20px 14px 24px;overflow-x:auto;position:relative}.trend-chart::before{content:'';position:absolute;left:0;right:0;bottom:24px;height:1px;background:#e2e6e2}.trend-group{flex:1;min-height:0;display:flex;align-items:flex-end;justify-content:center;gap:4%;position:relative;min-width:50px}.trend-group i{width:30%;display:block;border-radius:7px 7px 0 0;background:linear-gradient(#267a3a,#176735)}.trend-group i.target{background:#717675}.trend-group b{position:absolute;font-size:.53rem;font-weight:700;left:67%;transform:translateX(-50%);white-space:nowrap}.trend-group .actual-label{color:#176735}.trend-group.no-target .actual-label{left:50%}.trend-group span{position:absolute;bottom:-18px;font-size:.53rem;white-space:nowrap}
.legend{display:flex;gap:12px;font-size:.54rem}.legend i{display:inline-block;width:8px;height:8px;margin-right:4px;border-radius:50%;background:#267b3b}.legend i.gray{background:#717675}
.top-table,.detail-table{width:100%;border-collapse:separate;border-spacing:0}.top-table{font-size:.56rem}.top-table th,.top-table td{padding:5px 7px;border-bottom:1px solid var(--line);text-align:left}.top-table th{background:#f1f3f1;position:sticky;top:0;z-index:1}.top-table tbody tr:nth-child(even){background:#f7faf8}.top-table tbody tr:hover{background:#eef5f0}.top-table-scroll{height:215px;overflow-y:auto;border-radius:10px;scrollbar-color:#c2d2c6 transparent;scrollbar-width:thin}.top-table-scroll::-webkit-scrollbar{width:10px;height:10px}.top-table-scroll::-webkit-scrollbar-track{background:transparent;margin-block:6px}.top-table-scroll::-webkit-scrollbar-thumb{background:#c2d2c6;border-radius:999px;border:2px solid transparent;background-clip:padding-box}.top-table-scroll::-webkit-scrollbar-thumb:hover{background:#a9bcae;border:2px solid transparent;background-clip:padding-box}.cell-bar{display:inline-block;height:7px;background:linear-gradient(90deg,#1a6d34,#2d8942);margin-right:8px;vertical-align:middle;border-radius:999px}
.h-bars{display:grid;gap:12px;padding:8px 6px}
.admin-grid-bottom .h-bars{display:flex;flex-direction:column;justify-content:flex-start;flex:1;gap:0}.admin-grid-bottom .h-row{flex:1;align-content:center;min-height:20px}.h-row{display:grid;grid-template-columns:70px 1fr 35px;align-items:center;gap:7px;font-size:.56rem}.admin-grid-bottom .h-row{font-size:.66rem}.h-track{height:15px;position:relative;background:#f1f3f1;border-radius:999px}.admin-grid-bottom .h-track{height:20px}.h-track i{display:block;height:100%;background:linear-gradient(90deg,#2c8241,#1a6d34);border-radius:999px}.h-row.gray .h-track i{background:#777c79}.h-row b{color:#176735}
.donut-layout{display:grid;grid-template-columns:minmax(88px,128px) minmax(0,1fr);align-items:center;gap:10px;flex:1;align-content:center}.donut-chart{width:100%;max-width:128px;aspect-ratio:1;height:auto;border-radius:50%;position:relative;background:conic-gradient(#176735 0 var(--p1),#68b759 var(--p1) var(--p2),#f1b52d var(--p2) var(--p3),#dc4146 var(--p3))}.donut-chart:after{content:'';position:absolute;inset:20%;border-radius:50%;background:#fff}.donut-center{position:absolute;inset:0;z-index:1;display:grid;place-content:center;text-align:center}.donut-center strong{font-size:1.35rem}.donut-center small{font-size:.58rem;color:var(--muted)}
.donut-legend{display:grid;gap:9px;font-size:.62rem;min-width:0}.donut-legend div{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;column-gap:7px;row-gap:1px;position:relative;padding-left:15px;min-width:0}.donut-legend i{position:absolute;left:0;top:50%;transform:translateY(-50%);width:8px;height:8px;border-radius:50%}.donut-legend span{flex:0 1 auto;min-width:min-content;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.donut-legend b{flex:0 0 auto;white-space:nowrap;font-size:.64rem}
.side-stack{display:grid;gap:9px}.quality-list{display:grid;gap:9px;font-size:.56rem}.quality-row{display:grid;grid-template-columns:14px 1fr auto;align-items:center}.quality-row .icon{width:13px;height:13px}.quality-row b{color:#dc4146}.quality-row.warn b{color:#ef8b15}.quality-row.neutral b{color:#444}
.engagement{display:grid;grid-template-columns:1fr 70px 1fr;align-items:center;gap:8px}.engagement strong{font-size:1.05rem}.engagement small{font-size:.5rem;display:block;color:var(--muted)}.engage-orb{width:50px;height:50px;border-radius:50%;display:grid;place-items:center;border:2px solid #e4e9e4;color:#25813d;margin:auto}.engage-orb .icon{width:27px;height:27px}
.detail-panel{margin-top:9px;padding:0;overflow:hidden}.detail-toolbar{display:flex;align-items:center;justify-content:space-between;padding:10px 12px}.detail-toolbar h2{font-size:.75rem;margin:0}.detail-actions{display:flex;align-items:center;gap:7px}.detail-actions button,.detail-actions a{height:27px;border:1px solid var(--line);border-radius:5px;background:#fff;font-size:.55rem;display:inline-flex;align-items:center;justify-content:center;padding:0 9px;color:inherit;text-decoration:none;box-sizing:border-box}
.table-scroll{overflow:auto;max-height:240px;border-radius:10px;scrollbar-color:#c2d2c6 transparent;scrollbar-width:thin}.table-scroll::-webkit-scrollbar{width:10px;height:10px}.table-scroll::-webkit-scrollbar-track{background:transparent;margin-block:6px}.table-scroll::-webkit-scrollbar-thumb{background:#c2d2c6;border-radius:999px;border:2px solid transparent;background-clip:padding-box}.table-scroll::-webkit-scrollbar-thumb:hover{background:#a9bcae;border:2px solid transparent;background-clip:padding-box}.detail-table{font-size:.49rem;min-width:1000px}.detail-table th,.detail-table td{padding:6px 7px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap}.detail-table th{position:sticky;top:0;background:#f2f4f2;z-index:1}.detail-table th:first-child{border-top-left-radius:10px}.detail-table th:last-child{border-top-right-radius:10px}.detail-table tbody tr:nth-child(even){background:#f7faf8}.detail-table tbody tr:hover{background:#eef5f0}.tiny-trend{font-size:.62rem;font-weight:600;white-space:nowrap}.tiny-trend.up{color:#1a8a3c}.tiny-trend.down{color:#d13a3a}.tiny-trend.flat{color:#8a938c;font-weight:400}
.admin-footnote{font-size:.5rem;color:#747974;margin:10px 3px 0}.pin-upload-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.admin-empty{min-height:120px;display:grid;place-items:center;color:var(--muted)}
.top-table th:nth-child(5),.top-table td:nth-child(5){text-align:center}
.top-table tfoot td{position:sticky;bottom:0;background:#eef3ef;border-top:1.5px solid #cdd8d0;border-bottom:0;font-weight:700;color:#123f22;z-index:2}
.top-table tfoot td:first-child{text-align:left;font-weight:700;color:#123f22}
.top-table tfoot td:last-child{text-align:center}
/* cabecalho ordenavel (sem icone: so a funcao de ordenar) */
th.is-sortable{cursor:pointer;user-select:none;white-space:nowrap}
th.is-sortable:hover{background:#e6ece7}
th.is-sortable:focus-visible{outline:2px solid #1c7438;outline-offset:-2px}
/* cross-filter nas barras: realce por box-shadow (nao ocupa layout, nao muda a altura da linha) */
.h-row.is-cross{cursor:pointer;border-radius:6px;transition:opacity .25s ease,filter .25s ease}
.h-row.is-cross:focus-visible{outline:2px solid #1c7438;outline-offset:2px}
.h-row.is-dimmed{opacity:.34}
.h-row.is-dimmed .h-track i{filter:saturate(.25)}
.h-row.is-picked span{font-weight:700}
.trend-group.is-cross{cursor:pointer}
.trend-group.is-cross:focus-visible{outline:2px solid #1c7438;outline-offset:2px;border-radius:6px}
/* filter fica no FILHO que anima, nunca no grupo: filter num ancestral cria
   camada de composicao e ja congelou a animacao das barras deste grafico. */
.trend-group.is-dimmed{opacity:.3}
.trend-group.is-dimmed i{filter:saturate(.2)}
.trend-group.is-picked b{color:#0f5a2a}
.top-table tbody tr.is-cross{cursor:pointer}
.top-table tbody tr.is-cross:focus-visible{outline:2px solid #1c7438;outline-offset:-2px}
.top-table tbody tr.is-dimmed{opacity:.36}
.top-table tbody tr.is-dimmed .cell-bar{filter:saturate(.25)}
.top-table tbody tr.is-picked td{background:#e8f2ea;font-weight:600}
.donut-legend div.is-cross{cursor:pointer;border-radius:6px;transition:opacity .25s ease,filter .25s ease}
.donut-legend div.is-cross:focus-visible{outline:2px solid #1c7438;outline-offset:2px}
.donut-legend div.is-dimmed{opacity:.34;filter:saturate(.25)}
.donut-legend div.is-picked span{font-weight:700}

/* ===== animacao do painel gerencial =====
   Anima transform (compositor), nunca width/height (layout).
   Mesmo vocabulario das barras do app do motorista (km-bar-grow). */
:root{--dash-dur:1.1s;--dash-dur-ring:1.3s;--dash-ease:cubic-bezier(.2,.75,.3,1);--dash-stagger:70ms}

/* barras horizontais - MKPE por empresa / por setor */
.h-track{overflow:hidden}
@property --s{syntax:'<number>';inherits:false;initial-value:1}
@property --sa{syntax:'<number>';inherits:true;initial-value:1}
@property --st{syntax:'<number>';inherits:true;initial-value:1}
.h-track i{transform-origin:0 50%;transform:scaleX(var(--s));transition:--s var(--dash-dur) var(--dash-ease)}
.h-bars .h-row:nth-child(2) .h-track i{transition-delay:calc(var(--dash-stagger)*1)}
.h-bars .h-row:nth-child(3) .h-track i{transition-delay:calc(var(--dash-stagger)*2)}
.h-bars .h-row:nth-child(4) .h-track i{transition-delay:calc(var(--dash-stagger)*3)}
.h-bars .h-row:nth-child(5) .h-track i{transition-delay:calc(var(--dash-stagger)*4)}
.h-bars .h-row:nth-child(n+6) .h-track i{transition-delay:calc(var(--dash-stagger)*5)}

/* barra da tabela Top alocacoes */
.cell-bar{transform-origin:0 50%;transform:scaleX(var(--s));transition:--s var(--dash-dur) var(--dash-ease)}

/* barras verticais por ciclo + rotulos em lockstep (derivados da MESMA variavel) */
/* A transicao das barras mora nos FILHOS (i e b), nunca no grupo — o mesmo
   desenho de .h-track i e .cell-bar. O grupo so carrega o valor de --sa/--st
   (inherits:true): o motor escreve 0, solta, e cada filho anima ate 1 com o seu
   proprio atraso de escalonamento.
   Este bloco ja quebrou TRES vezes com a transicao no grupo:
   1) uma transition em .trend-group.is-cross (mais especifica) substituia a do
      grupo e matava o crescimento;
   2) opacity/filter na mesma lista promovia o grupo a camada de composicao e o
      navegador parava de re-resolver var(--sa) nos filhos a cada quadro;
   3) mesmo limpa, os transition-delay dos filhos criavam transicoes de duracao
      zero continuamente re-alvejadas: barra congelada no meio e salto no fim
      (medido quadro a quadro: 0->86->126 com --sa suave no grupo).
   O apagamento do cross-filter (is-dimmed) fica instantaneo de proposito: o
   grupo nao pode ter transition nenhuma. */
.trend-group i{transform-origin:50% 100%;transform:scaleY(var(--sa));transition:--sa var(--dash-dur) var(--dash-ease)}
.trend-group i.target{transform:scaleY(var(--st));transition:--st var(--dash-dur) var(--dash-ease)}
.trend-group b{transition:--sa var(--dash-dur) var(--dash-ease),--st var(--dash-dur) var(--dash-ease)}
.trend-group:nth-child(2) i{transition-delay:calc(var(--dash-stagger)*1)}
.trend-group:nth-child(3) i{transition-delay:calc(var(--dash-stagger)*2)}
.trend-group:nth-child(4) i{transition-delay:calc(var(--dash-stagger)*3)}
.trend-group:nth-child(n+5) i{transition-delay:calc(var(--dash-stagger)*4)}

.trend-group .actual-label{bottom:calc(var(--la,0) * var(--sa,1) * 1% + 5px);transform:translateX(-50%)}
.trend-group .target-label{bottom:calc(var(--lt,0) * var(--st,1) * 1% + 5px);left:33%;transform:translateX(-50%)}
.trend-group:nth-child(2) b{transition-delay:calc(var(--dash-stagger)*1)}
.trend-group:nth-child(3) b{transition-delay:calc(var(--dash-stagger)*2)}
.trend-group:nth-child(4) b{transition-delay:calc(var(--dash-stagger)*3)}
.trend-group:nth-child(n+5) b{transition-delay:calc(var(--dash-stagger)*4)}

/* largura de glifo estavel: mata o tremor horizontal durante a contagem */
[data-num]{font-variant-numeric:tabular-nums}

/* rosquinha: varredura no carregamento, interpolacao ao filtrar */
@property --p1{syntax:'<percentage>';inherits:false;initial-value:0%}
@property --p2{syntax:'<percentage>';inherits:false;initial-value:0%}
@property --p3{syntax:'<percentage>';inherits:false;initial-value:0%}
@property --p4{syntax:'<percentage>';inherits:false;initial-value:0%}
@property --sweep{syntax:'<percentage>';inherits:false;initial-value:100%}
.donut-chart{background:conic-gradient(
    #176735 0                          min(var(--p1),var(--sweep)),
    #67b45b min(var(--p1),var(--sweep)) min(var(--p2),var(--sweep)),
    #f1b52d min(var(--p2),var(--sweep)) min(var(--p3),var(--sweep)),
    #db4146 min(var(--p3),var(--sweep)) min(var(--p4),var(--sweep)),
    #eef1ee min(var(--p4),var(--sweep)));
  transition:--p1 var(--dash-dur) var(--dash-ease),--p2 var(--dash-dur) var(--dash-ease),--p3 var(--dash-dur) var(--dash-ease),--p4 var(--dash-dur) var(--dash-ease),--sweep var(--dash-dur-ring) var(--dash-ease)}

@media(max-width:1180px){
  .filter-bar{grid-template-columns:repeat(4,1fr)}
  .admin-kpis{grid-template-columns:repeat(3,1fr)}
  .admin-grid-bottom{grid-template-columns:1fr 1fr}
}
@media(max-width:999px){
  .bottom-fade{display:none}
  .login-copyright{position:relative;z-index:6}
}
@media(max-width:850px){
  .admin-app{grid-template-columns:1fr;grid-template-rows:59px auto}
  .admin-sidebar{display:none}.admin-header,.admin-main{grid-column:1}
  .admin-header{padding:0 10px}.admin-header-right>span:first-child,.admin-header-right>.icon{display:none}
  .filter-bar{grid-template-columns:1fr 1fr}.admin-grid-top,.admin-grid-bottom{grid-template-columns:1fr}
}
@media(max-width:520px){
  .login-stack{width:100%}
  .bottom-fade{display:none}
  .login-copyright{position:relative;z-index:6}
}
@media(max-width:430px){
  .login-card,.demo-login-panel{margin-left:14px;margin-right:14px}
  .demo-login-panel:not([open])>summary{justify-content:center;min-height:20px;padding:0 2px}
  .demo-login-panel:not([open])>summary>div,.demo-login-panel:not([open])>summary>span{display:none}
  .driver-top{height:calc(82px + env(safe-area-inset-top));padding:calc(10px + env(safe-area-inset-top)) 15px 14px}
  .driver-top .brand-lockup{gap:15px}.driver-top .brand-logo{width:88px;border-radius:5px}.driver-top .program-logo{width:92px;height:32px}.driver-top .brand-divider{height:30px;margin-left:0}.cycle-select{height:38px;padding-left:9px;padding-right:27px;font-size:.72rem}.cycle-select-wrap .icon{top:11px;right:8px;width:15px;height:15px}
  .driver-sheet{padding-left:10px;padding-right:10px}
  .profile-card{grid-template-columns:55px minmax(0,1fr) 18px}.avatar{width:55px;height:55px}.profile-main h2{font-size:1.05rem}
  .profile-hierarchy-row{grid-template-columns:14px 94px minmax(0,1fr);gap:5px}
  .journey-hero{padding:11px 12px}.journey-values strong{font-size:2.25rem}.journey-grid{grid-template-columns:minmax(0,32%) minmax(0,68%)}.gauge-svg{width:80%}
  .kpi-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.driver-kpi{min-height:74px;grid-template-columns:31px minmax(0,1fr);padding:8px 6px;gap:5px}.kpi-icon{width:31px;height:31px}.driver-kpi .label{font-size:.62rem;line-height:1.15;white-space:normal;overflow-wrap:anywhere}.driver-kpi .value{font-size:.98rem}.driver-kpi .sub{font-size:.55rem;line-height:1.15;white-space:normal}
  .goal-callout{grid-template-columns:48px 1fr}.goal-callout .sparkline{display:none}.events-grid{padding-left:7px;padding-right:7px}.event-metric{grid-template-columns:29px 1fr;padding:4px}.event-metric .kpi-icon{width:29px;height:29px}.event-metric .value{font-size:.95rem}
  .mkpe-chart-card .line-value{font-size:9px}.mkpe-chart-card .line-period{font-size:9px}.mkpe-chart-card .line-value.current{font-size:10px}
  .rank-summary{grid-template-columns:62px minmax(0,1.4fr) minmax(0,1fr);padding:8px 8px;min-height:88px}.rank-orb{width:52px;height:52px;transform:translateX(-3px)}.rank-summary-block{padding:0 7px}
  .badge-grid{gap:5px}.badge-card{border-radius:8px}.badge-state{font-size:clamp(.34rem,8cqw,.5rem)}.mini-shield svg{width:48px}
  .premiacao-status-card{grid-template-columns:68px 1px minmax(0,1fr);gap:14px;padding:16px}.premiacao-status-icon{width:68px;height:68px}.premiacao-status-icon>span{width:52px;height:52px}.premiacao-status-icon img{width:48px;height:48px}.premiacao-status-icon .icon{width:32px;height:32px}.premiacao-status-icon .goal-face{width:42px;height:42px}.premiacao-status-copy h3{font-size:1.05rem}.premiacao-status-copy p{font-size:.72rem;line-height:1.45}.premiacao-status-copy p+p{margin-top:8px}
  .admin-kpis{grid-template-columns:1fr 1fr}.filter-bar{grid-template-columns:1fr}.admin-header .mode-label{display:none}.admin-header-right{width:100%;gap:10px}.admin-user{padding-left:0;border-left:0}.admin-user small{display:none}
}
@media(min-width:381px) and (max-width:430px){
  .evo-mini .mini-label{height:54px;min-height:54px}
  .evo-mini strong{font-size:clamp(0.7rem,24cqw,1.9rem)}
}
@media(max-width:380px){
  .evolution-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.evo-mini.highlight{grid-column:1/-1;align-items:center;text-align:center}.evo-mini.highlight .mini-label{padding-right:0;height:auto;min-height:0}
}
@media(max-width:370px){
  .driver-top .brand-lockup{gap:10px}.driver-top .program-logo{width:82px}
  .login-program-lockup{top:64px}.login-program-lockup img{width:175px;height:56px}
  .login-field{height:43px}.login-field~.login-field{margin-top:10px}
  .login-options{font-size:.54rem}.login-options button{font-size:.54rem}
  .login-shell .primary-btn{height:43px}
  .demo-login-panel{margin-left:10px;margin-right:10px;padding:9px}
  .demo-login-list{grid-template-columns:1fr}
  .demo-driver-name,.demo-scenario{min-height:0}.demo-fill-btn{margin-top:6px}
}
@media(max-height:760px){
  .login-page{place-items:start center}
  .login-stack,.login-shell{min-height:100vh;min-height:100svh}
}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}
/* Para respeitar movimento reduzido no painel gerencial, descomentar a linha abaixo
   E trocar DASH_RESPECT_REDUCED_MOTION para true em app.js. Hoje fica desligado para
   ficar consistente com km-bar-grow/event-bar-grow, que tambem nao respeitam. */
/* .h-track i,.cell-bar,.trend-group,.donut-chart{transition:none!important} */
}
.journey-hero .gauge-wrap:not(.no-target) .gauge-result{display:block!important}
.journey-hero .gauge-result:after{content:'Faltam\A ' var(--gauge-gap) '\A para atingir\A a meta';white-space:pre;display:block;margin-top:24px;padding-left:25px;font-size:.72rem;line-height:1.45}
.journey-hero .gauge-result:before{display:none!important}
.journey-hero .gauge-result:after{position:absolute;top:70px;left:20px;right:4px;margin:0!important;padding:0!important;color:#b9ed72;font-size:.68rem;line-height:1.25;white-space:pre}
.journey-hero .gauge-result:has(b.is-hit) .journey-gap-icon,.journey-hero .gauge-result:has(b.is-fail) .journey-gap-icon{display:none}
.journey-hero .gauge-result:has(b.is-fail){border-left:0}.journey-hero .gauge-result:has(b.is-fail):after{display:none}
.line-period{cursor:pointer}
.chart-hit-area{fill:transparent;stroke:transparent;cursor:pointer}
.event-tooltip{position:absolute;z-index:5;min-width:150px;padding:8px 10px;border-radius:8px;background:#1f5b3d;color:#fff;box-shadow:0 5px 16px #0b2f1d40;font-size:.68rem;line-height:1.35;pointer-events:none}.event-tooltip[hidden]{display:none}.event-tooltip strong{display:block;margin-bottom:4px}.event-tooltip span{display:flex;justify-content:space-between;gap:10px}.event-tooltip .positive{color:#eaffb5!important}.event-tooltip .negative{color:#ff827a!important}.evolution-help{padding:0}.evolution-help>summary{cursor:pointer;list-style:none;padding:13px 16px;font-size:.9rem;font-weight:700;color:#15231b}.evolution-help>summary::-webkit-details-marker{display:none}.evolution-help>summary:after{content:'+';float:right;font-size:1.1rem;color:var(--green-700)}.evolution-help[open]>summary:after{content:'−'}.evolution-help-content{padding:0 16px 14px}.evolution-help h3{margin:0 0 8px;font-size:.9rem}.evolution-help p{margin:0 0 7px;color:var(--muted);font-size:.72rem;line-height:1.85}.evolution-help-content>p:last-of-type{margin-bottom:0}.evolution-example{padding-top:8px;border-top:1px solid var(--line)}
.evolution-example{margin-top:16px}.evolution-example h3{margin:0 0 13px;font-size:.9rem}.evolution-example p{margin:0 0 7px;line-height:1.85}.evolution-example p:last-child{margin-bottom:0}
.prize-history-bar.total{width:24px;background:#2f8a3d}.prize-history-legend i.total{background:#2f8a3d}
.prize-history-line-wrap{width:100%;overflow-x:auto;overflow-y:hidden;scroll-behavior:smooth;scrollbar-width:none}.prize-history-line-wrap::-webkit-scrollbar{display:none}.prize-history-series{stroke:#2f8a3d;stroke-width:2.5;fill:none}.prize-history-line .line-dot{fill:#2f8a3d}.prize-history-line .line-value{fill:#254c32;font-size:9px}.prize-history-line .line-period{fill:#4f5e54;font-size:9px}.prize-card .chart-title-row{margin-left:-3px}.prize-card .chart-title-row h2{margin-left:-6px}
.prize-cycle-select{border:1px solid #d7dfda;border-radius:6px;background:#fff;color:var(--ink);font-size:.7rem;padding:5px 22px 5px 7px}
/* Compacta o retorno de premiação sem perder hierarquia visual. */
.premiacao-status-card{grid-template-columns:66px 1px minmax(0,1fr);gap:14px;margin-top:12px;padding:12px 16px;border-radius:15px;box-shadow:0 4px 12px #17301b10}.premiacao-status-icon{width:66px;height:66px}.premiacao-status-icon>span{width:50px;height:50px}.premiacao-status-icon .icon{width:30px;height:30px}.premiacao-status-icon img{width:48px;height:48px}.premiacao-status-icon .goal-face{width:42px;height:42px}.premiacao-status-divider{height:50px}.premiacao-status-copy h3{margin-bottom:4px;font-size:.98rem}.premiacao-status-copy p{font-size:.68rem;line-height:1.34}.premiacao-status-copy p+p{margin-top:5px}
@media(max-width:430px){.premiacao-status-card{grid-template-columns:54px 1px minmax(0,1fr);gap:10px;padding:10px}.premiacao-status-icon{width:54px;height:54px}.premiacao-status-icon>span{width:42px;height:42px}.premiacao-status-icon img{width:40px;height:40px}.premiacao-status-icon .icon{width:26px;height:26px}.premiacao-status-divider{height:42px}.premiacao-status-copy h3{font-size:.88rem}.premiacao-status-copy p{font-size:.62rem;line-height:1.3}.premiacao-status-copy p+p{margin-top:3px}}
.premiacao-status-icon .premiacao-status-image{width:96px;height:96px;object-fit:contain}.premiacao-status-icon>span:has(.premiacao-status-image){background:transparent}
@media(max-width:430px){.premiacao-status-icon .premiacao-status-image{width:64px;height:64px}}
/* Ilustrações da premiação: mesmas proporções do card compacto. */
.premiacao-status-card{grid-template-columns:100px 1px minmax(0,1fr);gap:20px}.premiacao-status-icon{width:100px;height:100px;display:grid;place-items:center;transform:translateY(-14px)}.premiacao-status-icon>span{width:94px;height:94px;display:grid;place-items:center}.premiacao-status-icon .premiacao-status-image{width:112px;height:112px;object-fit:contain;display:block;transform:translateY(-7px)}.premiacao-status-copy h3{font-size:.98rem}.premiacao-status-copy p{font-size:.68rem;line-height:1.34}
@media(max-width:430px){.premiacao-status-card{grid-template-columns:76px 1px minmax(0,1fr);gap:12px}.premiacao-status-icon{width:76px;height:76px;transform:translateY(-11px)}.premiacao-status-icon>span{width:70px;height:70px}.premiacao-status-icon .premiacao-status-image{width:84px;height:84px;transform:translateY(-5px)}.premiacao-status-copy h3{font-size:.88rem}.premiacao-status-copy p{font-size:.62rem;line-height:1.3}}
.premiacao-status-icon>span:has(.premiacao-status-image){transform:translateX(-17px)}
@media(max-width:430px){.premiacao-status-icon>span:has(.premiacao-status-image){transform:translateX(-13px)}}
.premiacao-status-icon:has(.premiacao-status-image){background:transparent}.premiacao-status-icon>span:has(.premiacao-status-image),.premiacao-status-icon .premiacao-status-image{transform:none}
.premiacao-status-icon:has(.premiacao-status-image){transform:translate(-25px,-6px)}
@media(max-width:430px){.premiacao-status-icon:has(.premiacao-status-image){transform:translate(-15px,-4px)}}
/* O divisor acompanha uma coluna menor; a arte fica centralizada sem compensações manuais. */
.premiacao-status-card{grid-template-columns:78px 1px minmax(0,1fr);gap:14px}.premiacao-status-icon:has(.premiacao-status-image){width:78px;height:78px;transform:none}.premiacao-status-icon>span:has(.premiacao-status-image){width:74px;height:74px;transform:none}.premiacao-status-icon .premiacao-status-image{width:92px;height:92px;transform:none}
@media(max-width:430px){.premiacao-status-card{grid-template-columns:64px 1px minmax(0,1fr);gap:10px}.premiacao-status-icon:has(.premiacao-status-image){width:64px;height:64px;transform:none}.premiacao-status-icon>span:has(.premiacao-status-image){width:60px;height:60px;transform:none}.premiacao-status-icon .premiacao-status-image{width:76px;height:76px;transform:none}}
.premiacao-status-icon .premiacao-status-image{transform:translateX(-14px)!important}
@media(max-width:430px){.premiacao-status-icon .premiacao-status-image{transform:translateX(-10px)!important}}
.evolution-help-content{max-height:0;overflow:hidden;opacity:0;padding:0 16px!important;transition:max-height .35s ease,opacity .2s ease,padding .35s ease}.evolution-help[open] .evolution-help-content{max-height:600px;opacity:1;padding:0 16px 14px!important}
.evolution-help.is-closing .evolution-help-content{max-height:0;opacity:0;padding-top:0!important;padding-bottom:0!important}.evolution-help.is-opening .evolution-help-content{animation:evolutionHelpReveal .42s ease both}@keyframes evolutionHelpReveal{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}
/* Estrutura unica para a ilustração: o divisor delimita a coluna e o centro dela. */
.premiacao-status-card{grid-template-columns:80px 1px minmax(0,1fr)!important;column-gap:10px!important;row-gap:0!important;margin-top:12px;padding:12px 16px 12px 0;border-radius:15px;box-shadow:0 4px 12px #17301b10}
.premiacao-status-icon:has(.premiacao-status-image){width:80px!important;height:80px!important;justify-self:stretch;align-self:center;display:grid;place-items:center;background:transparent;transform:none!important}
.premiacao-status-icon>span:has(.premiacao-status-image){width:80px!important;height:80px!important;display:grid;place-items:center;background:transparent;transform:none!important}
.premiacao-status-icon .premiacao-status-image{width:76px!important;height:76px!important;max-width:none;object-fit:contain;display:block;transform:translateX(6px)!important}
.premiacao-status-divider{height:52px;align-self:center}.premiacao-status-copy h3{margin-bottom:4px;font-size:.98rem}.premiacao-status-copy p{font-size:.68rem;line-height:1.34}.premiacao-status-copy p+p{margin-top:5px}
@media(max-width:430px){.premiacao-status-card{grid-template-columns:68px 1px minmax(0,1fr)!important;column-gap:9px!important;padding:10px 10px 10px 0}.premiacao-status-icon:has(.premiacao-status-image),.premiacao-status-icon>span:has(.premiacao-status-image){width:68px!important;height:68px!important}.premiacao-status-icon .premiacao-status-image{width:64px!important;height:64px!important;transform:translateX(4px)!important}.premiacao-status-divider{height:44px}.premiacao-status-copy h3{font-size:.88rem}.premiacao-status-copy p{font-size:.62rem;line-height:1.3}.premiacao-status-copy p+p{margin-top:3px}}
.journey-hero .gauge-wrap:not(.no-target) .gauge-result{right:0;top:34px;width:45%;height:calc(100% - 42px);box-sizing:border-box;border-left:1px solid #4b956354;padding:4px 8px 0 20px;text-align:left}.journey-hero .journey-gap-icon{display:grid;place-items:center;width:34px;height:34px;margin:2px 0 4px;border:1px solid #4c9b5b;border-radius:50%;color:#a6df5d}.journey-hero .journey-gap-icon .icon{width:22px;height:22px;stroke-width:1.5}.journey-hero .gauge-result:after{content:'Faltam\A ' var(--gauge-gap) '\A para atingir\A a meta';display:block;padding-left:0;margin-top:6px;color:#fff;font-size:.68rem;line-height:1.25;white-space:pre}.journey-hero .gauge-result:before{margin-left:-2px}
.journey-hero .gauge-result:has(b.is-fail){border-left:0!important}
.journey-hero .gauge-result:has(b.is-fail):after{display:none!important}
.journey-hero .gauge-result:has(b.is-progress):after{top:48px;line-height:1.2;max-width:92%;overflow:visible}
.journey-hero .gauge-result:has(b.is-progress){top:50%;height:92px;transform:translateY(-50%);}
.journey-hero .gauge-result:has(b.is-progress) .journey-gap-icon{margin-top:0}
.journey-hero .gauge-result:has(b.is-progress):after{display:none!important}
.journey-hero .gauge-result .gap-message{display:block!important;position:absolute;top:48px;left:20px;right:4px;color:#fff;font-size:.68rem;line-height:1.2;white-space:normal}
.journey-hero .gauge-result .gap-message strong{color:#a6df5d;font-weight:700}
.journey-hero .gauge-result:has(b.is-progress) .journey-gap-icon{display:none!important}
.journey-hero .gauge-result:has(b.is-progress) .gap-message{top:20px}
.journey-hero .gauge-result:has(b.is-progress) .gap-message{font-size:.76rem;line-height:1.18}
.journey-hero .gauge-result:has(b.is-progress){border-left:0!important}
.journey-hero .gauge-result:has(b.is-progress):before{content:'';display:block!important;position:absolute;left:0;top:0;width:1px;height:100%;margin:0;background:#4b956354}
.journey-hero .gauge-result:has(b.is-hit){top:50%;height:92px;transform:translateY(-50%);border-left:0!important}
.journey-hero .gauge-result:has(b.is-hit):before,.journey-hero .gauge-result:has(b.is-hit):after{display:none!important}
.journey-hero .gauge-result:has(b.is-hit) b.is-hit{display:block!important;position:absolute;top:50%;left:20px;right:4px;transform:translateY(-50%);color:#a6df5d;font-size:.76rem;line-height:1.18;white-space:normal;overflow-wrap:anywhere;text-align:center}
.journey-hero .gauge-result:has(b.is-hit){top:50%!important;height:92px!important;transform:translateY(-50%)!important}
.journey-hero .gauge-result:has(b.is-hit) b.is-hit{top:50%!important;transform:translateY(-50%)!important}
.journey-hero .gauge-result:has(b.is-progress):before{display:none!important}
.chart-card:has(#eventMetricToggle) h3,.chart-card:has(.km-bars) h3,.mkpe-chart-card h3{position:relative;display:inline-block}
.chart-card:has(#eventMetricToggle) h3:after,.chart-card:has(.km-bars) h3:after,.mkpe-chart-card h3:after{content:'';display:inline-block;vertical-align:-3px;margin-left:6px;width:17px;height:17px;background:#2b7d42;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 16v-4M12 8h.01'/%3E%3C/svg%3E") center/contain no-repeat;cursor:help;cursor:pointer}
.journey-hero .gauge-result:has(b.is-progress){border-left:0!important}
.journey-hero .gauge-result:has(b.is-progress){border-left:1px solid #4b956354}
.mkpe-chart-card .line-dot,.mkpe-chart-card .line-period,.mkpe-chart-card .target-dot{pointer-events:none}
/* Tooltip de info dos gráficos: uma única regra de caixa/posição compartilhada
   pelos 3 cards, e o texto (content) específico de cada um logo abaixo. */
.chart-card:has(#eventMetricToggle) h3:hover:before,.chart-card:has(#eventMetricToggle) h3:focus-within:before,.chart-card:has(#eventMetricToggle) h3.is-info-open:before,
.chart-card:has(.km-bars) h3:hover:before,.chart-card:has(.km-bars) h3:focus-within:before,.chart-card:has(.km-bars) h3.is-info-open:before,
.chart-card.mkpe-chart-card:has(#evolutionMetricToggle) h3:hover:before,.chart-card.mkpe-chart-card:has(#evolutionMetricToggle) h3:focus-within:before,.chart-card.mkpe-chart-card:has(#evolutionMetricToggle) h3.is-info-open:before{
  white-space:pre-line;position:absolute;z-index:20;left:0;top:calc(100% + 7px);width:min(290px,calc(100vw - 48px));padding:9px 11px;border-radius:8px;background:#1f5b3d;color:#fff;box-shadow:0 5px 16px #0b2f1d40;font:500 .68rem/1.35 Manrope,sans-serif;
}
.chart-card:has(#eventMetricToggle) h3:hover:before,.chart-card:has(#eventMetricToggle) h3:focus-within:before,.chart-card:has(#eventMetricToggle) h3.is-info-open:before{content:'O gráfico abaixo representa a quantidade de eventos em cada ciclo.\A\A A variação compara o ciclo selecionado com o ciclo anterior.'}
.chart-card:has(.km-bars) h3:hover:before,.chart-card:has(.km-bars) h3:focus-within:before,.chart-card:has(.km-bars) h3.is-info-open:before{content:'O gráfico abaixo representa o KM rodado em cada ciclo.\A\A A variação compara o ciclo selecionado com o ciclo anterior.'}
.chart-card.mkpe-chart-card:has(#evolutionMetricToggle) h3:hover:before,.chart-card.mkpe-chart-card:has(#evolutionMetricToggle) h3:focus-within:before,.chart-card.mkpe-chart-card:has(#evolutionMetricToggle) h3.is-info-open:before{content:'O gráfico abaixo representa o MKPE em cada ciclo.\A\A A variação compara o ciclo selecionado com o ciclo anterior.'}
.journey-hero .gauge-result:has(b.is-hit) b.is-hit{top:40%!important;transform:translateY(-50%)!important}
.login-page{animation:loginReveal .55s cubic-bezier(.18,.8,.2,1) both}@keyframes loginReveal{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.login-card{animation:loginCardReveal .5s .12s cubic-bezier(.18,.8,.2,1) both}@keyframes loginCardReveal{from{opacity:0;transform:translateY(16px) scale(.985)}to{opacity:1;transform:none}}
.login-page{animation:none!important}
.login-mascot{animation:mascotReveal .65s .08s cubic-bezier(.18,.8,.2,1) both}@keyframes mascotReveal{from{opacity:0;transform:translateX(-50%) translateY(18px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}
.login-card,.login-mascot{animation:none!important;opacity:1!important}
.login-brand,.login-mascot,.login-card{animation:loginElements .45s ease both!important}
@keyframes loginElements{from{opacity:0}to{opacity:1}}
.login-brand{animation:loginBrandDrop .5s ease both!important}
@keyframes loginBrandDrop{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.login-brand,.login-mascot,.login-card{animation-duration:.75s!important}
.login-mascot{animation:loginMascotDrop .5s ease both!important}
@media(max-width:999px){.login-brand,.login-mascot{animation:none!important}}
.login-card{animation:loginCardDrop .5s ease both!important}
@keyframes loginMascotDrop{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
@keyframes loginCardDrop{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}
.login-card.is-swap-content,.login-card-badge.is-swap-static{animation:none!important}
.login-card.is-swap-content .login-welcome,.login-card.is-swap-content .login-field,.login-card.is-swap-content .login-options,.login-card.is-swap-content .primary-btn{animation:loginItemAppear .3s ease both}
.login-card.is-swap-content .login-field{animation-delay:.05s}
.login-card.is-swap-content .login-options{animation-delay:.12s}
.login-card.is-swap-content .primary-btn{animation-delay:.17s}
.login-card.is-swap-content .login-mode-toggle{animation:loginToggleSwap .35s cubic-bezier(.34,1.56,.64,1) both}
@keyframes loginItemAppear{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes loginToggleSwap{from{opacity:0;transform:scale(.4) rotate(-120deg)}to{opacity:1;transform:none}}

/* Gráfico MKPE: o modo com até sete ciclos ocupa integralmente o card,
   sem deixar o SVG restrito à largura intrínseca do viewBox. */
.chart-card.mkpe-chart-card .chart-scroll{
  display:block;
  width:100%;
  max-width:100%;
  box-sizing:border-box;
  overflow-x:auto;
  overflow-y:hidden;
  padding:0 2px 3px;
}
.chart-card.mkpe-chart-card .line-chart.fit{
  display:block;
  width:100% !important;
  min-width:100% !important;
  max-width:100% !important;
  height:180px;
  box-sizing:border-box;
}
.chart-card.mkpe-chart-card .chart-scroll:has(.line-chart.fit){overflow-x:hidden}
.journey-hero .gauge-result:has(b.is-fail){top:50%!important;height:92px!important;transform:translateY(-50%)!important;border-left:0!important}
.journey-hero .gauge-result:has(b.is-fail) b.is-fail{display:block!important;position:absolute;top:50%;left:20px;right:4px;transform:translateY(-50%);color:#fff;font-size:.76rem;line-height:1.18;white-space:nowrap}
.journey-hero .gauge-result:has(b.is-fail) b.is-fail{top:40%!important}
.journey-hero .gauge-result:has(b.is-fail) b.is-fail{white-space:normal!important;overflow-wrap:anywhere;max-width:100%;text-align:center}
.journey-hero .gauge-wrap.no-target .gauge-no-target-message{display:block!important;position:absolute;right:0;top:50%;width:45%;transform:translateY(-50%);color:#fff;font-size:.76rem;line-height:1.18;text-align:left}
.journey-hero .gauge-wrap.no-target .gauge-no-target-message{top:42%!important;left:55%!important;right:auto;width:45%!important;height:92px;display:flex!important;align-items:center;padding-left:20px;box-sizing:border-box;transform:translateY(-50%);text-align:left}
.journey-hero .gauge-wrap.no-target .gauge-no-target-message,.journey-hero .gauge-wrap.no-target .gauge-no-target-message b{font-size:.76rem!important;line-height:1.18!important;font-weight:700!important}
.premiacao-status-card.status-none{padding-left:0!important;padding-inline-start:0!important}
.premiacao-status-card.status-none{padding-inline-start:0!important}
.premiacao-status-card.status-none .premiacao-status-icon,.premiacao-status-card.status-none .premiacao-status-icon>span,.premiacao-status-card.status-none .premiacao-status-image{transform:none!important}
.kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.kpi-grid>.driver-kpi:nth-child(3){grid-row:3;grid-column:1}.kpi-grid>.driver-kpi:nth-child(4){grid-row:2;grid-column:1}.kpi-grid>.driver-kpi:nth-child(5){grid-row:2;grid-column:2}.kpi-grid>.driver-kpi:nth-child(6){grid-row:3;grid-column:2}
.driver-kpi{min-height:64px;padding:6px 8px;align-items:center}
.profile-view{margin-bottom:0}
.profile-logout-wrap .app-version{display:block;margin:22px 0 0;text-align:center;color:#8a938d;font-size:.6rem;line-height:1.2;font-weight:500;pointer-events:none}
.admin-users-page{padding:24px}.admin-users-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.admin-users-head h1{margin:0;font-size:1.35rem}.admin-users-head p{margin:5px 0 0;color:#68736d;font-size:.82rem}.admin-users-summary{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:16px}.admin-users-summary>div{background:#fff;border:1px solid #e1e8e3;border-radius:12px;padding:15px}.admin-users-summary b{display:block;color:#0d6231;font-size:1.35rem}.admin-users-summary span{font-size:.72rem;color:#68736d}.admin-users-table{overflow:auto;border-radius:12px;border:1px solid var(--line)}.admin-users-table table{width:100%;border-collapse:collapse;font-size:.76rem}.admin-users-table th{background:#07552b;color:#fff;text-align:left;padding:10px}.admin-users-table td{padding:10px;border-bottom:1px solid #e5ebe7;white-space:nowrap}.admin-users-table tbody tr:nth-child(even){background:#f5f9f6}.admin-users-table tbody tr:hover{background:#eaf3ec}.admin-access-pill{display:inline-block;border-radius:999px;padding:4px 9px;font-size:.68rem;font-weight:700}.admin-access-pill.ok{background:#e4f5df;color:#267d35}.admin-access-pill.blocked{background:#fde7e7;color:#b82c2c}.admin-access-pill.warn{background:#fff3d6;color:#8a6100}.admin-access-pill.neutral{background:#eceeec;color:#5b625d}.cycle-select-wrap-admin{display:grid;gap:4px;font-size:.68rem;color:#68736d}.cycle-select-wrap-admin select{height:34px;border:1px solid #dfe4df;border-radius:7px;background:#fff;padding:0 9px;font-size:.74rem;color:var(--ink)}@media(max-width:700px){.admin-users-page{padding:15px 10px}.admin-users-summary{grid-template-columns:repeat(2,1fr)}.admin-users-head h1{font-size:1.1rem}}
.admin-users-filters{display:grid;grid-template-columns:minmax(180px,1fr) minmax(160px,260px) auto;gap:10px;align-items:end;margin-bottom:16px}.admin-users-filters label{display:grid;gap:5px;color:#68736d;font-size:.72rem}.admin-users-filters input{height:36px;border:1px solid #d7e1da;border-radius:8px;padding:0 10px;font:inherit;color:#143b25;background:#fff}.admin-users-filters button{height:36px;border:0;border-radius:8px;padding:0 16px;background:#0b7138;color:#fff;font-weight:700;cursor:pointer}.admin-users-table{max-height:560px;overflow:auto}.admin-users-loading{text-align:center;color:#68736d;font-size:.72rem;padding:10px;background:#fff;position:sticky;bottom:0}
@media(max-width:700px){.admin-users-filters{grid-template-columns:1fr}.admin-users-filters button{width:100%}}
.admin-page-filters{display:flex;flex-wrap:wrap;gap:10px;align-items:end;margin-bottom:16px}.admin-page-filters label{display:grid;gap:5px;color:#68736d;font-size:.72rem;min-width:150px}.admin-page-filters input,.admin-page-filters select{height:36px;border:1px solid #d7e1da;border-radius:8px;padding:0 10px;font:inherit;color:#143b25;background:#fff}
.admins-toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:end;margin-bottom:14px}
.admins-toolbar .filter-field{min-width:150px}.admins-toolbar .filter-field>label{display:block;font-size:.57rem;color:#4f5550;margin:0 0 5px 3px}
.admins-toolbar .filter-field input,.admins-toolbar .filter-field select{width:100%;height:34px;border:1px solid #dfe4df;border-radius:7px;background:#fff;padding:0 9px;font-size:.68rem;outline:none;color:var(--ink)}
.admins-toolbar .filter-field input:focus,.admins-toolbar .filter-field select:focus{border-color:#69a776}
.admins-search-field{flex:1;min-width:200px}
.admins-add-btn{width:34px;height:34px;border-radius:50%;border:0;background:#1c7438;color:#fff;display:grid;place-items:center;cursor:pointer;flex:0 0 auto}
.admins-add-btn:hover{filter:brightness(1.08)}
.admin-user-cell{display:flex;align-items:center;gap:10px}
.admin-avatar-circle{width:32px;height:32px;border-radius:50%;color:#fff;display:grid;place-items:center;font-size:.62rem;font-weight:700;flex:0 0 auto}
.admin-user-cell div{display:grid;line-height:1.3}.admin-user-cell b{font-size:.74rem;color:var(--ink)}.admin-user-cell small{color:#68736d;font-size:.64rem}
.admin-role-pill{display:inline-block;border-radius:999px;padding:4px 10px;font-size:.66rem;font-weight:700}
.admins-row-actions{display:flex;gap:6px}
.icon-action-btn{width:28px;height:28px;border-radius:7px;border:1px solid #dfe4df;background:#fff;color:#4f5550;display:grid;place-items:center;cursor:pointer}
.icon-action-btn:hover{background:#f0f4f1}
.icon-action-btn.is-danger{color:#b82c2c;border-color:#f3d3d3}.icon-action-btn.is-danger:hover{background:#fde7e7}
.icon-action-btn.is-ok{color:#267d35;border-color:#cfe6d3}.icon-action-btn.is-ok:hover{background:#e4f5df}
.admins-table-footer{margin-top:10px;color:#68736d;font-size:.68rem}
.engagement-chart{height:140px;display:flex;align-items:flex-end;gap:3px;padding:22px 4px 0}
.engagement-bar{position:relative;background:linear-gradient(#267a3a,#176735);border-radius:3px 3px 0 0;min-width:2px}
.engagement-bar-label{position:absolute;top:-16px;left:50%;transform:translateX(-50%);font-size:.5rem;color:#4f5550;white-space:nowrap}
.engagement-chart-labels{display:flex;justify-content:space-between;font-size:.62rem;color:#68736d;padding:6px 4px 0}
.engagement-bucket-chart{display:flex;flex-direction:column;gap:9px;padding:10px 4px}
.engagement-bucket-row{display:grid;grid-template-columns:100px 1fr 34px;align-items:center;gap:9px;font-size:.64rem;color:#4f5550}
.engagement-bucket-track{height:12px;border-radius:6px;background:#eef2ef;overflow:hidden}
.engagement-bucket-track i{display:block;height:100%;border-radius:6px}
.engagement-bucket-value{text-align:right;font-weight:600;color:#143b25}
.admins-row-actions{display:flex;gap:6px;flex-wrap:wrap}
.admin-inline-form{margin-top:14px;border:1px solid #e1e8e3;border-radius:12px;background:#f7faf8;overflow:hidden}
.admin-inline-form>summary{cursor:pointer;list-style:none;padding:12px 14px;font-weight:700;font-size:.82rem;color:#0d6231}
.admin-inline-form>summary::-webkit-details-marker{display:none}
.admin-inline-form .demo-login-collapse{padding:0 14px}
.admin-inline-form[open] .demo-login-collapse{padding:0 14px 14px}
.admin-form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:10px}
.bands-editor{display:flex;flex-direction:column;gap:9px;margin:14px 0}
.band-row{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:#fff}
.band-row-readonly{background:#fafcfa}
.band-swatch{width:14px;height:14px;border-radius:50%;background:var(--band-color);flex:0 0 auto}
.band-info{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}
.band-info b{font-size:.8rem;color:#193325}
.band-row-readonly .band-info b{color:#7c8a80}
.band-info .muted{font-size:.68rem;color:#7c8a80}
.band-row input{width:96px;height:38px;border:1px solid #d7e1da;border-radius:8px;padding:0 10px;font-size:.85rem;font-weight:700;text-align:center;color:#143b25;background:#fff;flex:0 0 auto}
.admin-form-grid label,.admin-inline-form>.demo-login-collapse>label{display:grid;gap:4px;font-size:.72rem;color:#68736d}
.admin-form-grid input,.admin-form-grid select,.admin-inline-form input,.admin-inline-form select{height:36px;border:1px solid #d7e1da;border-radius:8px;padding:0 10px;font:inherit;color:#143b25;background:#fff}
.confirm-overlay{position:fixed;inset:0;z-index:999;background:#0b2317a3;display:flex;align-items:center;justify-content:center;padding:20px}
.confirm-box{width:min(92%,380px);background:#fff;border-radius:14px;padding:20px;box-shadow:0 20px 45px #001d1145}
.confirm-box p{margin:0 0 18px;color:#143b25;font-size:.86rem;line-height:1.5}
.confirm-actions{display:flex;justify-content:flex-end;gap:10px}
.confirm-actions button{height:38px;padding:0 18px;border-radius:8px;font-weight:700;font-size:.8rem;cursor:pointer}
.confirm-actions .panel-select{background:#fff;border:1px solid #dfe4df;color:#143b25}
.confirm-actions .primary-btn{border:0;background:#0b7138;color:#fff}
.profiles-list{display:grid;gap:10px;margin-top:10px}
.profile-row{border:1px solid #e1e8e3;border-radius:12px;padding:12px 14px;background:#fff}
.profile-row-head{display:flex;align-items:center;gap:8px;margin-bottom:4px}
.profile-row-head b{font-size:.86rem}
.profile-perm-badges{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 4px}
.profile-row-actions{display:flex;gap:6px;margin-top:8px}
.profile-perm-checks{display:grid;grid-template-columns:repeat(2,1fr);gap:6px 12px;margin:10px 0}
.perm-check{display:flex;align-items:center;gap:6px;font-size:.76rem;color:#33413a}

/* Desktop: layout amplo restaurado com mascote à esquerda e card à direita. */
@media(min-width:1000px){
  html,body{height:100%;overflow:hidden}
  body.is-login-page{overflow-y:hidden}
  .login-page{place-items:center center}
  .driver-app{width:min(1180px,calc(100vw - 24px));height:calc(100vh - 24px - var(--install-banner-h,0px));min-height:0;margin:12px auto;border-radius:22px;overflow:hidden;display:grid;grid-template-columns:1fr;grid-template-rows:96px minmax(0,1fr) 82px;box-shadow:0 26px 55px #00180f40}
  .driver-top{grid-column:1;grid-row:1;height:96px;padding:16px 22px}
  .driver-top .cycle-select{height:45px}.driver-top .cycle-select-wrap .icon{top:14px}
  .driver-sheet{grid-column:1;grid-row:2;min-height:0;height:100%;position:relative;overflow:auto;overflow-x:hidden;scrollbar-gutter:stable;padding:18px 18px 22px;border-radius:24px 24px 0 0;box-shadow:0 -6px 18px #001e0d1a;background-clip:padding-box;clip-path:inset(0 round 24px 24px 0 0)}
  .driver-sheet.profile-mode{min-height:0;padding-bottom:22px}
  .driver-app.profile-layout .bottom-nav,.bottom-nav{position:static;left:auto;bottom:auto;transform:none;width:100%;height:82px;grid-column:1;grid-row:3;grid-template-columns:repeat(5,1fr);padding:7px 12px;border-top:1px solid var(--line);border-left:0;box-shadow:0 -5px 18px #0b2d1712}
  .nav-item{min-height:0;border-radius:0;font-size:.67rem;gap:3px}
  .nav-item.active{background:transparent}
  .nav-item.active:after{display:block}
  .driver-content{min-height:0}
  .journey-hero{min-height:155px;padding:11px 12px}
  .journey-grid{position:static;display:block;min-height:112px;margin-top:8px}
  .journey-values{position:relative;z-index:2;max-width:34%}
  .journey-hero .gauge-wrap{position:absolute;inset:0;height:auto;overflow:visible;z-index:1}
  .journey-hero .gauge-svg{position:absolute;left:50%;top:50%;width:132px;height:132px;max-width:none;margin:0;transform:translate(-50%,-50%)}
  .journey-hero .gauge-wrap:not(.no-target) .gauge-result{position:absolute!important;left:calc(50% + 57px)!important;right:0!important;top:50%!important;width:auto!important;height:auto!important;transform:translateY(-50%)!important;padding-left:8px;text-align:center}
  .journey-hero .gauge-result:before,.journey-hero .gauge-result:after{display:none!important}
  .journey-hero .gauge-result b{font-size:.95rem;line-height:1.15;white-space:normal!important}
  .journey-hero .gauge-result span{font-size:.76rem;line-height:1.2}
  .journey-hero .gauge-result .gap-message{position:static!important;display:block!important;top:auto!important;left:auto!important;right:auto!important;margin-top:6px;color:#fff;font-size:.74rem;line-height:1.2}
  .journey-hero .gauge-result:has(b.is-hit),
  .journey-hero .gauge-result:has(b.is-progress),
  .journey-hero .gauge-result:has(b.is-fail){top:auto!important;height:auto!important;transform:none!important;border-left:0!important}
  .journey-hero .gauge-result:has(b.is-hit) b.is-hit,
  .journey-hero .gauge-result:has(b.is-progress) b.is-progress,
  .journey-hero .gauge-result:has(b.is-fail) b.is-fail{position:static!important;top:auto!important;left:auto!important;right:auto!important;transform:none!important;white-space:normal!important}
  .journey-hero .gauge-wrap.no-target .gauge-no-target-message{position:absolute!important;left:calc(50% + 57px)!important;right:0!important;top:50%!important;width:auto!important;height:auto!important;display:block!important;transform:translateY(-50%)!important;padding-left:8px;text-align:center}
  .admin-app{height:calc(100vh - var(--install-banner-h,0px));min-height:0;overflow:hidden}
  .admin-main{min-height:0;overflow:auto;scrollbar-gutter:stable}
  .driver-sheet,.admin-main{scrollbar-color:#c2d2c6 transparent;scrollbar-width:thin}
  .driver-sheet::-webkit-scrollbar,.admin-main::-webkit-scrollbar{width:10px;height:10px}
  .driver-sheet::-webkit-scrollbar-track,.admin-main::-webkit-scrollbar-track{background:transparent;margin-block:18px 12px;border-radius:999px}
  .driver-sheet::-webkit-scrollbar-thumb,.admin-main::-webkit-scrollbar-thumb{background:#c2d2c6;border-radius:999px;border:2px solid transparent;background-clip:padding-box}
  .driver-sheet::-webkit-scrollbar-thumb:hover,.admin-main::-webkit-scrollbar-thumb:hover{background:#a9bcae;border:2px solid transparent;background-clip:padding-box}
  .login-page{padding:12px}
  .login-main{display:contents}
  .login-stack{width:min(1180px,100%);min-height:0}
  .login-shell{height:calc(100vh - 24px - var(--install-banner-h,0px));min-height:0;padding-bottom:0;border-radius:22px;border:1px solid #2d5e42;box-shadow:0 26px 55px #00180f66;display:grid;justify-content:center;grid-template-columns:minmax(540px,696px) 460px;grid-template-rows:1fr auto auto;column-gap:24px}
  .login-shell:before{content:'';position:absolute;inset:0;pointer-events:none;background:repeating-conic-gradient(from 202deg at calc(50% - 242px) calc(100% - 397px),#d6efc614 0deg 7deg,transparent 7deg 15deg);opacity:.85;z-index:0}
  .login-shell:after{content:'';position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 33% 100%,rgba(10,79,44,.42) 0 12%,rgba(10,79,44,.16) 20%,rgba(10,79,44,0) 31%) bottom left/46% 68px no-repeat,radial-gradient(circle at 29% 78%,#96d57030 0 22%,transparent 52%);z-index:2}
  .login-shell>*{position:relative;z-index:1}
  .login-shell .bottom-fade{position:absolute;left:0;right:0;bottom:0;height:260px;pointer-events:none;z-index:3;background:linear-gradient(to bottom,rgba(0,67,33,0) 0%,rgba(0,67,33,.55) 45%,rgba(0,67,33,.85) 70%,#004321 90%,#004321 100%)}
  .login-hero{height:100%;flex:1 1 auto;min-height:0;display:flex;align-items:flex-end;overflow:visible;z-index:3}
  .login-hero:before{content:'';position:absolute;left:5%;width:90%;bottom:24px;height:150px;pointer-events:none;z-index:2;background:radial-gradient(ellipse at center,rgba(17,103,62,.30) 0%,rgba(9,83,49,.19) 35%,rgba(5,70,41,.10) 55%,transparent 78%);filter:blur(18px)}
  .login-hero:after{display:none!important}
  .login-mascot-halo{display:none!important}
  .login-brand{position:absolute;margin:0;padding-top:0;display:flex;justify-content:center}
  .login-mascot-frame{display:contents}
  .login-mascot{position:absolute;left:0;right:0;bottom:64px;margin:0 auto;width:min(82%,430px);max-width:none;height:auto;max-height:78vh;aspect-ratio:auto;object-fit:contain;object-position:center bottom;z-index:3;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-image:linear-gradient(to bottom,#000 0%,#000 76%,rgba(0,0,0,.95) 80%,rgba(0,0,0,.8) 84%,rgba(0,0,0,.6) 88%,rgba(0,0,0,.35) 93%,rgba(0,0,0,.15) 97%,transparent 100%);mask-image:linear-gradient(to bottom,#000 0%,#000 76%,rgba(0,0,0,.95) 80%,rgba(0,0,0,.8) 84%,rgba(0,0,0,.6) 88%,rgba(0,0,0,.35) 93%,rgba(0,0,0,.15) 97%,transparent 100%)}
  .login-auth-zone{height:100%;margin:0;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;padding:125px 0 26px}
  .login-auth-zone,.login-copyright,.login-version{position:relative;z-index:4}
  .login-card{width:100%;max-width:430px;margin:0 0 0 -110px;padding:22px;border-radius:16px}
  .demo-login-panel{position:static;width:100%;max-width:430px;margin:10px 0 0 -110px}
  .demo-login-panel:not([open]){padding:4px 8px}
  .demo-login-panel>summary{justify-content:space-between;align-items:center;min-height:12px}
  .login-shell .demo-login-panel:not([open]){margin:10px 0 0 -110px;padding:10px 11px;border:1px solid #ffffff29;background:#ffffff0e;box-shadow:0 9px 22px #001b0e24;backdrop-filter:blur(4px)}
  .login-shell .demo-login-panel:not([open])>summary{min-height:24px;justify-content:space-between;padding:0 2px}
  .login-shell .demo-login-panel:not([open])>summary:before{content:'Acessos de demonstração';color:#d3e2d8;font-size:.62rem;font-weight:700}
  .login-footer{display:contents}
  .login-copyright{padding:0 14px 12px}
  .login-version{padding:6px 14px 2px}
  .login-copyright,.login-version{grid-column:1/-1}
}

/* Mobile (teste): garante que o anel fique contido dentro do card verde. */
@media(max-width:430px){
  .journey-hero{position:relative}
  .journey-hero .journey-grid{position:static;overflow:hidden}
  .journey-hero .gauge-wrap{position:absolute;inset:0;display:block;height:auto;overflow:hidden}
  .journey-hero .gauge-svg{
    position:absolute;
    left:50%!important;
    top:50%!important;
    width:min(122px,38vw)!important;
    max-width:122px;
    height:auto;
    margin:0!important;
    transform:translate(-50%,-50%)!important;
  }
}

/* Faixa intermediária (tablet/móveis largos): evita estouro do anel no card. */
@media(min-width:431px) and (max-width:999px){
  .driver-top .brand-lockup{gap:15px}.driver-top .brand-logo{width:100px;max-height:38px}.driver-top .program-logo{width:104px;height:36px}.driver-top .brand-divider{height:32px}.driver-top .cycle-select{height:38px}.driver-top .cycle-select-wrap .icon{top:10.5px}
  .evo-mini .mini-label{height:56px;min-height:56px}
  .journey-hero{position:relative}
  .journey-hero .journey-grid{position:static;overflow:hidden}
  .journey-hero .gauge-wrap{position:absolute;inset:0;display:block;height:auto;overflow:hidden}
  .journey-hero .gauge-svg{
    position:absolute;
    left:50%!important;
    top:50%!important;
    width:clamp(110px,24vw,126px)!important;
    max-width:126px;
    height:auto;
    margin:0!important;
    transform:translate(-50%,-50%)!important;
  }
  .journey-hero .gauge-wrap.no-target .gauge-no-target-message{
    left:auto!important;
    right:10px!important;
    top:50%!important;
    width:min(180px,38%)!important;
    height:auto!important;
    padding-left:0!important;
    transform:translateY(-50%)!important;
    text-align:left;
  }
}

/* Garante que o bloco textual do anel nunca saia do card e fique centralizado no eixo Y. */
@media(max-width:999px){
  .journey-hero .gauge-wrap:not(.no-target) .gauge-result,
  .journey-hero .gauge-wrap.no-target .gauge-no-target-message{
    position:absolute!important;
    left:auto!important;
    right:10px!important;
    top:50%!important;
    transform:translateY(-50%)!important;
    width:min(136px,43%)!important;
    max-width:136px;
    height:auto!important;
    max-height:calc(100% - 16px);
    display:flex!important;
    box-sizing:border-box;
    padding:0 0 0 10px!important;
    text-align:center;
    overflow:hidden;
  }
  .journey-hero .gauge-wrap:not(.no-target) .gauge-result{flex-direction:column;justify-content:center;align-items:center;gap:4px}
  .journey-hero .gauge-wrap.no-target .gauge-no-target-message{align-items:center;justify-content:center}
  .journey-hero .gauge-wrap.no-target .gauge-no-target-message,
  .journey-hero .gauge-result:has(b.is-progress){border-left:1px solid #4b956354!important}
  .journey-hero .gauge-result:has(b.is-hit),
  .journey-hero .gauge-result:has(b.is-fail){border-left:0!important}

  .journey-hero .gauge-result:before,
  .journey-hero .gauge-result:after,
  .journey-hero .gauge-result:has(b.is-progress):before,
  .journey-hero .gauge-result:has(b.is-progress):after,
  .journey-hero .gauge-result:has(b.is-hit):before,
  .journey-hero .gauge-result:has(b.is-hit):after,
  .journey-hero .gauge-result:has(b.is-fail):before,
  .journey-hero .gauge-result:has(b.is-fail):after{
    display:none!important;
    content:none!important;
  }

  .journey-hero .gauge-result .journey-gap-icon{display:none!important}

  .journey-hero .gauge-result b,
  .journey-hero .gauge-result:has(b.is-progress) b.is-progress,
  .journey-hero .gauge-result:has(b.is-hit) b.is-hit,
  .journey-hero .gauge-result:has(b.is-fail) b.is-fail{
    position:static!important;
    top:auto!important;
    left:auto!important;
    right:auto!important;
    transform:none!important;
    margin:0!important;
    font-size:.74rem!important;
    line-height:1.35!important;
    white-space:normal!important;
  }

  .journey-hero .gauge-result .gap-message,
  .journey-hero .gauge-result:has(b.is-progress) .gap-message{
    position:static!important;
    top:auto!important;
    left:auto!important;
    right:auto!important;
    margin:0!important;
    font-size:.67rem!important;
    line-height:1.18!important;
    white-space:normal!important;
  }

}

/* Sincronizacao automatica — cartao de configuracao em Integracoes.
   Mesma linguagem visual do .sync-global-actions logo acima. */
.sync-auto-row{display:flex;flex-wrap:wrap;align-items:center;gap:16px;margin-top:14px}
.sync-auto-toggle{display:flex;align-items:center;gap:8px;font-weight:600}
.sync-auto-toggle input{width:16px;height:16px;box-sizing:border-box;margin:0}
.sync-auto-intervalo{display:flex;align-items:center;gap:8px}
.sync-auto-intervalo input{width:72px;text-align:center}
.sync-auto-toggle input:disabled,.sync-auto-intervalo input:disabled{opacity:.5;cursor:not-allowed}

/* ---- Tela de Usuarios: indicadores, colunas novas e ferramentas ---- */
/* Indicadores da tela de Usuarios.
   Moram dentro do card de cabecalho, junto do titulo — antes flutuavam soltos
   entre o cabecalho e a tabela, sem pertencer a nenhum dos dois.
   O formato (rotulo pequeno a esquerda, numero a direita, pastilha baixa de
   borda 2px) e o mesmo do Gestao de Jornadas, para quem usa os dois sistemas
   nao ter de reaprender a ler a tela. */
.admin-users-head.com-indicadores{display:block}
.admin-users-head.com-indicadores .admin-users-head-texto{display:flex;flex-direction:column}
.user-kpis{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:12px 0 0}
@media(min-width:640px){.user-kpis{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}}
.user-kpi{display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:8px 12px;border:2px solid var(--line,#dce2e8);border-radius:12px;
  background:#fff;cursor:pointer;text-align:left;min-width:0;min-height:42px;
  transition:border-color .2s,box-shadow .2s,transform .2s}
.user-kpi:hover{border-color:#9fb8a8;transform:translateY(-2px);box-shadow:0 4px 10px rgba(15,39,22,.10)}
.user-kpi:focus-visible{outline:2px solid var(--green-700);outline-offset:2px}
.user-kpi.ativo{border-color:var(--green-700,#176735);background:rgba(23,103,53,.05)}
.user-kpi-label{font-size:.6rem;letter-spacing:.12em;text-transform:uppercase;color:#6b7683;
  font-weight:600;line-height:1.2;min-width:0;overflow:hidden;text-overflow:ellipsis}
.user-kpi-value{font-size:1rem;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.15;
  color:var(--ink,#121512);flex:0 0 auto}
@media(prefers-reduced-motion:reduce){.user-kpi:hover{transform:none}}
.user-tool-btn{width:30px;height:30px;border-radius:50%;align-self:flex-end}
.user-tool-btn:disabled{opacity:.4;cursor:not-allowed}
.user-email{font-size:.86rem;word-break:break-all;max-width:230px}
.user-online{display:block;color:var(--brand,#1c7438);font-weight:600;font-size:.7rem}
.user-senha{font-size:.72rem;font-weight:600;padding:2px 8px;border-radius:999px;white-space:nowrap}
.user-senha.temp{background:#fbf0dc;color:#8a5d07}
.user-senha.ok{background:#e3f0e9;color:#256340}
.admin-users-table th[data-user-sort]{cursor:pointer;user-select:none}
.admin-users-table th[data-user-sort]:hover{color:var(--brand,#1c7438)}

/* ---- Matriz de permissoes ---- */
.perfil-cards{display:flex;flex-wrap:wrap;gap:10px;margin:12px 0 18px}
.perfil-card{display:flex;flex-direction:column;gap:3px;align-items:flex-start;text-align:left;
  padding:12px 16px;border:1px solid var(--line,#dce2e8);border-radius:12px;background:#fff;
  cursor:pointer;min-width:190px;max-width:280px}
.perfil-card:hover{border-color:#b6c2cf}
.perfil-card.ativo{border-color:var(--brand,#1c7438);box-shadow:0 0 0 2px rgba(28,116,56,.12)}
.perfil-card b{font-size:.95rem}
.perfil-card small{color:#6b7683;font-size:.75rem;line-height:1.35}
.perfil-resumo{display:flex;flex-wrap:wrap;gap:0 26px;padding:12px 16px;background:#f2f5f7;
  border-radius:10px;margin-bottom:14px;font-size:.86rem}
.perfil-resumo b{font-variant-numeric:tabular-nums}
.matriz-perm{width:100%;border-collapse:separate;border-spacing:0;font-size:.88rem}
.matriz-perm th{text-align:left;font-size:.68rem;letter-spacing:.06em;text-transform:uppercase;
  color:#6b7683;padding:8px 12px 8px 0;border-bottom:1px solid #c7d0d8}
.matriz-perm td{padding:11px 12px 11px 0;border-bottom:1px solid #e7ecf0;vertical-align:top}
.matriz-modulo b{display:block}
.matriz-modulo small{color:#6b7683;font-size:.78rem}
.matriz-acoes{display:flex;flex-wrap:wrap;gap:6px}
.matriz-acao{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:999px;
  border:1px solid var(--line,#dce2e8);background:#fff;font-size:.78rem;cursor:pointer}
.matriz-acao input{margin:0;width:13px;height:13px;box-sizing:border-box}
.matriz-acao.marcada{border-color:var(--brand,#1c7438);background:#e3f0e9;color:#256340;font-weight:600}
.matriz-acao.desabilitada{opacity:.45;cursor:not-allowed}
.matriz-vazio{color:#6b7683;font-size:.82rem;font-style:italic}
.matriz-perm tr.modulo-off td{background:#fafbfc}

/* primeiro acesso do painel gerencial: define a senha antes de qualquer tela */
.login-link-btn{display:block;margin:10px auto 0;background:none;border:0;padding:6px 10px;
  color:var(--muted);font:inherit;font-size:13px;cursor:pointer;text-decoration:underline;
  text-underline-offset:3px;border-radius:8px}
.login-link-btn:hover{color:var(--ink)}
.login-link-btn:focus-visible{outline:2px solid var(--green-700);outline-offset:2px}

/* Na tela de definir senha os logotipos ficam na mesma coluna do cartao, e nao
   presos a coluna do mascote — assim nao somem quando o cartao cresce. */
.zona-troca .troca-brand{position:static;padding:0;margin:0 0 14px;width:100%;max-width:430px;display:flex;justify-content:center}
@media(min-width:1000px){
  .zona-troca{justify-content:center;padding:26px 0}
  .zona-troca .troca-brand{margin-left:-110px}
}

/* Tela de definir senha: uma coluna so, marca e cartao centrados sobre os raios.
   Sem o mascote, que e do login. */
/* O degrade de baixo fica: e ele que apaga o brilho dos raios atras da versao
   e do copyright, senao o rodape some no meio do leque. */
/* Os raios ficam; o brilho de baixo sai, porque ele existia para assentar o
   mascote no chao. E o leque se reancora no centro — a origem original era
   deslocada para a esquerda justamente por causa do mascote. */
.shell-limpo:after{display:none!important}
.shell-limpo:before{background:repeating-conic-gradient(from 199deg at 50% 104%,#d6efc614 0deg 7deg,transparent 7deg 15deg)!important;opacity:.9!important}
.shell-limpo{grid-template-columns:minmax(0,1fr)!important;justify-content:stretch!important}
.shell-limpo .zona-troca{align-items:center!important;justify-content:center!important;padding:26px 0!important}
.shell-limpo .zona-troca .troca-brand,.shell-limpo .zona-troca .login-card{margin-left:0!important;margin-right:0!important}

/* Engajamento: cartoes, faixas e barras do grafico sao filtros de um clique.
   Tres regras valem para os tres: o escolhido ganha borda verde, os IRMAOS do
   mesmo painel apagam (so eles — apagar os cartoes porque a pessoa escolheu um
   dia nao diria nada), e faixa com zero nasce desabilitada, porque nao ha o que
   ver do outro lado do clique. */
.eng-kpi{display:block;width:100%;text-align:left;background:#fff;border:1px solid #e1e8e3;border-radius:12px;
  padding:15px;cursor:pointer;font:inherit;color:inherit;
  transition:border-color .18s,box-shadow .18s,transform .18s,opacity .18s,filter .18s}
.admin-users-summary .eng-kpi b{display:block;color:#0d6231;font-size:1.35rem;line-height:1.15;font-variant-numeric:tabular-nums}
.admin-users-summary .eng-kpi span{font-size:.72rem;color:#68736d}
.eng-kpi:hover:not(:disabled){border-color:#9fb8a8;transform:translateY(-2px);box-shadow:0 4px 10px rgba(15,39,22,.10)}
.eng-kpi:focus-visible{outline:2px solid var(--green-700);outline-offset:2px}
.eng-kpi.ativo{border-color:var(--green-700);border-width:2px;padding:14px;background:rgba(23,103,53,.05)}
.eng-kpi:disabled{cursor:default;opacity:.55}
.eng-kpi.apagado{opacity:.4}

/* A faixa de distribuicao guarda a grade que ja tinha; so vira botao. */
.engagement-bucket-row{width:100%;background:none;border:1px solid transparent;border-radius:9px;
  padding:3px 5px;cursor:pointer;font:inherit;text-align:left;
  transition:border-color .18s,background .18s,opacity .18s}
.engagement-bucket-row:hover:not(:disabled){border-color:#cfdcd4;background:#f6f9f7}
.engagement-bucket-row:focus-visible{outline:2px solid var(--green-700);outline-offset:1px}
.engagement-bucket-row.ativo{border-color:var(--green-700);background:rgba(23,103,53,.06)}
.engagement-bucket-row:disabled{cursor:default;opacity:.5}
.engagement-bucket-row.apagado{opacity:.4}

/* A coluna clicavel do grafico diario ocupa a altura toda. A barra colorida so
   desenha o valor: as menores tem 3 px e seriam impossiveis de acertar no toque. */
.engagement-bar-col{flex:1;min-width:2px;height:100%;display:flex;align-items:flex-end;
  background:none;border:0;padding:0;cursor:pointer;border-radius:4px 4px 0 0;
  transition:background .18s,opacity .18s}
.engagement-bar-col:hover:not(:disabled){background:rgba(23,103,53,.08)}
.engagement-bar-col:focus-visible{outline:2px solid var(--green-700);outline-offset:1px}
.engagement-bar-col:disabled{cursor:default}
.engagement-bar-col.apagado{opacity:.35}
.engagement-bar-col.ativo .engagement-bar{background:linear-gradient(#0f5c2a,#0a4620)}
.engagement-bar-col.ativo .engagement-bar-label{color:#0f5c2a;font-weight:700}
.engagement-bar{display:block;width:100%}

/* A linha que diz o que esta na tela. A tabela sozinha nao conta essa historia:
   duas linhas podem ser o resultado de um recorte ou de uma busca sem resultado. */
.eng-recorte-chip{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:0 0 16px;
  padding:9px 13px;border:1px solid #cfe0d5;border-radius:10px;background:#f2f8f4;
  font-size:.72rem;color:#2c4736}
.eng-recorte-chip b{color:#0d6231}
.eng-recorte-chip button{border:0;background:none;padding:2px 6px;border-radius:6px;
  color:#4f5550;font:inherit;font-size:.68rem;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.eng-recorte-chip button:hover{color:var(--ink);background:#e3efe7}
.eng-recorte-chip button:focus-visible{outline:2px solid var(--green-700);outline-offset:1px}
@media(prefers-reduced-motion:reduce){.eng-kpi:hover:not(:disabled){transform:none}}

/* No celular, 30 dias divididos em 375px dao 7px por coluna — nao da para acertar
   com o dedo. O grafico passa a rolar na horizontal e cada dia ganha largura de
   toque. Rola dentro do proprio quadro: a pagina continua sem rolagem lateral. */
@media(max-width:700px){
  .engagement-chart{overflow-x:auto;overflow-y:hidden;gap:5px;padding-bottom:4px;
    scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch}
  .engagement-bar-col{flex:0 0 26px;min-width:26px;scroll-snap-align:center}
  .engagement-chart-labels{display:none}
}

/* Escolha do icone do aplicativo (Configuracoes > Parametros) */
.icone-app-opcoes{display:flex;gap:14px;flex-wrap:wrap;margin:6px 0 12px}
.icone-app-opcao{display:grid;justify-items:center;gap:7px;padding:12px 18px;border:2px solid var(--line);border-radius:12px;cursor:pointer;font-size:.68rem;color:#4f5550;transition:border-color .15s,background .15s}
.icone-app-opcao img{width:72px;height:72px;border-radius:16px;box-shadow:0 2px 8px rgba(15,39,22,.14)}
.icone-app-opcao:has(input:checked){border-color:var(--green-700);background:rgba(23,103,53,.05);font-weight:600}
.icone-app-opcao input{accent-color:#1c7438}

/* Avatar do usuario no cabecalho gerencial + cartao suspenso (padrao do sistema
   de Jornada, que a equipe ja conhece): iniciais do primeiro e do ultimo nome;
   os dados e o Sair vivem dentro do cartao. */
.admin-user-menu{position:relative}
.admin-avatar-btn{width:36px;height:36px;border-radius:50%;border:2px solid #ffffff45;color:#fff;font-weight:700;font-size:.7rem;letter-spacing:.03em;display:grid;place-items:center;cursor:pointer;padding:0;box-shadow:0 2px 8px rgba(0,20,10,.28);transition:border-color .15s,transform .15s}
.admin-avatar-btn:hover{border-color:#fff;transform:scale(1.05)}
.admin-avatar-btn:focus-visible{outline:2px solid #fff;outline-offset:2px}
/* O cartao e claro de proposito (padrao do sistema de Jornadas): destaca do
   cabecalho verde-escuro e casa com os cards "surface" do resto do painel.
   A regra [hidden] e OBRIGATORIA: display aqui vence o atributo hidden do
   navegador — sem ela o cartao nasce aberto e o clique nao fecha nada. */
.admin-user-card{position:absolute;top:calc(100% + 11px);right:0;width:288px;background:#f8fbf8;border:1px solid #dee8e0;border-radius:12px;box-shadow:0 18px 38px rgba(3,39,17,.24);padding:14px 16px;z-index:80;transform-origin:top right;animation:userCardIn .16s ease}
.admin-user-card[hidden]{display:none}
@keyframes userCardIn{from{opacity:0;transform:translateY(-5px) scale(.97)}to{opacity:1;transform:none}}
.admin-user-card-head{display:flex;gap:11px;align-items:center}
.admin-avatar-big{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;color:#fff;font-weight:800;font-size:.8rem;letter-spacing:.04em;flex:0 0 auto;box-shadow:0 0 0 3px rgba(23,103,53,.13)}
.admin-user-card-id{flex:1;min-width:0}
.admin-user-card-id b{display:block;font-size:.74rem;color:#12331d;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.admin-user-card-id small{display:block;color:#5c6a5f;font-size:.6rem;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.admin-user-card-rodape{display:flex;align-items:center;gap:8px;flex-wrap:wrap;border-top:1px solid #dee8e0;margin-top:12px;padding-top:11px}
.admin-user-card-perfil{background:#e4efe6;color:#1c5c31;border-radius:6px;padding:3px 8px;font-size:.52rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;max-width:100%}
.admin-user-card-sessao{display:inline-flex;align-items:center;gap:5px;font-size:.56rem;font-weight:600;color:#5c6a5f;white-space:nowrap}
.admin-user-card-sessao i{width:6px;height:6px;border-radius:50%;background:#22a35a;box-shadow:0 0 0 3px rgba(34,163,90,.16)}
/* Sobrepoe o .admin-logout-btn (feito para o cabecalho escuro): no cartao claro
   o Sair e um botao solido compacto, alinhado a direita como no Jornadas. */
.admin-user-card-sair{margin-left:auto;width:auto;height:28px;padding:0 10px;border:1px solid #a32830;background:#a32830;color:#fff;font-size:.58rem;border-radius:6px}
.admin-user-card-sair:hover,.admin-user-card-sair:focus-visible{background:#8d252b;border-color:#8d252b;color:#fff;outline:none}
.admin-user-card-sair .icon{width:13px;height:13px}
