:root { --sidebar: #172033; --accent: #315efb; --bg: #f5f7fb; }
body { background: var(--bg); }
.login-body { background: linear-gradient(135deg, #172033, #315efb); }
.app-shell { display: flex; min-height: 100vh; }
.sidebar { width: 270px; background: var(--sidebar); color: #fff; position: fixed; inset: 0 auto 0 0; padding: 18px 0; display: flex; flex-direction: column; }
.brand { display: flex; align-items: center; gap: 10px; padding: 0 20px 18px; font-weight: 700; font-size: 1.1rem; }
.brand-icon { width: 36px; height: 36px; border-radius: 10px; background: rgba(255,255,255,.12); display: grid; place-items: center; }
.sidebar-nav { flex: 1 1 auto; display: flex; flex-direction: column; overflow-y: auto; }
.sidebar-nav .nav-link { color: rgba(255,255,255,.78); padding: 11px 20px; display: flex; align-items: center; gap: 10px; }
.sidebar-footer { margin-top: auto; padding-top: 18px; }
.sidebar-footer a { color: #fff; }
.sidebar-nav .nav-link:hover { color: #fff; background: rgba(255,255,255,.08); }
.sidebar-nav .nav-group-toggle { justify-content: space-between; }
.sidebar-nav .nav-group-toggle .bi-chevron-down { transition: transform .2s; }
.sidebar-nav .nav-group-toggle[aria-expanded="true"] .bi-chevron-down { transform: rotate(180deg); }
.sidebar-nav .nav-sublink { padding-left: 44px; font-size: .92rem; }
.content { margin-left: 270px; width: calc(100% - 270px); padding: 0 28px 32px; }
.topbar { min-height: 80px; display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid #e4e8f0; }
.user-pill { background: #fff; border: 1px solid #e4e8f0; border-radius: 999px; padding: 8px 14px; }
.notification-badge { position: absolute; top: -6px; right: -6px; font-size: .65rem; }
.notification-dropdown { width: 340px; max-height: 400px; overflow-y: auto; }
.mention-suggestions { position: absolute; z-index: 1050; background: #fff; border: 1px solid #e4e8f0; border-radius: 8px; box-shadow: 0 8px 20px rgba(17,31,68,.08); max-height: 220px; overflow-y: auto; min-width: 220px; }
.mention-suggestions button { display: block; width: 100%; text-align: left; border: 0; background: none; padding: 8px 12px; }
.mention-suggestions button:hover, .mention-suggestions button.active { background: var(--bg); }
.mention-editor { white-space: pre-wrap; word-wrap: break-word; overflow-y: auto; }
.mention-valid { color: var(--accent); font-weight: 600; }
.page-body { padding-top: 22px; }
.metric-card { background:#fff; border:1px solid #e5e9f2; border-radius: 18px; padding: 18px; box-shadow: 0 8px 20px rgba(17,31,68,.04); }
.metric-card span { color:#64748b; display:block; font-size:.9rem; }
.metric-card strong { font-size:1.8rem; }
.metric-card.danger strong { color:#dc3545; }
.metric-card.money strong { font-size:1.4rem; color:#0f766e; }
.card { border: 1px solid #e5e9f2; border-radius: 18px; box-shadow: 0 8px 20px rgba(17,31,68,.04); overflow:hidden; }
.filtros-card, .overview-filtros-card { overflow: visible; }
.filtros-card .card-body, .overview-filtros-card .card-body { overflow: visible; }
.card:has(.multi-select-filter) { overflow: visible; }
.multi-select-filter .dropdown-menu { z-index: 1060; }
.card-header { background:#fff; font-weight:700; }
.project-cover { width: 100%; max-height: 260px; object-fit: cover; border-radius: 14px; margin-bottom: 16px; }
.obra-img { height: 180px; object-fit: cover; }
.foto-thumb { height: 90px; object-fit: cover; }
.view-medium .foto-thumb { height: 180px; }
.chart-box { position: relative; height: 260px; }
.sortable-table th[data-sort-type] { cursor: pointer; user-select: none; white-space: nowrap; }
.sortable-table th[data-sort-type]:hover { background: #f8fafc; }
.sort-icon { font-size: .7rem; opacity: .55; }
.sort-icon.sort-icon-idle { opacity: .3; }
.sortable-table th[data-sort-type]:hover .sort-icon { opacity: .9; }
.column-filter-row th { background: #fff; font-weight: 400; padding-top: 4px; padding-bottom: 6px; }
.column-filter-group .input-group-text { padding: .15rem .4rem; }
.column-filter-group .form-control { min-width: 70px; }
.status-planejado { background:#64748b; }
.status-analise { background:#6c757d; }
.status-desenvolvimento, .status-andamento { background:#0d6efd; }
.status-aprovacao { background:#fd7e14; }
.status-suspenso { background:#ffc107; color:#222; }
.status-concluido { background:#198754; }
.status-cancelado { background:#dc3545; }
.obra-nao_iniciada { background:#64748b; }
.obra-andamento { background:#0d6efd; }
.obra-paralisada { background:#ffc107; color:#222; }
.obra-aguardando_medicao, .obra-em_vistoria { background:#fd7e14; }
.obra-concluida { background:#198754; }
.obra-cancelada { background:#dc3545; }
.status-vigente { background:#198754; }
.status-encerrado { background:#64748b; }
.status-aditivado { background:#0d6efd; }
.status-rescindido { background:#dc3545; }
.task-a_fazer { background:#64748b; }
.task-andamento { background:#0d6efd; }
.task-revisao { background:#6f42c1; }
.task-aprovacao { background:#fd7e14; }
.task-concluida { background:#198754; }
.task-cancelada { background:#dc3545; }
.prioridade-alta { background:#dc3545; }
.prioridade-media { background:#fd7e14; }
.prioridade-baixa { background:#64748b; }
.legend-dot { display:inline-block; width:10px; height:10px; border-radius:50%; margin-right:4px; }
.kanban-board { display:grid; grid-template-columns: repeat(6, minmax(260px, 1fr)); gap:16px; overflow-x:auto; padding-bottom:10px; }
.kanban-column { background:#eef2f7; border-radius:18px; padding:14px; min-height:360px; }
.kanban-column h3 { font-size:1rem; margin-bottom:12px; }
.kanban-card { background:#fff; border:1px solid #e5e9f2; border-radius:14px; padding:12px; margin-bottom:12px; }
.kanban-col-0 { background: rgba(10,88,202,.10); }
.kanban-col-1 { background: rgba(82,92,183,.12); }
.kanban-col-2 { background: rgba(154,152,181,.18); }
.kanban-col-3 { background: rgba(89,92,116,.12); }
.kanban-col-4 { background: rgba(23,32,51,.10); }
.kanban-col-5 { background: rgba(94,140,131,.14); }
.kanban-col-6 { background: rgba(165,248,211,.30); }
.timeline { position:relative; padding-left:28px; }
.timeline:before { content:''; position:absolute; left:8px; top:0; bottom:0; width:2px; background:#cbd5e1; }
.timeline-item { position:relative; margin-bottom:18px; }
.timeline-dot { position:absolute; left:-25px; top:12px; width:14px; height:14px; border-radius:50%; background:var(--accent); }
.timeline-card { background:#fff; border:1px solid #e5e9f2; border-radius:14px; padding:14px; }
.status-switcher { position: relative; }
.status-caret-btn { border: 0; background: none; padding: 0 2px; line-height: 1; color: #64748b; }
.status-caret-btn:hover, .status-caret-btn:focus { color: #172033; }
.status-options-form { min-width: 220px; max-height: 280px; overflow-y: auto; }
.status-options-form .dropdown-item { cursor: pointer; }
.album-card-actions .btn { line-height: 1; }
.help-tooltip-icon { cursor: help; }
@media (max-width: 992px) { .sidebar { position: static; width:100%; } .app-shell { display:block; } .content { margin-left:0; width:100%; padding: 0 14px 24px; } .kanban-board { grid-template-columns: repeat(2, minmax(240px, 1fr)); } }

.gantt-wrapper { display:flex; border:1px solid #e5e9f2; border-radius:18px; overflow:hidden; background:#fff; box-shadow:0 8px 20px rgba(17,31,68,.04); }
.gantt-sidebar { flex:0 0 260px; max-width:260px; border-right:1px solid #e5e9f2; }
.gantt-sidebar-header { height:56px; display:flex; align-items:center; padding:0 14px; font-weight:700; border-bottom:1px solid #e5e9f2; background:#f8fafc; }
.gantt-sidebar-row { height:46px; display:flex; align-items:center; padding:0 14px; border-bottom:1px solid #f1f4f9; font-size:.85rem; gap:6px; }
.gantt-sidebar-row span.text-truncate { max-width:190px; }
.gantt-chart-scroll { flex:1 1 auto; overflow-x:auto; }
.gantt-chart-header { height:56px; display:flex; border-bottom:1px solid #e5e9f2; background:#f8fafc; }
.gantt-month { flex:0 0 auto; border-right:1px solid #e5e9f2; display:flex; align-items:center; justify-content:center; font-size:.78rem; font-weight:600; color:#475569; text-transform:capitalize; }
.gantt-body { position:relative; }
.gantt-row-bg { position:absolute; left:0; border-bottom:1px solid #f1f4f9; }
.gantt-row-bg:nth-child(even) { background:#fafbfd; }
.gantt-bar { position:absolute; height:28px; border-radius:8px; background:#315efb; color:#fff; font-size:.72rem; display:flex; align-items:center; overflow:hidden; box-shadow:0 2px 6px rgba(17,31,68,.18); z-index:1; }
.gantt-bar.critica { background:#dc3545; }
.gantt-bar.sem-datas { opacity:.6; background-image:repeating-linear-gradient(45deg, rgba(255,255,255,.25) 0 6px, transparent 6px 12px); }
.gantt-bar-progress { position:absolute; left:0; top:0; bottom:0; background:rgba(255,255,255,.35); }
.gantt-bar-label { position:relative; padding:0 8px; white-space:nowrap; text-shadow:0 1px 2px rgba(0,0,0,.25); }
.gantt-today { position:absolute; top:0; bottom:0; width:2px; background:#fd7e14; z-index:2; }

.documento-pendente-exclusao .documento-nome { color:#6c757d; font-style:italic; text-decoration:line-through; }
.documento-countdown { color:#dc3545; font-weight:600; font-style:normal; text-decoration:none; white-space:nowrap; }
.documento-card.pendente-exclusao { filter:grayscale(1); opacity:.65; }
.foto-card.pendente-exclusao .foto-thumb { filter:grayscale(1); opacity:.6; }
.foto-card.pendente-exclusao { background:#f1f3f6; }
.obra-card.pendente-exclusao { filter:grayscale(1); opacity:.65; }
.obra-detalhe-pendente-exclusao { filter:grayscale(1); opacity:.7; }
.documentos-toolbar .form-control, .documentos-toolbar .form-select { min-width:150px; }
.column-picker-menu { max-height:280px; overflow-y:auto; min-width:220px; }
.column-picker-menu .form-check { padding-left:1.75rem; }
.table-responsive:has(.dropdown-menu.show) { overflow: visible; }
.documentos-painel .table-responsive { padding-bottom: 4px; }
.checklist-summary-btn { width:100%; text-align:left; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.relatorio-form-container { max-width: 900px; margin: 0 auto; }
.gantt-arrows { position:absolute; top:0; left:0; z-index:1; }

/* Landing page */
.landing-body { background: var(--bg); overflow-x: hidden; }
.landing-navbar { display:flex; flex-wrap:wrap; gap:12px; justify-content:space-between; align-items:center; padding: 20px 6vw; }
.landing-brand { display:flex; align-items:center; gap:10px; font-weight:700; font-size:1.3rem; color:#172033; text-decoration:none; }
.landing-brand-logo { height:46px; width:auto; display:block; }
.landing-hero { background: linear-gradient(135deg, #172033, #315efb); color:#fff; padding: 64px 6vw 96px; position:relative; overflow:hidden; }
.landing-hero h1 { font-weight:800; font-size:2.75rem; letter-spacing:.5px; }
.landing-hero .lead { color: rgba(255,255,255,.85); max-width: 540px; font-size:1.15rem; }
.landing-hero-art { width:100%; max-width:380px; }
.landing-section { padding: 64px 6vw; }
.landing-section-eyebrow { color: var(--accent); font-weight:700; text-transform:uppercase; letter-spacing:1px; font-size:.8rem; }
.landing-section-title { font-weight:800; font-size:1.9rem; margin: 6px 0 18px; color:#172033; }
.landing-mission-card { background:#fff; border:1px solid #e5e9f2; border-radius:22px; padding: 36px; box-shadow: 0 10px 24px rgba(17,31,68,.06); display:flex; gap:26px; align-items:flex-start; }
.landing-mission-icon { width:64px; height:64px; border-radius:16px; background: linear-gradient(135deg, #172033, #315efb); color:#fff; display:grid; place-items:center; font-size:1.8rem; flex-shrink:0; }
.landing-values-grid { display:grid; grid-template-columns: repeat(3, 1fr); gap: 22px; }
.landing-value-card { background:#fff; border:1px solid #e5e9f2; border-radius:18px; padding:28px; box-shadow: 0 8px 20px rgba(17,31,68,.04); height:100%; transition: transform .15s ease, box-shadow .15s ease; }
.landing-value-card:hover { transform: translateY(-4px); box-shadow: 0 14px 28px rgba(17,31,68,.10); }
.landing-value-icon { width:50px; height:50px; border-radius:13px; background:#eef2ff; color:var(--accent); display:grid; place-items:center; font-size:1.4rem; margin-bottom:16px; }
.landing-cta-section { text-align:center; padding: 60px 6vw 96px; }
.landing-cta-section .landing-section-title { margin-bottom: 10px; }
.landing-footer { background:#172033; color:rgba(255,255,255,.75); padding: 28px 6vw; }
.landing-footer a { color:#fff; text-decoration:none; }
.landing-footer a:hover { text-decoration:underline; }
.landing-partner-logo { height:28px; filter: brightness(0) invert(1); opacity:.85; }
@media (max-width: 992px) { .landing-values-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 640px) { .landing-values-grid { grid-template-columns: 1fr; } .landing-hero h1 { font-size:2.1rem; } .landing-navbar { padding: 16px 5vw; } .landing-section, .landing-cta-section { padding: 48px 5vw; } }
@media (max-width: 480px) { .landing-navbar { flex-direction: column; align-items: flex-start; } .landing-navbar .btn { width: 100%; text-align: center; } }
