:root {
  --blue: #0b6f8d;
  --blue-dark: #074b61;
  --red: #ef2024;
  --red-dark: #be1518;
  --bg: #f3f6f8;
  --surface: #ffffff;
  --text: #19272d;
  --muted: #66777f;
  --line: #dbe4e8;
  --success: #157f52;
  --warning: #b36a00;
  --danger: #c8272e;
  --shadow: 0 10px 30px rgba(22, 57, 70, .10);
  --radius: 16px;
}

* { box-sizing: border-box; }
html { width: 100%; max-width: 100%; overflow-x: hidden; }
body { width: 100%; max-width: 100%; overflow-x: hidden; }
.app-shell, .main, .content, #content, #reportForm, .form-section, .form-grid, .check-list, .check-row { min-width: 0; max-width: 100%; }
#reportForm { width: min(100%, 1320px); margin-inline: auto; overflow-x: clip; }
.form-grid > *, .check-row > *, .toolbar > *, .section-title > * { min-width: 0; max-width: 100%; }
input, select, textarea, canvas { min-width: 0; max-width: 100%; }
.section-title { flex-wrap: wrap; }
.section-title .badge { max-width: 100%; white-space: normal; text-align: center; overflow-wrap: anywhere; }
html, body { margin: 0; min-height: 100%; font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; color: var(--text); background: var(--bg); }
button, input, select, textarea { font: inherit; }
button { cursor: pointer; }
.hidden { display: none !important; }
.full { width: 100%; }
.stack { display: grid; gap: 14px; }

.login-shell { min-height: 100vh; display: grid; place-items: center; padding: 24px; background: radial-gradient(circle at 10% 10%, rgba(11,111,141,.18), transparent 35%), radial-gradient(circle at 90% 90%, rgba(239,32,36,.12), transparent 36%), var(--bg); }
.login-card { width: min(430px, 100%); background: var(--surface); border-radius: 24px; padding: 30px; box-shadow: var(--shadow); text-align: center; }
.login-logo { width: 100%; max-height: 140px; object-fit: contain; margin-bottom: 10px; }
.login-card h1 { margin: 4px 0 8px; }
.login-card p { color: var(--muted); margin: 0 0 24px; }

