/* style/odoo.css — o que o APP (index.html) desenha para um trabalho vindo do Odoo (v348).
   Dono: js/data/index.js (odooJobsHtml, odooReportHtml). Ate a v347 estas regras eram style= inline no HTML gerado; o Rafael pediu
   HTML, CSS e JS separados. Os valores sao os mesmos de antes — a E8 nao muda (o harness nao tem tarefa do Odoo em tela).
     .odoonote      a linha de estado da secao MY JOBS · ODOO vazia ('synced 02:08 — no open task…')
     .odooreport    o cartao Report result no bloco do trabalho (#m-odoo): tres botoes iguais, o texto de estado embaixo
     .odooomw       v349: o cartao On my way, acima do Report result, mesmo desenho (os tempos em botoes iguais)
     .odoosheet     v350: o cartao Measure sheet (a planilha anexada a tarefa: estado + Load), entre os dois */
#odoojobs .odoonote{margin:0 0 10px}
.card.odooreport,.card.odooomw,.card.odoosheet{margin:0 0 14px;max-width:560px}
.odooreport .seg3,.odooomw .seg3,.odoosheet .seg3{display:flex;width:100%}
.odooreport .seg3 button,.odooomw .seg3 button,.odoosheet .seg3 button{flex:1;min-width:0;align-items:center;justify-content:center}
.odooreport .odoostatus,.odooomw .odoostatus,.odoosheet .odoostatus{margin:8px 0 0}
.odooomw .seg3+.seg3{margin-top:6px} /* v352: a linha do Send ETA acima dos tempos fixos */

/* ===== v358 — MY JOBS com acoes (js/data/index.js odooJobsHtml · js/navigation/index.js odooActsBind) =====
     .odoolist   a lista: 1 coluna no telefone, 2 no PC (o .hubwrap tem 840 px)
     .odooday    o dia como cabecalho (TODAY · TOMORROW · WED · Oct 1)
     .odoojob    o cartao de uma tarefa; .t-install / .t-measure = o tipo, pela cor E pela palavra (.ojkind)
     .ojhead     o botao do cartao (data-odoojob): hora · cliente · tipo / endereco / estado
     .odooacts   as cinco acoes, 44 px cada (R11), cinco colunas de 64 px no telefone (R40: rotulos de ate 8 letras)
     .odoogo     a fila depois do GO: Google Maps · Apple Maps · ✕ */
