:root{--primary:#2563eb;--secondary:#14b8a6;--accent:#f59e0b;--nav:#10213d;--surface:#fff;--bg:#f4f7fb;--text:#172033;--muted:#64748b}
*{box-sizing:border-box}html{width:100%;max-width:100%;overflow-x:hidden}body{margin:0;width:100%;max-width:100%;overflow-x:hidden;background:var(--bg);color:var(--text);font-family:Inter,system-ui,-apple-system,"Segoe UI",sans-serif}.app-shell{min-height:100vh;width:100%}.main-content{width:100%;min-width:0;background:var(--bg)}.content-area{width:100%;max-width:1600px;margin:0 auto;min-width:0}.app-header{z-index:1040}.app-navbar{min-height:76px;background:linear-gradient(100deg,var(--nav),#17365f);box-shadow:0 5px 22px rgba(15,33,61,.16);padding:.35rem 0}.app-brand{display:flex;align-items:center;width:auto;max-width:245px;margin-right:1.25rem;padding:0}.app-brand-logo{display:block;width:auto;max-width:235px;height:62px;object-fit:contain;object-position:left center}.app-brand-fallback{font-weight:800;color:#fff;white-space:nowrap}.app-toggler{border:1px solid rgba(255,255,255,.22);box-shadow:none!important}.app-nav-sections{gap:.18rem}.app-navbar .nav-link{color:#dbeafe!important;display:flex;align-items:center;gap:.45rem;padding:.72rem .72rem!important;border-radius:.7rem;font-size:.92rem;font-weight:600;white-space:nowrap}.app-navbar .nav-link:hover,.app-navbar .nav-link.active,.app-navbar .show>.nav-link{background:rgba(255,255,255,.12);color:#fff!important}.app-navbar .nav-link i{font-size:1rem}.app-dropdown{border:0;border-radius:.9rem;padding:.5rem;box-shadow:0 18px 45px rgba(15,23,42,.18);min-width:230px}.app-dropdown-wide{min-width:285px}.app-dropdown .dropdown-item{display:flex;align-items:center;gap:.65rem;padding:.68rem .75rem;border-radius:.65rem;color:#334155;font-size:.92rem}.app-dropdown .dropdown-item i{width:20px;text-align:center;color:var(--primary)}.app-dropdown .dropdown-item:hover{background:#f1f5f9}.app-dropdown .dropdown-item.active{background:color-mix(in srgb,var(--primary) 12%,white);color:var(--primary);font-weight:700}.app-dropdown .dropdown-item.active i{color:var(--primary)}.app-dropdown .dropdown-header{max-width:310px;font-weight:700;color:#0f172a;padding:.55rem .75rem .4rem}.dropdown-user{display:flex;flex-direction:column;max-width:260px}.dropdown-user small{color:var(--muted);margin-top:2px}.app-nav-context{margin-left:auto;max-width:300px;min-width:180px;padding-left:1rem;border-left:1px solid rgba(255,255,255,.14);flex-direction:column;align-items:flex-end;color:#fff}.app-nav-context-title{font-size:.78rem;font-weight:800}.app-nav-context-subtitle{max-width:280px;font-size:.72rem;color:#b9cee6}.card{border:0;border-radius:1rem;box-shadow:0 4px 22px rgba(31,50,81,.07)}.metric-card{overflow:hidden;position:relative}.metric-card:after{content:"";position:absolute;width:75px;height:75px;border-radius:50%;right:-20px;top:-20px;background:currentColor;opacity:.08}.metric{font-size:1.65rem;font-weight:800}.icon-box{width:42px;height:42px;border-radius:.8rem;display:grid;place-items:center;background:#edf4ff;color:var(--primary);font-size:1.2rem}.btn-primary{background:var(--primary);border-color:var(--primary)}.btn-success{background:var(--secondary);border-color:var(--secondary)}.progress{height:.62rem;background:#e9eef6}.progress-bar{background:linear-gradient(90deg,var(--primary),var(--secondary))}.table>:not(caption)>*>*{padding:.82rem .75rem}.table thead th{white-space:nowrap;color:#526176;font-size:.77rem;text-transform:uppercase;letter-spacing:.04em;background:#f8fafc}.table-responsive{width:100%;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.photo-thumb{height:190px;object-fit:cover;width:100%;border-radius:.8rem}.small-muted{font-size:.84rem;color:var(--muted)}.badge-soft{background:#eaf2ff;color:#2256a2}.obra-card{transition:.2s}.obra-card:hover{transform:translateY(-2px);box-shadow:0 10px 28px rgba(31,50,81,.12)}.obra-cover{height:120px;object-fit:cover;width:100%;background:linear-gradient(135deg,var(--primary),var(--secondary))}.public-hero{background:linear-gradient(135deg,var(--primary),var(--secondary));color:#fff}.login-page{min-height:100vh;background:radial-gradient(circle at top left,rgba(37,99,235,.22),transparent 35%),radial-gradient(circle at bottom right,rgba(20,184,166,.18),transparent 36%),#eef3f9}.login-card{width:min(430px,92vw)}.form-control,.form-select{border-color:#dbe3ee;border-radius:.7rem;max-width:100%}.print-only{display:none}.public-header{background:linear-gradient(120deg,var(--primary),var(--secondary));color:#fff;box-shadow:0 10px 35px rgba(15,23,42,.12)}.public-photo{height:145px;width:100%;object-fit:cover;transition:.2s ease}.public-photo:hover{transform:scale(1.02)}.icon-circle{width:48px;height:48px;border-radius:15px;display:grid;place-items:center;background:color-mix(in srgb,var(--primary) 12%,white);color:var(--primary);font-size:1.35rem;flex:0 0 auto}.metric-link{color:var(--text);cursor:pointer;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease;border:1px solid transparent!important}.metric-link:hover,.metric-link:focus{color:var(--text);transform:translateY(-3px);box-shadow:0 12px 30px rgba(31,50,81,.14);border-color:color-mix(in srgb,var(--primary) 24%,transparent)!important;outline:none}.metric-link:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 24%,transparent),0 12px 30px rgba(31,50,81,.14)}.metric-arrow{width:30px;height:30px;border-radius:999px;display:grid;place-items:center;background:#f3f7fc;color:var(--primary);transition:.18s ease}.metric-link:hover .metric-arrow{background:var(--primary);color:#fff}.metric-action{font-size:.78rem;font-weight:700;color:var(--primary);opacity:.82}
@media(min-width:992px){.app-navbar .dropdown:hover>.dropdown-menu{display:block;margin-top:0}.app-navbar .dropdown-toggle:active{pointer-events:none}.app-navbar .navbar-collapse{min-width:0}}
@media(max-width:1199.98px){.app-brand{max-width:205px}.app-brand-logo{max-width:195px;height:58px}.app-navbar .nav-link{padding:.68rem .58rem!important;font-size:.88rem}}
@media(max-width:991.98px){.app-navbar{padding:.3rem 0;min-height:68px}.app-brand{max-width:235px}.app-brand-logo{height:56px;max-width:220px}.navbar-collapse{margin-top:.5rem;padding:.55rem 0 .8rem;border-top:1px solid rgba(255,255,255,.12);max-height:none;overflow:visible}.app-nav-sections{gap:.2rem}.app-navbar .nav-link{width:100%;justify-content:space-between;padding:.76rem .8rem!important;font-size:.95rem}.app-navbar .nav-link i{margin-right:auto}.app-navbar .nav-link span{margin-right:auto}.app-navbar .dropdown-menu{position:static!important;transform:none!important;width:100%;min-width:0;margin:.18rem 0 .45rem!important;border-radius:.75rem;box-shadow:none;background:rgba(255,255,255,.97)}.app-dropdown-wide{min-width:0}.app-dropdown .dropdown-item{padding:.72rem .85rem}.content-area{padding-left:.85rem!important;padding-right:.85rem!important}}
@media(max-width:575.98px){.app-brand{max-width:calc(100vw - 92px)}.app-brand-logo{max-width:100%;height:52px}.content-area{padding:.75rem!important}.metric{font-size:1.25rem;overflow-wrap:anywhere}.metric-card{min-height:132px}.metric-action{font-size:.73rem}.table{font-size:.86rem;min-width:max-content}.card{border-radius:.85rem}.photo-thumb{height:145px}.public-hero{padding:1.1rem!important}.public-hero h2{font-size:1.3rem}.public-hero .display-5{font-size:2rem}.modal-dialog{margin:.6rem}.modal-content{border-radius:1rem}.btn{min-height:40px}}
@media print{.app-header,.btn,.alert,form{display:none!important}.main-content{width:100%!important;margin:0!important}.content-area{padding:0!important;max-width:none!important}.report-print{box-shadow:none!important;border:0!important}.print-only{display:block!important}table{font-size:9pt!important}@page{size:landscape;margin:10mm}}

/* v20 - logo responsiva no menu top-down */
.app-brand{min-width:0;flex:0 1 auto;overflow:hidden}
.app-brand-logo{display:block;width:auto;max-width:100%;height:auto;max-height:62px;object-fit:contain;object-position:left center}
@media(max-width:1199.98px){
  .app-brand{max-width:220px}
  .app-brand-logo{max-width:100%;max-height:54px;height:auto}
}
@media(max-width:991.98px){
  .app-navbar{min-height:58px}
  .app-navbar .container-fluid{flex-wrap:wrap}
  .app-brand{max-width:min(58vw,210px);height:48px;display:flex;align-items:center}
  .app-brand-logo{width:auto!important;height:auto!important;max-width:100%!important;max-height:44px!important;object-fit:contain!important}
  .app-toggler{margin-left:auto;flex:0 0 auto}
}
@media(max-width:575.98px){
  .app-navbar{min-height:54px;padding:.25rem 0}
  .app-brand{max-width:min(56vw,180px);height:42px;margin-right:.5rem}
  .app-brand-logo{width:auto!important;height:auto!important;max-width:100%!important;max-height:38px!important}
}
@media(max-width:390px){
  .app-brand{max-width:52vw;height:38px}
  .app-brand-logo{max-height:34px!important}
}


/* v21 - em mobile a imagem real da logo nao e requisitada */
.app-brand-picture{display:block;line-height:0}
.app-brand-mobile-title{display:none;color:#fff;font-weight:800;font-size:1rem;line-height:1.1;max-width:62vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(max-width:991.98px){
  .app-brand-picture{display:none!important}
  .app-brand-logo{display:none!important}
  .app-brand{height:auto!important;max-width:calc(100vw - 88px)!important;overflow:hidden}
  .app-brand-mobile-title{display:block}
}
@media(max-width:575.98px){
  .app-brand-mobile-title{font-size:.95rem;max-width:60vw}
}
@media(max-width:390px){
  .app-brand-mobile-title{font-size:.88rem;max-width:56vw}
}

/* v25 - central de alertas em painel interno responsivo */
.app-alerts{display:flex;align-items:center}
.app-alert-btn{width:42px;height:42px;border-radius:999px;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.08);color:#fff;display:grid;place-items:center;padding:0}
.app-alert-btn:hover,.app-alert-btn:focus{background:rgba(255,255,255,.16);color:#fff;border-color:rgba(255,255,255,.3)}
.app-alert-btn i{font-size:1.1rem}.app-alert-btn .badge{font-size:.66rem;min-width:20px}
.app-alert-panel{--bs-offcanvas-width:min(440px,100vw);width:min(440px,100vw)!important;max-width:100vw;background:#fff;box-shadow:-16px 0 50px rgba(15,23,42,.18)}
.app-alert-panel-head{padding:1rem 1.1rem;background:#fff}
.app-alert-actions{background:#f8fafc}
.app-alert-list{width:100%;overflow-x:hidden}
.app-alert-item{display:flex;align-items:flex-start;gap:.8rem;padding:1rem 1.05rem;border-bottom:1px solid #e9eef5;color:#1e293b;text-decoration:none;white-space:normal;min-width:0;background:#fff;transition:background .15s ease}
.app-alert-item:last-child{border-bottom:0}
.app-alert-item.unread{background:#f3f8ff;border-left:4px solid var(--primary);padding-left:calc(1.05rem - 4px)}
.app-alert-item.unread strong:before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:#ef4444;margin-right:.45rem;vertical-align:1px}
.app-alert-item:hover,.app-alert-item:focus{background:#f8fafc;color:#0f172a;outline:none}
.app-alert-icon{width:38px;height:38px;border-radius:.75rem;display:grid;place-items:center;flex:0 0 38px}
.app-alert-chevron{align-self:center;color:#94a3b8;flex:0 0 auto}
.min-w-0{min-width:0}
@media(max-width:991.98px){.app-alerts{order:2;margin-left:auto!important;margin-right:.35rem}.app-toggler{order:3}.navbar-collapse{order:4;width:100%}}
@media(max-width:575.98px){.app-alert-panel{--bs-offcanvas-width:100vw;width:100vw!important}.app-alert-panel-head{padding:.9rem}.app-alert-actions{padding:.8rem!important}.app-alert-item{padding:.9rem}.app-alert-item.unread{padding-left:calc(.9rem - 4px)}.app-alert-icon{width:36px;height:36px;flex-basis:36px}}

/* v34 - menu mobile escuro, legivel e melhor alinhado */
@media(max-width:991.98px){
  .app-navbar{
    background:linear-gradient(135deg,#0b1f3a,#12345d)!important;
    box-shadow:0 5px 18px rgba(15,23,42,.22);
    padding:.45rem .1rem;
  }
  .app-navbar>.container-fluid{
    display:flex;
    align-items:center;
    gap:.45rem;
  }
  .app-brand{
    flex:1 1 auto;
    min-width:0;
    margin-right:0!important;
  }
  .app-brand-mobile-title{
    color:#fff!important;
    font-weight:800;
    letter-spacing:.01em;
  }
  .app-alerts{
    margin-left:auto!important;
    margin-right:0!important;
    flex:0 0 auto;
  }
  .app-alert-btn,
  .app-toggler{
    width:44px;
    height:44px;
    min-width:44px;
    border-radius:.8rem!important;
    display:grid!important;
    place-items:center;
    padding:0!important;
    background:rgba(255,255,255,.10)!important;
    border:1px solid rgba(255,255,255,.22)!important;
    color:#fff!important;
  }
  .app-alert-btn:focus,
  .app-alert-btn:hover,
  .app-toggler:focus,
  .app-toggler:hover{
    background:rgba(255,255,255,.18)!important;
    border-color:rgba(255,255,255,.35)!important;
  }
  .app-toggler .navbar-toggler-icon{
    width:1.25rem;
    height:1.25rem;
    background-size:100% 100%;
  }
  #mainNavigation{
    width:100%;
    margin-top:.55rem;
    padding:.7rem;
    border:1px solid rgba(255,255,255,.10);
    border-radius:.9rem;
    background:#0f2746;
    box-shadow:0 14px 32px rgba(2,8,23,.24);
  }
  #mainNavigation.navbar-collapse{
    border-top:0!important;
    overflow:visible!important;
  }
  .app-nav-sections{
    width:100%;
    gap:.35rem;
  }
  .app-navbar .nav-item{
    width:100%;
  }
  .app-navbar .nav-link{
    color:#f8fafc!important;
    background:rgba(255,255,255,.055);
    border:1px solid rgba(255,255,255,.08);
    border-radius:.72rem;
    padding:.78rem .85rem!important;
    min-height:46px;
  }
  .app-navbar .nav-link:hover,
  .app-navbar .nav-link:focus,
  .app-navbar .nav-link.active,
  .app-navbar .show>.nav-link{
    color:#fff!important;
    background:rgba(255,255,255,.14)!important;
    border-color:rgba(255,255,255,.16);
  }
  .app-navbar .dropdown-menu{
    background:#163456!important;
    border:1px solid rgba(255,255,255,.10)!important;
    margin:.3rem 0 .5rem!important;
    padding:.38rem!important;
  }
  .app-dropdown .dropdown-item{
    color:#f1f5f9!important;
    background:transparent;
    border-radius:.62rem;
  }
  .app-dropdown .dropdown-item i{
    color:#93c5fd!important;
  }
  .app-dropdown .dropdown-item:hover,
  .app-dropdown .dropdown-item:focus,
  .app-dropdown .dropdown-item.active{
    background:rgba(255,255,255,.11)!important;
    color:#fff!important;
  }
  .app-dropdown .dropdown-header,
  .app-dropdown .dropdown-header h6,
  .app-dropdown .dropdown-header span,
  .dropdown-user strong{
    color:#fff!important;
  }
  .dropdown-user small,
  .app-dropdown .dropdown-header,
  .app-dropdown .dropdown-divider{
    color:#cbd5e1!important;
  }
  .app-dropdown .dropdown-divider{
    border-color:rgba(255,255,255,.16)!important;
  }
}
@media(max-width:575.98px){
  .app-navbar{padding:.38rem .05rem}
  .app-navbar>.container-fluid{gap:.35rem;padding-left:.65rem;padding-right:.65rem}
  .app-alert-btn,.app-toggler{width:42px;height:42px;min-width:42px;border-radius:.72rem!important}
  #mainNavigation{padding:.58rem;border-radius:.82rem}
  .app-navbar .nav-link{padding:.72rem .75rem!important;font-size:.93rem}
}