label { display: grid; gap: 7px; font-size: 13px; font-weight: 700; color: #31464f; text-align: left; }
input, select, textarea { width: 100%; border: 1px solid var(--line); background: #fff; border-radius: 11px; padding: 12px 13px; color: var(--text); outline: none; transition: .15s ease; }
textarea { min-height: 88px; resize: vertical; }
input:focus, select:focus, textarea:focus { border-color: var(--blue); box-shadow: 0 0 0 3px rgba(11,111,141,.12); }
input[readonly] { background: #f4f7f8; color: var(--muted); }

.btn { border: 0; border-radius: 11px; padding: 11px 15px; font-weight: 800; transition: transform .1s ease, opacity .15s ease; display: inline-flex; align-items: center; justify-content: center; gap: 8px; }
.btn:active { transform: translateY(1px); }
.btn:disabled { opacity: .5; cursor: not-allowed; }
.btn.primary { background: var(--blue); color: #fff; }
.btn.primary:hover { background: var(--blue-dark); }
.btn.red { background: var(--red); color: #fff; }
.btn.secondary { background: #e6f1f4; color: var(--blue-dark); }
.btn.ghost { background: transparent; color: inherit; border: 1px solid var(--line); }
.btn.danger { background: #fee9ea; color: var(--danger); }
.btn.success { background: #e6f5ee; color: var(--success); }
.icon-btn { width: 42px; height: 42px; border: 0; border-radius: 12px; background: #eef3f5; display: grid; place-items: center; }

.app-shell { min-height: 100vh; display: grid; grid-template-columns: 270px 1fr; }
.sidebar { position: fixed; inset: 0 auto 0 0; width: 270px; background: linear-gradient(180deg, var(--blue-dark), #062f3d); color: #fff; padding: 18px 14px; display: flex; flex-direction: column; z-index: 30; }
.brand { display: flex; gap: 12px; align-items: center; padding: 6px 8px 18px; border-bottom: 1px solid rgba(255,255,255,.14); }
.brand img { width: 62px; height: 52px; object-fit: contain; border-radius: 8px; background: #fff; }
.brand strong { display: block; }
.brand small { opacity: .72; }
.nav-list { display: grid; gap: 5px; margin: 16px 0; overflow-y: auto; }
.nav-list button { border: 0; background: transparent; color: rgba(255,255,255,.82); text-align: left; padding: 11px 12px; border-radius: 11px; font-weight: 700; display: flex; gap: 10px; align-items: center; }
.nav-list button:hover, .nav-list button.active { background: rgba(255,255,255,.13); color: #fff; }
.sidebar > .btn { margin-top: auto; border-color: rgba(255,255,255,.25); color: #fff; }

.main { grid-column: 2; min-width: 0; }
.topbar { position: sticky; top: 0; z-index: 20; min-height: 78px; background: rgba(255,255,255,.94); backdrop-filter: blur(14px); border-bottom: 1px solid var(--line); display: flex; align-items: center; gap: 16px; padding: 12px 24px; }
.topbar h2 { margin: 0; font-size: 22px; }
.topbar small { color: var(--muted); }
.topbar-actions { margin-left: auto; display: flex; align-items: center; gap: 12px; }
.user-chip { background: #eef3f5; border-radius: 999px; padding: 9px 13px; font-size: 13px; font-weight: 800; }
#menuBtn { display: none; }
.content { padding: 24px; }

.grid { display: grid; gap: 16px; }
.grid.cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.grid.cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.grid.cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.card { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); padding: 18px; box-shadow: 0 5px 18px rgba(22,57,70,.05); }
.card h3 { margin: 0 0 14px; }
.metric { display: flex; justify-content: space-between; gap: 12px; min-height: 132px; }
.metric .value { font-size: 34px; font-weight: 900; line-height: 1; margin: 12px 0 6px; }
.metric .label { color: var(--muted); font-size: 13px; }
.metric .icon { font-size: 30px; width: 56px; height: 56px; display: grid; place-items: center; border-radius: 14px; background: #eef6f8; }

.toolbar { display: flex; flex-wrap: wrap; gap: 10px; align-items: end; margin-bottom: 16px; }
.toolbar label { min-width: 160px; flex: 1; }
.toolbar .btn { flex: 0 0 auto; }
.section-title { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 14px; }
.section-title h3, .section-title h2 { margin: 0; }
.muted { color: var(--muted); }
.notice { border-radius: 12px; padding: 12px 14px; background: #fff8dd; border: 1px solid #f0dda0; color: #705500; font-size: 13px; text-align: left; }

.table-wrap { overflow: auto; border: 1px solid var(--line); border-radius: 13px; }
table { width: 100%; border-collapse: collapse; min-width: 760px; }
th, td { padding: 12px 13px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: middle; font-size: 13px; }
th { background: #f5f8f9; font-size: 12px; text-transform: uppercase; letter-spacing: .03em; color: #4c626b; position: sticky; top: 0; }
tr:last-child td { border-bottom: 0; }
.actions { display: flex; flex-wrap: wrap; gap: 6px; }
.actions .btn { padding: 8px 10px; font-size: 12px; }

.badge { display: inline-flex; align-items: center; justify-content: center; border-radius: 999px; padding: 5px 9px; font-size: 11px; font-weight: 900; white-space: nowrap; }
.badge.success { background: #e3f5ed; color: var(--success); }
.badge.warning { background: #fff1d9; color: var(--warning); }
.badge.danger { background: #fde7e9; color: var(--danger); }
.badge.info { background: #e3f2f6; color: var(--blue-dark); }
.badge.neutral { background: #edf1f3; color: #546870; }

.form-section { background: #fff; border: 1px solid var(--line); border-radius: var(--radius); padding: 18px; margin-bottom: 16px; }
.form-section h3 { margin: 0 0 14px; color: var(--blue-dark); }
.form-grid { display: grid; gap: 14px; grid-template-columns: repeat(12, minmax(0,1fr)); }
.span-12 { grid-column: span 12; }
.span-8 { grid-column: span 8; }
.span-6 { grid-column: span 6; }
.span-4 { grid-column: span 4; }
.span-3 { grid-column: span 3; }
.span-2 { grid-column: span 2; }

.check-list { display: grid; gap: 9px; }
.check-row { display: grid; grid-template-columns: minmax(220px,1fr) auto minmax(220px,.8fr); gap: 12px; align-items: center; border: 1px solid var(--line); border-radius: 12px; padding: 11px; }
.segmented { display: inline-flex; padding: 3px; border-radius: 10px; background: #edf2f4; gap: 3px; }
.segmented label { display: block; cursor: pointer; }
.segmented input { position: absolute; opacity: 0; pointer-events: none; }
.segmented span { display: block; min-width: 50px; padding: 7px 9px; text-align: center; border-radius: 8px; font-size: 12px; }
.segmented input:checked + span { background: #fff; box-shadow: 0 2px 8px rgba(0,0,0,.09); color: var(--blue-dark); }

.signature-box { border: 1px dashed #9eb2ba; border-radius: 12px; padding: 10px; background: #fbfdfe; }
.signature-box canvas { width: 100%; height: 180px; border-radius: 8px; background: #fff; touch-action: none; }
.signature-actions { display: flex; justify-content: flex-end; margin-top: 8px; }

.progress-bar { height: 9px; border-radius: 999px; background: #e7eef1; overflow: hidden; }
.progress-bar > span { display: block; height: 100%; background: var(--blue); }
.chart-bars { display: grid; gap: 10px; }
.chart-row { display: grid; grid-template-columns: 160px 1fr 50px; gap: 10px; align-items: center; font-size: 13px; }

.modal { position: fixed; inset: 0; z-index: 80; background: rgba(5,27,35,.54); padding: 24px; display: grid; place-items: center; }
.modal-card { width: min(980px, 100%); max-height: 92vh; overflow: hidden; background: #fff; border-radius: 18px; box-shadow: 0 24px 70px rgba(0,0,0,.3); }
.modal-head { display: flex; align-items: center; justify-content: space-between; padding: 15px 18px; border-bottom: 1px solid var(--line); }
.modal-head h3 { margin: 0; }
.modal-body { padding: 18px; max-height: calc(92vh - 74px); overflow: auto; }

.toast { position: fixed; right: 18px; bottom: 18px; z-index: 100; background: #142d37; color: #fff; padding: 12px 15px; border-radius: 12px; box-shadow: var(--shadow); transform: translateY(120px); opacity: 0; transition: .25s; max-width: 420px; }
.toast.show { transform: translateY(0); opacity: 1; }

.kpi-list { display: grid; gap: 10px; }
.kpi-item { display: flex; align-items: center; justify-content: space-between; gap: 12px; border-bottom: 1px solid var(--line); padding-bottom: 9px; }
.kpi-item:last-child { border-bottom: 0; padding-bottom: 0; }
.empty { text-align: center; padding: 36px 16px; color: var(--muted); }

@media (max-width: 1050px) {
  .grid.cols-4 { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .grid.cols-3 { grid-template-columns: repeat(2, minmax(0,1fr)); }
}

@media (max-width: 820px) {
  html, body { width: 100%; max-width: 100%; overflow-x: hidden; }
  .app-shell { display: block; width: 100%; max-width: 100%; overflow-x: hidden; }
  .sidebar { transform: translateX(-100%); transition: .22s ease; }
  .sidebar.open { transform: translateX(0); }
  .main { grid-column: auto; }
  #menuBtn { display: grid; }
  .topbar { padding: 10px 14px; }
  .topbar-actions .user-chip { display: none; }
  .content { width: 100%; max-width: 100%; padding: 14px; overflow-x: hidden; }
  #content, #reportForm, .form-section { width: 100%; max-width: 100%; margin-left: auto; margin-right: auto; }
  .form-section { padding: 14px; }
  .toolbar label { min-width: 0; flex-basis: 100%; }
  .segmented { max-width: 100%; overflow-x: auto; }
  .signature-box, .signature-box canvas { max-width: 100%; }
  .grid.cols-2, .grid.cols-3, .grid.cols-4 { grid-template-columns: 1fr; }
  .form-grid { grid-template-columns: 1fr; }
  [class*="span-"] { grid-column: span 1; }
  .check-row { grid-template-columns: 1fr; }
  .chart-row { grid-template-columns: 95px 1fr 35px; }
  .quickNewBtn { display:none; }
}

@media print {
  .sidebar, .topbar, .toolbar, .actions, .btn { display: none !important; }
  .main, .content { padding: 0; margin: 0; }
  .card, .form-section { box-shadow: none; break-inside: avoid; }
}

.ai-import-box { border-color: #9fc9d6; background: linear-gradient(135deg, #f7fcfe, #fff); }
.file-field { min-width: min(100%, 360px); }
.file-field input[type="file"] { margin-top: 6px; }
label small { display: block; margin-top: 5px; color: var(--muted); font-size: 11px; font-weight: 500; }
.evidence-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 10px; }
.evidence-grid a { color: inherit; text-decoration: none; }
.evidence-grid img { display: block; width: 100%; height: 120px; object-fit: cover; border-radius: 10px; border: 1px solid var(--line); background: #eef3f5; }
.file-card { min-height: 90px; display: grid; place-items: center; text-align: center; border: 1px solid var(--line); border-radius: 10px; padding: 12px; background: #f8fbfc; font-weight: 700; }

/* v1.8 — sessão persistente, instalação PWA e painel configurável */
.boot-shell { min-height: 100vh; display: grid; place-items: center; padding: 24px; background: radial-gradient(circle at 15% 15%, rgba(11,111,141,.18), transparent 34%), radial-gradient(circle at 85% 85%, rgba(239,32,36,.10), transparent 34%), var(--bg); }
.boot-card { width: min(360px, 100%); display: grid; place-items: center; gap: 16px; text-align: center; color: var(--blue-dark); }
.boot-card img { width: min(300px, 100%); max-height: 130px; object-fit: contain; }
.spinner { width: 36px; height: 36px; border: 4px solid #d9e8ed; border-top-color: var(--blue); border-radius: 50%; animation: spin .8s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }

.password-field { position: relative; display: block; }
.password-field input { padding-right: 52px; }
.password-toggle { position: absolute; right: 6px; top: 50%; transform: translateY(-50%); width: 38px; height: 38px; border: 0; border-radius: 9px; background: #eef3f5; }
.check-option { grid-template-columns: auto 1fr; align-items: start; gap: 10px; border: 1px solid var(--line); border-radius: 11px; padding: 11px 12px; background: #f9fbfc; cursor: pointer; }
.check-option.compact { padding: 9px 12px; }
.check-option input { width: 18px; height: 18px; margin-top: 2px; }
.check-option strong { display: block; }
.check-option small { margin-top: 3px; }

.sidebar .install-btn { margin-top: 0; margin-bottom: 8px; color: #fff; background: rgba(255,255,255,.13); }
.sidebar .install-btn:hover { background: rgba(255,255,255,.2); }

.metric-action { width: 100%; border: 1px solid var(--line); color: inherit; text-align: left; cursor: pointer; position: relative; transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease; }
.metric-action:hover, .metric-action:focus-visible { transform: translateY(-2px); box-shadow: var(--shadow); border-color: #a8cbd5; outline: none; }
.metric-action::after { content: "Abrir →"; position: absolute; right: 17px; bottom: 13px; font-size: 11px; font-weight: 900; color: var(--blue); opacity: .8; }
.metric-action .metric { padding: 0; border: 0; box-shadow: none; background: transparent; }

.settings-grid { display: grid; gap: 16px; grid-template-columns: repeat(2, minmax(0,1fr)); }
.settings-card-list { display: grid; gap: 10px; }
.settings-card-option { display: grid; grid-template-columns: auto 1fr; gap: 10px; align-items: center; border: 1px solid var(--line); border-radius: 11px; padding: 11px; background: #f9fbfc; }
.settings-card-option input { width: 18px; height: 18px; }
.data-actions { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 10px; }
.import-drop { border: 1px dashed #9eb9c3; border-radius: 12px; padding: 14px; background: #f8fcfd; }
.import-drop input[type="file"] { margin-top: 8px; }
.import-summary { margin-top: 10px; font-size: 13px; color: var(--muted); }
.install-panel { border: 1px solid #b7d8e2; background: linear-gradient(135deg,#f6fcfe,#fff); }

@media (max-width: 820px) {
  .settings-grid, .data-actions { grid-template-columns: 1fr; }
  .metric-action::after { right: 14px; }
}

/* Primeiro acesso protegido por código de uso único configurado no servidor */
.first-access-notice { background: #fff8dd; border-color: #efd68d; }
.first-access-divider { display: flex; align-items: center; gap: 10px; color: var(--blue-dark); font-size: 12px; font-weight: 900; text-transform: uppercase; letter-spacing: .04em; margin: 2px 0; }
.first-access-divider::before, .first-access-divider::after { content: ""; height: 1px; background: var(--line); flex: 1; }
.first-access-divider span { white-space: nowrap; }
.login-logo { background: #fff; border-radius: 14px; }
@media (max-width: 480px) {
  .login-shell { padding: 12px; align-items: start; }
  .login-card { padding: 22px 18px; border-radius: 20px; }
  .login-logo { max-height: 118px; }
  .first-access-divider span { white-space: normal; text-align: center; }
}

/* v1.8 — logo oficial e atualização forçada */
.login-card { overflow: hidden; }
.login-logo {
  display: block;
  width: min(100%, 520px);
  height: auto;
  max-height: none;
  margin: 0 auto 18px;
  object-fit: contain;
  border-radius: 12px;
}
.boot-card img { width: min(440px, 100%); max-height: none; height: auto; }
.brand img { width: 78px; height: 58px; object-fit: contain; padding: 3px; }
.version-badge { display: inline-flex; padding: 4px 8px; border-radius: 999px; background: #e8f3f6; color: var(--blue-dark); font-size: 11px; font-weight: 900; }
@media (max-width: 480px) {
  .login-logo { width: 100%; max-height: none; }
  .login-card h1 { margin-top: 0; }
}

.danger-text{color:#a91f27;font-weight:700}.history-import-card .section-title{align-items:flex-start}.history-import-card .import-summary{white-space:normal;line-height:1.5}

/* v2.1 — confirmação de cadastro e área separada de histórico */
.save-status { min-height: 24px; padding: 0 2px; font-size: .92rem; color: var(--muted); }
.save-status.working { color: var(--blue); font-weight: 700; }
.save-status.success { color: var(--success); font-weight: 700; }
.save-status.error { color: var(--danger); font-weight: 700; }
.history-page { display: grid; gap: 16px; }
.history-steps { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 10px; margin: 14px 0; }
.history-steps > div { display: flex; align-items: center; gap: 10px; padding: 12px; border: 1px solid var(--border); border-radius: 14px; background: #f8fbfc; }
.history-steps b { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; background: var(--blue); color: #fff; flex: 0 0 auto; }
.history-steps span { font-size: .9rem; line-height: 1.25; }
.warning-text { color: #8a6100; font-weight: 700; }
@media (max-width: 760px) {
  .history-steps { grid-template-columns: 1fr; }
}

/* v2.4 - feedback de salvamento e separação visual do laudo */
.btn:disabled{opacity:.65;cursor:wait;filter:saturate(.7)}
.form-section .section-title+.muted{margin-top:-4px;margin-bottom:14px}
.check-row:has(input:required:invalid){border-color:#d8e3e8}
@media (max-width:700px){.check-row .grid.cols-3{grid-template-columns:1fr}.check-row .segmented{width:100%}}

.creator-only-card{border:2px solid rgba(14,124,145,.22);background:linear-gradient(180deg,#fff,#f4fbfc)}


/* v2.9 — fechamento financeiro de produtos e materiais */
.closing-shell{display:grid;gap:16px}.closing-title{align-items:flex-start;gap:14px}.closing-toolbar{padding:12px;border:1px solid var(--line);border-radius:14px;background:#f8fbfc}.closing-kpis .metric{height:100%}.closing-overview{align-items:start}.closing-overview>div{min-width:0}.closing-company-list{margin-top:22px;display:grid;gap:12px}.closing-company-card{border:1px solid var(--line);border-radius:15px;background:#fff;overflow:hidden}.closing-company-card[open]{box-shadow:0 8px 25px rgba(7,90,106,.10);border-color:#9fc9d6}.closing-company-card summary{list-style:none;display:flex;justify-content:space-between;align-items:center;gap:16px;padding:16px 18px;cursor:pointer;background:linear-gradient(135deg,#fff,#f3fafc)}.closing-company-card summary::-webkit-details-marker{display:none}.closing-company-card summary strong{display:block;font-size:1.05rem;color:var(--blue-dark)}.closing-company-card summary small{display:block;margin-top:4px;color:var(--muted)}.closing-company-cost{text-align:right}.closing-company-cost b{display:block;color:var(--blue);font-size:1.15rem}.closing-company-cost span{font-size:.75rem;color:var(--muted)}.closing-company-body{padding:0 18px 18px}.closing-company-body h4{margin:18px 0 8px}.cost-track{height:9px;background:#e4eef1;border-radius:999px;overflow:hidden;margin:4px 0 14px}.cost-track span{display:block;height:100%;background:linear-gradient(90deg,var(--blue),var(--red));border-radius:inherit}.closing-mini-kpis>div{padding:12px;border:1px solid var(--line);border-radius:12px;background:#f8fbfc}.closing-mini-kpis small{display:block;color:var(--muted);margin-bottom:5px}.closing-mini-kpis b{color:var(--blue-dark);font-size:1.05rem}tfoot th{background:#edf6f8;color:var(--blue-dark);font-weight:900}.closing-overview table td:last-child,.closing-overview table th:last-child,.closing-company-card table td:last-child,.closing-company-card table th:last-child{white-space:nowrap}@media(max-width:760px){.closing-title{display:grid}.closing-title .btn{width:100%}.closing-company-card summary{align-items:flex-start}.closing-company-cost{min-width:112px}.closing-mini-kpis{grid-template-columns:1fr!important}.closing-toolbar .btn{width:100%}}


/* v2.9 — fechamento mensal responsivo e sem expansão horizontal */
.closing-overview-stack{display:grid;grid-template-columns:minmax(0,1fr);gap:18px;min-width:0}
.closing-summary-card{min-width:0;border:1px solid var(--line);border-radius:16px;background:#fff;padding:16px;overflow:hidden}
.closing-summary-card .section-title{align-items:flex-start;gap:12px;margin-bottom:12px}
.closing-flat-table{width:100%;max-width:100%;overflow:hidden;border:1px solid var(--line);border-radius:13px}
.closing-flat-table table{width:100%;table-layout:fixed;border-collapse:collapse}
.closing-flat-table th,.closing-flat-table td{white-space:normal!important;overflow-wrap:anywhere;word-break:normal;padding:11px 10px;vertical-align:middle}
.closing-flat-table th:first-child,.closing-flat-table td:first-child{width:46%}
.closing-flat-table th:not(:first-child),.closing-flat-table td:not(:first-child){text-align:right}
.closing-detail-table table{width:100%;table-layout:auto}
.closing-detail-table th,.closing-detail-table td{white-space:normal;overflow-wrap:anywhere}
@media(max-width:760px){
  .closing-summary-card{padding:13px}
  .closing-summary-card .section-title{display:grid;grid-template-columns:1fr;align-items:start}
  .closing-summary-card .badge{justify-self:start}
  .closing-flat-table{border:0;overflow:visible}
  .closing-flat-table table,.closing-flat-table tbody,.closing-flat-table tr,.closing-flat-table td{display:block;width:100%}
  .closing-flat-table thead{display:none}
  .closing-flat-table tbody{display:grid;gap:10px}
  .closing-flat-table tr{border:1px solid var(--line);border-radius:13px;background:#f9fcfd;padding:7px 11px}
  .closing-flat-table td{display:grid;grid-template-columns:minmax(118px,42%) minmax(0,1fr);gap:10px;text-align:right!important;padding:7px 0;border:0;border-bottom:1px dashed #dbe6e9}
  .closing-flat-table td:last-child{border-bottom:0}
  .closing-flat-table td::before{content:attr(data-label);text-align:left;font-weight:800;color:var(--muted)}
  .closing-flat-table tfoot{display:block;margin-top:10px}
  .closing-flat-table tfoot tr{display:grid;grid-template-columns:1fr auto;align-items:center;background:#edf6f8}
  .closing-flat-table tfoot th{display:block;border:0;padding:10px;text-align:right}
  .closing-flat-table tfoot th:first-child{text-align:left}
  .closing-company-card summary{display:grid;grid-template-columns:minmax(0,1fr) auto}
  .closing-company-cost{min-width:100px}
}


/* v2.9 — fechamento mensal em cartões responsivos, sem corte horizontal */
.closing-summary-card{overflow:visible!important;max-width:100%}
.closing-record-list{display:grid;gap:12px;min-width:0;max-width:100%}
.closing-record{min-width:0;max-width:100%;border:1px solid var(--line);border-radius:14px;background:#f9fcfd;padding:14px;display:grid;grid-template-columns:minmax(190px,1.45fr) minmax(310px,2fr);gap:16px;align-items:center;overflow:hidden}
.closing-record-heading{display:flex;align-items:center;gap:12px;min-width:0}
.closing-record-icon{width:42px;height:42px;border-radius:12px;background:#e5f2f5;display:grid;place-items:center;font-size:1.2rem;flex:0 0 auto}
.closing-record-title{min-width:0;display:grid;gap:4px}
.closing-record-title span,.closing-record-metric span{color:var(--muted);font-size:.78rem;font-weight:800;text-transform:uppercase;letter-spacing:.02em}
.closing-record-title strong{display:block;min-width:0;color:var(--blue-dark);font-size:1rem;line-height:1.28;white-space:normal;overflow-wrap:anywhere;word-break:break-word}
.closing-record-values{min-width:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}
.closing-record-metric{min-width:0;padding:10px 11px;border:1px solid #dbe8ec;border-radius:11px;background:#fff;display:grid;gap:5px}
.closing-record-metric b{display:block;min-width:0;color:var(--blue-dark);font-size:1rem;line-height:1.2;white-space:normal;overflow-wrap:anywhere}
.closing-record-total{background:#edf7f8;border-color:#bddde4}
.closing-record-total b{color:var(--blue);font-size:1.08rem}
.closing-grand-total{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:15px 16px;border-radius:13px;background:var(--blue);color:#fff;min-width:0}
.closing-grand-total span{font-weight:800;min-width:0;overflow-wrap:anywhere}
.closing-grand-total b{font-size:1.2rem;white-space:nowrap}
@media(max-width:900px){
  .closing-record{grid-template-columns:minmax(0,1fr)}
}
@media(max-width:560px){
  .closing-summary-card{padding:12px!important}
  .closing-record{padding:12px;gap:12px}
  .closing-record-values{grid-template-columns:repeat(2,minmax(0,1fr))}
  .closing-record-total{grid-column:1/-1}
  .closing-record-metric{padding:9px}
  .closing-grand-total{display:grid;grid-template-columns:minmax(0,1fr);gap:5px}
  .closing-grand-total b{white-space:normal}
}

/* v3.1 — checklist de produtos e módulo opcional de quantidades */
.material-quantity-fields { margin-top: 10px; }


/* v3.3 — resfriamento funcional e preenchimento de entrada */
.ramp-status-card { position: relative; overflow: hidden; }
.ramp-status-card.ramp-occupied { border: 2px solid #e6b84a; box-shadow: 0 8px 24px rgba(181, 128, 0, .12); }
.ramp-status-card.ramp-free { border: 2px solid #b9dfc7; }
.ramp-availability { margin-top: 8px; }
.ramp-status-card .kpi-list { background: #f7fafb; border-radius: 14px; padding: 8px 14px; }
@media (max-width: 720px) {
  .ramp-status-card .actions { display: grid; grid-template-columns: 1fr; }
  .ramp-status-card .actions .btn { width: 100%; }
}

/* v3.3 */
#dailyEntryHint.hidden{display:none}
#dailyEntryHint{margin-top:-4px}
.btn.danger{background:#b4232f;color:#fff;border-color:#b4232f}
.btn.danger:hover{filter:brightness(.94)}


/* Senna Laudos v3.4 — seleção acumulativa de fotos */
.report-photo-picker{border:1px solid #d8e4e8;border-radius:16px;padding:16px;background:#fbfdfe}
.photo-picker-help{margin:4px 0 12px}
.photo-picker-actions{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.visually-hidden-file{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.pending-photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin:10px 0}
.pending-photo-empty{grid-column:1/-1;border:1px dashed #b9cbd1;border-radius:12px;padding:14px;color:#667b84;text-align:center;background:#fff}
.pending-photo-card{position:relative;border:1px solid #d8e4e8;border-radius:14px;overflow:hidden;background:#fff;min-height:145px;display:flex;flex-direction:column}
.pending-photo-card img{width:100%;height:110px;object-fit:cover;background:#edf3f5}
.pending-pdf-icon{height:110px;display:grid;place-items:center;font-size:42px;background:#edf3f5}
.pending-photo-meta{display:flex;justify-content:space-between;gap:8px;padding:9px;font-size:12px;align-items:center}
.pending-photo-meta b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pending-photo-remove{position:absolute;top:6px;right:6px;width:32px;height:32px;border:0;border-radius:50%;background:rgba(20,35,42,.86);color:#fff;font-weight:800;cursor:pointer}
@media (max-width:640px){.photo-picker-actions .btn{flex:1 1 140px}.pending-photo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}


/* v3.5 — operação offline e sincronização automática */
.offline-banner {
  position: sticky;
  top: 78px;
  z-index: 19;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  min-height: 44px;
  padding: 8px 16px;
  font-size: 13px;
  font-weight: 800;
  border-bottom: 1px solid transparent;
}
.offline-banner.offline {
  background: #fff2d8;
  color: #744b00;
  border-color: #efd18e;
}
.offline-banner.online {
  background: #e4f5ee;
  color: #126843;
  border-color: #acd9c5;
}
.offline-banner .btn {
  padding: 7px 10px;
  font-size: 12px;
}
.badge.offline {
  background: #e8eef8;
  color: #315b97;
}
@media (max-width: 820px) {
  .offline-banner { top: 66px; align-items: flex-start; text-align: left; }
}

/* v3.8 — PDF oficial para auditoria */
.audit-card {
  border: 1px solid #82b8c3;
  background: linear-gradient(180deg, #f8fdfe 0%, #eef7f9 100%);
}
.audit-certificate textarea {
  width: 100%;
  font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
  font-size: 12px;
  word-break: break-all;
  resize: none;
}

/* v3.8.12 — mantém a correção definitiva do deslocamento horizontal em Novo laudo */
html,
body {
  overflow-x: hidden !important;
  overscroll-behavior-x: none;
}

body.report-view-active,
body.report-view-active #appView,
body.report-view-active .main,
body.report-view-active #content,
body.report-view-active #reportForm {
  min-inline-size: 0 !important;
  max-inline-size: 100% !important;
  overflow-x: hidden !important;
  overscroll-behavior-x: none;
}

body.report-view-active #reportForm {
  display: block;
  inline-size: 100% !important;
  width: 100% !important;
  max-width: 1320px !important;
  margin-inline: auto !important;
  padding: 0 !important;
  position: relative;
}

body.report-view-active #reportForm,
body.report-view-active #reportForm * {
  box-sizing: border-box;
}

body.report-view-active #reportForm .form-section,
body.report-view-active #reportForm .form-grid,
body.report-view-active #reportForm .check-list,
body.report-view-active #reportForm .check-row,
body.report-view-active #reportForm .grid,
body.report-view-active #reportForm .report-photo-picker,
body.report-view-active #reportForm .pending-photo-grid,
body.report-view-active #reportForm .signature-box {
  min-width: 0 !important;
  width: 100%;
  max-width: 100% !important;
}

body.report-view-active #reportForm .form-section,
body.report-view-active #reportForm .check-row,
body.report-view-active #reportForm .report-photo-picker,
body.report-view-active #reportForm .signature-box {
  overflow-x: hidden !important;
}

body.report-view-active #reportForm label,
body.report-view-active #reportForm input,
body.report-view-active #reportForm select,
body.report-view-active #reportForm textarea,
body.report-view-active #reportForm canvas,
body.report-view-active #reportForm img,
body.report-view-active #reportForm .notice,
body.report-view-active #reportForm .muted,
body.report-view-active #reportForm .section-title,
body.report-view-active #reportForm .section-title > * {
  min-width: 0 !important;
  max-width: 100% !important;
  overflow-wrap: anywhere;
}

body.report-view-active #reportForm input,
body.report-view-active #reportForm select,
body.report-view-active #reportForm textarea,
body.report-view-active #reportForm canvas {
  display: block;
  width: 100% !important;
  inline-size: 100% !important;
}

body.report-view-active #reportForm .segmented {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  width: min(100%, 230px);
  max-width: 100%;
  min-width: 0;
  overflow: hidden;
}

body.report-view-active #reportForm .segmented label,
body.report-view-active #reportForm .segmented span {
  min-width: 0 !important;
  width: 100%;
  max-width: 100%;
}

body.report-view-active #reportForm .btn {
  max-width: 100%;
  white-space: normal;
  overflow-wrap: anywhere;
}

@media (max-width: 820px) {
  body.report-view-active {
    width: 100%;
    max-width: 100%;
    position: relative;
  }

  body.report-view-active .sidebar:not(.open) {
    visibility: hidden;
    pointer-events: none;
  }

  body.report-view-active .main,
  body.report-view-active #content {
    width: 100% !important;
    max-width: 100% !important;
    margin: 0 !important;
  }

  body.report-view-active #content {
    padding-left: 12px !important;
    padding-right: 12px !important;
  }

  body.report-view-active #reportForm .form-section {
    margin-left: 0 !important;
    margin-right: 0 !important;
    padding: 12px !important;
  }

  body.report-view-active #reportForm .check-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) !important;
    gap: 10px;
  }

  body.report-view-active #reportForm .segmented {
    width: 100%;
  }

  body.report-view-active #reportForm .material-quantity-fields,
  body.report-view-active #reportForm #signatureSection,
  body.report-view-active #reportForm .photo-picker-actions,
  body.report-view-active #reportForm > .toolbar {
    width: 100%;
    max-width: 100%;
    grid-template-columns: minmax(0, 1fr) !important;
  }

  body.report-view-active #reportForm .photo-picker-actions,
  body.report-view-active #reportForm > .toolbar {
    display: grid;
  }

  body.report-view-active #reportForm .photo-picker-actions .btn,
  body.report-view-active #reportForm > .toolbar .btn {
    width: 100%;
  }

  body.report-view-active #reportForm .pending-photo-grid {
    grid-template-columns: minmax(0, 1fr) !important;
  }
}

/* v3.8.12 — a tela pública de login não expõe atalhos técnicos. */
#loginView a[href*="diagnostico"], #loginView a[href*="diagnostic"] { display: none !important; }

/* =========================================================
   SENNA LAUDOS v3.9.7 — FILA, SECAGEM, EQUIPE E CHECKLIST
   ========================================================= */
html, body { max-width: 100%; overflow-x: hidden; }

/* Checklist: leitura rápida e seleção evidente */
.check-row {
  border: 1px solid #d7e0e4;
  border-radius: 18px;
  padding: 16px;
  background: #fff;
  box-shadow: 0 4px 16px rgba(15, 57, 69, .045);
}
.check-row > strong {
  display: block;
  color: #162c34;
  font-size: 1.08rem;
  line-height: 1.3;
  font-weight: 900;
  letter-spacing: -.01em;
}
.segmented {
  background: #e8eff2;
  border: 4px solid #e8eff2;
  border-radius: 15px;
  overflow: hidden;
}
.segmented label span {
  min-height: 48px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #334850;
  font-weight: 850;
  transition: background .16s ease, color .16s ease, box-shadow .16s ease, transform .16s ease;
}
.segmented input:checked + span {
  background: #07586b !important;
  color: #fff !important;
  box-shadow: 0 5px 16px rgba(7, 88, 107, .28);
  transform: translateY(-1px);
}
.check-row input[placeholder*="Justificativa"] {
  font-weight: 650;
  color: #253b43;
  background: #fbfdfe;
}

/* Fila e operação */
.queue-board {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 14px;
}
.queue-card {
  position: relative;
  border: 1px solid #d9e2e6;
  border-left: 8px solid #8aa0a8;
  border-radius: 18px;
  padding: 16px;
  background: #fff;
  box-shadow: 0 8px 24px rgba(14, 54, 67, .07);
  min-width: 0;
}
.queue-card.waiting { border-left-color: #d7a91e; background: #fffdf4; }
.queue-card.washing { border-left-color: #1779b8; background: #f3faff; }
.queue-card.drying { border-left-color: #df7a16; background: #fff8f1; }
.queue-card.photos { border-left-color: #7f57b2; background: #faf7ff; }
.queue-card.released, .queue-card.completed { border-left-color: #18875c; background: #f2fcf7; }
.queue-card.cancelled { border-left-color: #a7b0b4; opacity: .78; }
.queue-card-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 12px;
}
.queue-card-head > div:first-child { min-width: 0; }
.queue-card-head b { font-size: 1.05rem; color: #18313a; overflow-wrap: anywhere; }
.queue-position {
  display: inline-grid;
  place-items: center;
  min-width: 34px;
  height: 34px;
  margin-right: 8px;
  border-radius: 50%;
  background: #102f3a;
  color: #fff;
  font-weight: 900;
}
.queue-status {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  white-space: nowrap;
  border-radius: 999px;
  padding: 7px 10px;
  font-size: .79rem;
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: .02em;
  background: #e8eff2;
  color: #29434c;
}
.queue-status.waiting { background: #fff0b8; color: #745600; }
.queue-status.washing { background: #d9efff; color: #07578b; }
.queue-status.drying { background: #ffe2c3; color: #8a4100; }
.queue-status.photos { background: #eadcff; color: #58358c; }
.queue-status.released, .queue-status.completed { background: #d9f5e7; color: #096b43; }
.queue-status.cancelled { background: #eceff1; color: #5b676c; }
.queue-card .queue-details {
  display: grid;
  gap: 7px;
  color: #3f535a;
  font-size: .92rem;
}
.queue-card .toolbar { margin-top: 14px; display: flex; flex-wrap: wrap; gap: 8px; }
.queue-card .toolbar .btn { flex: 1 1 140px; }

/* Rampas */
.ramp-mini-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}
.ramp-mini {
  min-height: 100px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 8px;
  border: 1px solid #d8e2e6;
  border-left: 7px solid #18875c;
  border-radius: 16px;
  padding: 14px;
  background: #f5fcf8;
}
.ramp-mini b { color: #18313a; font-size: 1.05rem; }
.ramp-mini span { color: #596a70; overflow-wrap: anywhere; }
.ramp-mini.washing { border-left-color: #1779b8; background: #f3faff; }
.ramp-mini.drying { border-left-color: #df7a16; background: #fff8f1; }
.ramp-mini.photos { border-left-color: #7f57b2; background: #faf7ff; }
.ramp-mini.free { border-left-color: #18875c; }

/* Equipe, permissões e comissões */
.permission-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
  gap: 9px;
  margin-top: 12px;
}
.permission-option {
  display: flex !important;
  align-items: center;
  gap: 9px;
  min-height: 48px;
  padding: 10px 12px;
  border: 1px solid #d7e1e5;
  border-radius: 13px;
  background: #f8fbfc;
  cursor: pointer;
}
.permission-option input { width: 20px; height: 20px; accent-color: #07586b; flex: 0 0 auto; }
.permission-option span { font-weight: 750; color: #2b424a; }
.permission-option:has(input:checked) { border-color: #77b9c8; background: #ecf8fa; }

/* Fotos: descrição obrigatória e legível */
.pending-photo-card {
  align-items: stretch;
  background: #fff;
  border: 1px solid #d7e1e5;
  border-radius: 16px;
  overflow: hidden;
}
.pending-photo-card img { width: 118px; min-height: 118px; object-fit: cover; }
.pending-photo-meta { min-width: 0; flex: 1; padding: 10px; display: flex; flex-direction: column; gap: 7px; }
.photo-description-input {
  width: 100%;
  min-height: 44px;
  border: 1px solid #bfcfd5;
  border-radius: 11px;
  padding: 10px 12px;
  font-size: .92rem;
  font-weight: 700;
  background: #fbfdfe;
  color: #1f363e;
}
.photo-description-input:focus { border-color: #08748a; box-shadow: 0 0 0 3px rgba(8, 116, 138, .14); outline: none; }
.evidence-item {
  margin: 0;
  border: 1px solid #d7e1e5;
  border-radius: 15px;
  overflow: hidden;
  background: #fff;
}
.evidence-item img { display: block; width: 100%; aspect-ratio: 16 / 10; object-fit: cover; }
.evidence-item figcaption {
  padding: 9px 11px;
  color: #243d45;
  font-weight: 750;
  line-height: 1.3;
  background: #f7fafb;
}

/* Tela externa */
.public-board-shell { min-height: 100vh; background: #eef4f6; padding: 24px; }
.public-board-grid { display: grid; gap: 14px; grid-template-columns: repeat(auto-fit, minmax(270px, 1fr)); }

@media (max-width: 760px) {
  .queue-board, .ramp-mini-grid, .permission-grid { grid-template-columns: minmax(0, 1fr); }
  .queue-card-head { align-items: center; }
  .queue-card .toolbar { display: grid; grid-template-columns: minmax(0, 1fr); }
  .queue-card .toolbar .btn { width: 100%; }
  .pending-photo-card { display: grid; grid-template-columns: 104px minmax(0, 1fr) auto; }
  .pending-photo-card img { width: 104px; height: 100%; min-height: 128px; }
}


/* Senna Laudos v3.9.12 — painel da fila e fluxo parcial de fotos */
.queue-page-header {
  display: flex;
  align-items: center;
  gap: 14px;
  margin: 0 0 18px;
  padding: 14px 16px;
  border: 1px solid #d7e4e8;
  border-radius: 18px;
  background: linear-gradient(135deg,#ffffff,#eef8fb);
}
.queue-page-header h2 { margin: 0; color: #17313a; font-size: 1.35rem; }
.queue-page-header p { margin: 4px 0 0; color: #63767d; }
.queue-home-button {
  width: 52px;
  height: 52px;
  flex: 0 0 52px;
  display: grid;
  place-items: center;
  border: 0;
  border-radius: 16px;
  background: #075d70;
  color: #fff;
  font-size: 2rem;
  font-weight: 900;
  line-height: 1;
  box-shadow: 0 7px 18px rgba(7,93,112,.22);
}
.queue-status.washing {
  font-size: .94rem;
  padding: 10px 14px;
  background: #cfeaff;
  color: #004e80;
  box-shadow: 0 4px 12px rgba(23,121,184,.17);
}
.queue-responsible-highlight {
  margin-top: 10px;
  padding: 10px 12px;
  border-radius: 12px;
  background: rgba(7,93,112,.08);
  color: #173d48;
  font-size: .98rem;
  line-height: 1.35;
}
.queue-stage-action {
  min-height: 62px;
  display: flex !important;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  gap: 3px;
  padding: 12px 16px !important;
  text-align: left;
  line-height: 1.18;
}
.queue-stage-action span { font-size: 1rem; font-weight: 900; }
.queue-stage-action small { font-size: .78rem; font-weight: 700; opacity: .9; }
.report-submit-toolbar .btn { min-height: 48px; }
@media (max-width:760px) {
  .queue-page-header { padding: 12px; }
  .queue-home-button { width: 48px; height: 48px; flex-basis: 48px; }
  .queue-operation-title { align-items: stretch; }
  .queue-operation-title > .btn { width: 100%; }
  .queue-status.washing { white-space: normal; text-align: center; }
  .report-submit-toolbar { display: grid; grid-template-columns: 1fr; width: 100%; }
  .report-submit-toolbar .btn { width: 100%; }
}

/* Senna Laudos v3.9.12 — sequência de câmera, exclusões seguras e 9 eixos */
.queue-nine-axles-note{grid-column:1/-1;padding:10px 12px;border-radius:12px;background:#fff5cf;color:#6e5500;font-weight:800}.queue-action-grid:has(.queue-nine-axles-note){grid-template-columns:repeat(2,minmax(0,1fr))}.queue-action-grid:has(.queue-nine-axles-note) button{grid-column:1/-1}.queue-responsible-highlight{line-height:1.4}.pending-photo-grid{scroll-margin-top:90px}@media(max-width:720px){.queue-action-grid:has(.queue-nine-axles-note){grid-template-columns:1fr}}

/* Senna Laudos v3.9.12 — segunda foto aberta imediatamente após confirmar a descrição. */

/* Senna Laudos v3.9.12 — câmera integrada com duas fotos em sequência */
body.senna-camera-open { overflow: hidden !important; }
.senna-camera-overlay {
  position: fixed;
  inset: 0;
  z-index: 100000;
  background: #06171d;
  display: flex;
  align-items: stretch;
  justify-content: center;
  color: #fff;
}
.senna-camera-shell {
  width: min(100%, 760px);
  min-height: 100dvh;
  display: grid;
  grid-template-rows: auto 1fr auto;
  background: #06171d;
}
.senna-camera-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: max(14px, env(safe-area-inset-top)) 16px 12px;
  background: #0b6f8a;
}
.senna-camera-header > div { display: grid; gap: 2px; }
.senna-camera-header strong { font-size: clamp(20px, 5vw, 28px); }
.senna-camera-header small { font-size: 15px; opacity: .92; }
.senna-camera-header button {
  width: 48px;
  height: 48px;
  border: 0;
  border-radius: 50%;
  background: rgba(255,255,255,.16);
  color: #fff;
  font-size: 28px;
  line-height: 1;
}
.senna-camera-stage {
  position: relative;
  min-height: 0;
  overflow: hidden;
  background: #000;
}
.senna-camera-stage video {
  width: 100%;
  height: 100%;
  min-height: 52dvh;
  object-fit: cover;
  display: block;
}
.senna-camera-description {
  position: absolute;
  inset: 0;
  padding: 18px;
  display: grid;
  align-content: center;
  gap: 14px;
  background: rgba(4,18,24,.94);
  overflow-y: auto;
}
.senna-camera-description.hidden { display: none !important; }
.senna-camera-description img {
  width: 100%;
  max-height: 46dvh;
  object-fit: contain;
  border-radius: 16px;
  background: #000;
}
.senna-camera-description label {
  display: grid;
  gap: 8px;
  font-size: 18px;
  font-weight: 800;
}
.senna-camera-description input {
  width: 100%;
  min-height: 56px;
  border: 2px solid #b9d3da;
  border-radius: 14px;
  padding: 12px 14px;
  font-size: 18px;
  background: #fff;
  color: #17323d;
  box-sizing: border-box;
}
.senna-camera-description-actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}
.senna-camera-footer {
  min-height: 112px;
  padding: 12px 18px max(18px, env(safe-area-inset-bottom));
  background: #06171d;
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  gap: 16px;
}
.senna-camera-footer span { font-size: 16px; line-height: 1.35; }
.senna-camera-capture {
  width: 74px;
  height: 74px;
  border-radius: 50%;
  border: 5px solid #fff;
  background: transparent;
  display: grid;
  place-items: center;
  padding: 0;
}
.senna-camera-capture > span {
  width: 54px;
  height: 54px;
  border-radius: 50%;
  background: #fff;
  display: block;
}
.senna-camera-capture:disabled { opacity: .5; }
@media (max-width: 540px) {
  .senna-camera-description-actions { grid-template-columns: 1fr; }
  .senna-camera-footer { min-height: 104px; }
}


/* Senna Laudos v3.9.22 — modo demonstração e início seguro da produção */
.demo-mode-banner{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;background:#8c250f;color:#fff;padding:10px 16px;text-align:center;box-shadow:0 3px 12px #0002;position:sticky;top:0;z-index:15}.demo-mode-banner strong{font-size:.92rem;letter-spacing:.04em}.demo-mode-banner span{font-size:.82rem;font-weight:700}.demo-mode-banner.hidden{display:none}.operation-mode-card{grid-column:1/-1}.operation-summary-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px}.operation-actions{margin-top:14px;display:flex;gap:10px;flex-wrap:wrap}.operation-actions .btn{flex:1 1 220px}.demo-mode-active .topbar{border-bottom-color:#8c250f}@media(max-width:720px){.operation-summary-grid{grid-template-columns:1fr}.demo-mode-banner{align-items:flex-start;flex-direction:column;gap:2px;text-align:left}}

/* v3.9.22 — histórico paginado */
.report-history-toolbar{align-items:end}.report-pagination{display:flex;justify-content:space-between;align-items:center;gap:12px;padding-top:16px;margin-top:12px;border-top:1px solid #d9e4e8;flex-wrap:wrap}.report-pagination .actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.report-page-number{min-width:42px}.report-pagination button:disabled{opacity:.45;cursor:not-allowed}@media(max-width:720px){.report-pagination{align-items:stretch}.report-pagination>span{text-align:center;width:100%}.report-pagination .actions{justify-content:center;width:100%}.report-history-toolbar label{min-width:145px;flex:1}}


/* Senna Laudos v3.9.22 — monitor da fila em tela cheia */
body.queue-monitor-mode { overflow: hidden; background: #eef5f7; }
body.queue-monitor-mode .app-shell { display: block; min-height: 100vh; }
body.queue-monitor-mode .sidebar,
body.queue-monitor-mode .topbar,
body.queue-monitor-mode #demoModeBanner,
body.queue-monitor-mode #offlineBanner { display: none !important; }
body.queue-monitor-mode .main { width: 100%; min-height: 100vh; grid-column: auto; }
body.queue-monitor-mode .content { padding: 0 !important; width: 100%; height: 100vh; overflow: hidden; }
.queue-monitor-embed { position: relative; width: 100%; height: 100vh; background: #eef5f7; overflow: hidden; }
.queue-monitor-embed iframe { width: 100%; height: 100%; border: 0; display: block; background: #eef5f7; }
.queue-monitor-loading { position: absolute; inset: 0; z-index: 2; display: grid; place-items: center; background: #eef5f7; color: #17323d; font-size: clamp(20px,3vw,34px); font-weight: 900; }
.queue-monitor-loading.hidden { display: none; }


/* Senna Laudos v3.9.22 — saída segura do perfil exclusivo de monitoramento */
.queue-monitor-exit{position:fixed;right:16px;top:14px;z-index:30;border:0;border-radius:12px;background:rgba(18,43,54,.9);color:#fff;padding:11px 15px;font:800 14px Arial,sans-serif;box-shadow:0 5px 18px #0004;cursor:pointer}.queue-monitor-exit:hover{filter:brightness(1.08)}

/* =========================================================
   SENNA LAUDOS v3.9.24 — operação livre, comissão e equipe
   ========================================================= */
.queue-wash-finish-box{
  margin-top:12px;
  padding:13px;
  border:1px solid #d6e2e6;
  border-radius:14px;
  background:#f8fbfc;
  display:grid;
  gap:10px;
}
.queue-wash-finish-box .notice{margin:0}
.queue-wash-finish-box textarea{min-height:74px;background:#fff}
.queue-wash-finish-box .form-grid{width:100%}
.ramp-shared-entry{
  display:grid;
  gap:7px;
  padding:12px;
  margin-top:10px;
  border:1px solid var(--line);
  border-radius:13px;
  background:#f8fbfc;
}
.ramp-shared-entry + .ramp-shared-entry{margin-top:9px}
.permission-card .permission-grid{margin-bottom:12px}
.permission-card .notice{margin:12px 0}
.closing-company-summary-list .closing-record-company{align-items:stretch}
@media(max-width:760px){
  .queue-wash-finish-box{padding:11px}
  .queue-wash-finish-box .form-grid{grid-template-columns:1fr}
  .queue-wash-finish-box [class*="span-"]{grid-column:span 1}
}


/* Senna Laudos v3.9.31 — nota/recibo preenchível e impressão A5 */
.service-note-editor{width:min(100%,980px);margin-inline:auto}.service-note-card{overflow:hidden}.service-note-legal{margin-bottom:16px}.service-note-lines-head,.service-note-line{display:grid;grid-template-columns:80px minmax(0,1fr) 150px;gap:0}.service-note-lines-head{background:#eef4f6;border:1px solid var(--line);border-bottom:0;border-radius:12px 12px 0 0}.service-note-lines-head b{padding:10px;text-align:center;font-size:.78rem}.service-note-lines{border:1px solid var(--line);border-radius:0 0 12px 12px;overflow:hidden}.service-note-line input{border:0;border-radius:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line);min-height:48px}.service-note-line input:last-child{border-right:0;text-align:right}.service-note-line:last-child input{border-bottom:0}.service-note-total{margin:14px 0;display:flex;justify-content:flex-end;align-items:center;gap:14px;font-weight:900}.service-note-total span{color:var(--muted)}.service-note-total b{min-width:150px;text-align:right;font-size:1.25rem;color:var(--blue-dark)}.service-note-actions{justify-content:flex-end}.service-note-actions .btn{min-width:150px}@media(max-width:700px){.service-note-lines-head{display:none}.service-note-lines{display:grid;gap:10px;border:0;overflow:visible}.service-note-line{grid-template-columns:90px minmax(0,1fr);border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff}.service-note-line input{border-bottom:1px solid var(--line)}.service-note-line input[data-note-desc]{grid-column:1/-1;grid-row:1}.service-note-line input[data-note-qty]{grid-column:1}.service-note-line input[data-note-value]{grid-column:2;border-right:0}.service-note-actions{display:grid;grid-template-columns:1fr}.service-note-actions .btn{width:100%}.service-note-total{justify-content:space-between}.service-note-head-fields{grid-template-columns:1fr!important}}

/* Senna Laudos v3.9.31 — recibo numerado, permissões em modal e cards de fechamento clicáveis */
.service-note-head-fields input[name="note_number"][readonly]{font-weight:900;color:var(--blue-dark);background:#eef8fa;border-color:#a9d0d8;letter-spacing:.06em}
.permission-modal .permission-grid{max-height:58vh;overflow:auto;padding-right:4px}
.permission-modal-shortcuts{justify-content:flex-end}
.user-row-actions{min-width:340px}
.user-row-actions .btn{white-space:nowrap}
.closing-metric-action{min-height:132px}
.closing-metric-action:focus-visible{outline:3px solid rgba(11,111,141,.18);outline-offset:2px}
@media(max-width:760px){.user-row-actions{min-width:0}.permission-modal .permission-grid{max-height:none}.permission-modal-shortcuts{display:grid;grid-template-columns:1fr 1fr}.permission-modal-shortcuts .btn{width:100%}}


/* =========================================================
   SENNA LAUDOS v3.9.27 — PRIORIDADE VISUAL DA OPERAÇÃO
   Lavagem/Secagem = azul | Fotos = amarelo | Laudo = verde
   ========================================================= */
.queue-card.washing,
.queue-card.drying {
  background: #1779b8 !important;
  border-color: #0d5f94 !important;
  color: #fff !important;
  box-shadow: 0 10px 28px rgba(13,95,148,.24) !important;
}
.queue-card.washing .queue-card-head b,
.queue-card.drying .queue-card-head b,
.queue-card.washing .queue-details,
.queue-card.drying .queue-details,
.queue-card.washing .queue-meta,
.queue-card.drying .queue-meta,
.queue-card.washing .queue-plates,
.queue-card.drying .queue-plates,
.queue-card.washing .queue-responsible-highlight,
.queue-card.drying .queue-responsible-highlight,
.queue-card.washing .muted,
.queue-card.drying .muted { color: #fff !important; }
.queue-card.washing .queue-status,
.queue-card.drying .queue-status {
  background: rgba(255,255,255,.94) !important;
  color: #0d5f94 !important;
  box-shadow: none !important;
}
.queue-card.washing .queue-responsible-highlight,
.queue-card.drying .queue-responsible-highlight,
.queue-card.washing .queue-internal-note,
.queue-card.drying .queue-internal-note {
  background: rgba(255,255,255,.14) !important;
  border-color: rgba(255,255,255,.28) !important;
}
.queue-card.washing label,
.queue-card.drying label { color: #fff !important; }
.queue-card.washing input,
.queue-card.washing select,
.queue-card.drying input,
.queue-card.drying select { background:#fff !important; color:#20343c !important; }

.queue-card.photos {
  background: #ffd54f !important;
  border-color: #c69500 !important;
  color: #302600 !important;
  box-shadow: 0 10px 28px rgba(174,127,0,.22) !important;
}
.queue-card.photos .queue-card-head b,
.queue-card.photos .queue-details,
.queue-card.photos .queue-meta,
.queue-card.photos .queue-plates,
.queue-card.photos .queue-responsible-highlight,
.queue-card.photos .muted { color: #302600 !important; }
.queue-card.photos .queue-status { background:#3f3300 !important; color:#fff !important; }
.queue-card.photos .queue-responsible-highlight { background:rgba(255,255,255,.34) !important; }

.queue-card.released {
  background: #168253 !important;
  border-color: #0d5f3b !important;
  color: #fff !important;
  box-shadow: 0 10px 28px rgba(13,95,59,.22) !important;
}
.queue-card.released .queue-card-head b,
.queue-card.released .queue-details,
.queue-card.released .queue-meta,
.queue-card.released .queue-plates,
.queue-card.released .queue-responsible-highlight,
.queue-card.released .muted { color:#fff !important; }
.queue-card.released .queue-status { background:#fff !important; color:#0d6b43 !important; }
.queue-card.released .queue-responsible-highlight { background:rgba(255,255,255,.14) !important; }

/* Resumo das três rampas usa a mesma linguagem de cores. */
.ramp-mini.washing,.ramp-mini.drying,
.ramp-operation-card.washing,.ramp-operation-card.drying { border-color:#1779b8 !important; background:#f3faff !important; }
.ramp-mini.photos,.ramp-operation-card.photos { border-color:#c69500 !important; background:#fff7cc !important; }


/* Senna Laudos v3.9.31 — senha visível sob demanda e ações de comissão */
.password-field{position:relative!important;display:block!important;width:100%;min-width:0}
.password-field>input{width:100%!important;padding-right:52px!important}
.password-toggle{display:grid;place-items:center;position:absolute;right:6px;top:50%;transform:translateY(-50%);width:38px;height:38px;border:0;border-radius:9px;background:#eef3f5;color:#17323d;z-index:2;cursor:pointer;font-size:18px;line-height:1}
.commission-row-actions{display:grid;grid-template-columns:1fr;gap:7px;min-width:132px}.commission-row-actions .btn{width:100%}


/* Senna Laudos v4.0.1 — recibo direto do laudo em tela exclusiva */
.receipt-only-shell{
  width:min(100%,1040px);
  margin-inline:auto;
  display:grid;
  gap:16px;
}
.receipt-direct-banner{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(260px,.85fr);
  gap:16px;
  align-items:center;
  padding:16px 18px;
  margin-bottom:16px;
  border:1px solid #b8d8df;
  border-radius:16px;
  background:linear-gradient(135deg,#eef9fb,#fff);
}
.receipt-direct-banner>div{display:grid;gap:4px}
.receipt-direct-banner span{
  color:var(--muted);
  font-size:.78rem;
  font-weight:900;
  letter-spacing:.04em;
}
.receipt-direct-banner strong{
  color:var(--blue-dark);
  font-size:1.35rem;
  overflow-wrap:anywhere;
}
.receipt-direct-banner p{
  margin:0;
  color:#3a525b;
  font-weight:700;
  line-height:1.45;
}
.receipt-linked-summary{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:10px;
  padding:12px;
  border:1px solid #d6e5e9;
  border-radius:13px;
  background:#f7fbfc;
}
.receipt-linked-summary>div{min-width:0;display:grid;gap:4px}
.receipt-linked-summary small{color:var(--muted);font-weight:800}
.receipt-linked-summary b{color:var(--blue-dark);overflow-wrap:anywhere}
.receipt-from-report .service-note-main-row input[data-note-desc],
.receipt-from-report .service-note-main-row input[data-note-value]{
  min-height:70px;
  font-size:1.03rem;
}
.receipt-from-report .service-note-main-row input[data-note-desc]{
  font-weight:800;
  color:#203941;
}
.receipt-from-report .service-note-main-row input[data-note-value]{
  font-size:1.15rem;
  font-weight:900;
  color:var(--blue-dark);
}
.receipt-from-report .service-note-actions{
  position:sticky;
  bottom:0;
  z-index:3;
  padding:12px;
  margin:12px -4px -4px;
  border-top:1px solid var(--line);
  background:rgba(255,255,255,.96);
  backdrop-filter:blur(8px);
}
@media(max-width:700px){
  .receipt-direct-banner{grid-template-columns:1fr;padding:14px}
  .receipt-linked-summary{grid-template-columns:1fr}
  .receipt-from-report .service-note-main-row input[data-note-desc],
  .receipt-from-report .service-note-main-row input[data-note-value]{min-height:58px}
}


/* =========================================================
   SENNA LAUDOS v4.0.1 — legibilidade do serviço extra
   A caixa interna é clara mesmo dentro do card azul.
   ========================================================= */
.queue-extra-service-box{
  display:grid;
  gap:12px;
  padding:2px;
}
.queue-card.washing .queue-wash-finish-box,
.queue-card.drying .queue-wash-finish-box{
  color:#20343c !important;
}
.queue-card.washing .queue-extra-service-box label,
.queue-card.drying .queue-extra-service-box label,
.queue-card.washing .queue-extra-service-box .queue-extra-label,
.queue-card.drying .queue-extra-service-box .queue-extra-label{
  color:#31464f !important;
}
.queue-card.washing .queue-extra-service-box .queue-extra-label > span,
.queue-card.drying .queue-extra-service-box .queue-extra-label > span{
  display:block;
  color:#31464f !important;
  font-size:.92rem;
  font-weight:900;
  line-height:1.3;
  margin-bottom:7px;
}
.queue-card.washing .queue-extra-service-box .queue-internal-note,
.queue-card.drying .queue-extra-service-box .queue-internal-note{
  background:#eaf4f7 !important;
  border:1px solid #c9dde4 !important;
  color:#17323d !important;
}
.queue-card.washing .queue-extra-service-box .queue-internal-note strong,
.queue-card.drying .queue-extra-service-box .queue-internal-note strong{
  color:#17323d !important;
}
.queue-card.washing .queue-extra-service-box .queue-internal-note small,
.queue-card.drying .queue-extra-service-box .queue-internal-note small{
  color:#5d7179 !important;
}
.queue-card.washing .queue-extra-service-box input,
.queue-card.drying .queue-extra-service-box input{
  background:#fff !important;
  color:#20343c !important;
  border-color:#cbd9de !important;
}
.queue-card.washing .queue-extra-service-box input::placeholder,
.queue-card.drying .queue-extra-service-box input::placeholder{
  color:#75858c !important;
  opacity:1;
}


/* Senna Laudos v4.0.1 — filtro do resumo por funcionário */
.commission-summary-row{
  cursor:pointer;
  transition:background-color .15s ease, box-shadow .15s ease;
  -webkit-tap-highlight-color:transparent;
}
.commission-summary-row:hover td{
  background:#f2f8fa;
}
.commission-summary-row.selected td{
  background:#dff1f5 !important;
  color:#173944;
}
.commission-summary-row.selected td:first-child{
  box-shadow:inset 5px 0 0 var(--blue);
}
.commission-summary-row.selected b{
  color:var(--blue-dark);
}
.commission-filter-active{
  display:block;
  width:max-content;
  margin-top:4px;
  padding:3px 7px;
  border-radius:999px;
  background:var(--blue);
  color:#fff;
  font-size:.68rem;
  font-weight:900;
  line-height:1;
}


/* =========================================================
   SENNA LAUDOS UX 4.0 — operação simples e guiada
   ========================================================= */
.queue-register-details{margin-bottom:16px;border:1px solid var(--line);border-radius:16px;background:#fff;overflow:hidden}
.queue-register-details>summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:16px 18px;cursor:pointer;background:linear-gradient(135deg,#f8fcfd,#eef8fb)}
.queue-register-details>summary::-webkit-details-marker{display:none}
.queue-register-details>summary>div{display:grid;gap:4px}.queue-register-details>summary strong{font-size:1.05rem;color:var(--blue-dark)}
.queue-register-details>summary small{color:var(--muted);font-weight:650}.queue-register-details>summary>span{font-size:1.25rem;color:var(--blue)}
.queue-register-details[open]>summary{border-bottom:1px solid var(--line)}
.queue-register-details .queue-register-card{border:0;border-radius:0;box-shadow:none;margin:0}

.queue-main-action{min-height:58px!important;font-size:1rem!important;font-weight:900!important}

.queue-flow-steps{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;margin:12px 0 2px}
.queue-flow-steps span{min-width:0;display:flex;align-items:center;justify-content:center;gap:5px;padding:7px 5px;border-radius:10px;background:#eef3f5;color:#61747b;font-size:.72rem;font-weight:800;text-align:center}
.queue-flow-steps span i{width:20px;height:20px;flex:0 0 20px;display:grid;place-items:center;border-radius:50%;background:#dce6e9;color:#455d65;font-style:normal;font-size:.68rem}
.queue-flow-steps span.done{background:#e4f4ec;color:#176946}.queue-flow-steps span.done i{background:#18875c;color:#fff}
.queue-flow-steps span.current{background:#dff2f6;color:#07586b;box-shadow:inset 0 0 0 2px #7bbbc9}.queue-flow-steps span.current i{background:#07586b;color:#fff}

.queue-extra-details,.queue-more-actions{width:100%;border:1px solid #d7e3e7;border-radius:12px;background:#f9fcfd;overflow:hidden}
.queue-extra-details>summary,.queue-more-actions>summary{list-style:none;padding:11px 13px;cursor:pointer;font-weight:850;color:#31505a}
.queue-extra-details>summary::-webkit-details-marker,.queue-more-actions>summary::-webkit-details-marker{display:none}
.queue-extra-details[open]>summary,.queue-more-actions[open]>summary{border-bottom:1px solid #d7e3e7;background:#f2f8fa}
.queue-extra-details .queue-extra-service-box{padding:12px}.queue-more-actions .btn{width:calc(100% - 20px);margin:10px}

.report-stepper{position:sticky;top:88px;z-index:18;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;margin:0 0 14px;padding:8px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.96);backdrop-filter:blur(10px)}
.report-stepper button{min-width:0;border:0;border-radius:10px;padding:8px 5px;background:#eef3f5;color:#5b6e75;display:grid;place-items:center;gap:3px;font-weight:800}
.report-stepper button b{width:24px;height:24px;display:grid;place-items:center;border-radius:50%;background:#dce6e9}
.report-stepper button span{font-size:.7rem;text-align:center;overflow-wrap:anywhere}.report-stepper button.active{background:#dff2f6;color:#07586b}
.report-stepper button.active b{background:#07586b;color:#fff}.report-guided-section{scroll-margin-top:170px}

.global-search-btn{white-space:nowrap}.global-search-control{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px}
.global-search-control input{min-height:48px}.global-search-results{display:grid;gap:8px;margin-top:14px}
.global-search-results button{width:100%;border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:#fff;text-align:left;display:grid;gap:4px}
.global-search-results button:hover{background:#f4fafb;border-color:#a9ccd5}.global-search-results button b{color:var(--blue-dark)}
.global-search-results button span{color:var(--muted);font-size:.86rem}
.lavador-no-login{background:#f7fafb;border:1px solid var(--line);border-radius:12px;padding:10px 12px}

body.ux-operational .quickNewBtn,body.ux-apprentice .quickNewBtn{display:none}

@media(max-width:820px){
  .report-stepper{top:70px;padding:6px}.report-stepper button{padding:6px 2px}.report-stepper button span{font-size:.62rem}
  .queue-flow-steps span{display:grid;justify-items:center;padding:6px 2px;font-size:.62rem}
  .global-search-btn{width:42px;height:42px;padding:0;font-size:0}.global-search-btn::before{content:"🔎";font-size:18px}
  .global-search-control{grid-template-columns:1fr}
}
@media(max-width:520px){.queue-flow-steps{gap:3px}.queue-flow-steps span i{width:18px;height:18px;flex-basis:18px}}


/* =========================================================
   SENNA LAUDOS v4.0.1 — Mais opções legível no card azul
   ========================================================= */
.queue-more-actions{
  background:#f7fbfc !important;
  color:#28434d !important;
}
.queue-more-actions>summary{
  display:grid;
  gap:3px;
  color:#28434d !important;
  background:#f7fbfc !important;
}
.queue-more-actions>summary span{
  color:#28434d !important;
  font-size:1rem;
  font-weight:900;
}
.queue-more-actions>summary small{
  color:#6b7d84 !important;
  font-size:.78rem;
  font-weight:700;
}
.queue-more-actions[open]>summary{
  background:#eef6f8 !important;
  border-bottom:1px solid #d5e3e7 !important;
}
.queue-more-actions-body{
  display:grid;
  gap:7px;
  padding:12px;
  background:#fff !important;
}
.queue-more-actions .queue-cancel-action{
  width:100% !important;
  margin:0 !important;
  min-height:46px;
  border:1px solid #b4232f !important;
  background:#fff !important;
  color:#a51f2a !important;
  font-weight:900 !important;
}
.queue-more-actions .queue-cancel-action:hover{
  background:#fff2f3 !important;
}
.queue-more-actions-help{
  color:#6b7d84 !important;
  font-size:.76rem;
  font-weight:700;
  line-height:1.35;
}


/* Senna Laudos v4.1.0 */
.senna-camera-header-actions{display:flex;align-items:center;gap:8px}
.senna-camera-flash{border:1px solid rgba(255,255,255,.35);background:rgba(0,0,0,.28);color:#fff;border-radius:999px;padding:8px 12px;font-weight:900}
.senna-camera-flash.active{background:#ffe15a;color:#2c2500;border-color:#ffe15a}
.service-note-signature{margin-top:14px;padding:14px;border:1px solid var(--line);border-radius:14px;background:#f9fcfd}
.service-note-signature>label{display:block;margin-bottom:8px;font-weight:900;color:var(--blue-dark)}
.service-note-signature small{display:block;margin-top:6px;color:var(--muted);font-weight:700}


/* Senna Laudos v4.1.4 — pós-impressão simples */
.report-after-print-main{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.report-after-print-main .btn{min-height:52px;font-weight:900}.report-after-print-more{border:1px solid var(--line);border-radius:12px;background:#f8fbfc;overflow:hidden}.report-after-print-more>summary{list-style:none;cursor:pointer;padding:12px 14px;font-weight:850;color:var(--blue-dark)}.report-after-print-more>summary::-webkit-details-marker{display:none}.report-after-print-more[open]>summary{border-bottom:1px solid var(--line);background:#eef7fa}@media(max-width:700px){.report-after-print-main{grid-template-columns:1fr}.report-after-print-main .btn{width:100%}}

/* v4.2.1 - situação travada por etapa */
.workflow-status-locked{background:#eef8fa!important;border-color:#9cc8d2!important;color:#07586b!important;font-weight:900!important}


/* v4.2.1 — módulos QR público e Assistente Inteligente */
.assistant-shell{max-width:980px;margin-inline:auto}.assistant-card{display:grid;gap:14px}.assistant-scope{display:flex;flex-wrap:wrap;gap:7px}.assistant-scope span{padding:6px 9px;border-radius:999px;background:#eef7f9;color:#07586b;font-size:.78rem;font-weight:850}.assistant-conversation{min-height:330px;max-height:55vh;overflow:auto;padding:12px;border:1px solid var(--line);border-radius:16px;background:#f7fafb;display:grid;align-content:start;gap:10px}.assistant-message{max-width:88%;padding:11px 13px;border-radius:15px;line-height:1.45}.assistant-message b{display:block;margin-bottom:3px}.assistant-message p{margin:0}.assistant-message.user{justify-self:end;background:#0b7896;color:#fff}.assistant-message.bot{justify-self:start;background:#fff;border:1px solid #d9e6ea}.assistant-answer-details{margin-top:8px;padding-top:8px;border-top:1px solid #e3ecef;font-size:.88rem;color:#496069}.assistant-suggestions{display:flex;gap:7px;overflow:auto;padding-bottom:4px}.assistant-suggestions button{flex:0 0 auto;border:1px solid #c9dde3;background:#fff;color:#28505c;border-radius:999px;padding:7px 10px;font-size:.78rem;font-weight:800}.assistant-input-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:9px}.assistant-input-row input{min-height:50px}.assistant-loading{opacity:.7}.public-qr-preview{display:grid;justify-items:center;gap:7px;padding:18px;margin:12px 0;border:1px dashed #9fc8d2;border-radius:16px;background:#f5fbfc}.public-qr-canvas img{width:min(250px,62vw);height:auto;display:block;border:8px solid #fff;border-radius:12px;box-shadow:0 8px 24px #0001}.public-qr-preview strong{color:#07586b;font-size:1.05rem}.public-qr-preview small{color:var(--muted);text-align:center}.public-qr-module label input[readonly]{background:#f7fafb;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.78rem}
@media(max-width:650px){.assistant-input-row{grid-template-columns:1fr}.assistant-message{max-width:96%}.assistant-conversation{min-height:280px}}

/* v4.2.4 - QR público sempre visível no painel externo; módulo do proprietário continua controlado pelo Criador. */

/* v4.2.7 — controle individual de módulos especiais */
.special-module-permissions{margin-top:16px;padding-top:14px;border-top:1px solid #d8e6eb}
.special-module-permissions .section-title{margin-bottom:10px}
.special-module-permissions h4{margin:0;color:#07586b}
.permission-option.disabled{opacity:.58;cursor:not-allowed}
.permission-option small{display:block;margin-top:3px;color:#667b84;font-weight:500;line-height:1.35}

/* v4.2.9: QR do painel externo por grant seguro — Criador sempre, demais somente após liberação individual. */