.odoolist{display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}
.odooday{grid-column:1/-1;font:700 11px/1 ui-monospace,monospace;letter-spacing:.1em;color:var(--muted);margin:6px 0 0}
.odoojob{border:1px solid var(--line);border-radius:12px;background:#fff;padding:9px 11px;display:grid;gap:8px}
.odoojob.t-install{background:#eef4fb;border-color:#c9d9ee} .odoojob.t-measure,.odoojob.t-estimate{background:#eaf6ee;border-color:#bfe0c9}
.odoojob .ojhead{display:grid;grid-template-columns:auto 1fr auto;grid-template-areas:"time cust kind" "addr addr addr" "state state state";gap:1px 10px;width:100%;min-height:0;padding:0;border:none;background:transparent;text-align:left;border-radius:0;font:inherit;color:var(--ink);cursor:pointer}
.odoojob .ojhead[aria-pressed="true"]{background:transparent;color:var(--ink);box-shadow:-11px 0 0 -8px var(--accent)}
.ojtime{grid-area:time;font:800 20px/1.1 Archivo,sans-serif;align-self:center}
.ojkind{grid-area:kind;font:700 11px/1 Archivo,sans-serif;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);align-self:center}
.ojcust{grid-area:cust;font:700 17px/1.15 Archivo,sans-serif;align-self:center;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ojaddr{grid-area:addr;font-size:13px;color:var(--ink2);line-height:1.3}
.ojstate{grid-area:state;font-size:12.5px;color:var(--ink2);line-height:1.3} .ojstate .ok{color:var(--good)}
.odooacts{display:grid;grid-template-columns:repeat(5,1fr);gap:6px} .odooacts[data-odooacts4]{grid-template-columns:repeat(4,1fr)} /* v516: o trabalho fechado sem o ETA */
.odooacts button{min-height:44px;border:1px solid var(--line);background:#fff;border-radius:10px;font:inherit;padding:5px 3px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;cursor:pointer;color:var(--ink);min-width:0;touch-action:manipulation}
.odooacts button b{font:700 12px/1.1 Archivo,sans-serif;white-space:nowrap}
.odooacts button small{font-size:10.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.odooacts button[data-odooact="omw"] b{color:var(--accent)} .odooacts button.sent b{color:var(--good)} .odooacts button[disabled]{opacity:.4}
.odooacts .odoogo{grid-column:span 2;min-height:44px;border:1px solid var(--accent);background:#fff;border-radius:10px;font:inherit;padding:5px 8px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;color:var(--accent);text-decoration:none;min-width:0;cursor:pointer}
.odooacts .odoogo b{font:700 13px/1.1 Archivo,sans-serif;white-space:nowrap} .odooacts .odoogo small{font-size:10.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.odooacts button.odoogo{grid-column:span 1}
/* ===== v358 — a aba Job numa tela: pills numa linha; a strip do Odoo compacta (odooOmwHtml · odooSheetHtml · odooReportHtml); o contrato no telefone (renderContract) ===== */
body[data-phone] .jobline .joblinks{display:inline-flex;flex-wrap:nowrap;overflow-x:auto;max-width:100%;margin-left:0;padding-bottom:2px;-webkit-overflow-scrolling:touch}
.odoosheetline{margin:-6px 0 10px;font-size:12.5px} .odoosheetline [data-odoosheet][hidden]{display:none}
.odooomw .omwfixed[hidden]{display:none}
.odooreport .ojst{margin:-4px 0 8px;font-size:12.5px;color:var(--ink2)}
.ctrways summary{cursor:pointer;color:var(--accent);font-weight:600;padding:10px 0;min-height:44px} .ctrpdf{margin:0 0 8px}
/* ===== v358 — a volta facil no #mhead (shell/layout-m.js): ‹ aba anterior · Home · ‹ Prev job / Next job › entre os trabalhos do dia =====
   v359 (Rafael: "still needs improvement on navigating back to main view once user tapped on job"): o ‹ e o Home sao botoes do app
   (44 px, borda, cor de destaque, Archivo) — ate a v358 o ‹ era o botao cinza padrao do navegador e o ⌂ parecia o icone da aba Map. */
#mhead .mnav,.jnav .mnav{margin:0;min-height:44px;padding:0 14px;border:1px solid var(--line);background:#fff;border-radius:10px;font:700 15px/1 Archivo,sans-serif;color:var(--accent);cursor:pointer;white-space:nowrap}
#mhead [data-navback]{margin-right:auto}
.ojnav{flex-basis:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:2px}
#mhead .ojnav button{margin:0;min-width:44px;min-height:44px;border:1px solid var(--line);background:#fff;border-radius:10px;font:600 13px/1 Archivo,sans-serif;color:var(--accent);cursor:pointer;padding:0 12px}
#mhead .ojnav button[disabled]{opacity:.35}
.ojnav span{font:600 12px/1 ui-monospace,monospace;color:var(--muted);padding:0 6px}
/* v367: as regras da tela JOB do v363 (.odoojob.jone, .ojmore, #jtabs) sairam — a tela JOB mora em js/job-screen/ (job-screen.css) */
/* v365 — a tela JOB no PC (a porta do Layout E, #emain-hub .jobview): a linha ‹ My jobs · Home (os mesmos .mnav); o cartao (ate 560 px) e' o da tela JOB, js/job-screen/job-screen.css (v367) */
.jnav{display:flex;align-items:center;gap:10px;margin:0 0 12px} .jnav .esp{flex:1}
/* v535 (esboco "Layout PC e iPad", parte A — Rafael 13/10, D2 a): a BARRA UNICA. Presa no topo ao rolar, como a barra antiga (.etop) que ela substitui nesta tela,
   de ponta a ponta do .emain (o -14px desfaz o recheio dele); a bandeira e o tema com 44 px como o .mnav; Load / open e Print no texto do tema; Send report cheio */
.jnav{position:sticky;top:0;z-index:5;flex-wrap:wrap;gap:8px 10px;margin:0 -14px 12px;padding:8px 14px;background:var(--paper);border-bottom:1px solid var(--line)}
.etop[hidden]{display:none}
.jnav .i18n-btn{min-height:44px;padding:0 10px;border:1px solid var(--line);border-radius:10px;background:var(--dlg,var(--panel,#fff))}
.jnav .mnav.jnav-b{padding:0 12px;font:600 14px/1 "Source Sans 3","Segoe UI",Roboto,sans-serif;color:var(--ink)}
.jnav .mnav.jnav-pri{background:var(--accent);border-color:var(--accent);color:var(--jv-on-acc,#fff);font-weight:700} /* a classe .pri no botao (como o Send report da .etop) e' o que os temas escuros poupam (theme.css: button:not(.pri)) */
@media print{.jnav{display:none!important}}
/* v423 — os icones dos apps no IR / GO (Google Maps, Apple Maps): o simbolo a esquerda, o texto a direita */
.goic{width:24px;height:24px;flex:none;display:inline-block;vertical-align:middle}
.joblink .goic{width:18px;height:18px;margin:-3px 6px -3px -2px}
.odooacts .odoogo:has(.goic){flex-direction:row;gap:8px} .odooacts .odoogo .gotx{display:flex;flex-direction:column;align-items:flex-start;min-width:0;gap:1px}
/* ===== v461 — a FOLHA DO ON MY WAY (js/omw/ui.js; o molde #omw-tpl-sheet no index.html; esboco v461 opcao A, aprovado 2026-10-04) =====
     .omws        o <dialog> (showModal: a camada de cima); ::backdrop o fundo escurecido (tocar nele = Cancel)
     .omws-panel  a folha: embaixo no telefone (cantos de cima redondos), no meio no PC (ate 520 px)
     .omws-k      o cabecalho do aviso: ON MY WAY · o canal; .omws-meta a tarefa · o tipo · a janela
     .omws-field  o campo editavel: o selo fixo da marca (.omws-pre) e o textarea (.omws-ta)
     .omws-fix    a troca automatica (o que trocou); .omws-cnt o contador (data-state one / two / over), "edited" e Reset; .omws-err o erro do envio
     .omws-btns   Cancel · Send, 44 px
   Conserto apos verificacao: o teclado do telefone — o <dialog> vai de --omws-top a --omws-kb (js/omw/ui.js, pelo visualViewport; sem teclado as duas sao 0
   e nao ha atributo style), a folha fica acima do teclado; o aviso da troca em UMA linha (o resto no title); os temas escuros (theme.css:4 pinta todo
   button com --panel, especificidade 1,5,2) nao apagam o Send azul nem poem caixa no Reset (a regra abaixo, 1,6,2) */
.omws{box-sizing:border-box;width:100%;max-width:520px;max-height:100%;margin:auto auto 0;padding:0;border:none;background:transparent;color:var(--ink);overflow:visible;top:var(--omws-top,0px);bottom:var(--omws-kb,0px)}
.omws:focus,.omws-panel:focus{outline:none} /* o foco inicial vai a folha (autofocus), nao ao campo: no telefone o teclado so abre quando o tecnico toca no texto */
.omws::backdrop{background:rgba(28,36,48,.55)}
.omws-panel{box-sizing:border-box;width:100%;max-height:calc(100dvh - var(--omws-kb,0px) - var(--omws-top,0px));overflow-y:auto;background:var(--paper);color:var(--ink);border-radius:18px 18px 0 0;padding:16px 16px calc(18px + env(safe-area-inset-bottom));box-shadow:0 -6px 24px rgba(0,0,0,.18)}
@media (min-width:700px){.omws{margin:auto;max-width:min(520px,calc(100% - 48px))}.omws-panel{border-radius:18px;padding-bottom:18px;max-height:calc(100dvh - 48px - var(--omws-kb,0px) - var(--omws-top,0px))}}
.omws-k{margin:0;font:700 12px/1.3 Archivo,sans-serif;letter-spacing:.06em;text-transform:uppercase;color:var(--ink2)}
.omws-k b{color:var(--accent)}
.omws-meta{margin:6px 0 10px;font-size:12.5px;line-height:1.35;color:var(--muted)}
.omws-field{border:1.5px solid var(--accent);border-radius:12px;background:var(--panel,#fff);padding:8px 12px 6px}
.omws-field:focus-within{box-shadow:0 0 0 3px var(--acc2)}
.omws-pre{display:inline-block;background:var(--acc2);color:var(--accent);border-radius:6px;padding:1px 6px;font-weight:700;font-size:14px;line-height:1.4;margin:0 0 4px}
.omws-pre[hidden],.omws-fix[hidden],.omws-err[hidden],.omws-ed[hidden],.omws-step[hidden],.omws-cnt[hidden]{display:none} /* v529: + o Andamento e o Contador (calculando / falhou) — o .omws-cnt e' flex */
/* v529 (versao B do ETA): CALCULANDO — o Andamento (o ponto pulsa) e o Texto apagado (data-omws-wait no .omws-field: o rascunho com "…", so leitura; tambem quando falhou) */
.omws-step{margin:-4px 0 10px;font-size:13px;line-height:1.35;font-weight:600;color:var(--accent)}
.omws-step::before{content:"";display:inline-block;width:8px;height:8px;margin-right:7px;border-radius:50%;background:currentColor;vertical-align:1px;animation:omws-pulse .9s ease-in-out infinite alternate}
@keyframes omws-pulse{from{opacity:.25}to{opacity:1}}
@media (prefers-reduced-motion:reduce){.omws-step::before{animation:none}}
.omws-field[data-omws-wait]{border-color:var(--line);margin-bottom:12px} /* sem o Contador embaixo: o respiro ate o Erro / os botoes */
.omws-field[data-omws-wait] .omws-pre,.omws-field[data-omws-wait] .omws-ta{opacity:.5}
/* v529 (B3): FALHOU — Tentar de novo (a largura toda) e os horarios fixos: 5 numa linha de 390 px (min-width 0, padding curto, 44 px de altura); o escolhido aceso */
.omws-fail{margin:0 0 10px}
.omws .omws-fail .omws-retry{display:block;width:100%;flex:none;margin:0 0 10px} /* revisao: .omws .omws-fail (0,3,0) — com .omws .omws-retry a regra .omws .omws-btn{margin:0}, mais abaixo, zerava a margem */
.omws-or{margin:0 2px 6px;font-size:12.5px;line-height:1.35;color:var(--muted)}
.omws-opts{display:flex;gap:6px}
.omws .omws-opt{flex:1;min-width:0;min-height:44px;margin:0;padding:0 4px;border-radius:10px;border:1px solid var(--line);background:var(--soft);color:var(--ink);font:600 14px/1 "Source Sans 3","Segoe UI",sans-serif;white-space:nowrap;cursor:pointer}
.omws .omws-opt[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:var(--paper)}
.omws .omws-opt[disabled],.omws .omws-retry[disabled]{opacity:.45;cursor:default}
.omws .omws-fail [hidden]{display:none}
.omws .omws-ta{display:block;width:100%;box-sizing:border-box;min-height:118px;margin:0;border:none;border-radius:0;outline:none;resize:vertical;background:transparent;font:15px/1.4 "Source Sans 3","Segoe UI",Roboto,sans-serif;color:var(--ink);padding:2px 0}
.omws-fix{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:8px 0 0;font-size:12.5px;line-height:1.35;color:var(--warn);background:color-mix(in srgb,var(--warn) 12%,transparent);border-radius:8px;padding:6px 8px}
.omws-cnt{display:flex;align-items:center;gap:8px;margin:4px 2px 8px;font-size:12.5px;color:var(--muted)}
.omws-ed{font-weight:700;color:var(--accent)}
.omws-n{flex:1;font-variant-numeric:tabular-nums}
.omws-n[data-state="one"]{color:var(--good)} .omws-n[data-state="two"]{color:var(--warn);font-weight:700} .omws-n[data-state="over"]{color:var(--bad);font-weight:700}
.omws .omws-reset{margin:0;min-height:44px;min-width:44px;padding:0 10px;border:none;background:transparent;color:var(--accent);font:600 13px/1 "Source Sans 3","Segoe UI",sans-serif;cursor:pointer}
.omws .omws-reset[disabled]{opacity:.4;cursor:default}
.omws-err{margin:0 0 10px;font-size:13px;line-height:1.35;color:var(--bad)}
.omws-btns{display:flex;gap:8px}
.omws .omws-btn{flex:1;margin:0;min-height:44px;padding:0 14px;border-radius:12px;border:1px solid var(--line);background:var(--soft);color:var(--ink);font:600 15px/1 "Source Sans 3","Segoe UI",sans-serif;cursor:pointer}
.omws .omws-send{background:var(--accent);border-color:var(--accent);color:var(--paper)}
.omws .omws-btn[disabled]{opacity:.45;cursor:default}
body:is([data-theme="dark"],[data-theme="hud"],[data-theme="holo"],[data-theme="sketchdark"]) .omws .omws-panel .omws-btns button.omws-btn.omws-send:not(#sheetload){background:var(--accent);border-color:var(--accent);color:var(--paper)}
body:is([data-theme="dark"],[data-theme="hud"],[data-theme="holo"],[data-theme="sketchdark"]) .omws .omws-panel .omws-cnt button.omws-reset:not(#sheetload){background:transparent;border-color:transparent;color:var(--accent)}
/* v767 — a partida que pode ir para a porta (js/navigation/index.js navDoorHold): a casca antiga nao aparece enquanto o rascunho decide; navDoorShow tira o atributo */
html[data-door] body{visibility:hidden}
/* v804 (contraste dos temas, T3 + T4; esboco aprovado 04/11): nos 4 escuros os cartoes do My jobs deixam de ser ilhas claras (#fff / #eef4fb / #eaf6ee com o
   texto claro do tema = texto sumido no HUD e no Holo). O cartao fica no painel do tema; o tipo continua pela cor, num toque do acento (instalacao) ou do verde
   (medicao / estimate) misturado ao painel, e pela palavra (.ojkind). Nos claros nada muda. */
body:is([data-theme="dark"],[data-theme="hud"],[data-theme="holo"],[data-theme="sketchdark"]) .odoojob{background:var(--panel)}
body:is([data-theme="dark"],[data-theme="hud"],[data-theme="holo"],[data-theme="sketchdark"]) .odoojob.t-install{background:color-mix(in srgb,var(--accent) 10%,var(--panel));border-color:color-mix(in srgb,var(--accent) 35%,var(--line))}
body:is([data-theme="dark"],[data-theme="hud"],[data-theme="holo"],[data-theme="sketchdark"]) :is(.odoojob.t-measure,.odoojob.t-estimate){background:color-mix(in srgb,var(--good) 10%,var(--panel));border-color:color-mix(in srgb,var(--good) 35%,var(--line))}
body:is([data-theme="dark"],[data-theme="hud"],[data-theme="holo"],[data-theme="sketchdark"]) .odoojob .ojhead:not(#sheetload):not(#jv-x){background:transparent;color:var(--ink);border:none}
body:is([data-theme="dark"],[data-theme="hud"],[data-theme="holo"],[data-theme="sketchdark"]) .odoojob .ojhead:not([aria-pressed="true"]):not(#sheetload):not(#jv-x){box-shadow:none}
body:is([data-theme="dark"],[data-theme="hud"],[data-theme="holo"],[data-theme="sketchdark"]) .odooacts .odoogo{background:var(--panel)}
