/* Câmera real A&D */
.camera-slot{position:absolute;inset:0;overflow:hidden;background:#111}
.camera-slot video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.camera-slot video.mirrored{transform:scaleX(-1)}
.camera-state{position:absolute;inset:0;display:grid;place-items:center;padding:20px;z-index:4;background:rgba(17,17,17,.72)}
.camera-state[hidden]{display:none}
.camera-state-card{max-width:320px;text-align:center;color:#fff;display:grid;gap:10px;justify-items:center}
.camera-state-card b{font-size:17px}
.camera-state-card p{margin:0;font-size:14px;line-height:1.4;color:rgba(255,255,255,.82)}
.camera-state-card button{min-height:44px;min-width:44px}
.camera-state-actions{display:grid;gap:6px;justify-items:center;margin-top:4px}
.camera-state-actions .secondary{background:rgba(255,255,255,.14);color:#fff;border-color:transparent}
.camera-state-actions .text-button{color:#fff}
.camera-state.is-unsupported{background:#f2f2f7}
.camera-state.is-unsupported .camera-state-card{color:#1c1c1e}
.camera-state.is-unsupported .camera-state-card>p{color:#6e6e73}
#app-shell .camera-state.is-unsupported .camera-state-actions .secondary{min-height:44px;padding-inline:18px;border-radius:12px!important;background:#fff!important;color:#35251e!important;border:1px solid rgb(60 60 67 / 18%)!important}
.camera-state.is-unsupported .camera-state-actions .tiny{color:#6e6e73}
#app-shell #viewfinder.is-native-only{height:auto!important;min-height:0!important;aspect-ratio:auto!important;background:#f2f2f7!important}
#app-shell #viewfinder.is-native-only>:not(.camera-state){display:none!important}
#app-shell #viewfinder.is-native-only .camera-state{position:static;padding:22px 16px}
.camera-filter-disclosure[hidden]{display:none!important}
.camera-state.is-unsupported .camera-native-note{max-width:31ch;font-size:12px;color:#6e6e73}
.camera-state-primary{width:100%;max-width:280px}
.camera-other-options{width:100%;max-width:320px;text-align:left}
.camera-other-options>summary{display:flex;align-items:center;justify-content:center;min-height:44px;color:#35251e;font-size:14px;font-weight:600;cursor:pointer}
.camera-other-options>div{display:grid;justify-items:stretch;gap:8px;padding:10px 12px;border-radius:12px;background:#fff}
.camera-other-options button{width:100%}
.camera-other-options p{margin:0;color:#6e6e73!important;font-size:12px;line-height:1.4;text-align:left}
.camera-other-options .text-button{justify-content:center;color:#35251e!important}
.camera-support-details{width:100%;margin-top:2px;text-align:left;color:#6e6e73;font-size:12px}
.camera-support-details summary{min-height:44px;display:flex;align-items:center;justify-content:center;color:#35251e;font-weight:600;cursor:pointer}
.camera-support-details dl{display:grid;gap:5px;margin:0;padding:10px 12px;border-radius:10px;background:#fff}
.camera-support-details dl div{display:flex;justify-content:space-between;gap:12px}
.camera-support-details dt,.camera-support-details dd{margin:0}
.camera-support-details dd{color:#1c1c1e;text-align:right}
.camera-diagnostic{margin:14px 0;border-top:1px solid #e5e5ea;border-bottom:1px solid #e5e5ea}
.camera-diagnostic>summary{display:flex;align-items:center;min-height:48px;color:#35251e;font-size:15px;font-weight:600;cursor:pointer}
.camera-diagnostic>div{display:grid;gap:10px;padding:0 0 14px}
.camera-diagnostic p{margin:0;color:#6e6e73;font-size:13px;line-height:1.4}
.camera-diagnostic textarea{width:100%;min-height:220px;padding:12px;border:1px solid #e5e5ea;border-radius:10px;background:#f2f2f7;color:#1c1c1e;font:12px/1.45 ui-monospace,SFMono-Regular,Menlo,monospace;resize:vertical}
.camera-diagnostic-copy{justify-self:start;min-width:110px}
.overlay-row[hidden]{display:none}
.shutter-row[hidden]{display:none!important}
.camera-spinner{width:28px;height:28px;border-radius:50%;border:3px solid rgba(255,255,255,.3);border-top-color:#fff;animation:camspin 1s linear infinite}
@keyframes camspin{to{transform:rotate(1turn)}}
@media (prefers-reduced-motion:reduce){.camera-spinner{animation:none}}
.shutter:disabled{opacity:.4;cursor:not-allowed}
.console-action{min-height:44px;min-width:44px}
.camera-demo-credit{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:0 0 14px;padding:12px 14px;border-radius:14px;background:#f5f5f7;color:#1d1d1f;font-size:14px}
.camera-demo-credit svg{width:18px;height:18px;flex:none;color:var(--ad-gold-text)}
.camera-demo-credit span{flex:1 1 220px;color:#6e6e73}
.camera-demo-credit button{min-height:44px}
/* A câmera é única em todos os aparelhos. O visor preserva 3:4, igual ao arquivo
   salvo (900×1200), e cresce até o espaço real disponível. Guias e referência
   usam percentuais dentro deste mesmo visor, portanto acompanham a imagem. */
.camera-device{width:100%;max-width:480px;margin-inline:auto}
.camera-device .viewfinder,body.phone-preview .camera-device .viewfinder{height:auto!important;aspect-ratio:3/4;width:100%;margin-inline:auto}
.camera-models{background:var(--ad-surface);color:var(--ad-ink)}
.camera-models .edit-photo-cta{margin:0}
@media(min-width:701px){.camera-workspace{grid-template-columns:minmax(300px,480px) minmax(240px,1fr)}.camera-device{justify-self:center}}
@media(min-width:701px) and (max-height:820px){.camera-device{max-width:390px}}
@media(max-width:700px){
  .camera-device{max-width:min(100%,420px);overflow:visible!important;background:transparent!important}
  .camera-models,.camera-console{width:100%}
  .camera-device .viewfinder.is-live,body.phone-preview .camera-device .viewfinder.is-live{
    --camera-available-height:max(240px,min(48dvh,calc(100dvh - 435px)));
    width:min(100%,calc(var(--camera-available-height) * .75));
    height:var(--camera-available-height)!important;
    max-height:calc((100vw - 32px) * 1.333333);
  }
  .camera-device .viewfinder:not(.is-live),body.phone-preview .camera-device .viewfinder:not(.is-live){
    width:100%;height:auto!important;min-height:240px;max-height:none;aspect-ratio:auto;
  }
  .camera-device .viewfinder:not(.is-live):not(.is-native-only),body.phone-preview .camera-device .viewfinder:not(.is-live):not(.is-native-only){
    max-height:calc(100dvh - 220px);overflow-y:auto;
  }
  .camera-device .viewfinder.is-live .camera-mode{white-space:nowrap}
  .camera-device .viewfinder.is-live .guide-hint{display:none}
  .camera-device .viewfinder.is-live .distance-overlay{white-space:nowrap}
  .camera-device .viewfinder.is-live .distance-overlay span{display:none}
}
@media(max-width:700px) and (max-height:700px){
  .camera-device .viewfinder.is-live .camera-mode{font-size:0}
  .camera-device .viewfinder.is-live .camera-mode::after{content:"AO VIVO";font-size:10px}
}
/* Visor sem vídeo ao vivo (idle/opening/error/exhausted): guias e controles de
   captura ficam acima do cartão de estado (z5/z6 > z4) e cobriam os botões
   "Importar foto". Escondemos tudo que só faz
   sentido com imagem viva; o modo (camera-mode) e o cartão de estado seguem
   legíveis. .is-live restaura os guias automaticamente. */
.viewfinder:not(.is-live) .camera-guide,
.viewfinder:not(.is-live) .viewfinder-bottom,
.viewfinder:not(.is-live) .ghost-photo,
.viewfinder:not(.is-live) .camera-shade,
.viewfinder:not(.is-live) [data-action="toggle-grid"]{display:none}
/* Reserva ~48px no topo para o selo de modo e permite rolagem interna do
   cartão de estado em visor estreito, sem cortar o fallback. */
.viewfinder:not(.is-live) .camera-state{padding-top:64px;align-items:start;overflow-y:auto}
.viewfinder:not(.is-live) .camera-state-card{margin:auto 0}

.camera-demo-credit{background:var(--ad-gold-soft);color:var(--ad-ink);border:1px solid var(--ad-border)}
.camera-demo-credit svg{color:var(--ad-gold-text)}.camera-demo-credit span{color:var(--ad-muted)}

/* Importar várias fotos */
.page-head-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.page-head-actions button,.batch-actions button,.batch-row-actions button{min-height:44px}
.batch-common{display:grid;grid-template-columns:1fr 140px;gap:10px}
.batch-common .form-field{margin:8px 0}
.batch-list{list-style:none;padding:0;margin:12px 0;display:grid;gap:12px}
.batch-item{display:grid;grid-template-columns:96px 1fr;gap:12px;padding:12px;border:1px solid var(--ad-border);border-radius:14px;background:var(--ad-surface)}
.batch-item.is-saved{opacity:.8;border-color:var(--ad-gold)}
.batch-item.is-failed,.batch-item.is-uncertain{border-color:var(--ad-gold-text)}
.batch-thumb{position:relative;aspect-ratio:3/4;border-radius:10px;overflow:hidden;background:var(--ad-bg-soft)}
.batch-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.batch-noprev{display:none;position:absolute;inset:0;place-items:center;text-align:center;font-size:12px;color:var(--ad-muted)}
.batch-thumb.no-preview img{display:none}.batch-thumb.no-preview .batch-noprev{display:grid}
.batch-thumb .photo-label{position:absolute;left:6px;top:6px;right:auto;bottom:auto;width:auto;height:auto;padding:3px 7px;border-radius:6px;font-size:10px;line-height:1.2}
.batch-fields{min-width:0}.batch-fields .form-field{margin:6px 0}
.batch-file{display:block;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ad-ink)}
.batch-status{margin:6px 0;font-size:13px;color:var(--ad-ink-soft)}
.batch-item.is-failed .batch-status,.batch-item.is-uncertain .batch-status{color:var(--ad-gold-text);font-weight:600}
.batch-row-actions{display:flex;gap:8px;flex-wrap:wrap}
.batch-rejected{margin:8px 0;padding:10px 14px 10px 28px;border-radius:12px;background:var(--ad-bg-soft);color:var(--ad-ink);font-size:13px}
.batch-live{font-size:13px;color:var(--ad-ink-soft);min-height:1.2em}
.batch-confirm p{color:var(--ad-ink)}
@media (max-width:420px){.batch-common{grid-template-columns:1fr}.batch-item{grid-template-columns:72px 1fr}.page-head-actions .button-label{display:none}}
.camera-state-actions .tiny{color:#fff;opacity:.85;max-width:32ch;text-align:center}
.overlay-row{display:flex;align-items:center;justify-content:center;gap:8px;margin:4px 0 2px}
.overlay-toggle{display:flex;align-items:center;gap:8px;min-height:44px;padding:0 12px;border-radius:22px;background:#ffffff14;color:#e6e7ea;font-size:12px}
.overlay-toggle svg{width:16px;height:16px}
.overlay-toggle .switch{pointer-events:none;transform:scale(.8)}
.overlay-change{min-height:44px;color:#ffd66b}
.overlay-change[hidden]{display:none}
.overlay-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:6px;margin:12px 0;max-height:55vh;overflow:auto}
.overlay-option{aspect-ratio:3/4;border-radius:10px;overflow:hidden;min-height:44px;padding:0}
.overlay-option img{width:100%;height:100%;object-fit:cover;display:block}
