/* ── Adições ao app.css para o botão Senha Única USP ── */

/* Cole este bloco no final do app.css existente */

/* Divisor "ou" */
.login-ou {
    display:     flex;
    align-items: center;
    gap:         12px;
    margin:      18px 0 14px;
    color:       var(--tx3);
    font-size:   11px;
}
.login-ou::before,
.login-ou::after {
    content:    '';
    flex:       1;
    height:     1px;
    background: var(--bd2);
}

/* Botão Senha Única USP */
.btn-usp {
    display:         flex;
    align-items:     center;
    justify-content: center;
    gap:             9px;
    width:           100%;
    padding:         11px 0;
    background:      var(--bg3);
    border:          1px solid var(--bd2);
    border-radius:   8px;
    color:           var(--tx);
    font-size:       13px;
    font-weight:     600;
    text-decoration: none;
    transition:      all .2s;
    margin-bottom:   6px;
}
.btn-usp:hover {
    background:      var(--bg4);
    border-color:    var(--az3);
    color:           var(--tx);
    text-decoration: none;
}

/* Correções SiROO 2026 beta.2 — painel operacional sem conceito de RO urgente */
.metric-action .mc-value { color: var(--am2); }

.table-wrap { width: 100%; overflow-x: auto; }
.op-table { width: 100%; border-collapse: collapse; font-size: 12px; }
.op-table th,
.op-table td { padding: 9px 10px; border-bottom: 1px solid var(--bd); vertical-align: middle; }
.op-table th { text-align: left; color: var(--tx2); font-size: 10px; text-transform: uppercase; letter-spacing: .6px; background: var(--bg3); }
.op-table td { color: var(--tx); }
.op-table .mono { font-family: var(--mono); font-weight: 700; }

