:root { color: #15202b; background: #f6f8fa; font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; font-synthesis: none; text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; } * { box-sizing: border-box; } body { margin: 0; min-width: 320px; min-height: 100vh; overflow-x: hidden; background: linear-gradient(180deg, rgba(15, 118, 110, 0.07), transparent 260px), #f6f8fa; } button, input, select, textarea { font: inherit; } button { cursor: pointer; } h1, h2, h3, p { margin-top: 0; } h1 { margin-bottom: 0; font-size: clamp(1.45rem, 2.2vw, 2rem); line-height: 1.12; } h2 { margin-bottom: 0; font-size: 1.18rem; } h3 { margin-bottom: 0; font-size: 1rem; } .app-shell { width: min(1560px, 100%); margin: 0 auto; padding: 24px; } .login-shell { position: relative; min-height: 100vh; display: grid; place-items: center; padding: 24px; overflow: hidden; background: linear-gradient(145deg, rgba(245, 130, 32, 0.12), transparent 34%), linear-gradient(315deg, rgba(143, 85, 189, 0.14), transparent 38%), #f7fafc; } .login-shell::before { content: ""; position: absolute; inset: auto -10% -20% -10%; height: 42vh; background: linear-gradient(90deg, rgba(245, 130, 32, 0.12), rgba(143, 85, 189, 0.12)); transform: skewY(-5deg); } .sr-only { position: absolute; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } .login-card { position: relative; width: min(590px, 100%); display: grid; gap: 18px; border: 1px solid #dce3e8; border-radius: 8px; background: rgba(255, 255, 255, 0.94); padding: 30px; box-shadow: 0 24px 70px rgba(55, 44, 66, 0.18); } .login-brand { display: grid; justify-items: center; } .login-brand img { width: min(455px, 100%); height: auto; display: block; } .login-form { display: grid; gap: 14px; } .login-submit { justify-self: stretch; } .compact-notice { margin-bottom: 0; } .topbar { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 12px 0 22px; } .app-brand { display: inline-flex; align-items: center; gap: 12px; min-width: 0; } .app-brand img { width: 62px; height: 40px; object-fit: contain; flex: 0 0 auto; } .app-brand h1 { margin: 0; font-size: clamp(1.15rem, 1.8vw, 1.65rem); } .topbar-actions { display: flex; align-items: center; justify-content: flex-end; gap: 10px; } .profile-badge { display: inline-flex; align-items: center; justify-content: center; min-height: 38px; border: 1px solid #d7dde2; border-radius: 8px; background: #ffffff; color: #405263; font-weight: 800; padding: 0 12px; white-space: nowrap; } .eyebrow { margin: 0 0 4px; color: #0f766e; font-size: 0.75rem; font-weight: 800; letter-spacing: 0; text-transform: uppercase; } .tabs { display: inline-grid; grid-auto-flow: column; gap: 4px; padding: 4px; border: 1px solid #d7dde2; border-radius: 8px; background: #ffffff; } .tabs button { min-height: 36px; border: 0; border-radius: 6px; background: transparent; color: #405263; font-weight: 700; padding: 0 12px; white-space: nowrap; } .tabs button.active { background: #15202b; color: #ffffff; } .mobile-label { display: block; color: #687787; font-size: 0.78rem; font-weight: 700; margin-bottom: 6px; } .notice { border-radius: 8px; margin-bottom: 16px; padding: 12px 14px; font-weight: 700; } .notice.error { background: #fff1f2; color: #9f1239; border: 1px solid #fecdd3; } .notice.success { background: #ecfdf5; color: #047857; border: 1px solid #a7f3d0; } .process-board { border: 1px solid #dce3e8; border-radius: 8px; background: #ffffff; overflow: hidden; padding: 16px; } .board-header, .board-tools, .modal-heading, .expanded-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; } .board-header { margin-bottom: 14px; } .board-tools { display: grid; grid-template-columns: minmax(260px, 1fr) auto auto; align-items: stretch; margin-bottom: 12px; } .search-row { display: grid; grid-template-columns: 20px 1fr; align-items: center; gap: 8px; min-height: 44px; flex: 1; border: 1px solid #cbd5df; border-radius: 8px; padding: 0 10px; } .search-row input { border: 0; padding-left: 0; box-shadow: none; } label { display: grid; gap: 6px; color: #334155; font-size: 0.86rem; font-weight: 800; } input, select, textarea { width: 100%; border: 1px solid #cbd5df; border-radius: 8px; background: #ffffff; color: #15202b; padding: 10px 11px; outline: none; } textarea { resize: vertical; } input:focus, textarea:focus { border-color: #0f766e; box-shadow: 0 0 0 3px rgba(15, 118, 110, 0.14); } .file-input { display: flex; align-items: center; gap: 8px; min-height: 42px; border: 1px dashed #aab7c4; border-radius: 8px; padding: 9px 11px; color: #405263; background: #f8fafc; } .file-input input { border: 0; padding: 0; background: transparent; box-shadow: none; } .primary-button, .secondary-button, .danger-button, .icon-button { display: inline-flex; align-items: center; justify-content: center; gap: 8px; border-radius: 8px; font-weight: 800; white-space: nowrap; } .primary-button { min-height: 42px; border: 0; background: #0f766e; color: #ffffff; padding: 0 16px; } .secondary-button { min-height: 38px; border: 1px solid #cbd5df; background: #ffffff; color: #15202b; padding: 0 12px; text-decoration: none; } .danger-button { min-height: 38px; border: 1px solid #fecdd3; background: #fff1f2; color: #9f1239; padding: 0 12px; } .primary-button:disabled, .secondary-button:disabled, .danger-button:disabled { cursor: wait; opacity: 0.6; } .icon-button { width: 38px; height: 38px; border: 1px solid #d7dde2; background: #ffffff; color: #405263; padding: 0; } .table-header, .row-summary { display: grid; grid-template-columns: minmax(160px, 1.05fr) minmax(140px, 0.88fr) minmax(190px, 1.15fr) minmax(130px, 0.72fr) minmax(130px, 0.72fr) minmax(132px, 0.55fr); gap: 12px; align-items: center; } .table-header { min-height: 38px; border-top: 1px solid #eef2f5; border-bottom: 1px solid #eef2f5; color: #687787; font-size: 0.75rem; font-weight: 800; text-transform: uppercase; } .process-list { display: grid; gap: 8px; margin-top: 8px; } .process-row { border: 1px solid #dce3e8; border-radius: 8px; background: #ffffff; overflow: hidden; } .process-row.expanded { border-color: #0f766e; box-shadow: inset 3px 0 0 #0f766e; } .row-summary { min-height: 98px; padding: 14px; } .row-cell { min-width: 0; overflow-wrap: anywhere; } .row-cell strong { display: block; overflow-wrap: anywhere; } .process-number { display: grid; gap: 5px; } .process-number small, .muted-text { color: #687787; } .download-link.compact { font-size: 0.84rem; } .download-link { display: inline-flex; align-items: center; gap: 6px; color: #0f766e; font-weight: 800; text-decoration: none; overflow-wrap: anywhere; } .status-pill { display: inline-flex; align-items: center; gap: 6px; width: fit-content; max-width: 100%; border-radius: 999px; padding: 6px 10px; font-size: 0.76rem; font-weight: 800; } .status-pill.respondido { background: #ecfdf5; color: #047857; } .status-pill.atendido { background: #ecfdf5; color: #047857; } .status-pill.aguardando_epgv, .status-pill.aguardando_esjl, .status-pill.aguardando_eav, .status-pill.aguardando_prazo_informado, .status-pill.aguardando_resposta_direcao, .status-pill.aguardando_atendimento, .status-pill.aguardando_conclusao_direcao { background: #fff7ed; color: #b45309; } .row-actions { display: flex; flex-wrap: nowrap; gap: 8px; justify-content: flex-end; } .row-actions .icon-button { flex: 0 0 auto; } .danger-icon-button { border-color: #fecdd3; background: #fff1f2; color: #9f1239; } .process-detail { border-top: 1px solid #dce3e8; background: #fbfcfd; padding: 16px; min-width: 0; } .flow-section { display: grid; gap: 12px; margin-bottom: 14px; min-width: 0; } .section-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; } .section-heading h3 { margin: 0; } .bpm-flow-shell { position: relative; min-width: 0; max-width: 100%; overflow: hidden; } .bpm-flow-shell.show-right-cue::after, .bpm-flow-shell.show-left-cue::before { content: ""; position: absolute; top: 0; bottom: 10px; z-index: 4; width: 70px; pointer-events: none; } .bpm-flow-shell.show-right-cue::after { right: 0; background: linear-gradient(90deg, rgba(251, 252, 253, 0), #fbfcfd 76%), linear-gradient(90deg, rgba(100, 116, 139, 0), rgba(100, 116, 139, 0.12)); } .bpm-flow-shell.show-left-cue::before { left: 0; background: linear-gradient(270deg, rgba(251, 252, 253, 0), #fbfcfd 76%), linear-gradient(270deg, rgba(100, 116, 139, 0), rgba(100, 116, 139, 0.12)); } .bpm-scroll-cue { position: absolute; top: 50%; z-index: 5; display: grid; place-items: center; width: 42px; height: 72px; border: 0; border-radius: 8px; background: transparent; padding: 0; transform: translateY(-50%); } .bpm-scroll-cue:hover, .bpm-scroll-cue:focus-visible { background: rgba(255, 255, 255, 0.72); } .bpm-scroll-cue span { width: 13px; height: 13px; border-top: 3px solid #64748b; border-right: 3px solid #64748b; filter: drop-shadow(0 2px 4px rgba(15, 23, 42, 0.12)); } .bpm-scroll-cue.cue-right { right: 8px; } .bpm-scroll-cue.cue-right span { transform: rotate(45deg); } .bpm-scroll-cue.cue-left { left: 8px; } .bpm-scroll-cue.cue-left span { transform: rotate(225deg); } .bpm-flow { display: flex; align-items: stretch; gap: 12px; width: 100%; max-width: 100%; overflow-x: auto; padding-bottom: 10px; scrollbar-color: #94a3b8 #e5e7eb; } .bpm-flow::-webkit-scrollbar { height: 10px; } .bpm-flow::-webkit-scrollbar-track { border-radius: 999px; background: #e5e7eb; } .bpm-flow::-webkit-scrollbar-thumb { border-radius: 999px; background: #94a3b8; } .bpm-step { display: flex; align-items: center; gap: 12px; flex: 0 0 auto; } .bpm-node { position: relative; width: 250px; min-width: 250px; height: 410px; border: 1px solid #d7dde2; border-radius: 8px; background: #ffffff; padding: 12px; overflow: visible; } .bpm-node:hover, .bpm-node:focus-within { z-index: 6; } .bpm-node.solicitacao-node { width: 300px; min-width: 300px; } .bpm-node.editing-node { width: 360px; min-width: 360px; height: auto; min-height: 410px; overflow: visible; } .bpm-node.state-green { border-color: #86efac; background: #ecfdf5; } .bpm-node.state-orange { border-color: #fdba74; background: #fff7ed; } .bpm-node.state-red { border-color: #fda4af; background: #fff1f2; } .bpm-node-header { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; } .bpm-node-header small { display: grid; gap: 1px; margin-left: auto; color: #687787; font-size: 0.68rem; font-weight: 700; line-height: 1.2; text-align: right; } .bpm-node-header small time { font-weight: 900; } .bpm-node-header > span { display: inline-grid; flex: 0 0 26px; place-items: center; width: 26px; height: 26px; border-radius: 999px; background: #0f766e; color: #ffffff; font-size: 0.78rem; font-weight: 900; } .bpm-node.state-orange .bpm-node-header > span { background: #c2410c; } .bpm-node.state-red .bpm-node-header > span { background: #be123c; } .bpm-node p { margin: 0; color: #405263; font-size: 0.86rem; font-weight: 800; } .bpm-node-title-row { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 10px; } .compact-icon-button { width: 30px; height: 30px; flex: 0 0 auto; } .bpm-node dl { display: grid; gap: 12px; margin: 0; } .bpm-node dt { color: #687787; font-size: 0.72rem; font-weight: 800; text-transform: uppercase; } .bpm-node dd { margin: 2px 0 0; color: #15202b; font-weight: 800; overflow-wrap: anywhere; } .observation-text { display: block; max-height: 4.25rem; padding-right: 4px; overflow-x: hidden; overflow-y: auto; white-space: pre-wrap; overflow-wrap: anywhere; overscroll-behavior: contain; color: #334155; font-size: 0.68rem; font-weight: 700; line-height: 1.25; scrollbar-color: #94a3b8 transparent; scrollbar-width: thin; } .observation-text::-webkit-scrollbar { width: 6px; } .observation-text::-webkit-scrollbar-track { background: transparent; } .observation-text::-webkit-scrollbar-thumb { border-radius: 999px; background: #94a3b8; } .observation-text:focus-visible { border-radius: 4px; outline: 2px solid rgba(15, 118, 110, 0.34); outline-offset: 2px; } .deadline-value { display: inline-flex; align-items: center; gap: 6px; } .deadline-tooltip { position: relative; display: inline-flex; align-items: center; border: 0; background: transparent; color: #687787; padding: 0; outline: none; cursor: help; } .deadline-tooltip:hover, .deadline-tooltip:focus, .deadline-tooltip:focus-within, .deadline-tooltip:focus-visible { color: #15202b; } .deadline-popover { position: absolute; bottom: calc(100% + 9px); z-index: 10; display: grid; gap: 8px; width: 240px; max-width: min(280px, calc(100vw - 48px)); border-radius: 8px; background: #111827; color: #ffffff; padding: 10px 12px; box-shadow: 0 14px 34px rgba(15, 23, 42, 0.26); font-size: 0.78rem; font-weight: 700; line-height: 1.35; overflow-wrap: anywhere; opacity: 0; pointer-events: none; transform: translateY(-3px); transition: opacity 140ms ease, transform 140ms ease; } .deadline-popover::before { content: ""; position: absolute; bottom: -5px; width: 10px; height: 10px; background: #111827; transform: rotate(45deg); } .deadline-tooltip.tooltip-right .deadline-popover { left: 0; } .deadline-tooltip.tooltip-right .deadline-popover::before { left: 8px; } .deadline-tooltip.tooltip-left .deadline-popover { right: 0; } .deadline-tooltip.tooltip-left .deadline-popover::before { right: 8px; } .deadline-tooltip:hover .deadline-popover, .deadline-tooltip:focus .deadline-popover, .deadline-tooltip:focus-within .deadline-popover, .deadline-tooltip:focus-visible .deadline-popover { opacity: 1; transform: translateY(0); } .deadline-popover span { display: grid; gap: 2px; } .deadline-popover strong { color: #d1d5db; font-size: 0.68rem; text-transform: uppercase; } .bpm-node-form { display: grid; gap: 10px; } .bpm-node-form label { gap: 5px; color: #405263; font-size: 0.78rem; font-weight: 800; } .bpm-node-form input, .bpm-node-form select, .bpm-node-form textarea { min-height: 34px; padding: 7px 9px; font-size: 0.86rem; } .bpm-node-form textarea { resize: vertical; } .bpm-node-form .primary-button { min-height: 36px; justify-self: start; padding: 0 12px; } .bpm-form-actions { display: flex; flex-wrap: wrap; gap: 8px; } .bpm-form-actions .secondary-button { min-height: 36px; padding: 0 12px; } .bpm-next { position: relative; display: flex; align-items: center; min-width: 56px; color: #405263; } .bpm-next::before { content: ""; width: 100%; height: 2px; background: #cbd5df; } .bpm-next::after { content: ""; position: absolute; right: 0; width: 9px; height: 9px; border-top: 2px solid #cbd5df; border-right: 2px solid #cbd5df; transform: rotate(45deg); } .bpm-next.terminal-next::after { right: 0; width: 12px; height: 12px; border: 2px solid #15803d; border-radius: 999px; background: #16a34a; transform: none; } .bpm-next.terminal-next.terminal-next-warning::after { border-color: #c2410c; background: #f97316; } .row-expanded { border-top: 1px solid #dce3e8; background: #fbfcfd; padding: 16px; } .form-grid { display: grid; gap: 12px; } .form-columns { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; } .team-picker { display: flex; flex-wrap: wrap; gap: 10px; border: 1px solid #dce3e8; border-radius: 8px; margin: 0; padding: 12px; } .team-picker legend { color: #334155; font-size: 0.86rem; font-weight: 800; padding: 0 4px; } .team-picker label { display: inline-flex; align-items: center; gap: 7px; min-height: 34px; border: 1px solid #dce3e8; border-radius: 8px; padding: 0 10px; background: #ffffff; } .team-picker input { width: auto; } .team-picker-card { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); } .checkbox-row { display: flex; align-items: center; gap: 8px; font-size: 0.82rem; font-weight: 700; } .checkbox-row input { width: auto; margin: 0; } .form-hint { margin: 0; border: 1px solid #fde68a; border-radius: 8px; background: #fffbeb; color: #92400e; font-size: 0.88rem; font-weight: 700; line-height: 1.4; padding: 10px 12px; } .form-submit { justify-self: end; } .empty-state { min-height: 220px; display: grid; place-content: center; gap: 10px; color: #687787; text-align: center; } .empty-state h2 { color: #405263; } .modal-backdrop { position: fixed; inset: 0; z-index: 20; display: grid; place-items: center; padding: 18px; background: rgba(15, 23, 42, 0.34); } .modal-panel { width: min(620px, 100%); max-height: min(780px, calc(100vh - 36px)); overflow: auto; border: 1px solid #dce3e8; border-radius: 8px; background: #ffffff; padding: 18px; box-shadow: 0 24px 70px rgba(15, 23, 42, 0.26); } .modal-heading { margin-bottom: 16px; } .mobile-label { display: none; } @media (max-width: 1180px) { .table-header { display: none; } .row-summary { grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: start; } .row-actions { justify-content: flex-start; } .mobile-label { display: block; } } @media (max-width: 840px) { .topbar { align-items: flex-start; flex-wrap: wrap; } .topbar-actions { width: 100%; display: grid; grid-template-columns: minmax(0, 1fr) auto auto auto; } .topbar-actions .primary-button { width: 100%; } .board-tools { grid-template-columns: minmax(0, 1fr) auto; } .search-row { grid-column: 1 / -1; } .tabs { width: 300px; max-width: 100%; justify-self: start; grid-auto-flow: column; grid-template-columns: repeat(3, minmax(0, 1fr)); } } @media (max-width: 760px) { .app-shell { padding: 16px; } .login-shell { padding: 16px; } .login-card { padding: 22px; } .login-brand img { width: min(350px, 100%); } .topbar, .modal-heading, .section-heading, .expanded-heading { align-items: stretch; flex-direction: column; } .topbar-actions { display: grid; grid-template-columns: minmax(0, 1fr) auto auto auto; } .topbar-actions .primary-button, .topbar-actions .profile-badge, .secondary-button { width: 100%; } .row-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); } .form-columns { grid-template-columns: 1fr; } .process-board, .modal-panel { padding: 14px; } .row-summary, .row-expanded { padding: 14px; } .form-submit { justify-self: stretch; } } @media (max-width: 560px) { .app-shell, .login-shell { padding: 10px; } .app-brand { align-items: flex-start; } .app-brand img { width: 50px; height: 34px; } .app-brand h1 { font-size: 1.1rem; line-height: 1.25; } .topbar { padding-top: 8px; padding-bottom: 14px; } .topbar-actions { grid-template-columns: minmax(0, 1fr) auto auto; gap: 8px; } .topbar-actions .primary-button { grid-column: 1 / -1; padding-inline: 10px; } .process-board { padding: 10px; } .tabs button { min-width: 0; padding-inline: 4px; font-size: 0.72rem; } .tabs { width: 100%; } .row-summary { grid-template-columns: 1fr; gap: 14px; padding: 12px; } .process-detail { padding: 12px 8px; } .section-heading { padding-inline: 2px; } .bpm-flow { gap: 8px; } .bpm-step { gap: 8px; } .bpm-node, .bpm-node.solicitacao-node { width: 260px; min-width: 260px; } .bpm-node.editing-node { width: min(300px, calc(100vw - 58px)); min-width: 260px; } .bpm-next { min-width: 40px; } .bpm-flow-shell.show-right-cue::after, .bpm-flow-shell.show-left-cue::before { width: 46px; } .bpm-scroll-cue { width: 34px; } .bpm-scroll-cue.cue-right { right: 2px; } .bpm-scroll-cue.cue-left { left: 2px; } }