/* R32: fotos do orçamento */
.photos-sec .photo-add { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin: 8px 0; }
.photo-add-btn { min-height: 52px; min-width: 200px; font-size: 18px; justify-content: center; cursor: pointer; }
.photo-file { position: absolute; width: 1px; height: 1px; opacity: 0; overflow: hidden; clip: rect(0 0 0 0); }
.photo-add:focus-within .photo-add-btn { outline: 3px solid #1d4ed8; outline-offset: 2px; }
.js-photos .photo-send { display: none; }
.photo-list { list-style: none; margin: 10px 0 0; padding: 0; display: grid; gap: 12px; }
.photo-row { display: flex; gap: 12px; align-items: flex-start; padding: 10px; border: 1px solid #d6dbe3; border-radius: 10px; background: #fff; }
.photo-thumb { width: 96px; height: 72px; object-fit: cover; border-radius: 6px; flex: none; background: #eef1f5; }
.photo-fields { flex: 1; min-width: 0; display: grid; gap: 6px; }
.photo-fields label { font-size: 16px; font-weight: 600; }
.photo-fields input { min-height: 44px; font-size: 16px; }
.photo-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.photo-actions .btn { min-height: 44px; min-width: 44px; font-size: 16px; }
.photo-move { font-size: 20px; padding: 0 12px; }
.photo-del { color: #b42318; }
.photos-sec [data-photos-status]:empty { display: none; }
.photos-sec [data-photos-status].is-error { color: #b42318; }
@media (max-width: 480px) { .photo-row { flex-direction: column; } .photo-thumb { width: 100%; height: auto; aspect-ratio: 4 / 3; } }
/* no documento (prévia e /q/) */
.doc-photos { margin: 18px 0; }
.doc-photos h3 { margin: 0 0 8px; color: var(--doc-accent, inherit); }
.doc-photo-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.doc-photo { margin: 0; break-inside: avoid; }
.doc-photo img { display: block; width: 100%; height: auto; border-radius: 6px; border: 1px solid var(--doc-line, #ddd); }
.doc-photo figcaption { font-size: 16px; margin-top: 4px; }

/* ---------- R32: achados do Mario na página Revisar ---------- */
.r32-who { margin: 14px 0 6px; padding: 16px; }
.r32-who h2 { margin: 0 0 8px; font-size: 1.25rem; }
.r32-who .grid-2 { margin-top: 4px; }
.field-error { margin: 6px 0 0; color: #a1220f; font-size: 1rem; font-weight: 600; }
.field-error::before { content: "⚠ "; }
.r29-review [aria-invalid="true"] { border-color: #a1220f; box-shadow: 0 0 0 2px rgba(161, 34, 15, .25); }
@media (min-width: 1180px) {
  .page-wrap.preview-layout.r29-review {
    grid-template-areas: "journey journey" "notice notice" "head live" "who live" "cta live" "form live" "submit live";
    grid-template-rows: auto auto auto auto auto auto 1fr;
  }
  .r29-review > .r32-who { grid-area: who; }
}
/* Barra fixa: sem quebra no botão, nem em 360px. */
.r29-review .review-bar .btn { white-space: nowrap; overflow-wrap: normal; word-break: normal; flex-shrink: 0; }
.r29-review .review-bar-info { overflow: hidden; }
@media (max-width: 400px) {
  .r29-review .preview-submit .review-bar { gap: 8px; }
  .r29-review .preview-submit .review-bar .btn.btn-gold { font-size: 1rem; padding-left: 12px; padding-right: 12px; }
}
/* Rótulos curtos não quebram no meio da palavra; abas rolam na horizontal. */
.r29-review .btn, .r29-review .opt-tab, .r29-review button { overflow-wrap: normal; word-break: normal; hyphens: manual; }
/* Aviso "Orçamento emitido" no topo do bloco, estilo aviso (contraste AA). */
.notice-issued { margin: 4px 0 14px; padding: 10px 12px; border: 1px solid #b7791f; border-left-width: 4px; border-radius: 8px; background: #fff7e6; color: #5c3b00; font-size: 1rem; font-weight: 600; }
/* Menu Ações: alvos de 44px (Duplicar e os demais). */
.row-menu-panel a, .row-menu-panel button, .row-menu-panel form > button { min-height: 44px; }
.r32-who [hidden] { display: none !important; }
@media (max-width: 760px) {
  .r29-review .r29-head .lede { display: none; }
  .r29-review .r29-head h1 { margin-bottom: 4px; }
  .r29-review .preview-journey { margin-bottom: 4px; }
  .r32-who { padding: 12px; margin-top: 8px; }
  .r32-who .field { margin-bottom: 8px; }
  .r32-who .client-pick-save { min-height: 44px; display: flex; align-items: center; gap: 8px; }
  .r29-review > .r29-cta { margin: 10px 0 8px; }
}
/* A barra fixa nasce no HTML; a animação "rise" do <main> usa transform e prendia a barra ao <main> durante a entrada (pulo). */
@keyframes r32-fade { from { opacity: 0; } to { opacity: 1; } }
body.r29-has-bar main { animation: r32-fade .4s ease-out backwards; }
@media (prefers-reduced-motion: reduce) { body.r29-has-bar main { animation: none; } }
@media (max-width: 760px) {
  .r29-review .preview-journey { display: none; }
}

/* ---------- R33: achados do Mario na R32 ---------- */
/* "Adicionar serviço": cabe no cartão; quebra entre palavras dentro do botão, sem vazar. */
.r29-review .items-head { display: flex; flex-wrap: wrap; gap: 10px; align-items: flex-start; }
.r29-review .items-head > div { flex: 1 1 200px; min-width: 0; }
.r29-review .items-head [data-add-item] { white-space: normal; overflow-wrap: normal; word-break: normal; min-width: 0; max-width: 100%; min-height: 44px; height: auto; line-height: 1.2; text-align: center; }
@media (max-width: 480px) { .r29-review .items-head [data-add-item] { flex: 1 1 100%; width: 100%; } }
/* Tipo do item (Materiais / Mão de obra / Serviços): rótulo inteiro, até 2 linhas, sem reticências. */
.kind-seg .k-full { display: inline !important; }
.kind-seg .k-short { display: none !important; }
.kind-seg button { white-space: normal; overflow: visible; text-overflow: clip; line-height: 1.15; padding: 4px 3px; min-height: 44px; word-break: normal; overflow-wrap: normal; hyphens: manual; }
@media (max-width: 400px) { .kind-seg button { font-size: .8rem; } }
/* Abas das opções: rótulo inteiro, quebra em 2 linhas se precisar. */
.r29-review .opt-tabs { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); overflow: visible; }
.r29-review .opt-tab { min-width: 0; white-space: normal; overflow-wrap: normal; min-height: 44px; line-height: 1.15; }
/* Fotos: bloco próprio. */
.r33-photos { margin: 10px 0; padding: 16px; }
.r33-photos h2 { margin: 0 0 6px; font-size: 1.25rem; }
.r29-review > .r33-photos { grid-area: photos; }
@media (min-width: 1180px) {
  .page-wrap.preview-layout.r29-review {
    grid-template-areas: "journey journey" "notice notice" "head live" "who live" "cta live" "photos live" "form live" "submit live";
    grid-template-rows: auto auto auto auto auto auto auto 1fr;
  }
}
.photo-add-btn { gap: 10px; }
.photo-spin { display: none; width: 18px; height: 18px; border: 3px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: r33-spin .8s linear infinite; }
.photo-add-btn.is-busy { pointer-events: none; opacity: .75; cursor: progress; }
.photo-add-btn.is-busy .photo-spin { display: inline-block; }
@keyframes r33-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .photo-spin { animation-duration: 2.4s; } }
.photo-list.is-readonly .photo-row { align-items: center; }
.photo-cap-text { margin: 0; font-size: 1rem; }
.kind-seg { grid-template-columns: repeat(3, minmax(min-content, 1fr)); }
@media (max-width: 400px) {
  .kind-seg button { font-size: .78rem; padding: 4px 2px; }
  .r29-review .glass-panel { padding-left: 12px; padding-right: 12px; }
  .r29-review .item-card { padding-left: 10px; padding-right: 10px; }
}
@media (max-width: 340px) { .r29-review .opt-tab { font-size: .8rem; padding: 6px 4px; } }

/* R34: orçamento de exemplo */
.sample-badge{display:inline-flex;align-items:center;min-height:24px;padding:2px 10px;border-radius:999px;border:2px solid #d97706;color:#92400e;background:#fef3c7;font-size:1rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase;vertical-align:middle;white-space:nowrap}
.sample-badge-doc{margin:4px 0;border-color:#b45309;color:#b45309;background:#fff7ed}
.sample-note{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:1rem;margin:6px 0 0}
.r34-sample{display:grid;gap:12px;margin:0 0 18px;padding:20px}
.r34-sample h2{margin:0;font-size:1.25rem}
.r34-sample p{margin:0;font-size:1rem;line-height:1.5}
.r34-sample-btn{min-height:52px;width:100%;max-width:420px;font-size:1.05rem;justify-content:center}
.r34-sample-pdf{min-height:44px;margin-top:8px;font-size:1rem}
.r29-cta .r34-sample-pdf{display:inline-flex;align-items:center;justify-content:center}
/* QA34: uma chamada principal no Início; exemplo vira link secundário; "Apagar exemplo" junto ao selo */
.r34-sample .r34-sample-link { display: inline-flex; align-items: center; min-height: 44px; margin-top: .5rem; padding: 0 .25rem; font: inherit; font-size: 1rem; font-weight: 600; color: inherit; text-decoration: underline; text-underline-offset: 3px; background: none; border: 0; cursor: pointer; }
.sample-top { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1rem; }
.sample-top .sample-note { margin: 0; }
.sample-top .btn { min-height: 44px; font-size: 1rem; }