.state-pill { display: inline-flex; align-items: center; border-radius: 999px; padding: 3px 8px; font-size: 10px; font-weight: 700; white-space: nowrap; }
.state-warn { background: rgba(232,160,32,.14); color: #F2B84B; border: 1px solid rgba(232,160,32,.3); }
.state-action { background: rgba(21,135,224,.14); color: #65B7F5; border: 1px solid rgba(21,135,224,.3); }

.flow-list { display: flex; flex-direction: column; gap: 8px; }
.flow-step { padding: 8px 10px; border: 1px solid var(--bd); border-radius: 8px; background: rgba(255,255,255,.025); color: var(--tx2); font-size: 12px; }
.flow-step strong { color: var(--am2); }

.feed-item { padding: 10px 12px; border-bottom: 1px solid var(--bd); display: flex; flex-direction: column; gap: 3px; }
.feed-item strong { color: var(--tx); font-size: 12px; }
.feed-item span { color: var(--tx2); font-size: 11px; line-height: 1.35; }

/* ── SiROO 2026 beta.3 — workspace operacional de RO ── */
.page-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.page-head h1{font-size:20px;margin:0;color:var(--tx)}.page-head p{color:var(--tx2);margin-top:3px}.back-link{font-size:12px;color:var(--tx2)}
.ro-workspace{display:flex;flex-direction:column;gap:14px}.ro-header{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.ro-header h1{font-size:23px;margin:3px 0;color:var(--tx)}.ro-header p{color:var(--tx2)}.ro-header-actions{display:flex;align-items:center;gap:8px}.ro-summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.ro-summary-card{background:var(--bg2);border:1px solid var(--bd);border-radius:10px;padding:12px}.ro-summary-card small{display:block;color:var(--tx2);font-size:10px;text-transform:uppercase;letter-spacing:.6px}.ro-summary-card strong{display:block;margin-top:4px;color:var(--tx);font-size:13px}.alert-inline{border:1px solid rgba(232,160,32,.35);background:rgba(232,160,32,.09);color:#F2B84B;padding:10px 12px;border-radius:10px}.tabs{background:var(--bg2);border:1px solid var(--bd);border-radius:12px;overflow:hidden}.tab-list{display:flex;gap:0;overflow-x:auto;border-bottom:1px solid var(--bd);background:var(--bg3)}.tab-btn{appearance:none;border:0;border-right:1px solid var(--bd);background:transparent;color:var(--tx2);padding:11px 14px;font:inherit;font-size:12px;font-weight:700;cursor:pointer;white-space:nowrap}.tab-btn:hover,.tab-btn.active{background:var(--bg4);color:var(--tx)}.tab-btn.danger{color:#FFB3B3}.tab-btn span{background:rgba(255,255,255,.08);border-radius:999px;padding:1px 6px;margin-left:4px}.tab-panel{display:none;padding:14px}.tab-panel.active{display:block}.workspace-grid.two{display:grid;grid-template-columns:1fr 1fr;gap:14px}.panel.soft{background:var(--bg);border-color:var(--bd)}.text-block{white-space:normal;color:var(--tx);line-height:1.6}.ro-map{height:330px;border-radius:10px;border:1px solid var(--bd);overflow:hidden;background:var(--bg3)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.form-grid.compact{gap:8px}.form-grid label{display:flex;flex-direction:column;gap:4px;color:var(--tx2);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.35px}.form-grid input,.form-grid textarea,.form-grid select,.upload-form input{background:var(--bg2);border:1px solid var(--bd2);border-radius:8px;color:var(--tx);padding:9px 10px;font:inherit;text-transform:none;letter-spacing:0;font-weight:500}.form-grid textarea{resize:vertical}.span-2{grid-column:1/-1}.form-actions{display:flex;justify-content:flex-end}.btn-primary-main,.btn-danger-main{border:0;border-radius:8px;padding:10px 14px;color:#fff;font-weight:800;cursor:pointer;background:var(--az3)}.btn-danger-main{background:var(--vm2)}.danger-panel{border-color:rgba(232,64,64,.45)!important}.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px}.gallery figure{background:var(--bg2);border:1px solid var(--bd);border-radius:10px;overflow:hidden}.gallery img{width:100%;height:120px;object-fit:cover;display:block}.gallery figcaption{font-size:11px;color:var(--tx2);padding:8px}.upload-form{display:flex;gap:8px;margin-top:12px;align-items:center;flex-wrap:wrap}.timeline-item{border-left:3px solid var(--az3);padding:8px 0 8px 12px;margin-bottom:10px}.timeline-item strong{color:var(--tx);font-size:12px}.timeline-item p{color:var(--tx2);margin-top:4px}.hint{font-size:12px;color:var(--tx2);line-height:1.5}.op-table-click tbody tr{cursor:pointer}.op-table-click tbody tr:hover{background:rgba(21,135,224,.08)}.btn-panel{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;border:1px solid var(--bd2);border-radius:8px;padding:7px 10px;font-size:11px;color:var(--tx2);background:rgba(255,255,255,.02)}.btn-panel.btn-primary{background:var(--az3);border-color:var(--az3);color:#fff}.dashboard-grid.operational{grid-template-columns:1.05fr 1.45fr 340px}.panel-radiofone-principal .feed-item{border:1px solid var(--bd);border-radius:10px;margin-bottom:8px;background:rgba(255,255,255,.025)}
@media (max-width:1200px){.dashboard-grid.operational,.workspace-grid.two{grid-template-columns:1fr}.ro-summary-grid{grid-template-columns:1fr 1fr}}@media (max-width:720px){.ro-summary-grid,.form-grid{grid-template-columns:1fr}.span-2{grid-column:auto}.ro-header{flex-direction:column}.upload-form{flex-direction:column;align-items:stretch}}
.dashboard-map{height:280px;border-radius:10px;border:1px solid var(--bd);overflow:hidden;background:var(--bg3)}.map-panel-dashboard{margin-top:14px}

/* ── SiROO 2026 beta.9 — organização segura dos botões em edições por abas ── */
.ro-workspace details {
    margin-top: 8px;
    padding: 10px;
    border: 1px solid var(--bd);
    border-radius: 10px;
    background: rgba(255,255,255,.025);
}
.ro-workspace details > summary {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    min-height: 30px;
    color: var(--tx);
    font-size: 12px;
    font-weight: 800;
    cursor: pointer;
    list-style-position: outside;
}
.ro-workspace details[open] > summary {
    margin-bottom: 10px;
    color: var(--az4);
}
.ro-workspace details form {
    margin-top: 10px;
}
.ro-workspace details form + form {
    margin-top: 12px;
    padding-top: 12px;
    border-top: 1px solid var(--bd);
}
.ro-workspace details .form-grid {
    align-items: start;
}
.ro-workspace details .form-grid > .btn-primary-main.span-2,
.ro-workspace details .form-grid > .btn-danger-main.span-2,
.ro-workspace details .btn-primary-main,
.ro-workspace details .btn-danger-main {
    width: auto;
    min-width: 118px;
    max-width: 100%;
    justify-self: start;
}
.ro-workspace details .btn-danger-main {
    background: var(--vm2);
}
.ro-workspace details input,
.ro-workspace details textarea,
.ro-workspace details select {
    width: 100%;
}
.ro-workspace .edit-action-row {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    margin-top: 12px;
}
.ro-workspace .edit-action-row .btn-primary-main,
.ro-workspace .edit-action-row .btn-danger-main {
    min-width: 118px;
}
.ro-workspace figure details {
    margin: 8px;
}
.ro-workspace figure details input {
    margin-bottom: 8px;
}
.ro-workspace .op-table details {
    min-width: 180px;
}
@media (max-width:720px){
    .ro-workspace details .btn-primary-main,
    .ro-workspace details .btn-danger-main,
    .ro-workspace .edit-action-row .btn-primary-main,
    .ro-workspace .edit-action-row .btn-danger-main {
        width: 100%;
    }
}

/* ── SiROO 2026 beta.10 — UX segura para Radiofone ── */
.radiofone-page .radiofone-main-grid {
    grid-template-columns: minmax(0, 1.45fr) minmax(320px, .55fr);
    align-items: start;
}
.radiofone-page .radiofone-list-panel .panel-body,
.radiofone-page .radiofone-create-panel .panel-body {
    overflow: visible;
}
.radiofone-page .radiofone-table th:last-child,
.radiofone-page .radiofone-table td:last-child {
    width: 110px;
    text-align: left;
}
.radiofone-page .radiofone-table td {
    vertical-align: top;
}
.radiofone-page .radio-edit-row td {
    padding: 0 10px 14px;
    background: rgba(21,135,224,.045);
    border-bottom: 1px solid var(--bd);
}
.radiofone-page .radio-edit-panel {
    margin-top: 8px;
    padding: 14px;
    border: 1px solid var(--bd2);
    border-radius: 12px;
    background: var(--bg2);
    box-shadow: 0 14px 28px rgba(0,0,0,.12);
}
.radiofone-page .radio-edit-title {
    margin-bottom: 12px;
    color: var(--tx);
    font-size: 13px;
    font-weight: 900;
}
.radiofone-page .radio-close-form {
    margin-top: 12px;
    padding-top: 12px;
    border-top: 1px solid var(--bd);
}
.radiofone-page .radio-close-form .btn-danger-main,
.radiofone-page .edit-action-row .btn-primary-main {
    min-width: 140px;
}
.radiofone-page .radiofone-tools-grid {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    align-items: start;
}
.radiofone-page .search-result-wrap {
    margin-top: 12px;
    max-height: 360px;
    overflow: auto;
    border: 1px solid var(--bd);
    border-radius: 10px;
}
.radiofone-page .chart-wrap {
    margin-top: 14px;
    min-height: 260px;
}
.radiofone-page .rf-toast {
    position: fixed;
    top: 58px;
    right: 18px;
    z-index: 9999;
    max-width: min(420px, calc(100vw - 36px));
    padding: 11px 14px;
    border-radius: 10px;
    border: 1px solid var(--bd2);
    color: #fff;
    font-size: 12px;
    font-weight: 800;
    box-shadow: 0 16px 38px rgba(0,0,0,.28);
}
.radiofone-page .rf-toast.ok {
    background: rgba(26,122,74,.96);
    border-color: rgba(26,122,74,1);
}
.radiofone-page .rf-toast.error {
    background: rgba(192,57,43,.96);
    border-color: rgba(192,57,43,1);
}
.radiofone-page .btn-panel {
    min-width: 76px;
}
@media (max-width:1200px) {
    .radiofone-page .radiofone-main-grid,
    .radiofone-page .radiofone-tools-grid {
        grid-template-columns: 1fr;
    }
}
@media (max-width:720px) {
    .radiofone-page .radio-edit-panel {
        padding: 10px;
    }
    .radiofone-page .radio-close-form .btn-danger-main,
    .radiofone-page .edit-action-row .btn-primary-main {
        width: 100%;
    }
}

/* ── SiROO 2026 beta.11 — ajustes auditados de UX para Radiofone ── */
.ro-workspace textarea,
.radiofone-page textarea,
.panel textarea,
.form-grid textarea {
    resize: none !important;
}
.radiofone-page .radiofone-main-grid {
    grid-template-columns: minmax(0, 1.7fr) minmax(360px, .65fr);
}
.radiofone-page .radio-edit-panel .form-grid.compact {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 10px 12px;
}
.radiofone-page .radio-action-bar {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
    margin-top: 14px;
    padding-top: 12px;
    border-top: 1px solid var(--bd);
}
.radiofone-page .radio-action-bar .btn-primary-main,
.radiofone-page .radio-action-bar .btn-danger-main {
    min-width: 150px;
    width: auto;
}
.radiofone-page .radio-action-bar .btn-danger-main {
    margin-left: 0;
}
.siroo-combobox {
    position: relative;
    width: 100%;
}
.siroo-combobox .combo-input {
    width: 100%;
    padding-right: 38px;
}
.siroo-combobox .combo-input.invalid {
    border-color: rgba(232,64,64,.9) !important;
    box-shadow: 0 0 0 2px rgba(232,64,64,.18);
}
.siroo-combobox .combo-clear {
    position: absolute;
    top: 50%;
    right: 7px;
    transform: translateY(-50%);
    width: 24px;
    height: 24px;
    border: 0;
    border-radius: 7px;
    background: rgba(255,255,255,.06);
    color: var(--tx2);
    cursor: pointer;
    font-size: 16px;
    line-height: 20px;
}
.siroo-combobox .combo-clear:hover {
    color: var(--tx);
    background: rgba(255,255,255,.12);
}
.siroo-combobox .combo-list {
    position: absolute;
    left: 0;
    right: 0;
    top: calc(100% + 5px);
    z-index: 40;
    max-height: 245px;
    overflow: auto;
    border: 1px solid var(--bd2);
    border-radius: 10px;
    background: var(--bg2);
    box-shadow: 0 18px 38px rgba(0,0,0,.34);
    padding: 5px;
}
.siroo-combobox [data-combo-option] {
    display: block;
    width: 100%;
    border: 0;
    border-radius: 8px;
    padding: 8px 10px;
    background: transparent;
    color: var(--tx);
    text-align: left;
    font: inherit;
    font-size: 12px;
    cursor: pointer;
}
.siroo-combobox [data-combo-option]:hover,
.siroo-combobox [data-combo-option]:focus {
    outline: none;
    background: rgba(21,135,224,.18);
}
.siroo-combobox .combo-empty {
    padding: 10px;
    color: var(--tx2);
    font-size: 12px;
}
.radiofone-page .radiofone-filter-form {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}
.radiofone-page .chart-empty {
    min-height: 190px;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 1px dashed var(--bd2);
    border-radius: 10px;
    color: var(--tx2);
    font-size: 12px;
    font-weight: 700;
}
@media (max-width:900px) {
    .radiofone-page .radio-edit-panel .form-grid.compact,
    .radiofone-page .radiofone-filter-form {
        grid-template-columns: 1fr;
    }
    .radiofone-page .radio-action-bar .btn-primary-main,
    .radiofone-page .radio-action-bar .btn-danger-main {
        width: 100%;
    }
}

/* ── SiROO 2026 beta.14 — correção auditada do gráfico de Radiofone ── */
.radiofone-page .chart-empty[hidden],
.radiofone-page .chart-wrap canvas[hidden] {
    display: none !important;
}
.radiofone-page .chart-wrap canvas {
    min-height: 240px;
}


/* ── SiROO 2026 beta.27 — ajustes finos de UX sem alterar identidade visual ── */
.ro-workspace .ro-map {
    height: 430px;
    min-height: 430px;
}
.ro-workspace .form-actions {
    gap: 10px;
    flex-wrap: wrap;
}
.ro-workspace .btn-primary-main,
.ro-workspace .btn-secondary-main,
.ro-workspace .btn-danger-main {
    min-height: 38px;
}
.radiofone-page .chart-wrap {
    min-height: 180px;
}
.radiofone-page .chart-wrap canvas {
    min-height: 180px;
}
@media (max-width: 900px) {
    .ro-workspace .ro-map {
        height: 360px;
        min-height: 360px;
    }
}

/* ── SiROO 2026 beta.29 — SiCD bridge e Intelligence executivo ── */
.sicd-bridge-grid {
    display: grid;
    grid-template-columns: minmax(0, 1.2fr) minmax(280px, .8fr);
    gap: 18px;
    align-items: stretch;
}
.sicd-bridge-main h2 {
    margin: 0 0 8px;
    color: var(--tx);
    font-size: 20px;
}
.sicd-bridge-main p {
    margin: 0 0 16px;
    color: var(--tx2);
    line-height: 1.65;
    max-width: 780px;
}
.sicd-actions {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    align-items: center;
}
.sicd-bridge-aside {
    display: grid;
    gap: 10px;
}
.mini-kpi {
    border: 1px solid var(--bd);
    border-radius: 12px;
    padding: 12px 14px;
    background: rgba(255,255,255,.025);
}
.mini-kpi strong {
    display: block;
    color: var(--az3);
    font-size: 18px;
    letter-spacing: .04em;
}
.mini-kpi span {
    display: block;
    margin-top: 3px;
    color: var(--tx2);
    font-size: 12px;
}
.intelligence-page .panel-hint {
    color: var(--tx2);
    font-size: 11px;
    font-weight: 700;
}
.intelligence-page .insight-strip {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
    margin-top: 14px;
}
.intelligence-page .mc-value.small {
    font-size: clamp(15px, 1.2vw, 22px);
    line-height: 1.15;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.intelligence-page .intelligence-actions {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
}
.intelligence-page .intelligence-actions .btn-primary-main,
.intelligence-page .intelligence-actions .btn-panel {
    min-width: 210px;
}
.intelligence-page .intelligence-grid {
    grid-template-columns: minmax(0, 1.4fr) minmax(330px, .6fr);
    align-items: stretch;
}
.intelligence-page .intelligence-grid.secondary {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
}
.intelligence-page .chart-panel .panel-body {
    min-height: 320px;
}
.intelligence-page .ai-result {
    white-space: pre-wrap;
    color: var(--tx);
    line-height: 1.65;
    font-size: 13px;
    border: 1px solid var(--bd);
    border-radius: 12px;
    padding: 14px;
    background: rgba(255,255,255,.025);
}
@media (max-width: 1200px) {
    .intelligence-page .insight-strip,
    .intelligence-page .intelligence-grid,
    .intelligence-page .intelligence-grid.secondary,
    .sicd-bridge-grid {
        grid-template-columns: 1fr 1fr;
    }
}
@media (max-width: 760px) {
    .intelligence-page .insight-strip,
    .intelligence-page .intelligence-grid,
    .intelligence-page .intelligence-grid.secondary,
    .sicd-bridge-grid {
        grid-template-columns: 1fr;
    }
    .intelligence-page .intelligence-actions .btn-primary-main,
    .intelligence-page .intelligence-actions .btn-panel,
    .sicd-actions .btn-primary-main,
    .sicd-actions .btn-panel {
        width: 100%;
    }
}

/* Beta 34 — Configurações: escopo de campus e busca operacional */
.config-page .config-scope-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;background:rgba(21,135,224,.08);border:1px solid rgba(21,135,224,.32);border-radius:12px;padding:10px 12px;color:var(--tx2);font-size:12px;margin-top:8px}.config-page .config-scope-banner strong{color:var(--tx)}.config-page .config-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 10px 0}.config-page .config-search{display:flex;align-items:center;gap:8px;flex:1}.config-page .config-search input{width:100%;background:var(--bg2);border:1px solid var(--bd2);border-radius:9px;color:var(--tx);padding:9px 10px;font:inherit}.config-page .config-count{font-size:11px;color:var(--tx2);white-space:nowrap}.config-page .readonly-campus{background:var(--bg2);border:1px dashed var(--bd2);border-radius:8px;color:var(--tx);padding:9px 10px;font-weight:700;text-transform:none;letter-spacing:0}.config-page details{background:rgba(255,255,255,.018);border:1px solid var(--bd);border-radius:10px;padding:8px}.config-page details summary{cursor:pointer;font-weight:800;color:var(--tx);list-style:none}.config-page details summary::-webkit-details-marker{display:none}.config-page .op-table td:last-child{min-width:170px}.config-page .config-empty{border:1px dashed var(--bd);border-radius:12px;padding:18px;text-align:center;color:var(--tx2)}.config-page .config-form-note{font-size:11px;color:var(--tx2);line-height:1.45;margin-top:8px}.config-page .config-danger-row{display:flex;justify-content:flex-start;margin-top:8px}@media (max-width:900px){.config-page .config-toolbar,.config-page .config-scope-banner{flex-direction:column;align-items:stretch}.config-page .op-table{font-size:11px}}


/* ── SiROO 2026 beta.35 — autenticação e reset de senha ── */
.login-actions-row{margin-top:10px;text-align:center}.login-actions-row a{font-size:11px;color:var(--tx2);text-decoration:none}.login-actions-row a:hover{color:var(--az3);text-decoration:underline}.login-ok{background:rgba(39,174,96,.14);border:1px solid rgba(39,174,96,.42);border-radius:7px;padding:9px 12px;margin-bottom:16px;font-size:12px;color:#58D68D;text-align:left}

/* ── SiROO 2026 beta.37 — barra de exportação operacional ── */
.export-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    margin: 10px 0 12px 0;
}
.export-toolbar .export-label {
    color: var(--tx2);
    font-size: 11px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .45px;
    margin-right: 2px;
}
.export-toolbar .btn-panel {
    min-width: 64px;
    padding-inline: 10px;
}
.config-export-toolbar {
    justify-content: flex-end;
    margin-top: 0;
}
.compact-export {
    justify-content: flex-end;
    margin: 0;
}
.panel-header-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
}
@media (max-width: 820px) {
    .config-export-toolbar,
    .compact-export,
    .panel-header-actions {
        justify-content: flex-start;
    }
    .export-toolbar .btn-panel {
        flex: 1 1 auto;
    }
}

/* beta.40 — App Campus USP operacional */
.app-campus-page .app-campus-header h1 { letter-spacing:.2px; }
.app-campus-page .app-campus-actions { align-self:flex-start; }
.app-campus-page .app-campus-grid { align-items:stretch; }
.app-campus-page .app-campus-map { height:520px !important; min-height:520px !important; }
.app-campus-page .app-campus-events-panel .panel-body { max-height:520px; overflow:auto; }
.app-campus-legend { display:flex; gap:10px; flex-wrap:wrap; align-items:center; color:var(--tx2); font-size:12px; }
.app-campus-legend span { display:inline-flex; align-items:center; gap:6px; border:1px solid var(--bd); background:rgba(255,255,255,.025); border-radius:999px; padding:5px 9px; }
.legend-dot { display:inline-block; width:10px; height:10px; border-radius:50%; }
.sev-critica { background:#e83d3d; box-shadow:0 0 0 3px rgba(232,61,61,.14); }
.sev-alta { background:#f29d38; box-shadow:0 0 0 3px rgba(242,157,56,.14); }
.sev-media { background:#1e91df; box-shadow:0 0 0 3px rgba(30,145,223,.14); }
.sev-baixa { background:#2fbf71; box-shadow:0 0 0 3px rgba(47,191,113,.14); }
.app-event-item { cursor:pointer; border:1px solid var(--bd); background:rgba(255,255,255,.025); border-radius:12px; padding:12px; margin-bottom:10px; transition:background .18s,border-color .18s,transform .18s; }
.app-event-item:hover,.app-event-item:focus { outline:none; background:rgba(30,145,223,.08); border-color:var(--bd2); transform:translateY(-1px); }
.app-event-top { display:flex; gap:10px; align-items:flex-start; }
.app-event-title-block { display:flex; flex-direction:column; gap:2px; min-width:0; }
.app-event-title-block strong { color:var(--tx); font-size:13px; line-height:1.3; }
.app-event-title-block span { color:var(--tx2); font-size:11px; line-height:1.35; }
.app-event-campus { color:#8fc8f4 !important; }
.app-event-desc { margin:9px 0 0; color:var(--tx); line-height:1.45; }
.app-event-actions-row { display:flex; gap:8px; align-items:center; margin-top:10px; flex-wrap:wrap; }
.app-event-icon { display:inline-flex; align-items:center; justify-content:center; width:34px; height:34px; border-radius:11px; color:white; font-weight:900; font-size:18px; flex:0 0 auto; box-shadow:0 8px 24px rgba(0,0,0,.28); }
.app-event-icon-critica { background:#e83d3d; }
.app-event-icon-alta { background:#f29d38; color:#121a26; }
.app-event-icon-media { background:#1e91df; }
.app-event-icon-baixa { background:#2fbf71; }
.app-event-critica { border-color:rgba(232,61,61,.40); }
.app-event-alta { border-color:rgba(242,157,56,.35); }
.app-event-media { border-color:rgba(30,145,223,.35); }
.app-event-baixa { border-color:rgba(47,191,113,.35); }
.app-campus-marker-wrap { background:transparent; border:0; }
.app-marker { position:relative; display:block; width:42px; height:48px; }
.app-marker-pin { position:absolute; left:6px; top:0; width:30px; height:30px; border-radius:50% 50% 50% 0; transform:rotate(-45deg); border:2px solid #fff; box-shadow:0 8px 24px rgba(0,0,0,.42); display:flex; align-items:center; justify-content:center; }
.app-marker-pin::after { content:""; position:absolute; inset:3px; border-radius:50%; background:rgba(255,255,255,.12); }
.app-marker-glyph { position:relative; z-index:2; transform:rotate(45deg); color:#fff; font-size:15px; font-weight:900; line-height:1; text-shadow:0 1px 2px rgba(0,0,0,.35); }
.app-marker-critica .app-marker-pin { background:#e83d3d; }
.app-marker-alta .app-marker-pin { background:#f29d38; }
.app-marker-alta .app-marker-glyph { color:#1c2530; text-shadow:none; }
.app-marker-media .app-marker-pin { background:#1e91df; }
.app-marker-baixa .app-marker-pin { background:#2fbf71; }
.app-marker-pulse { position:absolute; left:1px; top:-5px; width:40px; height:40px; border-radius:50%; background:rgba(232,61,61,.24); animation:appPulse 1.6s infinite; }
@keyframes appPulse { 0%{transform:scale(.65); opacity:.9} 75%{transform:scale(1.45); opacity:0} 100%{transform:scale(1.45); opacity:0} }
.app-popup { display:flex; flex-direction:column; gap:4px; min-width:190px; }
.app-popup strong { color:#0b1b2b; }
.app-popup span { color:#18334e; font-size:12px; }
.app-popup .btn-panel { margin-top:6px; color:#fff !important; }
.app-event-dialog { position:fixed; inset:50% auto auto 50%; transform:translate(-50%,-50%); max-width:920px; width:min(920px,94vw); max-height:90vh; overflow:auto; border:1px solid var(--bd); border-radius:16px; background:var(--bg2); color:var(--tx); padding:0; box-shadow:0 24px 90px rgba(0,0,0,.60); }
.app-event-dialog::backdrop { background:rgba(3,11,22,.68); backdrop-filter:blur(3px); }
.app-event-card { border:0 !important; margin:0 !important; }
.app-event-details { display:flex; flex-direction:column; gap:12px; }
.app-event-modal-head { display:flex; gap:10px; align-items:center; border:1px solid var(--bd); border-radius:12px; padding:12px; background:rgba(255,255,255,.025); }
.app-event-modal-head div { display:flex; flex-direction:column; gap:2px; }
.app-event-modal-head strong { font-size:18px; color:var(--tx); }
.app-event-modal-head span { color:var(--tx2); }
.app-event-dl { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin:0; }
.app-event-dl div { background:rgba(255,255,255,.025); border:1px solid var(--bd); border-radius:10px; padding:10px; }
.app-event-dl dt { color:var(--tx2); font-size:10px; text-transform:uppercase; letter-spacing:.5px; font-weight:800; margin-bottom:5px; }
.app-event-dl dd { color:var(--tx); margin:0; line-height:1.45; }
.app-event-actions { margin-top:12px; align-items:start; }
.siroo-toast { position:fixed; right:18px; bottom:18px; z-index:10000; padding:12px 14px; border-radius:10px; color:#fff; box-shadow:0 10px 30px rgba(0,0,0,.35); font-weight:800; max-width:min(420px,92vw); }
.siroo-toast-ok { background:#168f5d; }
.siroo-toast-erro { background:#bd2c2c; }
@media (max-width:1200px){.app-campus-page .app-campus-map{height:420px!important;min-height:420px!important}.app-campus-page .app-campus-events-panel .panel-body{max-height:420px}}
@media (max-width:720px){.app-event-dl{grid-template-columns:1fr}.app-event-dialog{width:96vw}.app-campus-legend{gap:6px}}

/* Beta 41 - refinamento UI/UX App Campus USP: metadados limpos e ações alinhadas */
.app-event-action-panel .panel-body {
    display: flex;
    flex-direction: column;
}
.app-event-form {
    height: 100%;
    align-content: start;
}
.app-event-textarea-label textarea {
    min-height: 142px;
}
.app-event-submit-row {
    display: flex;
    align-items: end;
    gap: 10px;
}
.app-event-submit-row .btn-primary-main {
    min-height: 44px;
    width: 100%;
}
/* .app-event-close-row: layout controlado pelo bloco definitivo no final */
.app-event-title-block span:empty,
.app-popup span:empty {
    display: none;
}
@media (max-width:720px) {
    .app-event-submit-row {
        flex-direction: column;
        align-items: stretch;
    }
}

/* Beta 42 — pesquisa operacional separada, frames limpos e alinhamento UI/UX */
.module-actions{display:flex;gap:8px;align-items:center;justify-content:flex-end;flex-wrap:wrap}.module-nav-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:12px 0 16px}.module-card{display:flex;flex-direction:column;gap:6px;border:1px solid var(--bd);border-radius:14px;background:rgba(255,255,255,.025);padding:14px;text-decoration:none;color:var(--tx);min-height:92px;transition:background .18s,border-color .18s,transform .18s}.module-card:hover,.module-card:focus{background:rgba(30,145,223,.08);border-color:var(--bd2);transform:translateY(-1px);outline:none}.module-card strong{font-size:14px}.module-card span{font-size:12px;color:var(--tx2);line-height:1.45}.radiofone-operacional-grid{grid-template-columns:minmax(0,1.35fr) minmax(380px,.65fr);align-items:start}.radiofone-open-wrap{max-height:560px;overflow:auto}.radiofone-create-panel{align-self:start}.radiofone-create-form textarea{resize:none}.search-page .ro-header{align-items:flex-start}.search-filter-panel{margin-bottom:14px}.search-filter-grid{grid-template-columns:repeat(6,minmax(0,1fr));align-items:end}.search-filter-grid label{min-width:0}.search-filter-grid .btn-primary-main{height:44px}.search-result-panel .panel-header{align-items:center}.search-result-frame{max-height:58vh;min-height:260px;overflow:auto;border:1px solid var(--bd);border-radius:12px}.search-result-frame .op-table{min-width:980px}.result-count{color:var(--tx2);font-size:11px;font-weight:800;white-space:nowrap}.chart-wrap-large{min-height:340px;border:1px solid var(--bd);border-radius:14px;background:rgba(255,255,255,.018);padding:12px}.radiofone-indicadores-page .export-toolbar{justify-content:flex-start}.closed-app-page .search-result-frame .op-table,.closed-reports-page .search-result-frame .op-table{min-width:1180px}
/* Beta 43 — refinamento App Campus USP e formulários modais */
.app-event-dialog {
    width: min(980px, 94vw);
    max-height: 88vh;
    overflow: hidden;
}
.app-event-dialog .app-event-card {
    display: flex;
    flex-direction: column;
    max-height: 88vh;
}
.app-event-dialog .panel-body {
    overflow: auto;
}
/* Beta 44 — exportação individual, modal App Campus USP e áudio operacional */
.export-toolbar .export-hint {
    color: var(--tx2);
    font-size: 11px;
    font-weight: 800;
    align-self: center;
    margin-right: 2px;
}
.btn-row-pdf {
    white-space: nowrap;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 32px;
}
.search-result-frame .op-table th:last-child,
.search-result-frame .op-table td:last-child {
    width: 132px;
    min-width: 132px;
    text-align: center;
}
.app-campus-actions [data-app-sound].sound-blocked {
    border-color: rgba(255, 184, 77, .75) !important;
    background: rgba(255, 184, 77, .14) !important;
    color: #ffd38a !important;
}
.app-event-dialog {
    width: min(1040px, 96vw) !important;
    max-height: 92vh !important;
    overflow: hidden !important;
}
.app-event-dialog .app-event-card {
    display: flex !important;
    flex-direction: column !important;
    max-height: 92vh !important;
    background: var(--bg2) !important;
}
.app-event-dialog .app-event-card > .panel-header {
    position: sticky;
    top: 0;
    z-index: 3;
    background: linear-gradient(180deg, rgba(8, 24, 43, .98), rgba(8, 24, 43, .94));
    border-bottom: 1px solid var(--bd);
}
.app-event-dialog .app-event-card > .panel-body {
    padding: 16px !important;
    overflow: auto !important;
    max-height: calc(92vh - 62px) !important;
    min-width: 0;
}
.app-event-details {
    gap: 14px !important;
}
.app-event-modal-head {
    display: flex !important;
    align-items: center !important;
    gap: 12px !important;
    padding: 14px !important;
    margin: 0 !important;
}
.app-event-dl {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 10px !important;
    margin: 0 !important;
}
.app-event-dl div {
    min-width: 0 !important;
    overflow-wrap: anywhere;
}
.app-event-dl .span-2 {
    grid-column: 1 / -1 !important;
}
.app-event-dl dd {
    white-space: pre-wrap;
}

/* beta 45 — substituído por reescrita limpa */
/* Beta 46 — pesquisa dentro de selects, marcadores operacionais e modal App Campus corrigida */
.siroo-native-select-hidden {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    opacity: 0 !important;
    pointer-events: none !important;
}
.siroo-search-select {
    position: relative;
    width: 100%;
}
.siroo-search-select input {
    width: 100%;
    background: var(--bg2);
    border: 1px solid var(--bd2);
    color: var(--tx);
    border-radius: 10px;
    min-height: 44px;
    padding: 9px 38px 9px 12px;
    font: inherit;
    box-sizing: border-box;
}
.siroo-search-select input:focus {
    outline: none;
    border-color: rgba(30,145,223,.78);
    box-shadow: 0 0 0 3px rgba(30,145,223,.16);
}
.siroo-search-clear {
    position: absolute;
    top: 6px;
    right: 6px;
    width: 31px;
    height: 31px;
    border: 1px solid var(--bd);
    border-radius: 8px;
    background: rgba(255,255,255,.035);
    color: var(--tx2);
    font-weight: 900;
    cursor: pointer;
}
.siroo-search-clear:hover,
.siroo-search-clear:focus {
    color: var(--tx);
    border-color: var(--bd2);
    outline: none;
}
.siroo-search-options {
    position: absolute;
    z-index: 6000;
    top: calc(100% + 5px);
    left: 0;
    right: 0;
    max-height: 320px;
    overflow: auto;
    background: #0d2034;
    border: 1px solid var(--bd2);
    border-radius: 12px;
    box-shadow: 0 18px 42px rgba(0,0,0,.44);
    padding: 6px;
}
.siroo-search-option {
    display: block;
    width: 100%;
    text-align: left;
    padding: 9px 10px;
    border: 0;
    border-radius: 8px;
    background: transparent;
    color: var(--tx);
    font: inherit;
    cursor: pointer;
}
.siroo-search-option:hover,
.siroo-search-option:focus,
.siroo-search-option.is-selected {
    background: rgba(143,199,255,.14);
    outline: none;
}
.siroo-search-empty {
    color: var(--tx2);
    padding: 10px;
    font-size: 12px;
}
.ro-op-marker-wrap { background: transparent; border: 0; }
.ro-op-marker { position: relative; display: block; width: 42px; height: 48px; }
.ro-op-pin {
    position: absolute;
    left: 6px;
    top: 0;
    width: 30px;
    height: 30px;
    border-radius: 50% 50% 50% 0;
    transform: rotate(-45deg);
    border: 2px solid #fff;
    box-shadow: 0 8px 22px rgba(0,0,0,.42);
    display: flex;
    align-items: center;
    justify-content: center;
}
.ro-op-pin::after { content:""; position:absolute; inset:3px; border-radius:50%; background:rgba(255,255,255,.13); }
.ro-op-glyph {
    position: relative;
    z-index: 2;
    transform: rotate(45deg);
    color: #fff;
    font-size: 11px;
    font-weight: 950;
    line-height: 1;
    letter-spacing: -.4px;
    text-shadow: 0 1px 2px rgba(0,0,0,.38);
}
.ro-op-patrimonio .ro-op-pin { background:#e86e35; }
.ro-op-transito .ro-op-pin { background:#207ec8; }
.ro-op-conflito .ro-op-pin { background:#b63a3a; }
.ro-op-emergencia .ro-op-pin { background:#d21d1d; }
.ro-op-ambiente .ro-op-pin { background:#2f9f68; }
.ro-op-objeto .ro-op-pin { background:#7856c7; }
.ro-op-geral .ro-op-pin { background:#244d6d; }
.ro-map-popup { display:flex; flex-direction:column; gap:4px; min-width:190px; }
.ro-map-popup strong { color:#0b1b2b; font-size:14px; }
.ro-map-popup span { color:#17324d; font-size:12px; }
.ro-map-popup .btn-panel { margin-top:7px; color:#fff !important; text-decoration:none; }
.app-event-dialog {
    width: min(860px, calc(100vw - 56px)) !important;
    max-width: 860px !important;
}
.app-event-dialog .app-event-card > .panel-body {
    padding: 14px 16px 16px !important;
}
.app-event-summary-card {
    display: grid !important;
    grid-template-columns: 52px minmax(0, 1fr) !important;
    gap: 14px !important;
    align-items: center !important;
    border: 1px solid var(--bd) !important;
    border-radius: 14px !important;
    background: rgba(255,255,255,.025) !important;
    padding: 14px !important;
}
.app-event-summary-main { display:flex; flex-direction:column; gap:7px; min-width:0; }
.app-event-kicker {
    display:block;
    color: var(--tx2) !important;
    font-size: 10px !important;
    font-weight: 900 !important;
    text-transform: uppercase;
    letter-spacing: .55px;
}
.app-event-summary-title {
    display:block;
    color: var(--tx) !important;
    font-size: 19px !important;
    font-weight: 900 !important;
    line-height: 1.2 !important;
}
.app-event-summary-meta {
    display:flex;
    flex-wrap:wrap;
    gap:7px;
    align-items:center;
}
.app-event-chip {
    display:inline-flex;
    align-items:center;
    gap:5px;
    border: 1px solid var(--bd);
    background: rgba(255,255,255,.035);
    border-radius: 999px;
    padding: 5px 8px;
    color: var(--tx2) !important;
    font-size: 11px !important;
    font-weight: 800;
}
.app-event-chip strong { color: var(--tx) !important; font-size: 11px !important; }
.app-event-chip-prioridade.app-event-chip-critica { border-color: rgba(232,61,61,.52); color: #ffb7b7 !important; }
.app-event-chip-prioridade.app-event-chip-alta { border-color: rgba(242,157,56,.54); color: #ffd19a !important; }
.app-event-chip-prioridade.app-event-chip-media { border-color: rgba(30,145,223,.54); color: #a7d7ff !important; }
.app-event-chip-prioridade.app-event-chip-baixa { border-color: rgba(47,191,113,.54); color: #a9e8c5 !important; }
/* textarea min-height controlado pelo bloco definitivo no final */
.app-event-action-panel .panel-header { min-height: 42px !important; }
@media (max-width: 760px) {
    .app-event-summary-card { grid-template-columns: 1fr !important; }
    .app-event-dialog { width: calc(100vw - 22px) !important; }
}

/* Beta 47 — correção severa: combobox, App Campus modal e áudio */
.search-filter-panel,
.search-filter-panel .panel-body,
.search-filter-grid,
.search-filter-grid label {
    overflow: visible !important;
}
.search-filter-panel {
    position: relative;
    z-index: 40;
}
.search-result-panel {
    position: relative;
    z-index: 1;
}
.siroo-search-select {
    min-width: 0;
}
.siroo-search-select input::placeholder {
    color: var(--tx2);
    opacity: .92;
}
.siroo-search-select.is-open {
    z-index: 6500;
}
.siroo-search-options {
    z-index: 7000 !important;
    max-height: 300px !important;
}
.siroo-search-option {
    min-height: 34px;
    line-height: 1.25;
}
.siroo-search-option.is-selected::before {
    content: "✓ ";
    color: var(--az3);
    font-weight: 900;
}
.app-popup {
    display: flex;
    flex-direction: column;
    gap: 4px;
    min-width: 240px;
}
.app-popup strong {
    color: #0b1b2b;
    font-size: 15px;
}
.app-popup span {
    color: #17324d;
    font-size: 13px;
    line-height: 1.25;
}
.app-popup .btn-panel {
    margin-top: 8px;
    color: #fff !important;
}
.app-event-dl dt {
    font-size: 10px !important;
    letter-spacing: .45px !important;
}
.app-event-dl dd {
    font-size: 13px !important;
    line-height: 1.25 !important;
}
.app-event-actions {
    margin-top: 10px !important;
    gap: 10px !important;
    align-items: start !important;
}
.app-event-actions.two {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) !important;
}
.app-event-action-panel,
.app-event-action-panel .panel-body,
.app-event-form {
    min-height: 0 !important;
    height: auto !important;
}
.app-event-action-panel .panel-header {
    min-height: 38px !important;
    padding: 9px 12px !important;
}
.app-event-action-panel .panel-body {
    padding: 10px 12px 12px !important;
    overflow: visible !important;
}
.app-event-form {
    gap: 8px !important;
}
.app-event-textarea-label {
    flex: 1 1 auto;
}
/* ══ App Campus Modal — versão definitiva (beta.55) ══════════════
   FONTE ÚNICA DE VERDADE para estilos do modal App Campus USP.
   Editar APENAS este bloco. Nunca adicionar novas seções sobrepostas.
   ═══════════════════════════════════════════════════════════════ */

/* ── Diálogo ──────────────────────────────────────────────────── */
.app-event-dialog {
    background: transparent;
    border: none;
    padding: 0;
    width: min(920px, calc(100vw - 32px));
    max-width: 920px;
    max-height: 92vh;
    overflow: hidden;
}
.app-event-dialog::backdrop {
    background: rgba(0,0,0,.72);
    backdrop-filter: blur(2px);
}
.app-event-card {
    background: var(--bg2);
    border: 1px solid var(--bd2);
    border-radius: 16px;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    max-height: 92vh;
    box-shadow: 0 24px 64px rgba(0,0,0,.55);
}
.app-event-card > .panel-body {
    overflow-y: auto;
    overflow-x: hidden;
    padding: 16px 18px 20px;
    flex: 1 1 auto;
    min-height: 0;
}

/* ── Cabeçalho do diálogo ─────────────────────────────────────── */
.app-event-modal-head {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    padding: 16px 18px;
    border-bottom: 1px solid var(--bd);
    flex-shrink: 0;
    background: var(--bg3);
}
.app-event-modal-head strong { font-size: 16px; color: var(--tx); }
.app-event-modal-head span   { color: var(--tx2); font-size: 12px; }
.app-event-modal-close {
    margin-left: auto;
    flex-shrink: 0;
    background: transparent;
    border: 1px solid var(--bd2);
    border-radius: 8px;
    color: var(--tx2);
    width: 34px; height: 34px;
    cursor: pointer;
    font-size: 18px;
    display: flex; align-items: center; justify-content: center;
}
.app-event-modal-close:hover { background: var(--bg4); color: var(--tx); }

/* ── Cartão resumo ────────────────────────────────────────────── */
.app-event-summary-card {
    display: flex; align-items: flex-start; gap: 14px;
    padding: 14px;
    border: 1px solid var(--bd); border-radius: 12px;
    margin-bottom: 14px;
}
.app-event-summary-card.app-event-critica { border-color:rgba(232,61,61,.45);background:rgba(232,61,61,.06); }
.app-event-summary-card.app-event-alta    { border-color:rgba(242,157,56,.40);background:rgba(242,157,56,.05); }
.app-event-summary-card.app-event-media   { border-color:rgba(30,145,223,.35);background:rgba(30,145,223,.04); }
.app-event-summary-card.app-event-baixa   { border-color:rgba(47,191,113,.35);background:rgba(47,191,113,.04); }
.app-event-summary-main { display:flex;flex-direction:column;gap:5px;flex:1 1 auto;min-width:0; }
.app-event-kicker { font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--tx3); }
.app-event-summary-title { font-size:16px;color:var(--tx);line-height:1.3; }
.app-event-summary-meta { display:flex;gap:6px;flex-wrap:wrap;margin-top:2px; }
.app-event-chip { display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:20px;font-size:11px;font-weight:600;background:var(--bg3);border:1px solid var(--bd2);color:var(--tx2); }
.app-event-chip strong { color:var(--tx); }
.app-event-chip-prioridade.app-event-chip-critica { border-color:rgba(232,61,61,.5);color:#ff8080; }
.app-event-chip-prioridade.app-event-chip-alta    { border-color:rgba(242,157,56,.5);color:#f5c060; }
.app-event-chip-prioridade.app-event-chip-media   { border-color:rgba(30,145,223,.5);color:#70bfff; }
.app-event-chip-prioridade.app-event-chip-baixa   { border-color:rgba(47,191,113,.5);color:#70dfaa; }

/* ── DL detalhes ──────────────────────────────────────────────── */
.app-event-dl {
    display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin: 0 0 14px;
}
.app-event-dl.app-event-dl-compact { gap:6px; }
.app-event-dl div { background:rgba(255,255,255,.025);border:1px solid var(--bd);border-radius:10px;padding:10px 12px; }
.app-event-dl div.span-2 { grid-column: 1/-1; }
.app-event-dl dt { color:var(--tx2);font-size:10px;text-transform:uppercase;letter-spacing:.5px;font-weight:800;margin-bottom:4px; }
.app-event-dl dd { color:var(--tx);margin:0;line-height:1.45;white-space:pre-wrap;min-height:20px; }

/* ── Área de ações ────────────────────────────────────────────── */
/* .one = só "Tratar" (1 coluna centrada)  |  .two = "Tratar + Encerrar" (2 colunas) */
.app-event-actions { display:grid;gap:14px;align-items:start;margin-top:6px; }
.app-event-actions.one {
    grid-template-columns: 1fr;
    max-width: 680px; margin-left: auto; margin-right: auto; width: 100%;
}
.app-event-actions.two { grid-template-columns: 1fr 1fr; }

/* ── Painéis individuais ──────────────────────────────────────── */
.app-event-action-panel {
    border-radius: 14px; overflow: hidden;
    display: flex; flex-direction: column; min-width: 0;
}
.app-event-action-panel .panel-header { padding: 11px 14px; min-height: 44px; }
.app-event-action-panel .panel-body   { padding: 14px; display:flex; flex-direction:column; flex:1 1 auto; }

/* ── Formulário de ação ───────────────────────────────────────── */
/* SEM form-grid compact — o layout é controlado pelos filhos diretos */
.app-event-form {
    display: flex; flex-direction: column; gap: 10px;
    flex: 1 1 auto; min-width: 0;
}
.app-event-form label {
    display: flex; flex-direction: column; gap: 5px;
    color: var(--tx2); font-size: 11px; font-weight: 700;
    text-transform: uppercase; letter-spacing: .35px;
    margin: 0;
}
.app-event-form input,
.app-event-form textarea,
.app-event-form select {
    background: var(--bg2); border: 1px solid var(--bd2); border-radius: 8px;
    color: var(--tx); padding: 9px 11px; font: inherit; font-size: 13px;
    text-transform: none; letter-spacing: 0; font-weight: 400;
    width: 100%; box-sizing: border-box;
}
.app-event-form textarea { resize: vertical; }
.app-event-textarea-label { flex: 1 1 auto; display:flex; flex-direction:column; }
.app-event-textarea-label textarea { flex:1 1 auto; min-height:150px; }
.app-event-actions.one .app-event-textarea-label textarea { min-height:200px; }
.app-event-actions.two .app-event-textarea-label textarea { min-height:160px; }

/* ── Submit row (tratar) ──────────────────────────────────────── */
/* min-height casa com a altura da close-row (rótulo Classificação + select), assim os
   botões "Salvar procedimento" e "Encerrar evento" ficam na MESMA linha de base. */
.app-event-submit-row { display:flex; align-items:flex-end; margin-top:10px; min-height:66px; }
.app-event-submit-row .btn-primary-main { width:100%; min-height:46px; border-radius:10px; font-size:13px; display:flex; align-items:center; justify-content:center; }

/* ── Close row (encerrar) ─────────────────────────────────────── */
/* Grid de 2 colunas: label de classificação + botão encerrar */
.app-event-close-row {
    display: grid;
    grid-template-columns: 1fr minmax(180px, 200px);
    gap: 10px;
    align-items: end;
    margin-top: 10px;
}
.app-event-close-classificacao { margin: 0; }
.app-event-close-classificacao select { height: 46px; }
.app-event-close-row .btn-danger-main {
    width: 100%; min-height: 46px; border-radius: 10px; font-size: 13px;
    display: flex; align-items: center; justify-content: center;
}

/* ── Responsividade ───────────────────────────────────────────── */
@media (max-width: 1100px) {
    .app-event-dialog { width: calc(100vw - 24px); }
    .app-event-actions.two { grid-template-columns: 1fr; }
}
@media (max-width: 760px) {
    .app-event-dialog { max-height: 96vh; }
    .app-event-card > .panel-body { padding: 12px 14px 16px; }
    .app-event-dl,
    .app-event-actions.one,
    .app-event-actions.two,
    .app-event-close-row { grid-template-columns: 1fr; }
    .app-event-actions.one { max-width: 100%; }
}

/* ══ Desfibriladores (DEA) — estilos definitivos ══════════════ */
.dea-map {
    height: 420px;
    width: 100%;
    border-radius: 10px;
    border: 1px solid var(--bd);
    overflow: hidden;
    background: var(--bg3);
    display: block;
}
.dea-map-sm {
    height: 280px;
    min-height: 280px;
    border-radius: 10px;
    margin-bottom: 10px;
}

/*
 * Beta 57: modal DEA blindada contra regressão de posicionamento.
 * Alguns navegadores/XAMPP renderizavam <dialog> no canto superior esquerdo quando
 * a estilização herdada era sobrescrita. O posicionamento agora é explícito.
 */
dialog.dea-dialog,
.dea-dialog {
    position: fixed !important;
    inset: 0 !important;
    margin: auto !important;
    background: transparent !important;
    border: 0 !important;
    padding: 0 !important;
    width: min(960px, calc(100vw - 40px)) !important;
    max-width: min(960px, calc(100vw - 40px)) !important;
    height: fit-content !important;
    max-height: calc(100vh - 40px) !important;
    overflow: visible !important;
    border-radius: 16px !important;
    box-shadow: none !important;
    z-index: 9999 !important;
}
dialog.dea-dialog[open],
.dea-dialog.fallback-open {
    display: block !important;
}
.dea-dialog::backdrop {
    background: rgba(0, 0, 0, 0.72);
    backdrop-filter: blur(2px);
}
.dea-dialog-card {
    width: 100%;
    max-height: calc(100vh - 44px);
    overflow-y: auto;
    border-radius: 16px !important;
    box-shadow: 0 24px 80px rgba(0,0,0,.45) !important;
}
.dea-dialog-card .panel-body { padding: 14px 16px 16px; }
.dea-form label { display: flex; flex-direction: column; gap: 4px; }
.dea-form input  { width: 100%; box-sizing: border-box; }
.dea-form .form-actions {
    display: flex;
    justify-content: flex-end;
    gap: 12px;
    align-items: center;
    margin-top: 10px;
}
.dea-form .form-actions .btn-panel,
.dea-form .form-actions .btn-primary-main {
    min-width: 180px;
    min-height: 42px;
}
.dea-page .ro-header p strong { color: var(--tx); }
@media (max-width: 760px) {
    dialog.dea-dialog,
    .dea-dialog { width: calc(100vw - 20px) !important; max-width: calc(100vw - 20px) !important; }
    .dea-map-sm { height: 240px; min-height: 240px; }
    .dea-form .form-actions { flex-direction: column-reverse; }
    .dea-form .form-actions .btn-panel,
    .dea-form .form-actions .btn-primary-main { width: 100%; }
}


/* ── SiROO 2026 beta.60 — visibilidade explícita do RO ───────────────── */
.visibility-pill{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:4px 10px;font-size:11px;font-weight:800;letter-spacing:.02em;border:1px solid rgba(127,177,221,.28);white-space:nowrap}
.visibility-pill.private{background:rgba(148,163,184,.10);color:#c8d5e3;border-color:rgba(148,163,184,.28)}
.visibility-pill.public{background:rgba(34,197,94,.13);color:#9be7b5;border-color:rgba(34,197,94,.38)}
.ro-visibility-form .btn-panel.btn-primary{background:#1587E0;color:#fff;border-color:#1587E0;box-shadow:0 8px 18px rgba(21,135,224,.22)}
.radio-action-bar{align-items:center}

/* ── SiROO 2026 beta.61 — ajuste seguro dos controles de visibilidade ── */
.ro-visibility-form{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:10px}
.inline-visibility-form{display:inline-flex;margin:0}
.ro-visibility-card .btn-panel[aria-pressed="true"]{box-shadow:0 0 0 2px rgba(31,147,228,.20) inset}
.visibility-pill.public{border-color:rgba(38,197,131,.45);color:#9ff0ca;background:rgba(38,197,131,.10)}
.visibility-pill.private{border-color:rgba(148,163,184,.35);color:#dbe7f5;background:rgba(148,163,184,.10)}

/* ── SiROO 2026 beta.65 — radiofone: cadastro à esquerda, fila operacional à direita ── */
.radiofone-operacional-grid{
    grid-template-columns:minmax(360px,.68fr) minmax(0,1.32fr) !important;
    align-items:start;
}
.radiofone-create-panel{order:1;}
.radiofone-list-panel{order:2;}
@media (max-width:980px){
    .radiofone-operacional-grid{grid-template-columns:1fr !important;}
    .radiofone-create-panel,.radiofone-list-panel{order:initial;}
}
.ro-visibility-form form{display:inline-flex;margin:0;}

/* ── SiROO 2026 beta.66 — radiofone operacional padronizado ── */
.radiofone-operacional-page .radiofone-create-panel,
.radiofone-operacional-page .radiofone-list-panel{
    border-radius:16px;
    overflow:visible;
}
.radiofone-operacional-page .radiofone-create-form{
    gap:12px;
}
.radiofone-operacional-page .radiofone-create-form textarea{
    min-height:96px;
}
.radiofone-operacional-page .radiofone-create-form .btn-primary-main{
    min-height:46px;
    font-size:14px;
}
.radiofone-operacional-page .radiofone-list-panel .panel-body{
    min-height:320px;
}

/* ── Pesquisa: uniformidade de altura dos campos de filtro ─────────────
   Normaliza inputs, selects e o combo-input do siroo-combobox para a
   mesma altura visual de 38px (padding:9px 10px = ~38px).
   O wrapper .siroo-combobox NÃO recebe height fixo para não clipar o
   dropdown de sugestões (position:absolute que precisa de overflow visível).  */
.search-filter-grid input,
.search-filter-grid select {
    height: 38px;
    box-sizing: border-box;
    padding-top: 0;
    padding-bottom: 0;
}
.search-filter-grid .siroo-combobox .combo-input {
    height: 38px;
    box-sizing: border-box;
    padding-top: 0;
    padding-bottom: 0;
}
.search-filter-grid .siroo-combobox {
    /* Sem height fixo: o dropdown usa position:absolute e precisa de overflow visível */
    overflow: visible;
    position: relative;
}
/* Alinha os labels do filtro verticalmente (evita labels mais altos que campos de data) */
.search-filter-grid > label {
    align-self: end;
}

/* ── Novo Radiofone: layout form(esq) + sidebar(dir) ───────────────────────
   Desktop: form ocupa 1fr (esquerda), sidebar fixa 300px (direita).
   Grid explícito garante posição mesmo com herança de CSS do ro-workspace.
   Mobile (<768px): form em cima, sidebar embaixo. */
.radiofone-novo-layout {
    display: grid;
    grid-template-columns: 1fr 300px;
    grid-template-rows: auto;
    gap: 16px;
    align-items: start;
    width: 100%;
}
/* Formulário: sempre coluna 1 (esquerda) */
.radiofone-novo-layout .radiofone-create-panel {
    grid-column: 1 !important;
    grid-row: 1 !important;
    min-width: 0;
}
/* Sidebar: sempre coluna 2 (direita) */
.radiofone-novo-sidebar {
    grid-column: 2 !important;
    grid-row: 1 !important;
    display: flex;
    flex-direction: column;
    gap: 10px;
    min-width: 0;
}
/* Mobile: empilha form acima, sidebar abaixo */
@media (max-width: 768px) {
    .radiofone-novo-layout {
        grid-template-columns: 1fr !important;
    }
    .radiofone-novo-layout .radiofone-create-panel {
        grid-column: 1 !important;
        grid-row: 1 !important;
    }
    .radiofone-novo-sidebar {
        grid-column: 1 !important;
        grid-row: 2 !important;
    }
}

/* ── siroo-modal: overlay modal genérico ───────────────────────────────── */
.siroo-modal {
    position: fixed; inset: 0; z-index: 10000;
    display: flex; align-items: center; justify-content: center;
    background: rgba(0,0,0,.6); backdrop-filter: blur(3px);
}
.siroo-modal[hidden] { display: none; }
.siroo-modal-box {
    background: var(--bg); border: 1px solid var(--bd2); border-radius: 16px;
    width: 90%; max-height: 85vh; display: flex; flex-direction: column;
    box-shadow: 0 20px 60px rgba(0,0,0,.5);
}
.siroo-modal-header {
    display: flex; align-items: center; justify-content: space-between;
    padding: 14px 18px; border-bottom: 1px solid var(--bd);
    font-weight: 700; font-size: 15px;
}
.siroo-modal-close {
    background: none; border: none; color: var(--tx2); cursor: pointer;
    font-size: 20px; line-height: 1; padding: 2px 6px; border-radius: 4px;
}
.siroo-modal-close:hover { background: var(--bg2); color: var(--tx); }
.siroo-modal-body { padding: 16px 18px; overflow-y: auto; flex: 1; }

/* ── Intelligence: distinção visual IA vs Dados SiROO (beta.87) ───────────── */
/* Painel de IA: borda gradiente roxo/azul para diferenciar de dados do SiROO */
.intelligence-page .intelligence-ai-panel {
    border: 1px solid transparent;
    background:
        linear-gradient(var(--bg), var(--bg)) padding-box,
        linear-gradient(135deg, #7c3aed 0%, #2563eb 100%) border-box;
    border-radius: 16px;
    position: relative;
    overflow: hidden;
}
.intelligence-page .ai-panel-header {
    background: linear-gradient(135deg, rgba(124,58,237,.12), rgba(37,99,235,.08));
}
.intelligence-page .ai-badge {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    background: linear-gradient(135deg, #7c3aed, #2563eb);
    color: #fff;
    font-size: 10px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .06em;
    padding: 3px 9px;
    border-radius: 999px;
    margin-right: 10px;
    vertical-align: middle;
}
.intelligence-page .ai-disclaimer {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    background: rgba(124,58,237,.08);
    border: 1px solid rgba(124,58,237,.25);
    border-radius: 10px;
    padding: 10px 12px;
    font-size: 11.5px;
    color: var(--tx2);
    line-height: 1.5;
    margin-bottom: 12px;
}
.intelligence-page .ai-disclaimer svg { flex-shrink: 0; margin-top: 1px; color: #a78bfa; }
.intelligence-page .ai-disclaimer strong { color: #c4b5fd; }
.intelligence-page .btn-ai-trigger {
    border-color: #7c3aed;
    color: #c4b5fd;
}
.intelligence-page .btn-ai-trigger:hover {
    background: rgba(124,58,237,.12);
    border-color: #a78bfa;
}
/* Rótulo de seção: dados do SiROO */
.intelligence-page .intelligence-section-label {
    display: flex;
    align-items: center;
    gap: 9px;
    padding: 8px 2px;
    color: var(--tx);
    font-weight: 700;
    font-size: 14px;
    border-bottom: 1px solid var(--bd);
    margin-bottom: 4px;
}
.intelligence-page .intelligence-section-label svg { color: #38bdf8; flex-shrink: 0; }
.intelligence-page .intelligence-section-label small {
    margin-left: auto;
    font-weight: 500;
    font-size: 11px;
    color: var(--tx2);
}
/* Melhor formatação do texto de resposta da IA: parágrafos legíveis */
.intelligence-page .ai-result {
    background: rgba(124,58,237,.04);
    border-color: rgba(124,58,237,.18);
}


/* ── Intelligence: zonas Dados vs IA (beta.90.1) ────────────────────────────── */
.intelligence-page .intel-zone {
    border-radius: 16px;
    padding: 14px 16px 18px;
    margin-top: 18px;
    border: 1px solid var(--bd);
}
/* Zona de dados: moldura azul (base de dados) */
.intelligence-page .intel-zone-data {
    background: linear-gradient(180deg, rgba(21,135,224,.05), transparent 120px);
    border-color: rgba(21,135,224,.30);
}
/* Zona de IA: moldura roxa (interpretação) */
.intelligence-page .intel-zone-ai {
    background: linear-gradient(180deg, rgba(124,58,237,.07), transparent 140px);
    border: 1px solid transparent;
    background-clip: padding-box;
    position: relative;
}
.intelligence-page .intel-zone-ai::before {
    content: '';
    position: absolute; inset: 0;
    border-radius: 16px;
    padding: 1px;
    background: linear-gradient(135deg, #7c3aed, #2563eb);
    -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    -webkit-mask-composite: xor; mask-composite: exclude;
    pointer-events: none;
}
.intelligence-page .intel-zone-head {
    display: flex;
    align-items: center;
    gap: 12px;
    padding-bottom: 12px;
    margin-bottom: 12px;
    border-bottom: 1px solid var(--bd);
}
.intelligence-page .izh-icon {
    width: 38px; height: 38px;
    border-radius: 10px;
    display: flex; align-items: center; justify-content: center;
    flex-shrink: 0;
}
.intelligence-page .izh-icon-data { background: rgba(21,135,224,.15); color: #38bdf8; }
.intelligence-page .izh-icon-ai   { background: linear-gradient(135deg, #7c3aed, #2563eb); color: #fff; }
.intelligence-page .izh-text { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.intelligence-page .izh-title { font-weight: 800; font-size: 14px; color: var(--tx); }
.intelligence-page .izh-sub { font-size: 11.5px; color: var(--tx2); line-height: 1.4; }
.intelligence-page .izh-tag {
    margin-left: auto;
    font-size: 10px; font-weight: 800;
    text-transform: uppercase; letter-spacing: .06em;
    padding: 4px 10px; border-radius: 999px;
    white-space: nowrap; flex-shrink: 0;
}
.intelligence-page .izh-tag-data { background: rgba(21,135,224,.18); color: #38bdf8; }
.intelligence-page .izh-tag-ai   { background: linear-gradient(135deg, #7c3aed, #2563eb); color: #fff; }
/* Disclaimer dentro da zona de IA */
.intelligence-page .intel-zone-ai .ai-disclaimer {
    display: flex; align-items: flex-start; gap: 8px;
    background: rgba(124,58,237,.08);
    border: 1px solid rgba(124,58,237,.25);
    border-radius: 10px; padding: 10px 12px;
    font-size: 11.5px; color: var(--tx2); line-height: 1.5;
    margin-bottom: 12px;
}
.intelligence-page .intel-zone-ai .ai-disclaimer svg { flex-shrink: 0; margin-top: 1px; color: #a78bfa; }
.intelligence-page .intel-zone-ai .ai-disclaimer strong { color: #c4b5fd; }
.intelligence-page .intel-zone-ai .ai-result {
    white-space: pre-wrap; color: var(--tx); line-height: 1.65; font-size: 13px;
    border: 1px solid rgba(124,58,237,.18); border-radius: 12px; padding: 14px;
    background: rgba(124,58,237,.04);
}

/* ── Intelligence: hosts ApexCharts (beta.93) ───────────────────────────────── */
.intelligence-page .apex-host { width: 100%; min-height: 280px; }
.intelligence-page .apex-host-tall { min-height: 320px; }
/* Remove qualquer fundo branco que o ApexCharts possa injetar */
.intelligence-page .apexcharts-canvas { background: transparent !important; }
.intelligence-page .apexcharts-tooltip {
    background: #0E2035 !important;
    border: 1px solid var(--bd) !important;
    box-shadow: 0 8px 24px rgba(0,0,0,.45) !important;
}
.intelligence-page .apexcharts-tooltip-title {
    background: rgba(255,255,255,.04) !important;
    border-bottom: 1px solid var(--bd) !important;
    font-weight: 700 !important;
}
.intelligence-page .apexcharts-legend-text { color: var(--tx2) !important; }
/* Painéis de gráfico com leve realce moderno */
.intelligence-page .chart-panel {
    background: linear-gradient(180deg, rgba(255,255,255,.02), transparent 60px);
}

/* ── Intelligence: cards executivos estilo Power BI (beta.93) ────────────────── */
.intelligence-page .insight-strip .metric-card {
    position: relative;
    border-radius: 14px;
    padding: 16px 16px 14px 20px;
    background: linear-gradient(135deg, rgba(255,255,255,.035), rgba(255,255,255,.01));
    border: 1px solid var(--bd);
    overflow: hidden;
    transition: transform .15s ease, border-color .15s ease;
}
.intelligence-page .insight-strip .metric-card:hover {
    transform: translateY(-2px);
    border-color: rgba(148,163,184,.3);
}
.intelligence-page .insight-strip .metric-card::before {
    content: '';
    position: absolute; left: 0; top: 0; bottom: 0; width: 4px;
}
.intelligence-page .metric-info::before    { background: linear-gradient(180deg, #3B82F6, #22D3EE); }
.intelligence-page .metric-warn::before    { background: linear-gradient(180deg, #F59E0B, #EF4444); }
.intelligence-page .metric-action::before  { background: linear-gradient(180deg, #A855F7, #6366F1); }
.intelligence-page .metric-ok::before      { background: linear-gradient(180deg, #10B981, #14B8A6); }
.intelligence-page .insight-strip .mc-label {
    font-size: 10.5px; font-weight: 700; text-transform: uppercase;
    letter-spacing: .07em; color: var(--tx2); margin-bottom: 6px;
}
.intelligence-page .insight-strip .mc-value {
    font-size: 30px; font-weight: 800; line-height: 1.05; color: #fff;
    letter-spacing: -.02em;
}
.intelligence-page .insight-strip .mc-value.small { font-size: 17px; }
.intelligence-page .insight-strip .mc-sub { font-size: 11px; color: var(--tx2); margin-top: 5px; }
.intelligence-page .metric-info .mc-value   { color: #60A5FA; }
.intelligence-page .metric-warn .mc-value   { color: #FBBF24; }
.intelligence-page .metric-action .mc-value { color: #C084FC; }
.intelligence-page .metric-ok .mc-value     { color: #34D399; }

/* ── Intelligence: comparação de períodos (beta.94) ─────────────────────────── */
.intelligence-page .intel-compare-toggle {
    display: flex; align-items: center; gap: 12px;
    padding: 12px 14px; margin-top: 4px;
    background: rgba(168,85,247,.06);
    border: 1px solid rgba(168,85,247,.22);
    border-radius: 12px; cursor: pointer;
}
.intelligence-page .intel-compare-toggle input { display: none; }
.intelligence-page .intel-compare-switch {
    position: relative; width: 40px; height: 22px; flex-shrink: 0;
    background: var(--bg3); border: 1px solid var(--bd2); border-radius: 999px;
    transition: background .2s;
}
.intelligence-page .intel-compare-switch::after {
    content: ''; position: absolute; top: 2px; left: 2px;
    width: 16px; height: 16px; border-radius: 50%; background: var(--tx2);
    transition: transform .2s, background .2s;
}
.intelligence-page .intel-compare-toggle input:checked + .intel-compare-switch {
    background: linear-gradient(135deg, #A855F7, #6366F1); border-color: transparent;
}
.intelligence-page .intel-compare-toggle input:checked + .intel-compare-switch::after {
    transform: translateX(18px); background: #fff;
}
.intelligence-page .intel-compare-text { display: flex; flex-direction: column; gap: 1px; }
.intelligence-page .intel-compare-text strong { font-size: 13px; color: var(--tx); }
.intelligence-page .intel-compare-text small { font-size: 11px; color: var(--tx2); }

.intelligence-page .intel-period-b {
    padding: 14px; margin-top: 4px;
    background: rgba(168,85,247,.04);
    border: 1px dashed rgba(168,85,247,.3);
    border-radius: 12px;
}
.intelligence-page .ipb-head { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; flex-wrap: wrap; }
.intelligence-page .ipb-badge {
    font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .06em;
    padding: 3px 9px; border-radius: 999px; color: #fff;
}
.intelligence-page .ipb-badge-b { background: linear-gradient(135deg, #A855F7, #6366F1); }
.intelligence-page .ipb-hint { font-size: 11px; color: var(--tx2); }
.intelligence-page .ipb-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }

.intelligence-page .intel-delta {
    display: inline-block; margin-left: 6px;
    font-size: 11px; font-weight: 800; padding: 1px 7px; border-radius: 999px;
}
.intelligence-page .intel-delta.delta-up   { background: rgba(239,68,68,.15); color: #f87171; }
.intelligence-page .intel-delta.delta-down { background: rgba(16,185,129,.15); color: #34d399; }
.intelligence-page .intel-delta.delta-flat { background: rgba(148,163,184,.15); color: var(--tx2); }

@media (max-width: 640px) {
    .intelligence-page .ipb-grid { grid-template-columns: 1fr; }
}

/* Intelligence: dica de uso da comparação (beta.94) */
.intelligence-page .ipb-tip {
    font-size: 11px; color: var(--tx2); margin: 10px 0 0 0; line-height: 1.5;
    padding: 8px 10px; background: rgba(168,85,247,.05); border-radius: 8px;
}
.intelligence-page .ipb-tip strong { color: #c084fc; }

/* ── Intelligence: mancha criminal / hotspots (beta.95) ─────────────────────── */
.intelligence-page .hotspots-list { display: flex; flex-direction: column; gap: 8px; }
.intelligence-page .hotspot-row {
    display: flex; align-items: center; gap: 12px;
    padding: 10px 12px; border-radius: 10px;
    background: rgba(255,255,255,.02); border: 1px solid var(--bd);
    border-left: 3px solid var(--tx2);
}
.intelligence-page .hotspot-critico { border-left-color: #ef4444; }
.intelligence-page .hotspot-alto    { border-left-color: #f59e0b; }
.intelligence-page .hotspot-medio   { border-left-color: #3b82f6; }
.intelligence-page .hotspot-baixo   { border-left-color: #64748b; }
.intelligence-page .hotspot-rank {
    width: 26px; height: 26px; flex-shrink: 0; border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-size: 12px; font-weight: 800; color: #fff; background: rgba(148,163,184,.25);
}
.intelligence-page .hotspot-critico .hotspot-rank { background: #ef4444; }
.intelligence-page .hotspot-alto .hotspot-rank    { background: #f59e0b; }
.intelligence-page .hotspot-medio .hotspot-rank   { background: #3b82f6; }
.intelligence-page .hotspot-main { flex: 1; min-width: 0; }
.intelligence-page .hotspot-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 5px; }
.intelligence-page .hotspot-name { font-size: 13px; font-weight: 600; color: var(--tx); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.intelligence-page .hotspot-sev { font-size: 9.5px; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; padding: 2px 8px; border-radius: 999px; white-space: nowrap; }
.intelligence-page .sev-critico { background: rgba(239,68,68,.18); color: #f87171; }
.intelligence-page .sev-alto    { background: rgba(245,158,11,.18); color: #fbbf24; }
.intelligence-page .sev-medio   { background: rgba(59,130,246,.18); color: #60a5fa; }
.intelligence-page .sev-baixo   { background: rgba(100,116,139,.18); color: #94a3b8; }
.intelligence-page .hotspot-bar { height: 7px; border-radius: 999px; background: rgba(148,163,184,.12); overflow: hidden; }
.intelligence-page .hotspot-bar-fill { height: 100%; border-radius: 999px; background: linear-gradient(90deg, #3b82f6, #22d3ee); }
.intelligence-page .hotspot-critico .hotspot-bar-fill { background: linear-gradient(90deg, #ef4444, #f59e0b); }
.intelligence-page .hotspot-alto .hotspot-bar-fill    { background: linear-gradient(90deg, #f59e0b, #fbbf24); }
.intelligence-page .hotspot-stats { display: flex; flex-direction: column; align-items: flex-end; flex-shrink: 0; min-width: 48px; }
.intelligence-page .hotspot-qtd { font-size: 16px; font-weight: 800; color: var(--tx); line-height: 1; }
.intelligence-page .hotspot-pct { font-size: 11px; color: var(--tx2); }

/* ── Intelligence: card de comparação A×B redesenhado (beta.97) ─────────────── */
.intelligence-page .intel-compare-card { margin-top: 14px; padding: 16px; }
.intelligence-page .intel-compare-header {
    display: flex; align-items: center; justify-content: space-between;
    gap: 12px; flex-wrap: wrap; margin-bottom: 4px;
}
.intelligence-page .icc-title { display: flex; align-items: center; gap: 8px; font-weight: 800; font-size: 14px; color: var(--tx); }
.intelligence-page .icc-title svg { color: #a78bfa; }
.intelligence-page .icc-modes { display: inline-flex; background: var(--bg3); border: 1px solid var(--bd2); border-radius: 10px; padding: 3px; gap: 2px; }
.intelligence-page .icc-mode {
    border: 0; background: transparent; color: var(--tx2); cursor: pointer;
    font-size: 12px; font-weight: 700; padding: 6px 14px; border-radius: 8px; transition: all .15s;
}
.intelligence-page .icc-mode:hover { color: var(--tx); }
.intelligence-page .icc-mode.is-active { background: linear-gradient(135deg, #7c3aed, #2563eb); color: #fff; }
.intelligence-page .icc-body { margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--bd); }
.intelligence-page .icc-help { font-size: 12px; color: var(--tx2); margin: 0 0 12px 0; }
.intelligence-page .icc-help strong { color: #c4b5fd; }
.intelligence-page .icc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.intelligence-page .icc-set {
    padding: 12px; border-radius: 12px; background: rgba(255,255,255,.02); border: 1px solid var(--bd);
    display: flex; flex-direction: column; gap: 9px;
}
.intelligence-page .icc-set-a { border-left: 3px solid #3b82f6; }
.intelligence-page .icc-set-b { border-left: 3px solid #a855f7; }
.intelligence-page .icc-badge { font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; padding: 3px 9px; border-radius: 999px; align-self: flex-start; color: #fff; }
.intelligence-page .icc-badge-a { background: #3b82f6; }
.intelligence-page .icc-badge-b { background: linear-gradient(135deg, #a855f7, #6366f1); }
.intelligence-page .icc-readonly { font-size: 12.5px; color: var(--tx); font-weight: 600; }
.intelligence-page .icc-dates { display: flex; gap: 10px; flex-wrap: wrap; }
.intelligence-page .icc-dates label { font-size: 11px; color: var(--tx2); display: flex; flex-direction: column; gap: 3px; }
.intelligence-page .icc-presets { display: flex; gap: 6px; flex-wrap: wrap; }
.intelligence-page .icc-preset {
    font-size: 11px; padding: 4px 10px; border-radius: 999px; cursor: pointer;
    background: rgba(168,85,247,.1); border: 1px solid rgba(168,85,247,.3); color: #c4b5fd;
}
.intelligence-page .icc-preset:hover { background: rgba(168,85,247,.2); }
.intelligence-page .icc-actions { margin-top: 14px; display: flex; gap: 10px; flex-wrap: wrap; }
@media (max-width: 640px) { .intelligence-page .icc-grid { grid-template-columns: 1fr; } }

/* ── App Campus: mídia (foto/áudio) no atendimento (beta.98) ─────────────────── */
.app-campus-page .app-event-media-wrap {
    display: flex; flex-wrap: wrap; gap: 14px; margin-top: 14px;
    padding-top: 14px; border-top: 1px solid var(--bd);
}
.app-campus-page .app-event-media { margin: 0; }
.app-campus-page .app-event-photo figcaption,
.app-campus-page .app-event-media-label {
    font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em;
    color: var(--tx2); margin-bottom: 6px; display: block;
}
.app-campus-page .app-event-photo img {
    max-width: 240px; max-height: 240px; border-radius: 10px;
    border: 1px solid var(--bd); object-fit: cover; cursor: zoom-in;
}
.app-campus-page .app-event-audio audio { width: 280px; max-width: 100%; }
.app-campus-page .app-popup-media { display: block; font-size: 11px; color: var(--tx2); margin: 2px 0 4px; }

/* ── App Campus: mapa em tela cheia (videowall) via Fullscreen API nativa ────── */
/* O wrapper #appMapFsWrap entra em fullscreen nativo. Ele contém o mapa E o diálogo,
   então o atendimento (showModal) aparece por cima e os marcadores seguem clicáveis. */
#appMapFsWrap:fullscreen,
#appMapFsWrap:-webkit-full-screen {
    width: 100vw; height: 100vh; margin: 0; padding: 0;
    display: flex; flex-direction: column; background: var(--bg1, #0a1626);
}
#appMapFsWrap:fullscreen > .panel,
#appMapFsWrap:-webkit-full-screen > .panel {
    flex: 1; display: flex; flex-direction: column; margin: 0; border-radius: 0; min-height: 0;
}
#appMapFsWrap:fullscreen > .panel > .panel-body,
#appMapFsWrap:-webkit-full-screen > .panel > .panel-body {
    flex: 1; padding: 0; min-height: 0; display: flex;
}
#appMapFsWrap:fullscreen .app-campus-map,
#appMapFsWrap:-webkit-full-screen .app-campus-map {
    flex: 1; width: 100% !important; height: 100% !important; min-height: 0 !important; border-radius: 0;
}
/* Reforço por classe (adicionada via JS no evento fullscreenchange): garante o preenchimento
   total mesmo se o pseudo-seletor :fullscreen variar de comportamento entre navegadores. */
.app-campus-page #appMapFsWrap.is-fullscreen {
    width: 100vw; height: 100vh; margin: 0; padding: 0;
    display: flex; flex-direction: column; background: var(--bg1, #0a1626);
}
.app-campus-page #appMapFsWrap.is-fullscreen > .panel {
    flex: 1; display: flex; flex-direction: column; margin: 0; border-radius: 0; min-height: 0;
}
.app-campus-page #appMapFsWrap.is-fullscreen > .panel > .panel-body {
    flex: 1; padding: 0; min-height: 0; display: flex;
}
.app-campus-page #appMapFsWrap.is-fullscreen .app-campus-map {
    flex: 1; width: 100% !important; height: 100% !important; min-height: 0 !important; border-radius: 0;
}
/* O diálogo modal (showModal) usa o top-layer do navegador. Como o <dialog> está DENTRO
   do elemento em fullscreen, o atendimento aparece corretamente por cima do mapa.
   NÃO sobrescrever z-index dos panes do Leaflet — quebra o clique nos marcadores. */

/* ── Intelligence: banner de comparação ativa (beta.98) ─────────────────────── */
.intelligence-page .intel-compare-banner {
    display: flex; align-items: center; justify-content: space-between; gap: 14px;
    flex-wrap: wrap; margin-bottom: 14px; padding: 11px 16px; border-radius: 12px;
    background: linear-gradient(135deg, rgba(124,58,237,.12), rgba(37,99,235,.10));
    border: 1px solid rgba(124,58,237,.30);
}
.intelligence-page .icb-main { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.intelligence-page .icb-tag {
    font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .06em;
    color: #c4b5fd; background: rgba(124,58,237,.18); padding: 4px 10px; border-radius: 999px;
}
.intelligence-page .icb-pair { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; font-size: 13px; color: var(--tx); }
.intelligence-page .icb-a, .intelligence-page .icb-b { display: inline-flex; align-items: center; gap: 6px; }
.intelligence-page .icb-a b { color: #60a5fa; }
.intelligence-page .icb-b b { color: #c084fc; }
.intelligence-page .icb-a em, .intelligence-page .icb-b em {
    font-style: normal; font-weight: 800; font-size: 15px; color: var(--tx);
    background: rgba(255,255,255,.06); padding: 1px 8px; border-radius: 7px;
}
.intelligence-page .icb-vs { color: var(--tx2); font-weight: 700; }
.intelligence-page .icb-delta { font-size: 12.5px; font-weight: 700; }
.intelligence-page .icb-exit {
    border: 1px solid var(--bd2); background: transparent; color: var(--tx2);
    font-size: 12px; font-weight: 700; padding: 6px 12px; border-radius: 8px; cursor: pointer;
}
.intelligence-page .icb-exit:hover { color: var(--tx); border-color: var(--tx2); }

/* ── App Campus: estado do marcador "tratado, aguardando encerramento" (beta.103) ── */
/* Marcador tratado: ganha um selo ✓ verde e um anel para diferenciar do pendente.
   A cor do pin continua refletindo a severidade/tipo da ocorrência. */
.app-marker-check {
    position: absolute; top: -4px; right: -2px; z-index: 2;
    width: 17px; height: 17px; border-radius: 50%;
    background: #16a34a; color: #fff; border: 2px solid #fff;
    font-size: 10px; font-weight: 900; line-height: 13px; text-align: center;
    box-shadow: 0 2px 6px rgba(0,0,0,.35);
}
/* Realce do pin tratado: anel branco/verde pontilhado e leve opacidade para indicar
   que não está mais "em aberto puro", sem perder a cor de severidade. */
.app-marker-estado-tratado .app-marker-pin {
    box-shadow: 0 0 0 3px rgba(22,163,74,.55), 0 8px 20px rgba(0,0,0,.38);
    opacity: .92;
}
/* Marcador pendente mantém destaque cheio (já pulsa via .app-marker-pulse). */
.app-marker-estado-pendente .app-marker-pin { opacity: 1; }

/* ── App Campus: legenda de estados do marcador (beta.103) ──────────────────── */
.app-campus-page .app-map-legend {
    display: flex; flex-wrap: wrap; gap: 14px; align-items: center;
    padding: 8px 12px; margin-bottom: 8px; font-size: 11.5px; color: var(--tx2);
    background: rgba(255,255,255,.02); border: 1px solid var(--bd); border-radius: 10px;
}
.app-campus-page .amlg { display: inline-flex; align-items: center; gap: 6px; }
.app-campus-page .amlg-dot { width: 12px; height: 12px; border-radius: 50%; border: 2px solid #fff; box-shadow: 0 1px 3px rgba(0,0,0,.3); }
.app-campus-page .amlg-pend .amlg-dot { background: #e83d3d; }
.app-campus-page .amlg-trat .amlg-dot { background: #1e91df; box-shadow: 0 0 0 2px rgba(22,163,74,.6); position: relative; }
.app-campus-page .amlg-hint { margin-left: auto; font-style: italic; opacity: .8; }
/* No fullscreen, a legenda fica sobreposta no topo do mapa */
#appMapFsWrap:fullscreen .app-map-legend,
#appMapFsWrap.is-fullscreen .app-map-legend {
    position: absolute; top: 10px; left: 10px; z-index: 1200; margin: 0;
    background: rgba(10,22,38,.86); backdrop-filter: blur(4px);
}
#appMapFsWrap:fullscreen .panel-body,
#appMapFsWrap.is-fullscreen .panel-body { position: relative; }

/* ── Intelligence: comparação em linguagem natural (beta.105) ───────────────── */
.intelligence-page .intel-compare-card { margin-top: 14px; padding: 14px 16px; }
.intelligence-page .icc-row { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
/* Switch "Comparar" */
.intelligence-page .icc-switch { display: inline-flex; align-items: center; gap: 9px; cursor: pointer; user-select: none; }
.intelligence-page .icc-switch input { position: absolute; opacity: 0; width: 0; height: 0; }
.intelligence-page .icc-switch-track { width: 40px; height: 22px; border-radius: 999px; background: var(--bd2); position: relative; transition: background .18s; }
.intelligence-page .icc-switch-thumb { position: absolute; top: 2px; left: 2px; width: 18px; height: 18px; border-radius: 50%; background: #fff; transition: transform .18s; box-shadow: 0 1px 3px rgba(0,0,0,.3); }
.intelligence-page .icc-switch input:checked + .icc-switch-track { background: linear-gradient(135deg, #7c3aed, #2563eb); }
.intelligence-page .icc-switch input:checked + .icc-switch-track .icc-switch-thumb { transform: translateX(18px); }
.intelligence-page .icc-switch-label { font-weight: 800; font-size: 13.5px; color: var(--tx); }
/* Frase em linguagem natural */
.intelligence-page .icc-sentence { display: inline-flex; align-items: center; gap: 9px; flex-wrap: wrap; }
.intelligence-page .icc-sentence-text { font-size: 13.5px; color: var(--tx2); }
.intelligence-page .icc-select {
    appearance: none; background: var(--bg3); border: 1px solid var(--bd2); color: var(--tx);
    font-size: 13px; font-weight: 700; padding: 6px 28px 6px 12px; border-radius: 9px; cursor: pointer;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%2394a3b8' stroke-width='1.6' fill='none'/%3E%3C/svg%3E");
    background-repeat: no-repeat; background-position: right 10px center;
}
.intelligence-page .icc-select:hover { border-color: #7c3aed; }
.intelligence-page .icc-custom-dates { display: inline-flex; align-items: center; gap: 8px; }
.intelligence-page .icc-date { background: var(--bg3); border: 1px solid var(--bd2); color: var(--tx); font-size: 12.5px; padding: 6px 10px; border-radius: 9px; }
.intelligence-page .icc-combo { min-width: 220px; display: inline-block; }
.intelligence-page .icc-go { margin-left: 4px; }
.intelligence-page .icc-hint { margin: 10px 0 0; font-size: 12px; color: var(--tx2); font-style: italic; }

/* ── App Campus: marcador de usuário em MODO ALERTA (bonequinho) — beta.108 ──── */
/* Silhueta de pessoa para indicar que alguém ativou o acompanhamento (modo alerta).
   Visualmente distinto dos marcadores de ocorrência (que são pinos com ícone do tipo). */
.app-marker-alerta { position: relative; display: block; width: 42px; height: 48px; }
.app-marker-person {
    position: absolute; left: 9px; top: 4px; width: 24px; height: 34px;
    display: flex; flex-direction: column; align-items: center; justify-content: flex-start;
    filter: drop-shadow(0 4px 6px rgba(0,0,0,.4));
}
.app-marker-person-head {
    width: 11px; height: 11px; border-radius: 50%;
    background: #0ea5e9; border: 2px solid #fff;
}
.app-marker-person-body {
    margin-top: -1px; width: 20px; height: 20px;
    background: #0ea5e9; border: 2px solid #fff;
    border-radius: 11px 11px 5px 5px;
}
/* Pulso azul-claro ao redor do bonequinho (acompanhamento ativo, não crítico). */
.app-marker-pulse-alerta { background: rgba(14,165,233,.28) !important; }

/* Marcador de PÂNICO (naturezaId 11) recebe destaque máximo: o pino vermelho crítico já é
   aplicado por .app-marker-critica/.app-marker-panic; reforçamos o anel pulsante. */
.app-marker-panic .app-marker-pin { background: #dc2626; }
.app-marker-estado-pendente.app-marker-panic .app-marker-pulse { background: rgba(220,38,38,.34); }

.app-popup-hint { display:block; margin-top:4px; font-size:11px; color: var(--tx2, #64748b); font-style: italic; }

/* ── App Campus encerrados: lista em CARDS (UI limpa) — beta.109 ─────────────── */
.app-closed-list { display: flex; flex-direction: column; gap: 10px; }
.app-closed-card {
    background: var(--bg2, #fff);
    border: 1px solid var(--bd, #e3e9f1);
    border-radius: 12px;
    padding: 14px 16px;
    transition: box-shadow .15s, border-color .15s;
}
.app-closed-card:hover { box-shadow: 0 4px 14px rgba(15,32,53,.08); border-color: #c9d6e8; }
.acc-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; flex-wrap: wrap; }
.acc-head-main { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.acc-id { font-family: ui-monospace, "SF Mono", Menlo, monospace; font-weight: 700; font-size: 13px; color: var(--tx2, #475569); }
.acc-natureza { font-weight: 800; font-size: 14.5px; color: var(--tx, #0f2035); }
.acc-badge { font-size: 11px; font-weight: 700; padding: 2px 9px; border-radius: 999px; white-space: nowrap; }
.acc-badge.is-real { background: #e7f5ec; color: #137a3b; }
.acc-badge.is-falso { background: #fdeaea; color: #c0392b; }
.acc-head-side { display: flex; align-items: center; gap: 12px; }
.acc-data { font-size: 12px; color: var(--tx2, #64748b); white-space: nowrap; }
.acc-solic { margin-top: 8px; font-size: 13px; color: var(--tx, #0f2035); }
.acc-solic-label { font-weight: 700; color: var(--tx2, #475569); }
.acc-texts { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-top: 10px; padding-top: 10px; border-top: 1px dashed var(--bd, #e3e9f1); }
@media (max-width: 760px) { .acc-texts { grid-template-columns: 1fr; } }
.acc-text-label { display: block; font-size: 10.5px; font-weight: 800; text-transform: uppercase; letter-spacing: .04em; color: #6b7a90; margin-bottom: 3px; }
.acc-text p { margin: 0; font-size: 12.5px; line-height: 1.5; color: var(--tx, #33414f); }

/* ── App Campus: overlay de desbloqueio de som (política de autoplay) — beta.115 ── */
.app-sound-unlock {
    position: fixed; right: 18px; bottom: 18px; z-index: 9999;
    display: flex; align-items: center; gap: 12px;
    background: linear-gradient(135deg, #0E2035, #1a3a5c);
    color: #fff; border: 1px solid #2e5e8f; border-radius: 14px;
    padding: 14px 18px; cursor: pointer; text-align: left;
    box-shadow: 0 8px 28px rgba(0,0,0,.45);
    animation: asu-pulse 2s ease-in-out infinite;
    max-width: 340px; font: inherit;
}
.app-sound-unlock:hover { border-color: #4d8fd1; transform: translateY(-1px); }
.asu-icon { font-size: 26px; line-height: 1; }
.asu-text { font-size: 12.5px; line-height: 1.45; color: #dbe9f7; }
.asu-text strong { color: #fff; font-size: 13.5px; }
@keyframes asu-pulse {
    0%, 100% { box-shadow: 0 8px 28px rgba(0,0,0,.45); }
    50% { box-shadow: 0 8px 28px rgba(0,0,0,.45), 0 0 0 8px rgba(21,135,224,.18); }
}

/* ── Login split-screen profissional — beta.115 ─────────────────────────────── */
.auth-body { padding: 0; }
.login-split {
    display: flex; width: 100%; min-height: 100vh;
}
/* Painel institucional à esquerda */
.login-brand {
    flex: 1.1; position: relative; overflow: hidden;
    background: linear-gradient(150deg, #061120 0%, #0E2035 45%, #0B2B4E 100%);
    display: flex; align-items: center; justify-content: center;
    border-right: 1px solid rgba(21,135,224,.18);
}
.lb-inner { position: relative; z-index: 2; text-align: center; padding: 40px; }
.lb-logo {
    width: 76px; height: 76px; margin: 0 auto 22px;
    background: linear-gradient(135deg, var(--az3, #1587E0), var(--az, #005FA3));
    border-radius: 18px; display: flex; align-items: center; justify-content: center;
    font-size: 30px; font-weight: 800; color: #fff;
    box-shadow: 0 12px 36px rgba(21,135,224,.35);
}
.lb-name { font-size: 38px; font-weight: 800; color: #fff; letter-spacing: .5px; margin: 0 0 8px; }
.lb-desc { font-size: 15px; color: #9fc4e8; line-height: 1.55; margin: 0 0 26px; }
.lb-divider { width: 56px; height: 3px; border-radius: 2px; margin: 0 auto 24px;
              background: linear-gradient(90deg, var(--az3,#1587E0), transparent); }
.lb-org { font-size: 12.5px; color: #7fa8cf; line-height: 1.6; margin: 0 0 6px; }
.lb-usp { font-size: 12px; color: #5d7fa3; margin: 0; }
.lb-glow {
    position: absolute; width: 560px; height: 560px; border-radius: 50%;
    background: radial-gradient(circle, rgba(21,135,224,.16), transparent 65%);
    top: -180px; right: -160px; pointer-events: none;
}
/* Painel do formulário à direita */
.login-panel {
    flex: 1; display: flex; align-items: center; justify-content: center;
    background: var(--bg, #0B1929); padding: 40px 24px;
}
.login-box { width: 100%; max-width: 420px; }
.lp-header { margin-bottom: 26px; }
.lp-title { font-size: 22px; font-weight: 800; color: var(--tx, #E2EBF5); margin: 0 0 6px; }
.lp-sub { font-size: 13px; color: var(--tx2, #8aa0b8); margin: 0; }
/* Campos maiores e confortáveis */
.login-box .form-group { margin-bottom: 18px; }
.login-box .form-group label { font-size: 11.5px; }
.input-icon-wrap { position: relative; }
.input-icon {
    position: absolute; left: 13px; top: 50%; transform: translateY(-50%);
    color: var(--tx3, #5d7fa3); pointer-events: none;
}
.login-box .form-control { padding: 13px 14px; font-size: 14px; border-radius: 10px; }
.login-box .form-control.has-icon { padding-left: 40px; }
.login-box .form-control:focus { border-color: var(--az3, #1587E0); box-shadow: 0 0 0 3px rgba(21,135,224,.15); }
.login-box .btn-login { padding: 13px 0; font-size: 15px; border-radius: 10px; margin-top: 4px; }
.login-box .btn-login:hover { background: var(--az3, #1587E0); }
.lp-footer { margin-top: 26px; text-align: center; }
.lp-footer p { font-size: 11.5px; color: var(--tx3, #5d7fa3); margin: 0 0 4px; }
.lp-copy { opacity: .8; }
/* Responsivo: em telas estreitas o painel institucional vira faixa no topo */
@media (max-width: 860px) {
    .login-split { flex-direction: column; }
    .login-brand { flex: none; min-height: 230px; border-right: 0;
                   border-bottom: 1px solid rgba(21,135,224,.18); }
    .lb-logo { width: 56px; height: 56px; font-size: 22px; margin-bottom: 14px; }
    .lb-name { font-size: 28px; }
    .lb-desc { font-size: 13px; margin-bottom: 14px; }
    .lb-divider, .lb-org, .lb-usp { display: none; }
    .login-panel { padding: 28px 18px; }
}

/* ── Indicador de conexão (topbar) — estado offline ───────────────────────── */
.topbar-status.is-offline .live-dot { background: #dc2626; box-shadow: 0 0 0 4px rgba(220,38,38,.18); animation: none; }
.topbar-status.is-offline .live-label { color: #f08a8a; }

/* ── SiCD migrado — beta.115 ─────────────────────────────────────────────── */
.sicd-kpis { display:grid; grid-template-columns:repeat(auto-fit,minmax(130px,1fr)); gap:10px; margin-bottom:14px; }
.sicd-kpi { background:var(--bg2,#0E2035); border:1px solid var(--bd,#1d3147); border-radius:12px; padding:12px 14px; display:flex; flex-direction:column; gap:2px; text-decoration:none; transition:border-color .15s; }
.sicd-kpi:hover { border-color:var(--az3,#1587E0); }
.sicd-kpi strong { font-size:22px; color:var(--tx,#E2EBF5); }
.sicd-kpi span { font-size:11.5px; color:var(--tx2,#8aa0b8); }
.sicd-badge { display:inline-block; font-size:11px; font-weight:700; padding:2px 9px; border-radius:999px; white-space:nowrap; }
.bg-primary { background:#163e63; color:#7db8ef; } .bg-secondary { background:#2a3646; color:#9aa9bb; }
.bg-info { background:#0e3d46; color:#67d4e8; } .bg-warning { background:#4a3a10; color:#e8c468; }
.bg-dark { background:#1d2735; color:#b8c4d4; } .bg-success { background:#143d26; color:#5fce8f; }
.bg-danger { background:#461a1a; color:#ef8a8a; }
.sicd-acoes { display:flex; gap:6px; flex-wrap:wrap; }
.sicd-detalhe-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:12px; margin-bottom:10px; }
.sicd-detalhe-grid > div { display:flex; flex-direction:column; gap:2px; }
.sicd-detalhe-grid small { font-size:10.5px; text-transform:uppercase; letter-spacing:.04em; color:var(--tx3,#5d7fa3); }
.sicd-texto { margin-top:10px; } .sicd-texto small { font-size:10.5px; text-transform:uppercase; color:var(--tx3,#5d7fa3); }
.sicd-texto p { margin:3px 0 0; font-size:13px; line-height:1.55; }
.sicd-resp { border:1px solid var(--bd,#1d3147); border-radius:10px; padding:10px 14px; margin-bottom:12px; }
.sicd-resp legend { font-size:12px; font-weight:700; padding:0 6px; color:var(--az3,#1587E0); }
.form-inline-filtros { display:flex; gap:12px; align-items:flex-end; flex-wrap:wrap; margin-bottom:14px; }
.form-inline-filtros label { display:flex; flex-direction:column; gap:4px; font-size:11.5px; }
.alert-inline.ok { background:#143d26; border-color:#1d6b3f; color:#7fdba5; }

/* ── Flatpickr — tema SiROO (dark) ─────────────────────────────────────────── */
.flatpickr-calendar { background: var(--bg2,#0E2035); border: 1px solid var(--bd,#1d3147); box-shadow: 0 12px 36px rgba(0,0,0,.5); color: var(--tx,#E2EBF5); }
.flatpickr-calendar.arrowTop:before, .flatpickr-calendar.arrowTop:after { border-bottom-color: var(--bg2,#0E2035); }
.flatpickr-months .flatpickr-month, .flatpickr-current-month .flatpickr-monthDropdown-months,
.flatpickr-weekdays, span.flatpickr-weekday { background: transparent; color: var(--tx,#E2EBF5); fill: var(--tx,#E2EBF5); }
.flatpickr-day { color: var(--tx,#E2EBF5); }
.flatpickr-day.today { border-color: var(--az3,#1587E0); }
.flatpickr-day:hover, .flatpickr-day.prevMonthDay:hover, .flatpickr-day.nextMonthDay:hover { background: #18324d; border-color: #18324d; }
.flatpickr-day.selected, .flatpickr-day.selected:hover { background: var(--az,#005FA3); border-color: var(--az,#005FA3); }
.flatpickr-day.prevMonthDay, .flatpickr-day.nextMonthDay { color: var(--tx3,#5d7fa3); }
.flatpickr-months .flatpickr-prev-month svg, .flatpickr-months .flatpickr-next-month svg { fill: var(--tx2,#8aa0b8); }
.flatpickr-time { background: var(--bg2,#0E2035); border-top: 1px solid var(--bd,#1d3147); }
.flatpickr-time input, .flatpickr-time .flatpickr-am-pm { background: transparent; color: var(--tx,#E2EBF5); }
.flatpickr-time input:hover, .flatpickr-time input:focus { background: #18324d; }
.numInputWrapper span.arrowUp:after { border-bottom-color: var(--tx2,#8aa0b8); }
.numInputWrapper span.arrowDown:after { border-top-color: var(--tx2,#8aa0b8); }

/* ── Combobox pesquisável sobre select (UF/cidade) ─────────────────────────── */
.combo-from-select { position: relative; }
.combo-from-select .combo-native-hidden {
    position: absolute !important; width: 1px; height: 1px; opacity: 0;
    pointer-events: none; margin: 0; padding: 0; border: 0;
}

/* ── Badges de mídia clicáveis (download de anexos/vídeos nos encerrados) ── */
.media-badge-click { position: relative; cursor: pointer; }
.media-badge-click:hover .media-menu, .media-badge-click:focus-within .media-menu { display: flex; }
.media-menu {
    display: none; position: absolute; top: calc(100% + 4px); left: 0; z-index: 50;
    flex-direction: column; min-width: 150px;
    background: var(--bg2,#0E2035); border: 1px solid var(--bd,#1d3147);
    border-radius: 8px; padding: 4px; box-shadow: 0 8px 24px rgba(0,0,0,.45);
}
.media-menu a { padding: 7px 10px; border-radius: 6px; font-size: 12px; color: var(--tx,#E2EBF5); white-space: nowrap; }
.media-menu a:hover { background: #18324d; }

/* ══ RESPONSIVO mobile/tablet — beta.115 ═══════════════════════════════════ */
.nav-toggle { display: none; background: transparent; border: 0; cursor: pointer; padding: 10px; margin-right: 2px; }
.nav-toggle span { display: block; width: 22px; height: 2px; background: var(--tx,#E2EBF5); margin: 5px 0; border-radius: 2px; transition: .2s; }

@media (max-width: 1024px) {
    .main-content { padding: 16px 14px; }
    .form-grid { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 860px) {
    /* Topbar compacta */
    .nav-toggle { display: block; }
    .topbar { flex-wrap: wrap; gap: 8px; padding: 8px 12px; }
    .topbar-sub, .topbar-sep { display: none; }
    .topbar-status { margin-left: auto; }

    /* Sidebar vira gaveta (off-canvas) */
    .sidebar {
        position: fixed; top: 0; left: 0; bottom: 0; z-index: 1000;
        width: min(280px, 84vw); max-width: none;
        transform: translateX(-105%); transition: transform .22s ease;
        overflow-y: auto; box-shadow: 8px 0 28px rgba(0,0,0,.5);
    }
    .sidebar.is-open { transform: translateX(0); }
    body.nav-open::after {
        content: ''; position: fixed; inset: 0; z-index: 999;
        background: rgba(2,8,16,.55); backdrop-filter: blur(1px);
    }
    .main-content { padding: 14px 12px; }

    /* Tabelas: rolagem horizontal sem quebrar o layout */
    .table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
    .op-table { min-width: 640px; }

    /* Formulários em coluna única */
    .form-grid { grid-template-columns: 1fr; }
    .form-grid .span-2 { grid-column: auto; }
    .page-head { flex-direction: column; align-items: flex-start; gap: 10px; }
    .page-head-actions { width: 100%; display: flex; flex-wrap: wrap; gap: 8px; }

    /* Filtros e KPIs empilham */
    .form-inline-filtros { flex-direction: column; align-items: stretch; }
    .sicd-kpis { grid-template-columns: repeat(2, 1fr); }

    /* Mapas e painéis altos reduzem altura */
    .leaflet-container, [id*="map"], [id*="Map"] { max-height: 46vh; }
}

@media (max-width: 480px) {
    .topbar-title { font-size: 13.5px; }
    .sicd-kpis { grid-template-columns: 1fr 1fr; }
    .btn-primary-main, .btn-panel { padding: 9px 12px; font-size: 12.5px; }
    .media-menu { left: auto; right: 0; }
}

/* ── Menu flutuante de download (substitui o hover clipado) ───────────────── */
.media-badge-click { cursor: pointer; border: 0; font: inherit; }
.mb-caret { font-size: 9px; opacity: .75; }
.media-float-menu {
    position: fixed; z-index: 10000; display: flex; flex-direction: column;
    min-width: 170px; background: var(--bg2,#0E2035);
    border: 1px solid var(--bd,#1d3147); border-radius: 8px; padding: 4px;
    box-shadow: 0 10px 30px rgba(0,0,0,.5);
}
.media-float-menu a { padding: 8px 11px; border-radius: 6px; font-size: 12.5px; color: var(--tx,#E2EBF5); white-space: nowrap; }
.media-float-menu a:hover { background: #18324d; }

/* ── Hub de Pesquisas — redesign beta.116 ──────────────────────────────────── */
.hub-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(310px, 1fr)); gap: 14px; }
.hub-card {
    display: flex; align-items: center; gap: 14px;
    background: linear-gradient(180deg, var(--bg2,#0E2035), #0c1b2e);
    border: 1px solid var(--bd,#1d3147); border-radius: 14px;
    padding: 18px 16px; text-decoration: none; position: relative; overflow: hidden;
    transition: transform .16s ease, border-color .16s ease, box-shadow .16s ease;
}
.hub-card::before {
    content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 3px;
    background: var(--hc, #1587E0); opacity: .9;
}
.hub-card:hover { transform: translateY(-2px); border-color: var(--hc, #1587E0); box-shadow: 0 10px 26px rgba(0,0,0,.35); }
.hc-icon {
    flex: 0 0 46px; width: 46px; height: 46px; border-radius: 12px;
    display: flex; align-items: center; justify-content: center;
    background: color-mix(in srgb, var(--hc, #1587E0) 16%, transparent);
    color: var(--hc, #1587E0);
}
.hc-icon svg { width: 22px; height: 22px; }
.hc-body { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.hc-body strong { font-size: 14.5px; color: var(--tx,#E2EBF5); }
.hc-body span { font-size: 12px; line-height: 1.5; color: var(--tx2,#8aa0b8); }
.hc-arrow { margin-left: auto; color: var(--tx3,#5d7fa3); transition: transform .16s, color .16s; }
.hc-arrow svg { width: 17px; height: 17px; }
.hub-card:hover .hc-arrow { transform: translateX(3px); color: var(--hc,#1587E0); }
/* Acentos por módulo */
.hc-az { --hc: #1587E0; } .hc-vd { --hc: #22b573; } .hc-rx { --hc: #e0518a; }
.hc-am { --hc: #e8b23a; } .hc-lj { --hc: #f0742f; } .hc-cy { --hc: #2bbbcf; } .hc-vi { --hc: #9a6df2; }
@media (max-width: 860px) { .hub-grid { grid-template-columns: 1fr; } }

/* ── beta.122: topbar operacional com clima do campus ─────────────────────── */
.topbar-ops {
    display: flex; align-items: center; gap: 9px; min-width: 0; flex: 0 1 auto;
    padding: 7px 14px; border: 1px solid rgba(143,199,255,.22); border-radius: 999px;
    background: linear-gradient(135deg, rgba(21,135,224,.10), rgba(14,32,53,.08));
    color: #d8ebff; white-space: nowrap; overflow: visible;
}
.topbar-status.compact { gap: 7px; padding: 0; background: transparent; border: 0; min-width: auto; flex: 0 0 auto; }
.topbar-status.compact .live-label { font-size: 10px; letter-spacing: .08em; font-weight: 900; color: #7ef0a1; }
.topbar-status.compact.is-offline .live-label { color: #ff9a9a; }
.ops-divider { width: 1px; height: 18px; background: rgba(216,235,255,.22); flex: 0 0 auto; }
.ops-label { font-size: 10px; font-weight: 900; text-transform: uppercase; letter-spacing: .08em; color: #8fc7ff; flex: 0 0 auto; }
#opsWeather { font-size: 12px; font-weight: 800; color: #f4f9ff; white-space: nowrap; overflow: visible; display: inline-flex; align-items: center; gap: 6px; flex: 0 0 auto; }
#opsWeather .ops-drone { padding: 1px 8px; border-radius: 999px; font-size: 11px; font-weight: 800; border: 1px solid currentColor; line-height: 1.5; }
.ops-weather-fallback #opsWeather { color: #c2d4e8; }
/* Em telas estreitas, esconde só o rótulo "Centro operacional" e mantém o clima legível;
   só oculta todo o bloco em telas muito pequenas. */
@media (max-width: 1280px) { .topbar-ops .ops-label { display: none; } }
@media (max-width: 1024px) { .topbar-ops { display: none; } }

/* ── beta.122: SiCD navegação por níveis ───────────────────────────────────── */
.sicd-hub { margin: 0 0 18px 0; padding: 16px; border: 1px solid var(--bd, #dbe5ef); border-radius: 18px; background: linear-gradient(180deg,#ffffff,#f8fbff); box-shadow: 0 10px 28px rgba(14,32,53,.06); }
.sicd-hub-head { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:12px; }
.sicd-eyebrow { display:block; font-size:10px; font-weight:900; text-transform:uppercase; letter-spacing:.08em; color:#1587e0; margin-bottom:2px; }
.sicd-hub h2 { margin:0; font-size:20px; color:#0e2035; letter-spacing:-.02em; }
.sicd-nav-section { margin-top:12px; }
.sicd-nav-section-title { display:block; margin: 0 0 7px; font-size:11px; font-weight:900; text-transform:uppercase; letter-spacing:.08em; color:#64748b; }
.sicd-nav-grid { display:grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap:10px; }
.sicd-nav-card { display:flex; align-items:center; gap:12px; padding:13px 14px; border:1px solid #dbe5ef; border-radius:15px; background:#fff; text-decoration:none; color:#0e2035; transition:.18s ease; }
.sicd-nav-card:hover { transform: translateY(-1px); border-color:#9cccf5; box-shadow:0 10px 24px rgba(21,135,224,.12); }
.sicd-nav-card.active { border-color:#1587e0; background:linear-gradient(135deg, rgba(21,135,224,.12), rgba(255,255,255,.96)); box-shadow: inset 0 0 0 1px rgba(21,135,224,.15); }
.sicd-nav-icon { width:34px; height:34px; flex:0 0 34px; border-radius:12px; display:grid; place-items:center; color:#fff; background:linear-gradient(135deg,#0e2035,#1587e0); font-weight:900; }
.sicd-nav-text { display:flex; flex-direction:column; gap:2px; min-width:0; }
.sicd-nav-text strong { font-size:13.5px; color:#0e2035; }
.sicd-nav-text small { font-size:12px; line-height:1.35; color:#667085; }

/* ── beta.122: alarme App Campus com gesto operacional explícito ───────────── */
.app-sound-unlock { right: 22px; bottom: 62px; max-width: 380px; border-color:#2d70b3; background: linear-gradient(135deg, #0e2035, #123d66); }
/* beta.131: removido o banner vermelho superior "ALARME SONORO NÃO ARMADO" (muito intrusivo).
   Mantém-se apenas esta dica discreta inferior, que desaparece assim que o operador interage
   com a tela (o áudio é armado e tocado no primeiro gesto). */
.app-audio-blocked .app-sound-unlock { box-shadow: 0 12px 34px rgba(0,0,0,.42); }

/* ── beta.122: flatpickr mais evidente para operador ──────────────────────── */
.flatpickr-input, .flatpickr-input[readonly] { cursor: pointer; background-image: linear-gradient(90deg, transparent calc(100% - 38px), rgba(21,135,224,.08) calc(100% - 38px)); }

/* ── beta.123: SiCD sem painéis espremidos/scroll interno ─────────────────── */
.main-content.sicd-page { overflow-y: auto; }
.main-content.sicd-page .panel,
.main-content.sicd-page form.panel { overflow: visible; }
.main-content.sicd-page .panel-body {
    overflow: visible !important;
    flex: 0 0 auto !important;
}
.main-content.sicd-page .page-head {
    align-items: flex-start;
    margin-bottom: 14px;
}
.main-content.sicd-page .panel { margin-bottom: 14px; }
.main-content.sicd-page .sicd-detalhe-grid {
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 14px;
}
.main-content.sicd-page .sicd-detalhe-grid > div,
.main-content.sicd-page .sicd-resp {
    background: rgba(7, 20, 36, .34);
    border: 1px solid rgba(143, 199, 255, .12);
    border-radius: 12px;
    padding: 12px 14px;
}
.main-content.sicd-page .sicd-detalhe-grid strong,
.main-content.sicd-page .sicd-resp strong { line-height: 1.45; }
.main-content.sicd-page .table-wrap {
    overflow-x: auto;
    overflow-y: visible;
    max-height: none !important;
    border-radius: 10px;
}
.main-content.sicd-page .op-table td,
.main-content.sicd-page .op-table th { white-space: normal; }
.main-content.sicd-page .op-table td:last-child { white-space: nowrap; }
.main-content.sicd-page textarea { min-height: 96px; }
.main-content.sicd-page .form-grid.compact { align-items: end; }
@media (min-width: 1180px) {
    .main-content.sicd-page .op-table { font-size: 12.5px; }
    .main-content.sicd-page .panel-body { padding: 16px 18px; }
}

/* ── beta.123: campos de data/hora com affordance visual de calendário/relógio ─ */
.siroo-picker-field,
.flatpickr-input.siroo-picker-field,
.flatpickr-input[readonly].siroo-picker-field {
    cursor: pointer;
    padding-right: 42px !important;
    background-repeat: no-repeat !important;
    background-position: right 12px center !important;
    background-size: 18px 18px !important;
}
.siroo-date-field {
    background-image:
        url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' fill='none' stroke='%238fc7ff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' viewBox='0 0 24 24'%3E%3Crect x='3' y='4' width='18' height='18' rx='2'/%3E%3Cpath d='M16 2v4M8 2v4M3 10h18'/%3E%3C/svg%3E") !important;
}
.siroo-time-field {
    background-image:
        url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' fill='none' stroke='%238fc7ff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 7v6l4 2'/%3E%3C/svg%3E") !important;
}
.flatpickr-calendar.open { z-index: 11000; }
.flatpickr-time input { font-weight: 800; }

/* Login protegido por Cloudflare Turnstile e botão de recuperação de senha na tela de usuários */
.login-turnstile { display: flex; justify-content: center; margin: 4px 0 14px; min-height: 65px; }
.login-turnstile .cf-turnstile { max-width: 100%; }
.config-recover-row { margin-top: 10px; }
.config-recover-row .btn-panel { color: #f59e0b; border-color: #f59e0b; }
.config-recover-row .btn-panel:hover { background: rgba(245, 158, 11, 0.12); }

/* beta.125 — SiOS: cartões de resumo, pílulas de status, UI mais limpa */
.os-stats { display:flex; gap:12px; flex-wrap:wrap; margin:14px 0 4px; }
.os-stat { flex:1 1 120px; min-width:120px; background:var(--bg2,#0E2035); border:1px solid var(--bd2,#1D3856);
  border-radius:12px; padding:12px 16px; display:flex; flex-direction:column; gap:2px;
  border-left:3px solid #3a597e; }
.os-stat-num { font-size:22px; font-weight:800; color:var(--tx,#E2EBF5); line-height:1; }
.os-stat-lbl { font-size:11px; color:var(--text-muted,#7c93ab); text-transform:uppercase; letter-spacing:.4px; }
.os-stat-exec { border-left-color:#3a597e; }
.os-stat-ok { border-left-color:#16a34a; }
.os-stat-analysis { border-left-color:#f59e0b; }
.os-stat-refused { border-left-color:#dc2626; }

.os-pill { display:inline-block; font-size:11px; font-weight:700; padding:3px 10px; border-radius:999px;
  white-space:nowrap; border:1px solid transparent; }
.os-pill-wait { color:#9fb6cf; background:rgba(159,182,207,.12); border-color:rgba(159,182,207,.3); }
.os-pill-ok { color:#16a34a; background:rgba(22,163,74,.12); border-color:rgba(22,163,74,.35); }
.os-pill-analysis { color:#f59e0b; background:rgba(245,158,11,.12); border-color:rgba(245,158,11,.35); }
.os-pill-refused { color:#f87171; background:rgba(220,38,38,.12); border-color:rgba(220,38,38,.35); }

#os-table tbody tr { transition:background .12s ease; }
#os-table tbody tr:hover { background:rgba(21,135,224,.06); }
#os-table thead th { position:sticky; top:0; background:var(--bg2,#0E2035); z-index:2; }

/* beta.125 — banner de clima/operacional turbinado (drone + próximas horas) */
.ops-drone { font-weight:700; }
.ops-drone-ok { color:#34d399; }
.ops-drone-warn { color:#fbbf24; }
.ops-drone-no { color:#f87171; }

/* beta.126 — pickers nativos de data/hora legíveis no tema escuro do SiROO.
   color-scheme:dark faz o ícone do calendário/relógio e o popup nativos usarem
   o esquema escuro (ícone claro), sem depender de CSS externo (flatpickr). */
input[type="date"].siroo-date-field,
input[type="time"].siroo-time-field { color-scheme: dark; }
input[type="date"].siroo-date-field::-webkit-calendar-picker-indicator,
input[type="time"].siroo-time-field::-webkit-calendar-picker-indicator {
    filter: invert(0.85); cursor: pointer; opacity: .9;
}

/* beta.126 — Mapa de Ocorrências (Pesquisas) */
.mapa-ocorrencias { width: 100%; height: 560px; border-radius: 12px; overflow: hidden;
    border: 1px solid var(--bd2, #1D3856); background: #0b1a2c; z-index: 0; }
.mapa-filtros { display: flex; flex-wrap: wrap; gap: 14px; align-items: flex-end; }
.mapa-filtro-campo { display: flex; flex-direction: column; gap: 5px; }
.mapa-filtro-campo label { font-size: 11px; font-weight: 700; color: var(--text-muted, #7c93ab);
    text-transform: uppercase; letter-spacing: .4px; }
.mapa-filtro-campo input { background: var(--bg2, #0E2035); border: 1px solid var(--bd2, #1D3856);
    border-radius: 8px; color: var(--tx, #E2EBF5); padding: 8px 10px; font: inherit; font-size: 13px; }
.mapa-filtro-campo input[type="date"] { color-scheme: dark; }
.mapa-filtro-nat { flex: 1 1 280px; min-width: 220px; }
.mapa-filtro-nat input { width: 100%; }
.mapa-filtro-acoes { display: flex; gap: 8px; align-items: center; }
.mapa-legenda { display: flex; flex-wrap: wrap; gap: 14px; margin-bottom: 12px; }
.mapa-legenda-item { display: inline-flex; align-items: center; gap: 7px; font-size: 12px;
    color: var(--tx, #E2EBF5); }
.mapa-legenda-dot { display: inline-flex; align-items: center; justify-content: center;
    width: 20px; height: 20px; border-radius: 50%; color: #fff; font-size: 11px; font-weight: 800;
    border: 1.5px solid #0b1a2c; }
.mapa-pin { background: transparent; border: 0; }
.leaflet-popup-content { margin: 12px 14px; }

/* beta.127 — ajuste de identidade no painel de login: textos institucionais em uma linha quando houver largura. */
.login-brand .lb-desc,
.login-brand .lb-org {
    white-space: nowrap;
    max-width: min(92vw, 520px);
}
@media (max-width: 760px) {
    .login-brand .lb-desc,
    .login-brand .lb-org {
        white-space: normal;
    }
}

/* ── beta.128: mapas de pesquisa RO/App Campus separados e mais legíveis ───── */
.mapa-page .mapa-ocorrencias,
.mapa-page .mapa-ocorrencias-lg {
  min-height: 720px;
  height: calc(100vh - 260px);
  max-height: 860px;
}
.mapa-page .mapa-filter-panel .panel-body { padding: 16px 18px; }
.mapa-filtro-campo select,
.mapa-filtro-campo .search-combo-button,
.mapa-filtro-campo .search-combo-input {
  min-height: 42px;
}
.mapa-filtro-campo select {
  background: var(--bg2, #0E2035);
  border: 1px solid var(--bd2, #1D3856);
  color: var(--tx, #E2EBF5);
  border-radius: 10px;
  padding: 10px 12px;
}
.mapa-pin-siroo svg { display:block; }
.mapa-legenda { max-height: 84px; overflow:auto; padding-right: 4px; }
.mapa-legenda-dot { font-size: 9px; font-weight: 900; }
@media (max-width: 900px) {
  .mapa-page .mapa-ocorrencias,
  .mapa-page .mapa-ocorrencias-lg { height: 68vh; min-height: 520px; }
}

/* Flatpickr com altInput: mantém o campo visual com o mesmo padrão do SiROO. */
input.flatpickr-input.form-control,
input.flatpickr-input.siroo-picker-field,
input.flatpickr-input[readonly].siroo-picker-field,
input.siroo-picker-field + input.flatpickr-input {
  background-color: var(--bg2,#0E2035);
  border: 1px solid var(--bd2,#1D3856);
  color: var(--tx,#E2EBF5);
  border-radius: 10px;
}

/* beta.129 — mapa/legenda e multi-seletor Intelligence */
.mapa-legenda-compacta { display:block; max-height:none; overflow:visible; margin-bottom:10px; }
.mapa-legenda-details { border:1px solid rgba(125,169,210,.22); border-radius:12px; background:rgba(14,32,53,.72); }
.mapa-legenda-details summary { cursor:pointer; list-style:none; display:flex; align-items:center; justify-content:space-between; gap:12px; padding:10px 12px; color:var(--tx,#E2EBF5); font-size:12px; }
.mapa-legenda-details summary::-webkit-details-marker { display:none; }
.mapa-legenda-details summary span { color:var(--text-muted,#8fb7d9); font-weight:600; }
.mapa-legenda-details[open] summary { border-bottom:1px solid rgba(125,169,210,.18); }
.mapa-legenda-lista { display:flex; flex-wrap:wrap; gap:10px 14px; padding:12px; max-height:170px; overflow:auto; }

.siroo-multi-select { position:relative; }
.siroo-multi-trigger { width:100%; min-height:42px; display:flex; align-items:center; justify-content:space-between; gap:12px; background:var(--bg2,#0E2035); color:var(--tx,#E2EBF5); border:1px solid var(--bd2,#1D3856); border-radius:10px; padding:10px 12px; font:inherit; text-align:left; cursor:pointer; }
.siroo-multi-trigger:hover, .siroo-multi-trigger:focus { border-color:#1587E0; box-shadow:0 0 0 3px rgba(21,135,224,.18); outline:none; }
.siroo-multi-caret { color:#8fc4ef; font-size:12px; }
.siroo-multi-panel { position:absolute; z-index:25000; top:calc(100% + 6px); left:0; right:0; background:#0E2035; border:1px solid #1e5f98; border-radius:12px; box-shadow:0 18px 40px rgba(0,0,0,.38); padding:10px; }
.siroo-multi-tools { display:flex; gap:8px; margin-bottom:8px; }
.siroo-multi-tools input { flex:1; background:#0A1A2B; border:1px solid #1D3856; color:#E2EBF5; border-radius:9px; padding:9px 10px; font:inherit; }
.siroo-multi-tools button { border:1px solid #1D3856; background:#102b45; color:#9fc8ea; border-radius:9px; padding:8px 10px; cursor:pointer; }
.siroo-multi-options { max-height:270px; overflow:auto; display:grid; gap:4px; }
.siroo-multi-option { display:flex; align-items:center; gap:9px; padding:8px 9px; border-radius:8px; color:#E2EBF5; cursor:pointer; font-size:13px; }
.siroo-multi-option:hover { background:rgba(21,135,224,.16); }
.siroo-multi-option input { accent-color:#1587E0; }
.siroo-multi-empty { color:#9fb6cf; padding:12px; font-size:12px; }
.siroo-multi-hint { margin-top:8px; padding-top:8px; border-top:1px solid rgba(125,169,210,.14); color:#8aa8c4; font-size:11px; line-height:1.35; }

/* beta.130 — multi-select de naturezas: contagem, chips removíveis e "Selecionar todas" */
.siroo-multi-count { display:inline-flex; align-items:center; justify-content:center; min-width:22px; height:20px; padding:0 6px; margin-left:auto; border-radius:999px; background:#1587E0; color:#fff; font-size:11px; font-weight:800; }
.siroo-multi-trigger .siroo-multi-caret { margin-left:8px; }
.siroo-multi-chips { display:flex; flex-wrap:wrap; gap:6px; margin-top:8px; }
.siroo-multi-chip { display:inline-flex; align-items:center; gap:6px; background:#102b45; border:1px solid #1e5f98; color:#dcebfb; border-radius:999px; padding:4px 6px 4px 11px; font-size:12px; font-weight:600; max-width:100%; }
.siroo-multi-chip button { border:0; background:rgba(255,255,255,.12); color:#cfe6ff; width:18px; height:18px; line-height:1; border-radius:50%; cursor:pointer; font-size:13px; display:inline-flex; align-items:center; justify-content:center; padding:0; }
.siroo-multi-chip button:hover { background:#e05656; color:#fff; }
.siroo-multi-tools [data-multi-all] { color:#7ef0a1; border-color:#1f6f49; background:#0f2e22; white-space:nowrap; }
.siroo-multi-tools [data-multi-all]:hover { border-color:#2fae6e; }
.siroo-multi-tools [data-multi-clear]:hover { border-color:#e05656; color:#ffb4b4; }

/* beta.131 — Naturezas (Intelligence): wrapper sem <label> aninhado e opções legíveis.
   .form-grid label força coluna+maiúsculas; como as opções são <label> dentro do .form-grid,
   precisamos sobrescrever para linha, alinhado à esquerda e sem caixa-alta. */
.nat-field { display:flex; flex-direction:column; gap:4px; grid-column:1/-1; }
.nat-field-label { color:var(--tx2,#7BA8CC); font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.35px; }
.form-grid .siroo-multi-option {
    flex-direction:row !important; align-items:center; gap:9px;
    text-transform:none !important; letter-spacing:0 !important; font-weight:500 !important;
    text-align:left; padding:8px 9px; border-radius:8px; cursor:pointer; color:var(--tx,#E2EBF5);
}
.form-grid .siroo-multi-option:hover { background:rgba(21,135,224,.10); }
.form-grid .siroo-multi-option span { text-transform:none !important; letter-spacing:0; font-size:13px; }
.form-grid .siroo-multi-option input[type="checkbox"] { width:16px; height:16px; flex:0 0 auto; margin:0; }
.siroo-multi-options { max-height:280px; overflow:auto; display:flex; flex-direction:column; gap:2px; }
.siroo-multi-empty { color:var(--tx2,#7BA8CC); font-size:12px; padding:10px 6px; }

/* beta.131 — corrige a busca de naturezas: o display:flex das opções sobrepunha o
   atributo [hidden] (display:none do navegador), então o filtro não escondia nada. */
.siroo-multi-option[hidden], .form-grid .siroo-multi-option[hidden] { display:none !important; }

/* beta.133 — App Campus: remove banners de áudio e deixa controle sonoro compacto. */
.app-campus-actions [data-app-sound] {
  width: 38px; min-width: 38px; height: 34px; padding: 0; display: inline-flex;
  align-items: center; justify-content: center; font-size: 0; border-radius: 999px; opacity: .86;
}
.app-campus-actions [data-app-sound]::before { content: "🔊"; font-size: 17px; line-height: 1; }
.app-campus-actions [data-app-sound][aria-pressed="false"]::before { content: "🔇"; }
.app-sound-unlock { display: none !important; }
.mapa-pin-siroo { filter: drop-shadow(0 3px 4px rgba(0,0,0,.35)); }


/* beta.134 — Flatpickr/clockpicker: contraste reforçado no seletor de hora. */
.flatpickr-calendar .flatpickr-time,
.flatpickr-calendar.noCalendar.hasTime .flatpickr-time {
  background: #071726 !important;
  border-top: 1px solid #1D3856 !important;
  min-height: 58px;
  align-items: center;
}
.flatpickr-calendar .flatpickr-time .numInputWrapper {
  background: #0E2035 !important;
  border: 1px solid #2A5E8E !important;
  border-radius: 10px !important;
  height: 42px;
  box-shadow: inset 0 0 0 1px rgba(21,135,224,.10);
}
.flatpickr-calendar .flatpickr-time input.flatpickr-hour,
.flatpickr-calendar .flatpickr-time input.flatpickr-minute,
.flatpickr-calendar .flatpickr-time input.flatpickr-second,
.flatpickr-calendar .flatpickr-time .flatpickr-am-pm {
  background: #0E2035 !important;
  color: #F4FAFF !important;
  font-size: 20px !important;
  font-weight: 900 !important;
  text-shadow: none !important;
  border: 0 !important;
  height: 40px !important;
}
.flatpickr-calendar .flatpickr-time input.flatpickr-hour:focus,
.flatpickr-calendar .flatpickr-time input.flatpickr-minute:focus,
.flatpickr-calendar .flatpickr-time input.flatpickr-second:focus {
  background: #123253 !important;
  color: #FFFFFF !important;
  outline: 2px solid rgba(21,135,224,.55) !important;
}
.flatpickr-calendar .flatpickr-time .flatpickr-time-separator {
  color: #9FD0FF !important;
  font-size: 22px !important;
  font-weight: 900 !important;
  padding: 0 8px !important;
}
.flatpickr-calendar .flatpickr-time .numInputWrapper span.arrowUp,
.flatpickr-calendar .flatpickr-time .numInputWrapper span.arrowDown {
  background: rgba(21,135,224,.16) !important;
  border-left: 1px solid rgba(125,169,210,.24) !important;
  opacity: 1 !important;
}
.flatpickr-calendar .flatpickr-time .numInputWrapper span.arrowUp:after { border-bottom-color: #BEE3FF !important; }
.flatpickr-calendar .flatpickr-time .numInputWrapper span.arrowDown:after { border-top-color: #BEE3FF !important; }

/* beta.135 — CRUD de Campi: mapa Leaflet e marcador institucional */
.campus-crud-grid { align-items: start; }
.campus-map { min-height: 340px; border:1px solid var(--bd,#1D3856); border-radius:16px; overflow:hidden; background:#0B1929; box-shadow: inset 0 0 0 1px rgba(255,255,255,.03); }
.campus-edit-form .campus-map { min-height: 300px; }
.map-search-row { display:flex; gap:8px; align-items:center; }
.map-search-row input { flex:1; min-width:0; }
.campus-leaflet-marker { width:38px !important; height:48px !important; }
.campus-leaflet-marker span { display:grid; place-items:center; width:38px; height:38px; border-radius:14px 14px 14px 3px; transform:rotate(-45deg); background:linear-gradient(135deg,#0F85D6,#005FA3); color:#fff; font-weight:900; font-size:10px; letter-spacing:.02em; border:2px solid #EAF6FF; box-shadow:0 10px 24px rgba(0,0,0,.45); }
.campus-leaflet-marker span::after { content:""; position:absolute; inset:5px; border-radius:10px 10px 10px 2px; border:1px solid rgba(255,255,255,.32); }
.campus-leaflet-marker span { position:relative; }
.campus-leaflet-marker span { line-height:1; }
.campus-leaflet-marker span { text-shadow:0 1px 2px rgba(0,0,0,.35); }
.campus-leaflet-marker span { }
.campus-leaflet-marker span > b { transform:rotate(45deg); display:block; font-style:normal; }
.campus-leaflet-marker span { }

/* beta.136 — CRUD de Campi: edição em largura útil, sem formulário espremido */
.campus-admin-page .campus-create-panel,
.campus-admin-page .campus-list-panel { margin-top: 16px; }
.campus-summary-head {
  cursor:pointer;
  display:flex; align-items:center; justify-content:space-between; gap:14px;
  padding:14px 16px;
  color:var(--tx,#E2EBF5);
  font-weight:900;
  list-style:none;
}
.campus-summary-head::-webkit-details-marker { display:none; }
.campus-summary-head small { color:var(--tx2,#8aa0b8); font-weight:600; font-size:12px; }
.campus-form-modern {
  display:grid;
  grid-template-columns:minmax(360px, 1.1fr) minmax(420px, .9fr);
  gap:18px;
  align-items:start;
}
.campus-form-fields { display:flex; flex-direction:column; gap:12px; min-width:0; }
.campus-form-row { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
.campus-form-row label { min-width:0; }
.campus-form-map { min-width:0; }
.campus-card-list { display:grid; gap:12px; }
.campus-admin-card {
  border:1px solid var(--bd,#1D3856);
  border-radius:16px;
  background:rgba(255,255,255,.018);
  overflow:hidden;
}
.campus-admin-card > summary {
  cursor:pointer;
  display:grid;
  grid-template-columns:minmax(280px, 1fr) auto;
  gap:16px;
  align-items:center;
  padding:14px 16px;
  list-style:none;
}
.campus-admin-card > summary::-webkit-details-marker { display:none; }
.campus-admin-card[open] > summary { border-bottom:1px solid var(--bd,#1D3856); background:rgba(21,135,224,.05); }
.campus-card-main { display:flex; flex-direction:column; gap:4px; min-width:0; }
.campus-card-main strong { color:var(--tx,#E2EBF5); font-size:14px; }
.campus-card-main span { color:var(--tx2,#8aa0b8); font-size:12px; }
.campus-card-meta { display:flex; align-items:center; justify-content:flex-end; gap:10px; flex-wrap:wrap; color:var(--tx2,#8aa0b8); font-size:12px; }
.campus-edit-chip { padding:7px 12px; }
.campus-edit-area { padding:16px; }
.campus-delete-row {
  margin-top:14px;
  padding-top:14px;
  border-top:1px solid var(--bd,#1D3856);
  display:flex;
  align-items:center;
  gap:12px;
  flex-wrap:wrap;
}
.campus-delete-row .hint { margin:0; }
.campus-actions-row { display:flex; gap:10px; align-items:center; flex-wrap:wrap; }
.campus-map { min-height: 420px; }
.campus-create-panel .campus-map { min-height: 460px; }
.campus-edit-form .campus-map { min-height: 420px; }
@media (max-width:1100px){
  .campus-form-modern { grid-template-columns:1fr; }
  .campus-admin-card > summary { grid-template-columns:1fr; }
  .campus-card-meta { justify-content:flex-start; }
}
@media (max-width:720px){
  .campus-form-row { grid-template-columns:1fr; }
  .map-search-row { flex-direction:column; align-items:stretch; }
}

/* beta.137 — Campi: edição em diálogo amplo, sem formulário espremido na listagem */
.campus-table-wrap { display:grid; gap:12px; }
.campus-row-card { display:grid; grid-template-columns:minmax(260px,1fr) auto; align-items:center; gap:14px; padding:14px 16px; }
.campus-row-main { display:flex; flex-direction:column; gap:4px; min-width:0; }
.campus-row-main strong { color:var(--tx,#E2EBF5); font-size:14px; }
.campus-row-main span { color:var(--tx2,#8aa0b8); font-size:12px; }
.campus-row-meta { display:flex; align-items:center; justify-content:flex-end; gap:10px; flex-wrap:wrap; color:var(--tx2,#8aa0b8); font-size:12px; }
.campus-dialog { width:min(1280px, calc(100vw - 42px)); max-width:min(1280px, calc(100vw - 42px)); max-height:calc(100vh - 42px); padding:0; border:0; background:transparent; color:var(--tx,#E2EBF5); position:fixed; inset:0; margin:auto; }
.campus-dialog::backdrop { background:rgba(2,12,24,.72); backdrop-filter:blur(4px); }
.campus-dialog-card { background:var(--bg,#0B1929); border:1px solid var(--bd,#1D3856); border-radius:18px; box-shadow:0 24px 80px rgba(0,0,0,.55); max-height:calc(100vh - 42px); display:flex; flex-direction:column; overflow:hidden; }
.campus-dialog .siroo-dialog-head { display:flex; align-items:flex-start; justify-content:space-between; gap:14px; padding:18px 20px; border-bottom:1px solid var(--bd,#1D3856); background:linear-gradient(135deg, rgba(21,135,224,.14), rgba(12,31,54,.92)); }
.campus-dialog .siroo-dialog-head h2 { margin:0; font-size:19px; color:var(--tx,#E2EBF5); }
.campus-dialog .siroo-dialog-head p { margin:4px 0 0; color:var(--tx2,#8aa0b8); font-size:12px; }
.campus-dialog .siroo-dialog-close { border:0; background:rgba(255,255,255,.06); color:var(--tx,#E2EBF5); border-radius:12px; width:38px; height:38px; font-size:22px; line-height:1; cursor:pointer; }
.campus-dialog .siroo-dialog-close:hover { background:rgba(255,255,255,.13); }
.campus-dialog .siroo-dialog-body { padding:18px 20px 20px; overflow:auto; }
.campus-dialog .campus-form-modern { grid-template-columns:minmax(360px,.85fr) minmax(500px,1.15fr); gap:18px; align-items:start; }
.campus-dialog .campus-map-large { min-height:560px; }
.campus-delete-row { margin-top:14px; padding-top:14px; border-top:1px solid var(--bd,#1D3856); display:flex; align-items:center; gap:14px; flex-wrap:wrap; }
.campus-delete-row .btn-danger-main { width:auto; min-width:220px; }
.campus-delete-row .hint { margin:0; color:var(--tx2,#8aa0b8); }
@media (max-width:960px){
  .campus-row-card { grid-template-columns:1fr; }
  .campus-row-meta { justify-content:flex-start; }
  .campus-dialog .campus-form-modern { grid-template-columns:1fr; }
  .campus-dialog .campus-map-large { min-height:420px; }
}

/* beta.138 — Campi: restaura padrão visual SiROO em formulários e diálogos */
.campus-admin-page .campus-create-panel,
.campus-admin-page .campus-list-panel,
.campus-dialog-card {
  background: linear-gradient(180deg, rgba(15,43,73,.72), rgba(8,25,41,.96)) !important;
}
.campus-admin-page .panel-body {
  padding: 18px !important;
}
.campus-admin-page .campus-form-fields label,
.campus-dialog .campus-form-fields label {
  display:flex !important;
  flex-direction:column !important;
  gap:7px !important;
  color: var(--tx2,#93B9D8) !important;
  font-size:12px !important;
  font-weight:800 !important;
  text-transform:uppercase !important;
  letter-spacing:.32px !important;
}
.campus-admin-page .campus-form-fields input,
.campus-admin-page .campus-form-fields select,
.campus-admin-page .campus-form-fields textarea,
.campus-dialog .campus-form-fields input,
.campus-dialog .campus-form-fields select,
.campus-dialog .campus-form-fields textarea {
  width:100% !important;
  min-height:42px !important;
  box-sizing:border-box !important;
  background: var(--bg2,#10283F) !important;
  border:1px solid var(--bd2,#2A5B86) !important;
  border-radius:10px !important;
  color: var(--tx,#E8F2FF) !important;
  padding:10px 12px !important;
  font: inherit !important;
  font-size:14px !important;
  font-weight:600 !important;
  text-transform:none !important;
  letter-spacing:0 !important;
  outline:none !important;
}
.campus-admin-page .campus-form-fields input::placeholder,
.campus-dialog .campus-form-fields input::placeholder {
  color: rgba(226,235,245,.55) !important;
}
.campus-admin-page .campus-form-fields input:focus,
.campus-admin-page .campus-form-fields select:focus,
.campus-dialog .campus-form-fields input:focus,
.campus-dialog .campus-form-fields select:focus {
  border-color:#1E91DF !important;
  box-shadow:0 0 0 3px rgba(30,145,223,.18) !important;
}
.campus-admin-page .map-search-row,
.campus-dialog .map-search-row {
  display:flex !important;
  gap:8px !important;
  align-items:center !important;
}
.campus-admin-page .map-search-row input,
.campus-dialog .map-search-row input { flex:1 1 auto !important; min-width:0 !important; }
.campus-admin-page .map-search-row .btn-panel,
.campus-dialog .map-search-row .btn-panel {
  min-height:42px !important;
  padding:0 14px !important;
  white-space:nowrap !important;
}
.campus-dialog .siroo-dialog-body {
  background: radial-gradient(circle at top left, rgba(30,145,223,.08), transparent 34%), var(--bg,#0B1929) !important;
}
.campus-dialog .campus-form-modern {
  grid-template-columns:minmax(420px,.9fr) minmax(560px,1.1fr) !important;
}
.campus-dialog .campus-map-large { min-height:580px !important; }
.campus-delete-row {
  background: rgba(255,255,255,.018) !important;
  border:1px solid rgba(255,255,255,.06) !important;
  border-radius:14px !important;
  padding:14px !important;
}
@media (max-width:980px){
  .campus-dialog .campus-form-modern { grid-template-columns:1fr !important; }
  .campus-dialog .campus-map-large { min-height:420px !important; }
}

/* beta.140 — topbar operacional: clima sem poluição visual */
.topbar-ops {
    gap: 10px;
    max-width: min(760px, 52vw);
    padding: 7px 14px;
}
.topbar-status.compact.icon-only {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 12px;
    height: 12px;
    padding: 0;
    margin: 0 2px 0 0;
}
.topbar-status.compact.icon-only .live-label { display: none !important; }
.topbar-status.compact.icon-only .live-dot { width: 9px; height: 9px; margin: 0; display: block; }
.topbar-ops .ops-divider,
.topbar-ops .ops-label { display: none !important; }
#opsWeather {
    gap: 7px;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 100%;
}
#opsWeather .ops-campus {
    font-size: 11px;
    font-weight: 900;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: #9bd2ff;
    max-width: 160px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
#opsWeather .ops-metric {
    color: #f4f9ff;
    font-weight: 850;
    font-size: 12px;
    white-space: nowrap;
}
#opsWeather .ops-muted { color: #9eb8d2; font-size: 12px; font-weight: 800; }
#opsWeather .ops-drone {
    padding: 2px 9px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 900;
    border: 1px solid currentColor;
    background: rgba(255,255,255,.04);
    white-space: nowrap;
}
@media (max-width: 1480px) {
    .topbar-ops { max-width: 44vw; }
    #opsWeather .ops-metric:nth-of-type(2),
    #opsWeather .ops-metric:nth-of-type(3) { display:none; }
}
@media (max-width: 1180px) { .topbar-ops { display:none; } }

/* beta.141 — topbar: clima enriquecido e cidade correta por campus */
.topbar-ops {
    max-width: min(980px, 58vw) !important;
    padding: 7px 12px !important;
}
#opsWeather {
    display: inline-flex !important;
    align-items: center !important;
    gap: 8px !important;
    min-width: 0 !important;
}
#opsWeather .ops-campus {
    max-width: 190px !important;
    color: #9bd2ff !important;
}
#opsWeather .ops-metric {
    white-space: nowrap !important;
    color: #f4f9ff !important;
    font-size: 12px !important;
}
#opsWeather .ops-sens,
#opsWeather .ops-humidity,
#opsWeather .ops-rain {
    color: #c8dbef !important;
}
#opsWeather .ops-wind {
    color: #ffffff !important;
}
@media (max-width: 1680px) {
    .topbar-ops { max-width: 52vw !important; }
    #opsWeather .ops-rain { display:none !important; }
}
@media (max-width: 1500px) {
    #opsWeather .ops-humidity { display:none !important; }
}
@media (max-width: 1360px) {
    #opsWeather .ops-sens { display:none !important; }
}

/* beta.141 — Configurações: edição ampla em modal, padrão visual dos Campi */
.config-dialog {
    width: min(980px, calc(100vw - 42px));
    max-width: min(980px, calc(100vw - 42px));
    max-height: calc(100vh - 42px);
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--tx,#E2EBF5);
    position: fixed;
    inset: 0;
    margin: auto;
}
.config-dialog::backdrop {
    background: rgba(2,12,24,.72);
    backdrop-filter: blur(4px);
}
.config-dialog-card {
    background: linear-gradient(180deg, rgba(15,43,73,.72), rgba(8,25,41,.96));
    border: 1px solid var(--bd,#1D3856);
    border-radius: 18px;
    box-shadow: 0 24px 80px rgba(0,0,0,.55);
    max-height: calc(100vh - 42px);
    display: flex;
    flex-direction: column;
    overflow: hidden;
}
.config-dialog-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 14px;
    padding: 18px 20px;
    border-bottom: 1px solid var(--bd,#1D3856);
    background: linear-gradient(135deg, rgba(21,135,224,.14), rgba(12,31,54,.92));
}
.config-dialog-head h2 {
    margin: 0;
    font-size: 19px;
    color: var(--tx,#E2EBF5);
}
.config-dialog-head p {
    margin: 4px 0 0;
    color: var(--tx2,#8aa0b8);
    font-size: 12px;
}
.config-dialog-body {
    padding: 18px 20px 20px;
    overflow: auto;
    background: radial-gradient(circle at top left, rgba(30,145,223,.08), transparent 34%), var(--bg,#0B1929);
}
.config-dialog-close {
    border: 0;
    background: rgba(255,255,255,.06);
    color: var(--tx,#E2EBF5);
    border-radius: 12px;
    width: 38px;
    height: 38px;
    font-size: 22px;
    line-height: 1;
    cursor: pointer;
}
.config-dialog-close:hover { background: rgba(255,255,255,.13); }
.config-dialog .form-grid.compact {
    grid-template-columns: repeat(2, minmax(260px,1fr));
    gap: 14px;
    align-items: end; /* alinha os campos pela base: rótulos de alturas diferentes (ex.: "Nova senha (opcional)" vs "Nível") não desalinham mais os inputs/selects */
}
/* O dialog é movido para o <body> (prepararDialogs), então .config-page .readonly-campus
   deixa de valer e o nome do campus herdava text-transform:uppercase de .config-dialog label.
   Regra global do dialog: sem caixa-alta, peso normal e quebra limpa para nomes longos
   como "Campus USP de São Paulo - Armando de Salles Oliveira". */
.config-dialog .readonly-campus {
    display:block;
    width:100%;
    box-sizing:border-box;
    background: var(--bg2,#10283F);
    border:1px dashed var(--bd2,#2A5B86);
    border-radius:10px;
    color: var(--tx,#E8F2FF);
    padding:9px 11px;
    font-weight:600;
    font-size:13px;
    text-transform:none !important;
    letter-spacing:0;
    white-space:normal;
    line-height:1.35;
}
.config-dialog label {
    display:flex;
    flex-direction:column;
    gap:7px;
    color: var(--tx2,#93B9D8);
    font-size:12px;
    font-weight:800;
    text-transform:uppercase;
    letter-spacing:.32px;
}
.config-dialog input,
.config-dialog select,
.config-dialog textarea {
    width:100%;
    min-height:42px;
    box-sizing:border-box;
    background: var(--bg2,#10283F);
    border:1px solid var(--bd2,#2A5B86);
    border-radius:10px;
    color: var(--tx,#E8F2FF);
    padding:10px 12px;
    font: inherit;
    font-size:14px;
    font-weight:600;
    text-transform:none;
    letter-spacing:0;
    outline:none;
}
.config-dialog input:focus,
.config-dialog select:focus,
.config-dialog textarea:focus {
    border-color:#1E91DF;
    box-shadow:0 0 0 3px rgba(30,145,223,.18);
}
.config-dialog-actions {
    margin-top: 16px;
    padding-top: 14px;
    border-top: 1px solid rgba(255,255,255,.08);
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}
.config-dialog-actions .config-danger-row,
.config-dialog-actions .config-recover-row { margin: 0; }
.config-action-buttons { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.config-action-buttons .btn-panel { min-width: 86px; justify-content:center; }
.config-page details { display:none !important; }
@media (max-width: 760px) {
    .config-dialog .form-grid.compact { grid-template-columns: 1fr; }
}

/* beta.142 — Correção rigorosa dos dialogs de Configurações.
   Evita regressão visual quando dialogs são movidos para <body>. */
dialog.config-dialog,
dialog.siroo-dialog.config-dialog {
    width: min(1080px, calc(100vw - 44px)) !important;
    max-width: min(1080px, calc(100vw - 44px)) !important;
    max-height: calc(100vh - 44px) !important;
    padding: 0 !important;
    border: 0 !important;
    background: transparent !important;
    color: var(--tx,#E2EBF5) !important;
    position: fixed !important;
    inset: 0 !important;
    margin: auto !important;
}
dialog.config-dialog::backdrop,
dialog.siroo-dialog.config-dialog::backdrop {
    background: rgba(2,12,24,.74) !important;
    backdrop-filter: blur(4px) !important;
}
.config-dialog .config-dialog-card {
    background: linear-gradient(180deg, rgba(15,43,73,.78), rgba(8,25,41,.98)) !important;
    border: 1px solid var(--bd,#1D3856) !important;
    border-radius: 18px !important;
    box-shadow: 0 24px 80px rgba(0,0,0,.58) !important;
    max-height: calc(100vh - 44px) !important;
    overflow: hidden !important;
}
.config-dialog .config-dialog-body { max-height: calc(100vh - 128px); overflow:auto; }
.config-dialog .form-grid.compact { width:100%; }
.config-dialog label > input,
.config-dialog label > select,
.config-dialog label > textarea {
    width:100% !important;
    max-width:none !important;
}

/* beta.143 — App Campus: marcador de Modo Alerta mais claro e menos ambíguo */
.app-marker-alerta {
    position: relative;
    display: block;
    width: 44px;
    height: 50px;
}
.app-marker-alerta-pin {
    position:absolute;
    left:7px;
    top:2px;
    width:30px;
    height:38px;
    border-radius:16px 16px 16px 4px;
    transform:rotate(-45deg);
    background:linear-gradient(145deg,#f59e0b,#d97706);
    border:3px solid #fff;
    box-shadow:0 8px 16px rgba(0,0,0,.34), inset 0 0 0 1px rgba(255,255,255,.18);
}
.app-marker-alerta-glyph {
    position:absolute;
    inset:0;
    display:flex;
    align-items:center;
    justify-content:center;
    transform:rotate(45deg);
    color:#07111f;
    font-weight:950;
    font-size:12px;
    letter-spacing:-.5px;
    text-shadow:0 1px 0 rgba(255,255,255,.35);
}
.app-marker-pulse-alerta {
    background:rgba(245,158,11,.30) !important;
    box-shadow:0 0 0 2px rgba(255,255,255,.35) inset;
}

/* ─────────────────────────────────────────────────────────────────────────
   Fix de alinhamento das tabelas de configuração (beta.151)
   A 1ª coluna tem nome (strong) + linha secundária (nUSP · e-mail), ficando com
   2 linhas, enquanto Nível/Campus têm 1. Com vertical-align:middle as colunas de
   1 linha caíam no vão entre as duas linhas do nome. Alinhando ao TOPO, a linha
   principal (nome) casa com Nível, Campus e o botão de Ações. Escopo restrito a
   .config-page para não afetar tabelas cujas linhas têm altura definida por botão.
   ───────────────────────────────────────────────────────────────────────── */
.config-page .op-table td { vertical-align: top; }
.config-page .config-action-buttons { align-items: flex-start; }

/* ─── Consulta de PDFs de referência (lupa + modal central) — beta.151 ─────── */
.ref-field-head { display:inline-flex; align-items:center; gap:2px; }
.ref-pdf-lupa {
    display:inline-flex; align-items:center; justify-content:center;
    width:24px; height:24px; margin-left:6px; padding:0;
    border:1px solid var(--bd2); border-radius:7px; background:rgba(255,255,255,.03);
    color:var(--tx2); cursor:pointer; font-size:13px; line-height:1; vertical-align:middle;
    transition:color .15s, border-color .15s;
}
.ref-pdf-lupa:hover, .ref-pdf-lupa:focus { color:var(--tx); border-color:var(--az3); outline:none; }
.refpdf-overlay {
    position:fixed; inset:0; background:rgba(4,10,20,.72);
    display:none; align-items:center; justify-content:center; z-index:4000; padding:24px;
}
.refpdf-overlay.open { display:flex; }
.refpdf-modal {
    width:min(960px, 96vw); height:min(88vh, 1000px); background:var(--bg);
    border:1px solid var(--bd2); border-radius:14px; display:flex; flex-direction:column;
    overflow:hidden; box-shadow:0 24px 70px rgba(0,0,0,.5);
}
.refpdf-head {
    display:flex; align-items:center; justify-content:space-between; gap:10px;
    padding:12px 14px; border-bottom:1px solid var(--bd);
}
.refpdf-title { font-weight:800; color:var(--tx); font-size:14px; }
.refpdf-actions { display:flex; gap:8px; align-items:center; }
.refpdf-body { flex:1 1 auto; min-height:0; background:#525659; }
.refpdf-frame { width:100%; height:100%; border:0; display:block; }
body.refpdf-lock { overflow:hidden; }

/* ─── Recipient picker (modal de destinatários estilo Google Drive) — beta.151 ─── */
.rcp-overlay {
    position:fixed; inset:0; background:rgba(4,10,20,.72);
    display:none; align-items:center; justify-content:center; z-index:4100; padding:24px;
}
.rcp-overlay.open { display:flex; }
.rcp-modal {
    width:min(520px, 96vw); max-height:88vh; background:var(--bg);
    border:1px solid var(--bd2); border-radius:14px; display:flex; flex-direction:column;
    overflow:hidden; box-shadow:0 24px 70px rgba(0,0,0,.5);
}
.rcp-head {
    display:flex; align-items:center; justify-content:space-between; gap:10px;
    padding:14px 16px; border-bottom:1px solid var(--bd);
}
.rcp-title { font-weight:800; color:var(--tx); font-size:15px; }
.rcp-x {
    border:0; background:transparent; color:var(--tx2); font-size:16px; cursor:pointer;
    width:28px; height:28px; border-radius:7px; line-height:1;
}
.rcp-x:hover { background:rgba(255,255,255,.06); color:var(--tx); }
.rcp-body { padding:16px; overflow:auto; flex:1 1 auto; min-height:0; }
.rcp-intro { color:var(--tx2); font-size:12.5px; line-height:1.5; margin:0 0 12px; }
.rcp-chips { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:10px; }
.rcp-chip {
    display:inline-flex; align-items:center; gap:6px; max-width:100%;
    background:rgba(21,135,224,.14); border:1px solid rgba(21,135,224,.4);
    border-radius:999px; padding:4px 6px 4px 11px; font-size:12px; color:var(--tx);
}
.rcp-chip-free { background:rgba(120,140,160,.14); border-color:rgba(150,165,180,.4); }
.rcp-chip-label { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; max-width:280px; }
.rcp-chip-x {
    border:0; background:rgba(255,255,255,.1); color:var(--tx); cursor:pointer;
    width:18px; height:18px; border-radius:999px; font-size:10px; line-height:1; flex:none;
}
.rcp-chip-x:hover { background:var(--vm2); color:#fff; }
.rcp-search-wrap { position:relative; }
.rcp-datewrap { margin:0 0 12px; }
.rcp-datelabel { display:block; font-size:11px; font-weight:700; color:var(--tx2); text-transform:uppercase; letter-spacing:.04em; margin:0 0 5px; }
.rcp-date {
    width:100%; box-sizing:border-box; background:var(--bg2); border:1px solid var(--bd2);
    border-radius:9px; color:var(--tx); padding:10px 12px; font:inherit; font-size:13px;
}
.rcp-date:focus { outline:none; border-color:var(--az3); }
.rcp-date::-webkit-calendar-picker-indicator { filter:invert(.7); cursor:pointer; }
.rcp-search {
    width:100%; box-sizing:border-box; background:var(--bg2); border:1px solid var(--bd2);
    border-radius:9px; color:var(--tx); padding:10px 12px; font:inherit; font-size:13px;
}
.rcp-search:focus { outline:none; border-color:var(--az3); }
.rcp-results {
    margin-top:6px; background:var(--bg2); border:1px solid var(--bd2); border-radius:10px;
    overflow:hidden auto; max-height:240px;
}
.rcp-result {
    display:flex; flex-direction:column; gap:2px; width:100%; text-align:left;
    border:0; border-bottom:1px solid var(--bd); background:transparent; cursor:pointer;
    padding:9px 12px; color:var(--tx);
}
.rcp-result:last-child { border-bottom:0; }
.rcp-result:hover, .rcp-result:focus { background:rgba(21,135,224,.12); outline:none; }
.rcp-result-add { background:rgba(21,135,224,.06); }
.rcp-r-nome { font-size:13px; font-weight:700; }
.rcp-r-meta { font-size:11px; color:var(--tx2); }
.rcp-empty { padding:10px 12px; font-size:12px; color:var(--tx2); }
.rcp-hint { color:var(--tx2); font-size:11px; line-height:1.45; margin:10px 0 0; }
.rcp-foot {
    display:flex; justify-content:flex-end; gap:8px;
    padding:12px 16px; border-top:1px solid var(--bd);
}
.rcp-foot .rcp-send { min-width:120px; }
.rcp-foot .rcp-send:disabled { opacity:.5; cursor:not-allowed; }
body.rcp-lock { overflow:hidden; }

/* ═══ SiCE — Controle de Estoque ═══════════════════════════════════════════ */
.sice-field { display:flex; flex-direction:column; gap:5px; margin-bottom:12px; }
.sice-field > span { font-size:11px; font-weight:600; color:var(--tx2); letter-spacing:.2px; }
.sice-field input, .sice-field textarea {
    width:100%; box-sizing:border-box; background:var(--bg2); border:1px solid var(--bd2);
    border-radius:9px; color:var(--tx); padding:9px 12px; font:inherit; font-size:13px;
}
.sice-field input:focus, .sice-field textarea:focus { outline:none; border-color:var(--az3); }
.sice-field textarea { resize:vertical; min-height:44px; }

.sice-item-ref {
    margin:0 0 14px; padding:9px 12px; background:var(--bg3); border:1px solid var(--bd2);
    border-radius:9px; color:var(--tx); font-size:12.5px; font-weight:600;
}

.sice-modal-actions { display:flex; justify-content:flex-end; gap:10px; margin-top:18px; }

.sice-toggle { display:flex; gap:0; border:1px solid var(--bd2); border-radius:9px; overflow:hidden; }
.sice-toggle-btn {
    flex:1; padding:8px 10px; background:var(--bg2); color:var(--tx2); border:0;
    font:inherit; font-size:12px; font-weight:600; cursor:pointer; transition:background .12s,color .12s;
}
.sice-toggle-btn + .sice-toggle-btn { border-left:1px solid var(--bd2); }
.sice-toggle-btn.active { background:var(--az3); color:#fff; }
.sice-toggle-btn:hover:not(.active) { background:var(--bg3); color:var(--tx); }

.sice-user-results {
    margin-top:-6px; margin-bottom:12px; border:1px solid var(--bd2); border-radius:9px;
    background:var(--bg2); max-height:200px; overflow-y:auto;
}
.sice-user-item { padding:8px 12px; font-size:12.5px; color:var(--tx); cursor:pointer; border-bottom:1px solid var(--bd); }
.sice-user-item:last-child { border-bottom:0; }
.sice-user-item:hover { background:var(--az3); color:#fff; }
.sice-user-empty { padding:10px 12px; font-size:12px; color:var(--tx2); }
.sice-user-selected {
    margin:0 0 12px; padding:8px 12px; background:rgba(34,197,94,.12);
    border:1px solid #16a34a; border-radius:9px; color:#22c55e; font-size:12.5px; font-weight:600;
}

/* ── SiROO 2026 beta.171 — “Editar” compacto e linha de ações alinhada ──
   Regras ACRESCENTADAS (nenhuma anterior foi alterada). Antes, o <details> fechado
   já ocupava toda a célula como uma caixa com borda e o texto encostado à esquerda.
   Fechado, ele passa a ter aparência e tamanho de botão; aberto, mantém exatamente
   o painel de edição que já existia. */
.ro-workspace details:not([open]) {
    display: inline-block;
    margin-top: 0;
    padding: 0;
    border: 0;
    background: none;
    border-radius: 0;
}
.ro-workspace .op-table details:not([open]) {
    min-width: 0;
}
.ro-workspace figure details:not([open]) {
    margin: 8px 0 0 0;
}
.ro-workspace details:not([open]) > summary {
    justify-content: center;
    min-height: 28px;
    padding: 4px 14px;
    border: 1px solid var(--bd2);
    border-radius: 8px;
    background: rgba(255,255,255,.02);
    color: var(--tx2);
    font-size: 11px;
    font-weight: 700;
    text-align: center;
    list-style: none;
    transition: border-color .15s ease, color .15s ease;
}
.ro-workspace details:not([open]) > summary::-webkit-details-marker { display: none; }
.ro-workspace details:not([open]) > summary::marker { content: ''; }
.ro-workspace details:not([open]) > summary:hover {
    color: var(--tx);
    border-color: var(--az3);
}
/* Salvar e Excluir na mesma linha: o botão de exclusão vive fora do formulário de
   edição (atributo form="" do HTML5), já que formulários não podem ser aninhados. */
.ro-workspace .edit-action-row {
    justify-content: flex-start;
}
.ro-workspace details > form[id^="del"] {
    margin: 0;
    padding: 0;
    border-top: 0;
}
