/*
 * Ajustes do projeto sobre o tema FinLab.
 *
 * Regra: nada aqui reimplementa o que o tema ja resolve. O layout, o menu
 * lateral, o cabecalho e os componentes vem do style.css do tema — este
 * arquivo so cobre o que e especifico da locadora.
 */

/* A marca: simbolo desenhado + nome em texto.
 *
 * O nome e provisorio e vem do ambiente, entao ele e TEXTO, e nao parte do
 * desenho — trocar o nome comercial nao pode significar refazer arte. O
 * simbolo (partials/_marca.html.twig) nao tem letra nenhuma pelo mesmo motivo.
 */
.lc-marca {
    font-weight: 700;
    font-size: 1.15rem;
    letter-spacing: -.02em;
    color: var(--primary);
}

/* O volume e escuro por padrao, e nao ambar: as tres faces sao `currentColor`,
   e desenha-las na mesma tinta do anel apagaria o relevo — o simbolo inteiro
   viraria uma mancha. O contraste entre o volume e o anel E o desenho. */
.lc-simbolo { flex: 0 0 auto; color: #3b2a20; }

.brand-logo { gap: .65rem; }

/* O logo enviado pela locadora.
 *
 * Altura fixa e largura livre: logo e desenho de proporcao propria, e forcar
 * uma caixa quadrada em cima dele achata marca alta e corta marca larga. O
 * `object-fit: contain` garante que nada seja recortado quando o arquivo vier
 * fora do esperado. */
.lc-logo {
    max-height: 2.25rem;
    max-width: 11rem;
    width: auto;
    object-fit: contain;
}

.lc-logo-entrada {
    max-height: 4.5rem;
    max-width: 15rem;
    width: auto;
    object-fit: contain;
}

.brand-logo .lc-marca { margin-left: 0; }

/* A tinta da moldura vale DENTRO da moldura, e nao no documento inteiro.
   `--lc-marca-fg` nasce no <body> (clara por padrao), entao uma marca que a
   lesse de qualquer lugar sairia branca sobre o creme da tela de login. As
   faces do volume sao `currentColor` — o simbolo se pinta com a tinta de onde
   esta, e so a face de cima fica sempre no ambar, que e o que o mantem
   reconhecivel nos dois fundos. */
.nav-header .lc-marca,
.nav-header .lc-simbolo {
    color: var(--lc-marca-fg);
}

/* A MARCA SOME NO LAYOUT HORIZONTAL SEM ISTO.
 *
 * Com o cabecalho fixo, o tema poe `.header` e `.nav-header` no mesmo
 * `z-index` (10, em `[data-header-position="fixed"]`), e no horizontal o
 * cabecalho ocupa a largura inteira. Empatados, ganha quem vem depois no DOM:
 * o `.header` pinta o proprio fundo — opaco, e da mesma cor da moldura — por
 * cima da marca. Nao havia nada de errado com o desenho; ele estava atras de
 * uma cortina da mesma cor.
 *
 * A marca sobe um degrau. O conteudo do cabecalho comeca depois da largura da
 * moldura, entao subir a marca nao encobre nada. */
[data-layout="horizontal"] .nav-header {
    z-index: 11;
}

/* Simbolo e nome lado a lado, fora do cabecalho: login, e o que mais vier. */
.lc-marca-linha {
    display: inline-flex;
    align-items: center;
    gap: .6rem;
}

.lc-marca-linha .lc-marca { font-size: 1.5rem; }

/* ------------------------------------------------------------------
 * Primeiro plano do cabecalho.
 *
 * O tema traz, para cada slot dele (color_2..color_15), um bloco inteiro
 * dizendo de que cor fica o texto sobre aquele fundo. Os slots daqui
 * (madeira, areia) definiam so o fundo — por isso o nome da empresa saia
 * escuro sobre o marrom escuro, ilegivel.
 *
 * Em vez de repetir o bloco do tema por slot, o par fundo/tinta anda junto
 * numa variavel. Slot novo declara as duas e as regras abaixo acompanham.
 * ------------------------------------------------------------------ */

:root {
    --lc-header-fg: #2a353a;
    --lc-header-fg-mute: rgba(42, 53, 58, .62);
    --lc-header-linha: rgba(0, 0, 0, .08);
    /* A tinta da moldura e clara por padrao: todos os slots de moldura do tema
       (color_2..color_15) sao cores cheias e escuras, e a excecao e a areia,
       que e nossa e se declara logo abaixo. Sem este padrao, marca e hamburger
       saiam escuros sobre fundo escuro em qualquer slot que nao a madeira. */
    --lc-marca-fg: #fff;
    --lc-marca-linha: rgba(255, 255, 255, .12);
}

/* A marca e o cabecalho tem fundos configuraveis separados, entao cada um
   carrega a propria tinta: marca clara com cabecalho escuro nao pode virar
   texto branco sobre areia. */
[data-headerbg="madeira"] {
    --lc-header-fg: #fff;
    --lc-header-fg-mute: rgba(255, 255, 255, .64);
    --lc-header-linha: rgba(255, 255, 255, .12);
}

[data-nav-headerbg="areia"] {
    --lc-marca-fg: #3b2a20;
    --lc-marca-linha: rgba(0, 0, 0, .08);
}

/* A empresa e a ancora do multiempresa: quem opera precisa ver, sem
   procurar, de qual locadora sao os dados na tela. */
.lc-empresa {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    max-width: 22rem;
    padding: .35rem .85rem .35rem .7rem;
    border: 1px solid var(--lc-header-linha);
    border-radius: 999px;
    font-weight: 600;
    font-size: .9rem;
    line-height: 1.2;
    color: var(--lc-header-fg);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.lc-empresa i {
    font-size: .95rem;
    color: var(--primary);
}

/* Bloco do usuario: iniciais como ancora visual, nome e perfil ao lado. */
.header-profile > a.nav-link {
    display: flex;
    align-items: center;
    gap: .65rem;
}

.lc-avatar {
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    width: 2.35rem;
    height: 2.35rem;
    border-radius: 50%;
    background: var(--primary);
    color: #fff;
    font-weight: 700;
    font-size: .85rem;
    letter-spacing: .02em;
}

/*
 * O `> a.nav-link` nao e enfeite: o tema declara estas duas em
 * `.header-profile > a.nav-link .header-info span` (0,3,2), e a versao curta
 * daqui (0,2,1) perdia em silencio — o nome do usuario ficava #000 sobre o
 * marrom. Casar a forma do seletor e o que faz a cascata resolver pela ordem
 * do arquivo, que e o que se quer.
 */
.header-profile > a.nav-link .header-info span { color: var(--lc-header-fg); }
.header-profile > a.nav-link .header-info small { color: var(--lc-header-fg-mute); }

/* Seta: sem ela o bloco do usuario nao parece clicavel, e "Sair" fica
   escondido atras de um clique que ninguem tenta. */
.header-profile > a.nav-link::after {
    content: "";
    width: .4rem;
    height: .4rem;
    margin-left: .15rem;
    border-right: 1.5px solid var(--lc-header-fg-mute);
    border-bottom: 1.5px solid var(--lc-header-fg-mute);
    transform: translateY(-2px) rotate(45deg);
}

.header-profile > a.nav-link:hover .lc-avatar {
    filter: brightness(1.1);
}

.nav-header .hamburger .line { background: var(--lc-marca-fg, #2a353a); }

/* ------------------------------------------------------------------
 * Barra do topo mais baixa.
 *
 * O tema reserva 5rem (70px) so para a linha de identidade, mais 70px de menu:
 * 140px de altura fixa em todas as telas, num sistema cujo conteudo e tabela
 * longa. A altura vem de --dz-header-height, entao mexer na variavel leva
 * junto .header, .nav-header e o topo do menu, que dependem dela.
 *
 * O recuo do conteudo, esse, o tema crava em px por combinacao de atributos —
 * nao acompanha a variavel. Por isso vem aqui tambem, casando a forma do
 * seletor original para ganhar pela ordem do arquivo.
 * ------------------------------------------------------------------ */

[data-layout="horizontal"] { --dz-header-height: 4rem; }

[data-layout="horizontal"] .dlabnav .metismenu { padding: .35rem 1.25rem; }

/*
 * Pela variavel do tema, e nao pela propriedade: `a.has-arrow` recebe dele
 * 2.4rem de padding a direita para caber a seta do submenu, e trocar `padding`
 * direto apagava essa reserva — a seta passava a cair em cima da ultima letra
 * ("Produto[s]").
 */
[data-layout="horizontal"] .dlabnav .metismenu > li > a {
    --dz-side-nav-padding: .5rem .85rem;
}

[data-layout="horizontal"][data-sidebar-style="full"] .dlabnav .metismenu > li > a.has-arrow,
[data-layout="horizontal"][data-sidebar-style="icon-hover"] .dlabnav .metismenu > li > a.has-arrow {
    --dz-side-nav-padding: .5rem 2.4rem .5rem .85rem;
}

/* 7.5rem = a barra (4rem) + o menu, mantendo a mesma folga que havia entre o
   menu e o primeiro card. Sem isto o conteudo continuaria no lugar antigo e a
   barra menor viraria so um vao maior.

   O [data-header-position] entra no seletor so para empatar em especificidade
   com a regra de 9rem do tema, que carrega os quatro atributos. */
[data-header-position="fixed"][data-layout="horizontal"][data-sidebar-position="fixed"][data-sidebar-style="full"] .content-body {
    padding-top: 7.5rem;
}

/*
 * O filete do tema nasce so em .header, que no horizontal comeca depois da
 * marca — dava um toco de linha no meio da barra. Some dali e vai para as duas
 * metades, separando a linha de identidade da linha de navegacao inteira.
 */
[data-layout="horizontal"] .header { border-bottom: 0; }

[data-layout="horizontal"] .nav-header {
    box-shadow: inset 0 -1px 0 var(--lc-marca-linha);
}

[data-layout="horizontal"] .header .header-content {
    box-shadow: inset 0 -1px 0 var(--lc-header-linha);
}

/* Coluna de acao nas tabelas: nao deixa os botoes quebrarem linha. */
.lc-acoes {
    white-space: nowrap;
}

/*
 * Cabecalho de tabela sem capitalize.
 *
 * O tema aplica text-transform: capitalize em .table thead th, o que em ingles
 * e inofensivo e em portugues estraga toda coluna de mais de uma palavra:
 * "Situacao No Periodo", "Saldo Apos", "Nº De Locacoes". Os rotulos ja vem
 * escritos certo dos templates.
 */
.table thead th,
table.dataTable thead th,
table.dataTable tfoot th {
    text-transform: none;
}

/* Tabela de disponibilidade: numero alinhado e legivel de relance. */
.lc-numero {
    font-variant-numeric: tabular-nums;
}

.lc-codigo {
    font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: .8rem;
}

/* Segunda linha de uma celula quando o que vai nela e frase, e nao codigo:
   "vence em 3 dias" em monoespacada parece numero de patrimonio. */
.lc-nota { font-size: .8rem; }

/* Nome de coluna nao e erro: o <code> do Bootstrap vem em #d63384, e uma lista
   de campos esperados toda em rosa parece um relatorio de problema. */
code.lc-codigo {
    color: var(--text-dark, #2a353a);
    background: rgba(0, 0, 0, .05);
    padding: .1rem .4rem;
    border-radius: .25rem;
}

/* Telas sem sessao: o content-body do tema assume menu lateral a esquerda. */
.lc-auth {
    margin-left: 0;
    min-height: 100vh;
    display: flex;
    align-items: center;
}

/* ------------------------------------------------------------------
 * Cor primaria: liga o Bootstrap a --primary do tema.
 *
 * O style.css do FinLab define --primary por [data-primary="color_N"], mas
 * CRAVA o azul da demo (#01A3FF) em 45 lugares — inclusive em --bs-primary e
 * nos componentes do Bootstrap. Resultado: trocar data-primary pintava parte
 * da tela e deixava botao, paginacao, checkbox e abas azuis.
 *
 * Aqui os mesmos seletores passam a apontar para var(--primary). Nao e
 * sobrescrita de cor: e fazer o tema honrar a propria variavel dele. Como este
 * arquivo carrega depois do style.css, ganha na cascata.
 * ------------------------------------------------------------------ */

:root,
[data-bs-theme="light"] {
    --bs-primary: var(--primary);
    --bs-primary-rgb: var(--primary-rgb, 32, 201, 151);
    --bs-link-color: var(--primary);
    --bs-link-hover-color: var(--primary-hover);
}

.btn-primary {
    --bs-btn-bg: var(--primary);
    --bs-btn-border-color: var(--primary);
    --bs-btn-hover-bg: var(--primary-hover);
    --bs-btn-hover-border-color: var(--primary-hover);
    --bs-btn-active-bg: var(--primary-hover);
    --bs-btn-active-border-color: var(--primary-hover);
    --bs-btn-disabled-bg: var(--primary);
    --bs-btn-disabled-border-color: var(--primary);
}

.btn-outline-primary {
    --bs-btn-color: var(--primary);
    --bs-btn-border-color: var(--primary);
    --bs-btn-hover-bg: var(--primary);
    --bs-btn-hover-border-color: var(--primary);
    --bs-btn-active-bg: var(--primary);
    --bs-btn-active-border-color: var(--primary);
    --bs-btn-disabled-color: var(--primary);
    --bs-btn-disabled-border-color: var(--primary);
}

.dropdown-menu { --bs-dropdown-link-active-bg: var(--primary); }
.nav-pills { --bs-nav-pills-link-active-bg: var(--primary); }
.list-group { --bs-list-group-active-bg: var(--primary); --bs-list-group-active-border-color: var(--primary); }
.progress, .progress-stacked { --bs-progress-bar-bg: var(--primary); }

.pagination {
    --bs-pagination-active-bg: var(--primary);
    --bs-pagination-active-border-color: var(--primary);
}

.form-check-input:checked,
.form-check-input[type="checkbox"]:indeterminate {
    background-color: var(--primary);
    border-color: var(--primary);
}

.form-range::-webkit-slider-thumb { background-color: var(--primary); }
.form-range::-moz-range-thumb { background-color: var(--primary); }

.header-profile .profile_title { background: var(--primary); }

/*
 * Itens de menu suspenso.
 *
 * O tema pinta .dropdown-item com #888 sobre branco — 3.5:1, abaixo do minimo
 * legivel para texto. "Trocar senha" e "Sair" sao acoes que a pessoa procura
 * uma vez e precisa achar de primeira.
 */
.dropdown-menu .dropdown-item {
    color: var(--text-dark, #2a353a);
}

.dropdown-menu .dropdown-item i {
    color: var(--primary);
}

.dropdown-menu .dropdown-item:hover,
.dropdown-menu .dropdown-item:focus {
    background-color: var(--rgba-primary-1, rgba(0, 0, 0, .05));
    color: var(--primary-hover, var(--primary));
}

/* O DataTables tambem chega com o azul proprio dele. */
.dataTables_wrapper .paginate_button.current,
.dataTables_wrapper .paginate_button.current:hover {
    background: var(--primary) !important;
    border-color: var(--primary) !important;
    color: #fff !important;
}


/* ------------------------------------------------------------------
 * Paleta quente da locadora — madeira, âmbar e terracota.
 *
 * O FinLab e um tema de cripto: a paleta dele vai de azul a roxo, e o unico
 * tom quente e o #fd7e14. Estes slots seguem exatamente o mesmo contrato de
 * variaveis dos slots nativos (color_2..color_15), entao tudo que o tema pinta
 * com var(--primary) acompanha sem regra nova.
 *
 * Sao valores de atributo como quaisquer outros: quem os aplica e o
 * base.html.twig, escrevendo direto no <body>.
 * ------------------------------------------------------------------ */

[data-primary="ambar"] {
    --primary: #d98324;
    --secondary: #7c5a3a;
    --primary-hover: #b56a17;
    --primary-dark: #6b3d08;
    --rgba-primary-1: rgba(217, 131, 36, 0.1);
    --rgba-primary-2: rgba(217, 131, 36, 0.2);
    --rgba-primary-3: rgba(217, 131, 36, 0.3);
    --rgba-primary-4: rgba(217, 131, 36, 0.4);
    --rgba-primary-5: rgba(217, 131, 36, 0.5);
    --rgba-primary-6: rgba(217, 131, 36, 0.6);
    --rgba-primary-7: rgba(217, 131, 36, 0.7);
    --rgba-primary-8: rgba(217, 131, 36, 0.8);
    --rgba-primary-9: rgba(217, 131, 36, 0.9);
    --bs-primary-rgb: 217, 131, 36;
}

[data-primary="terracota"] {
    --primary: #c1440e;
    --secondary: #7c5a3a;
    --primary-hover: #9e3709;
    --primary-dark: #5e2105;
    --rgba-primary-1: rgba(193, 68, 14, 0.1);
    --rgba-primary-2: rgba(193, 68, 14, 0.2);
    --rgba-primary-3: rgba(193, 68, 14, 0.3);
    --rgba-primary-4: rgba(193, 68, 14, 0.4);
    --rgba-primary-5: rgba(193, 68, 14, 0.5);
    --rgba-primary-6: rgba(193, 68, 14, 0.6);
    --rgba-primary-7: rgba(193, 68, 14, 0.7);
    --rgba-primary-8: rgba(193, 68, 14, 0.8);
    --rgba-primary-9: rgba(193, 68, 14, 0.9);
    --bs-primary-rgb: 193, 68, 14;
}

/* Madeira escura para a moldura: cabecalho, marca e menu. */
[data-nav-headerbg="madeira"] { --nav-headbg: #3b2a20; }
[data-headerbg="madeira"]     { --headerbg: #3b2a20; }
[data-sidebarbg="madeira"]    { --sidebar-bg: #3b2a20; }

[data-nav-headerbg="areia"] { --nav-headbg: #f6f1ea; }
[data-headerbg="areia"]     { --headerbg: #f6f1ea; }
[data-sidebarbg="areia"]    { --sidebar-bg: #f6f1ea; }

/*
 * A TINTA DO MENU, E POR QUE ELA VIROU VARIAVEL.
 *
 * O tema declara a cor do texto do menu **por slot**, com !important, num bloco
 * escrito a mao para cada uma das quatorze cores dele. Slot que ele nao conhece
 * herda o padrao de menu CLARO — e era por isso que a madeira dava cinza sobre
 * marrom antes deste arquivo existir.
 *
 * A primeira versao daqui resolveu escrevendo o mesmo bloco para a madeira, com
 * a cor cravada. Isso parou de servir quando a locadora passou a escolher a
 * cor: `areia` nunca teve bloco equivalente (menu cinza sobre creme), e uma cor
 * em hexadecimal nao casa com seletor nenhum.
 *
 * Entao a regra ficou uma so e a **cor** virou variavel. Cada moldura declara a
 * sua logo abaixo; a cor propria da locadora chega pelo <style> que o servidor
 * escreve, com as mesmas variaveis derivadas por luminancia.
 *
 * O !important acompanha o do tema: as regras originais usam, e sem ele a
 * declaracao clara mais especifica continuaria ganhando.
 */
[data-sidebarbg="madeira"] {
    --lc-menu-fg: rgba(255, 255, 255, .85);
    --lc-menu-fg-suave: rgba(255, 255, 255, .8);
    --lc-menu-fg-forte: #fff;
    --lc-menu-submenu-bg: #433024;
}

[data-sidebarbg="areia"] {
    --lc-menu-fg: rgba(59, 42, 32, .85);
    --lc-menu-fg-suave: rgba(59, 42, 32, .8);
    --lc-menu-fg-forte: #3b2a20;
    --lc-menu-submenu-bg: #efe7db;
}

/* `:is()` nao muda a especificidade — ela continua a do seletor mais forte de
   dentro, 0,1,0, exatamente como nas tres regras separadas de antes. */
:is([data-sidebarbg="madeira"], [data-sidebarbg="areia"], [data-sidebarbg="lc-custom"]) .dlabnav .metismenu > li > a,
:is([data-sidebarbg="madeira"], [data-sidebarbg="areia"], [data-sidebarbg="lc-custom"]) .dlabnav .metismenu > li > a i,
:is([data-sidebarbg="madeira"], [data-sidebarbg="areia"], [data-sidebarbg="lc-custom"]) .dlabnav .metismenu > li > a .nav-text {
    color: var(--lc-menu-fg) !important;
}

:is([data-sidebarbg="madeira"], [data-sidebarbg="areia"], [data-sidebarbg="lc-custom"]) .dlabnav .metismenu a {
    color: var(--lc-menu-fg-suave, var(--lc-menu-fg)) !important;
}

:is([data-sidebarbg="madeira"], [data-sidebarbg="areia"], [data-sidebarbg="lc-custom"]) .dlabnav .metismenu > li > a:hover,
:is([data-sidebarbg="madeira"], [data-sidebarbg="areia"], [data-sidebarbg="lc-custom"]) .dlabnav .metismenu > li > a:hover i,
:is([data-sidebarbg="madeira"], [data-sidebarbg="areia"], [data-sidebarbg="lc-custom"]) .dlabnav .metismenu > li > a:focus {
    color: var(--lc-menu-fg-forte) !important;
}

:is([data-sidebarbg="madeira"], [data-sidebarbg="areia"], [data-sidebarbg="lc-custom"]) .dlabnav .metismenu .has-arrow:after {
    border-color: var(--lc-menu-fg) transparent transparent var(--lc-menu-fg) !important;
}

/* Submenu aberto no horizontal: cai sobre a moldura, nao sobre branco. */
:is([data-sidebarbg="madeira"], [data-sidebarbg="areia"], [data-sidebarbg="lc-custom"])[data-layout="horizontal"] .dlabnav .metismenu > li > ul {
    background: var(--lc-menu-submenu-bg) !important;
}

/*
 * O settings.js do tema grava `data-sibebarbg` (com o "b" trocado) enquanto o
 * CSS dele casa `[data-sidebarbg=` em 1092 regras e o typo em apenas 19. Por
 * isso o base.html.twig escreve as DUAS grafias — e por isso a cor do menu
 * lateral nao pegava direito nem com os slots nativos.
 */


/* ------------------------------------------------------------------
 * Tela de disponibilidade.
 *
 * E a tela que justifica o sistema: a resposta a "eu tenho isso nessa data?".
 * Como formulario + tabela de oito colunas de numeros, ela dava a resposta sem
 * nunca mostra-la — o veredito ficava dez linhas abaixo, e quem digitava nao
 * via nada acontecer. Aqui o veredito e o elemento principal, e o estoque de
 * cada linha vira barra, que se le de relance.
 * ------------------------------------------------------------------ */

.lc-veredito {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 1rem 1.25rem;
    border-radius: .75rem;
    border: 1px solid transparent;
    transition: background-color .15s ease, border-color .15s ease;
}

.lc-veredito-icone {
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    width: 2.75rem;
    height: 2.75rem;
    border-radius: 50%;
    font-size: 1.1rem;
}

.lc-veredito-titulo {
    font-size: 1.05rem;
    font-weight: 700;
    line-height: 1.25;
}

.lc-veredito-detalhe {
    font-size: .875rem;
    opacity: .85;
}

.lc-veredito-valor {
    margin-left: auto;
    text-align: right;
    line-height: 1.2;
    white-space: nowrap;
}

.lc-veredito-valor strong { font-size: 1.15rem; }
.lc-veredito-valor small { display: block; opacity: .75; }

/* Neutro: ninguem pediu nada ainda. */
.lc-veredito.e-neutro {
    background: var(--rgba-primary-1, rgba(0, 0, 0, .04));
    border-color: var(--rgba-primary-2, rgba(0, 0, 0, .08));
}
.lc-veredito.e-neutro .lc-veredito-icone { background: var(--rgba-primary-2); color: var(--primary); }

.lc-veredito.e-ok {
    background: rgba(40, 167, 69, .1);
    border-color: rgba(40, 167, 69, .25);
}
.lc-veredito.e-ok .lc-veredito-icone { background: rgba(40, 167, 69, .18); color: #1c7c30; }
.lc-veredito.e-ok .lc-veredito-titulo { color: #1c7c30; }

.lc-veredito.e-falta {
    background: rgba(220, 53, 69, .09);
    border-color: rgba(220, 53, 69, .25);
}
.lc-veredito.e-falta .lc-veredito-icone { background: rgba(220, 53, 69, .16); color: #b02a37; }
.lc-veredito.e-falta .lc-veredito-titulo { color: #b02a37; }

/* Barra de estoque da linha: livre, reservado e bloqueado em proporcao. */
.lc-barra {
    display: flex;
    height: .4rem;
    border-radius: 999px;
    overflow: hidden;
    background: rgba(0, 0, 0, .06);
    margin: .3rem 0 .25rem;
}

.lc-barra span { display: block; height: 100%; }
.lc-barra .e-livre { background: #28a745; }
.lc-barra .e-reservado { background: var(--primary); }
.lc-barra .e-bloqueado { background: #b9b0a8; }

.lc-disp-num { font-size: 1.05rem; line-height: 1.2; }
.lc-disp-detalhe { font-size: .78rem; }

/*
 * Linha que nao fecha no periodo.
 *
 * Vai por --bs-table-bg-state, e nao por background-color: o Bootstrap 5.3
 * pinta a listra com um box-shadow inset, que cobriria qualquer fundo posto na
 * celula. A variavel de estado e o mecanismo que ele mesmo usa para hover e
 * active, entao vale nas duas listras.
 */
.table > tbody > tr.lc-linha-falta > * {
    --bs-table-bg-state: rgba(220, 53, 69, .09);
}


/* ------------------------------------------------------------------
 * Faixa de situacoes da listagem de pedidos.
 *
 * Responde "onde estao os pedidos agora" antes de qualquer filtro, e cada
 * numero e o proprio atalho para ver aquela fila.
 *
 * Uma linha so, e rolavel de proposito: sao doze situacoes, e em cartoes
 * empilhados elas ocupavam tres fileiras — o quadro que serve para filtrar a
 * lista empurrava a lista inteira para fora da tela.
 *
 * A cor de cada chip vem de StatusReserva::cor(), a mesma do badge da linha:
 * a pessoa procura na faixa a cor que viu na tabela.
 * ------------------------------------------------------------------ */

.lc-resumo {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    gap: .35rem;
    overflow-x: auto;
    /* Sem isto o overflow corta a borda de baixo do chip em foco. */
    padding-bottom: .3rem;
    scrollbar-width: thin;
}

/* Separa o "Todos" das situacoes: ele conta outra coisa. */
.lc-resumo-divisor {
    flex: 0 0 auto;
    align-self: stretch;
    width: 1px;
    margin: .2rem .25rem;
    background: rgba(0, 0, 0, .1);
}

.lc-chip {
    --lc-situacao: var(--primary);

    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    padding: .3rem .75rem .3rem .55rem;
    border: 1px solid rgba(0, 0, 0, .08);
    border-radius: 10%;
    background: #fff;
    line-height: 1.25;
    white-space: nowrap;
    transition: border-color .15s ease, box-shadow .15s ease;
}

/* Ponto no lugar da faixa vertical: deitado, um risco de 3px nao se le. */
.lc-chip::before {
    content: "";
    flex: 0 0 auto;
    width: .5rem;
    height: .5rem;
    border-radius: 50%;
    background: var(--lc-situacao);
}

.lc-chip:hover { border-color: var(--lc-situacao); }

.lc-chip.e-ativo {
    border-color: var(--lc-situacao);
    box-shadow: inset 0 0 0 1px var(--lc-situacao);
}

.lc-chip-num {
    font-size: .95rem;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    color: var(--text-dark, #2a353a);
}

/* Sem caixa alta: "Aguardando aprovação" e "Em conferência" ficam ilegiveis
   espremidos em maiuscula, e sao justamente os rotulos mais longos. */
.lc-chip-rot {
    font-size: .78rem;
    color: var(--text-muted);
}

/* Zerada continua visivel, so nao disputa a atencao. */
.lc-chip.e-vazio { border-style: dashed; }
.lc-chip.e-vazio .lc-chip-num { color: var(--text-muted); font-weight: 600; }
.lc-chip.e-vazio::before { opacity: .3; }
.lc-chip.e-vazio:hover::before { opacity: 1; }

/*
 * As quatro cores dizem coisas diferentes, entao precisam ser distinguiveis de
 * relance — nao basta serem quentes. O ambar forte e para o que ja segura
 * material; o tom apagado, para o que ainda nao e compromisso nenhum.
 *
 * A paleta e uma so para os dois lugares que pintam situacao — a faixa de
 * chips e as colunas do quadro. Escritas duas vezes, bastava clarear o ambar
 * num delas para o mesmo pedido ficar de uma cor na lista e de outra no quadro.
 */
.lc-chip.e-primary, .lc-quadro-coluna.e-primary { --lc-situacao: var(--primary); }   /* segura estoque    */
.lc-chip.e-warning, .lc-quadro-coluna.e-warning { --lc-situacao: #bfa07a; }          /* ainda nao segura  */
.lc-chip.e-dark,    .lc-quadro-coluna.e-dark    { --lc-situacao: #5b4738; }          /* encerrado         */
.lc-chip.e-danger,  .lc-quadro-coluna.e-danger  { --lc-situacao: #c1440e; }          /* fora do fluxo     */

/* "Todos" nao e uma situacao: fica neutro e sem ponto. */
.lc-chip.e-todos { padding-left: .75rem; }
.lc-chip.e-todos::before { display: none; }


/* ------------------------------------------------------------------
 * Barra de comando da listagem.
 *
 * `lc-comandos`, e nao `lc-barra`: esse nome ja e da barrinha de ocupacao
 * da disponibilidade, ali em cima, que tem `height: .4rem` e
 * `overflow: hidden` — herdados por engano, achatavam esta faixa inteira.
 *
 * Busca, botoes do filtro e acoes da tela na mesma faixa. Eram tres blocos
 * empilhados — card de filtros, linha de botoes e, acima, o quadro de
 * situacoes —, e juntos comiam a altura de meia duzia de pedidos antes da
 * primeira linha de dado.
 * ------------------------------------------------------------------ */

.lc-comandos {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .5rem;
    margin-bottom: 1rem;
}

.lc-comandos-busca {
    flex: 1 1 18rem;
    max-width: 28rem;
}

/* Joga as acoes da tela para a ponta direita. No celular a linha ja quebrou
   antes daqui, e o empurrao nao tem efeito nenhum. */
.lc-comandos-fim { margin-left: auto; }


/* ------------------------------------------------------------------
 * Cartoes do painel.
 *
 * Quatro numeros que respondem, sem clique, o que a pessoa perguntaria ao
 * chegar: o que sai hoje, o que volta hoje, o que esta na rua, como vai o mes.
 * ------------------------------------------------------------------ */

.lc-kpi {
    display: flex;
    align-items: center;
    gap: 1rem;
    height: 100%;
    padding: 1.15rem 1.25rem;
    border-radius: .85rem;
    background: #fff;
    border: 1px solid rgba(0, 0, 0, .07);
}

.lc-kpi-icone {
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    width: 3rem;
    height: 3rem;
    border-radius: .75rem;
    font-size: 1.15rem;
}

.lc-kpi-rotulo {
    font-size: .75rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--text-muted);
}

.lc-kpi-valor {
    font-size: 1.75rem;
    font-weight: 700;
    line-height: 1.1;
    font-variant-numeric: tabular-nums;
    color: var(--text-dark, #2a353a);
}

.lc-kpi-detalhe {
    font-size: .8rem;
    color: var(--text-muted);
}

.lc-kpi.e-primary .lc-kpi-icone { background: var(--rgba-primary-2); color: var(--primary); }
.lc-kpi.e-ambar .lc-kpi-icone { background: rgba(217, 131, 36, .16); color: #b56a17; }
.lc-kpi.e-verde .lc-kpi-icone { background: rgba(40, 167, 69, .16); color: #1c7c30; }
.lc-kpi.e-escuro .lc-kpi-icone { background: rgba(59, 42, 32, .12); color: #3b2a20; }


/* Atalhos da tela de relatorios. */
.lc-atalho {
    display: flex;
    align-items: center;
    gap: 1rem;
    height: 100%;
    padding: 1.25rem;
    border-radius: .85rem;
    background: #fff;
    border: 1px solid rgba(0, 0, 0, .07);
    transition: border-color .15s ease, transform .15s ease;
}

.lc-atalho:hover { border-color: var(--primary); transform: translateY(-2px); }

.lc-atalho-icone {
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    width: 3rem;
    height: 3rem;
    border-radius: .75rem;
    background: var(--rgba-primary-2);
    color: var(--primary);
    font-size: 1.15rem;
}

.lc-atalho-titulo { font-weight: 700; color: var(--text-dark, #2a353a); }
.lc-atalho-texto { font-size: .82rem; color: var(--text-muted); }


/* ------------------------------------------------------------------
 * Separacao e conferencia de devolucao.
 * ------------------------------------------------------------------ */

/* Alvo grande: quem marca esta de pe, com o tablet numa mao. */
.lc-marcar {
    width: 1.4rem;
    height: 1.4rem;
    cursor: pointer;
}

.lc-separacao tr.lc-separado td { opacity: .5; }
.lc-separacao tr.lc-separado td:nth-child(2) { text-decoration: line-through; }

/* A coluna de cada estado leva a cor dele no cabecalho: na conferencia o
   operador procura a coluna certa de relance, e nao le o rotulo. */
.lc-conferencia th.lc-col-estado {
    width: 7rem;
    border-top: 3px solid transparent;
}

.lc-conferencia th.e-success { border-top-color: #28a745; }
.lc-conferencia th.e-warning { border-top-color: #d98324; }
.lc-conferencia th.e-danger  { border-top-color: #c1440e; }

.lc-conferencia input.js-estado:placeholder-shown { background: rgba(0, 0, 0, .02); }

.lc-kpi.e-danger .lc-kpi-icone { background: rgba(220, 53, 69, .14); color: #b02a37; }

/* Miniatura da foto do dano na conferencia. */
.lc-foto-miniatura img {
    width: 5rem;
    height: 3.5rem;
    object-fit: cover;
    border-radius: .45rem;
    border: 1px solid rgba(0, 0, 0, .12);
}

/* ------------------------------------------------------------------
   Correcao de empilhamento do cabecalho
   ------------------------------------------------------------------ */

/*
   O cabecalho fixo do tema fica em `z-index: 3`, e o Bootstrap 5 promove
   campo e botao de `.input-group` para `z-index: 5` ao receber foco. O
   resultado e o campo atravessar o menu ao rolar a pagina — visivel em
   qualquer tela com input-group, do CEP da locadora ao catalogo do
   assistente.

   Corrigido aqui, e nao no CSS do tema, porque `assets/tema/` e biblioteca
   de terceiro: mexer la some na proxima atualizacao.
*/
.header,
.nav-header,
.dlabnav {
    z-index: 10;
}


/* ------------------------------------------------------------------
 * Agenda (calendario de pedidos).
 *
 * Grade de tabela, e nao biblioteca de calendario: o que a tela precisa
 * fazer e mostrar marcas em celulas de dia, e um FullCalendar da vida
 * traria arrastar, redimensionar e fuso horario — tres coisas que esta
 * agenda nao quer, porque mudar a data de um pedido tem regra de
 * disponibilidade e nao pode acontecer por arrasto.
 * ------------------------------------------------------------------ */

.lc-agenda-titulo {
    font-size: 1.05rem;
    font-weight: 700;
    color: var(--text-dark, #2a353a);
    align-self: center;
}

.lc-agenda { table-layout: fixed; }

.lc-agenda thead th {
    text-align: center;
    font-size: .72rem;
    letter-spacing: .06em;
    text-transform: uppercase;
}

.lc-agenda td {
    vertical-align: top;
    height: 7.5rem;
    padding: .35rem;
    border: 1px solid rgba(0, 0, 0, .07);
}

/* Semana: sete colunas para os mesmos compromissos, entao cabe mais altura
   e o nome do cliente inteiro. */
.lc-agenda-semana td { height: 22rem; }

.lc-agenda td.lc-fora { background: rgba(0, 0, 0, .02); }
.lc-agenda td.lc-fora .lc-dia-numero { opacity: .45; }

.lc-agenda td.lc-hoje { background: var(--rgba-primary-1, rgba(0, 0, 0, .04)); }

.lc-dia-numero {
    font-weight: 700;
    font-size: .85rem;
    margin-bottom: .25rem;
    color: var(--text-dark, #2a353a);
}

/* A marca do dia e um link inteiro: no calendario o alvo util e a linha toda,
   e nao um numero de quatro digitos.

   `lc-agenda-marca`, e nao `lc-marca`: esta ultima e o nome do produto no
   cabecalho, e a colisao dava a ele display:flex e uma borda esquerda que
   ninguem pediu. Classe generica em CSS global e assim — um dia esbarra. */
.lc-agenda-marca {
    display: flex;
    align-items: center;
    gap: .3rem;
    font-size: .74rem;
    line-height: 1.2;
    padding: .18rem .35rem;
    margin-bottom: .18rem;
    border-radius: .3rem;
    border-left: 3px solid transparent;
    overflow: hidden;
}

.lc-agenda-marca:hover { filter: brightness(.95); }

.lc-agenda-marca-texto {
    flex: 1 1 auto;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.lc-agenda-marca-num { opacity: .6; font-variant-numeric: tabular-nums; }

.lc-agenda-marca.e-primary {
    background: var(--rgba-primary-1, rgba(0, 0, 0, .05));
    border-left-color: var(--primary, #8a5a1e);
    color: var(--primary, #8a5a1e);
}

.lc-agenda-marca.e-success { background: rgba(40, 167, 69, .12); border-left-color: #28a745; color: #1c7c30; }
.lc-agenda-marca.e-warning { background: rgba(217, 131, 36, .14); border-left-color: #d98324; color: #a6621a; }

.lc-legenda { font-size: .8rem; color: var(--text-muted); }
.lc-legenda.e-primary i { color: var(--primary, #8a5a1e); }
.lc-legenda.e-success i { color: #1c7c30; }
.lc-legenda.e-warning i { color: #a6621a; }

/* A linha de um pedido apertado na ficha do produto. */
.lc-aperto td { background: rgba(217, 131, 36, .08); }

/* Parcela que nao vira fatura: a linha inteira e o aviso, e ela nao some em
   tres segundos como um toast.
 *
 * Pinta pela VARIAVEL do Bootstrap, e nao por `background`: a listra do
 * `table-striped` nao e fundo, e um `box-shadow: inset` por cima — o fundo
 * ficava debaixo dela e a linha travada saia cinza em toda posicao impar. O
 * seletor comeca em `.table` para ganhar da regra da listra na especificidade;
 * com um seletor mais curto, quem perde e a marcacao que importa. */
.table > tbody > tr.lc-travada > td {
    --bs-table-bg-type: rgba(220, 53, 69, .07);
    background-color: rgba(220, 53, 69, .07);
}

/* Calendario de disponibilidade: a mesma grade da agenda, com o numero do dia
   pintado pelo quanto sobra. A cor responde de longe — quem esta no telefone
   procura o primeiro dia verde, e nao le trinta numeros. */
.lc-calendario td { height: 5.5rem; text-align: center; }
.lc-calendario .lc-disp-num strong { font-size: 1.15rem; }

.lc-calendario td.e-livre { background: rgba(40, 167, 69, .10); }
.lc-calendario td.e-livre .lc-disp-num strong { color: #1c7c30; }

.lc-calendario td.e-baixo { background: rgba(217, 131, 36, .14); }
.lc-calendario td.e-baixo .lc-disp-num strong { color: #a6621a; }

.lc-calendario td.e-zero { background: rgba(220, 53, 69, .12); }
.lc-calendario td.e-zero .lc-disp-num strong { color: #b02a37; }

.lc-calendario td.lc-fora { opacity: .5; }

/* Dentro da modal a mesma grade cabe em metade da altura: sao 35 celulas de
   um numero so, e a modal nao pode pedir rolagem para mostrar o mes inteiro —
   ver o mes de uma vez e a razao de a tela existir. */
.lc-calendario-mini td { height: 3rem; padding: .2rem; }
.lc-calendario-mini .lc-dia-numero { font-size: .7rem; margin-bottom: .1rem; }
.lc-calendario-mini .lc-disp-num strong { font-size: 1rem; }
.lc-calendario-mini thead th { font-size: .62rem; padding: .2rem; }

/* Acao de icone dentro de uma listagem: o botao cheio do tema pinta um bloco
   de cor por linha e passa a competir com o numero que a tela existe para
   mostrar. Aqui a cor so aparece no hover, quando alguem ja esta mirando. */
.lc-acao-icone {
    border: 0;
    background: transparent;
    color: var(--text-muted, #7e7e7e);
    padding: .1rem .25rem;
    border-radius: .3rem;
    line-height: 1;
    opacity: .55;
    transition: opacity .15s ease, color .15s ease, background-color .15s ease;
}

.lc-acao-icone:hover,
.lc-acao-icone:focus-visible {
    opacity: 1;
    color: var(--primary, #8a5a1e);
    background: var(--rgba-primary-1, rgba(0, 0, 0, .05));
}


/* ------------------------------------------------------------------
 * Cartao de cobranca da ficha do pedido.
 *
 * O bloco existe para responder, em ordem: quanto foi cobrado, quanto entrou,
 * o que falta — e so entao as parcelas, uma a uma. A barra e a frase ficam
 * entre as duas coisas de proposito: e a ponte entre o numero e a acao.
 * ------------------------------------------------------------------ */

.lc-cobranca-resumo {
    padding: 1.1rem 1.25rem;
    border-radius: .85rem;
    background: rgba(0, 0, 0, .015);
    border: 1px solid rgba(0, 0, 0, .07);
}

.lc-cobranca-valor {
    font-size: 1.35rem;
    font-weight: 700;
    line-height: 1.2;
    font-variant-numeric: tabular-nums;
    color: var(--text-dark, #2a353a);
}

/* Barra propria, e nao o `.progress` do tema: aqui ela e um tracinho de
   leitura embaixo dos numeros, e nao um componente com altura de formulario. */
.lc-cobranca-barra {
    height: .4rem;
    border-radius: 1rem;
    background: rgba(0, 0, 0, .08);
    overflow: hidden;
}

.lc-cobranca-barra-cheia {
    width: 0;
    height: 100%;
    border-radius: 1rem;
    background: #28a745;
    transition: width .35s ease;
}

.lc-cobranca-frase {
    font-size: .875rem;
    color: var(--text-muted, #7e7e7e);
}

/* O botao de refazer e o aviso do que ele faz: lado a lado no desktop,
   empilhados no celular — onde a frase inteira cabe sem espremer o botao. */
.lc-cobranca-rodape {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .5rem .75rem;
    font-size: .82rem;
}


/* Parcelas canceladas: historico atras de um clique. Discreto de proposito —
   quem abre a ficha quer o que falta receber, nao o que foi desfeito. */
.lc-canceladas-botao {
    color: var(--text-muted, #7e7e7e);
    text-decoration: none;
}

.lc-canceladas-botao:hover,
.lc-canceladas-botao:focus-visible {
    color: var(--primary, #8a5a1e);
    text-decoration: underline;
}

.lc-canceladas-lista {
    border-left: 2px solid rgba(0, 0, 0, .08);
    padding-left: .85rem;
}

.lc-cancelada {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .25rem .75rem;
    padding: .3rem 0;
    font-size: .85rem;
    color: var(--text-muted, #7e7e7e);
}

.lc-cancelada + .lc-cancelada { border-top: 1px dashed rgba(0, 0, 0, .07); }

.lc-cancelada-data { font-variant-numeric: tabular-nums; }

/* O risco cai no texto, e nao na linha inteira: data e valor riscados viram
   ruido, e o valor ainda precisa ser lido para conferir o que foi desfeito. */
.lc-cancelada-texto { text-decoration: line-through; }

.lc-cancelada-valor {
    margin-left: auto;
    font-variant-numeric: tabular-nums;
}

/* ------------------------------------------------------------------
 * Fotos do produto.
 *
 * A grade e quadrada e a foto entra por `object-fit: cover`: catalogo de
 * locadora tem foto em pe, deitada e recortada, e sem o quadrado a grade fica
 * com buracos de alturas diferentes. O corte e so na miniatura — clicar abre a
 * foto inteira.
 * ------------------------------------------------------------------ */

.lc-foto {
    position: relative;
    aspect-ratio: 1;
    border-radius: .5rem;
    overflow: hidden;
    background: var(--card-element-color, #f3f3f3);
}

.lc-foto img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    cursor: zoom-in;
    display: block;
}

/* A capa se anuncia: sem isto, "qual e a que aparece na listagem?" so se
   responde contando a posicao na grade. */
.lc-foto.e-capa { box-shadow: 0 0 0 2px var(--primary); }

.lc-foto-capa {
    position: absolute;
    top: .3rem;
    left: .3rem;
    background: var(--primary);
    color: #fff;
    border-radius: .35rem;
    padding: 0 .35rem;
    font-size: .7rem;
    line-height: 1.5;
    letter-spacing: .02em;
}

/* Os botoes aparecem no hover, e ficam sempre visiveis no toque — no tablet do
   deposito nao existe hover, e um botao que nunca aparece e um botao que nao
   existe. */
.lc-foto-acoes {
    position: absolute;
    right: .3rem;
    bottom: .3rem;
    display: flex;
    gap: .2rem;
    opacity: 0;
    transition: opacity .15s;
}

.lc-foto:hover .lc-foto-acoes,
.lc-foto:focus-within .lc-foto-acoes { opacity: 1; }

@media (hover: none) {
    .lc-foto-acoes { opacity: 1; }
}

/* Miniatura da capa na listagem. */
.lc-capa-lista {
    width: 2.2rem;
    height: 2.2rem;
    border-radius: .35rem;
    object-fit: cover;
    flex: 0 0 auto;
    background: var(--card-element-color, #f3f3f3);
}

.lc-capa-lista.e-vazia {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: #b9b0a8;
    font-size: .8rem;
}

/* ------------------------------------------------------------------
 * QR do pedido para o aplicativo de deposito.
 *
 * O desenho ao lado do texto, e nao acima: o cartao fica na coluna estreita da
 * ficha, e um QR de 150px empilhado sobre tres linhas de texto empurraria o
 * resto do pedido para baixo da dobra.
 * ------------------------------------------------------------------ */

.lc-qr {
    display: flex;
    align-items: center;
    gap: 1rem;
    flex-wrap: wrap;
}

/* Fundo branco sempre: leitor de QR precisa do contraste, e o cartao pode
   estar sobre um tom de tela. */
.lc-qr img {
    flex: 0 0 auto;
    background: #fff;
    padding: .4rem;
    border-radius: .5rem;
    border: 1px solid var(--border, #e6e6e6);
}

.lc-qr-texto { flex: 1 1 12rem; }

/* Um endereco publico com rotulo e botao de copiar. Sao dois na tela da
   locadora — o feed e a pagina pronta —, e eles precisam ser distinguiveis num
   olhar: quem cola no plugin nao pode colar o da divulgacao. */
/*
 * Bloco que ainda não vale, mas continua na tela.
 *
 * Esconder o que depende de uma decisão que ainda não foi tomada faz a locadora
 * achar que a tela mudou de lugar quando ela toma a decisão. Desbotado ela vê o
 * que vem a seguir, e vê que ainda não é hora — sem `pointer-events: none`, que
 * impediria de ler e de preparar o texto antes de ligar.
 */
.lc-desbotado { opacity: .55; }

/* ------------------------------------------------------------------ dobras

   O bloco opcional de um formulário longo.

   Não é acordeão nem aba: é `<details>` puro, que abre e fecha sem JavaScript
   e continua funcionando com o teclado e com leitor de tela de graça. O resumo
   diz o que há dentro e para quem serve, porque um "Mais opções" genérico só
   move o trabalho de decidir para depois do clique.
*/
.lc-dobra {
    background: var(--card-bg, #fff);
    border: 1px solid var(--border-color, #eaeaea);
    border-radius: 1rem;
    margin-bottom: 1.5rem;
    box-shadow: 0 0 .875rem 0 rgba(34, 41, 47, .05);
}

.lc-dobra > summary {
    cursor: pointer;
    padding: 1.25rem 1.5rem;
    font-weight: 600;
    list-style: none;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .5rem;
}

/* A setinha padrão do navegador some, e entra uma que gira: a do Chrome e a do
   Firefox são desenhadas diferente, e num formulário isso parece defeito. */
.lc-dobra > summary::-webkit-details-marker { display: none; }

.lc-dobra > summary::after {
    content: '\f078';
    font-family: 'Font Awesome 6 Free', 'Font Awesome 5 Free';
    font-weight: 900;
    margin-left: auto;
    font-size: .8rem;
    opacity: .5;
    transition: transform .15s ease;
}

.lc-dobra[open] > summary::after { transform: rotate(180deg); }

.lc-dobra-de {
    font-weight: 400;
    font-size: .82rem;
    color: var(--text-muted, #7e7e7e);
}

.lc-dobra-corpo { padding: 0 1.5rem 1.25rem; }

.lc-endereco {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .5rem;
    margin-bottom: .5rem;
}

.lc-endereco-rotulo {
    flex: 0 0 100%;
    font-size: .75rem;
    font-weight: 600;
    color: var(--text-dark, #2a353a);
}

.lc-endereco .lc-qr-url { flex: 1 1 18rem; }

/* A pagina pronta do catalogo, dentro do bloco da vitrine: uma caixa, e nao um
   card novo, porque e a mesma decisao — o que muda e o publico dela. */
.lc-vitrine-pagina {
    border: 1px solid var(--border, #e6e6e6);
    border-radius: .5rem;
    background: var(--card-element-color, #f7f7f7);
}

.lc-qr-url {
    display: block;
    font-size: .78rem;
    word-break: break-all;
    /* O <code> do Bootstrap vem em rosa (#d63384) sobre fundo claro: aqui e um
       endereco para copiar, e nao um erro. */
    color: var(--text-dark, #2a353a);
    background: var(--card-element-color, #f3f3f3);
    border-radius: .35rem;
    padding: .25rem .5rem;
}

/* Foto do item conferido, na ficha do pedido: miniatura pequena, porque a
   linha da conferencia e uma linha de tabela — a foto grande abre no clique. */
.lc-foto-dano {
    display: inline-block;
    margin-top: .35rem;
}

.lc-foto-dano img {
    width: 3.5rem;
    height: 3.5rem;
    object-fit: cover;
    border-radius: .35rem;
    border: 1px solid var(--border, #e6e6e6);
}

/* ------------------------------------------------------------------
 * Ficha do pedido: faixa de resumo e abas.
 *
 * A faixa responde "em que pé está" sem rolar, e as abas guardam o resto. O
 * tema não traz estilo proprio para .nav-tabs, e o padrao do Bootstrap encosta
 * nos cards sem respiro.
 * ------------------------------------------------------------------ */

.lc-resumo-valor {
    font-size: 1.05rem;
    font-weight: 600;
    color: var(--text-dark, #2a353a);
    line-height: 1.3;
}

.lc-resumo-total {
    font-size: 1.6rem;
    font-weight: 700;
    line-height: 1.2;
    color: var(--text-dark, #2a353a);
}

/* ------------------------------------------------------------------
 * Explicacao longa, fechada por padrao.
 *
 * O texto que explica uma regra e util **quando alguem pergunta**, e
 * entulho quando fica aberto em toda visita. O <details> nativo faz isso
 * sem JavaScript e sem plugin: um clique abre, o teclado alcanca, e o
 * conteudo continua no HTML para quem le com leitor de tela.
 * ------------------------------------------------------------------ */

.lc-ajuda {
    margin-top: 1rem;
    border-top: 1px solid var(--border, #e6e6e6);
    padding-top: .75rem;
}

.lc-ajuda > summary {
    cursor: pointer;
    font-size: .875rem;
    font-weight: 500;
    color: var(--primary);
    list-style: none;
}

.lc-ajuda > summary::-webkit-details-marker { display: none; }

/* A seta e desenhada, e nao o marcador do navegador: o do Chrome e o do
   Firefox tem tamanhos diferentes e nenhum dos dois acompanha a cor. */
.lc-ajuda > summary::before {
    content: '\203A';
    display: inline-block;
    margin-right: .5rem;
    transition: transform .15s ease;
}

.lc-ajuda[open] > summary::before { transform: rotate(90deg); }

.lc-ajuda[open] > summary { margin-bottom: .75rem; }

.lc-abas {
    border-bottom: 1px solid var(--border, #e6e6e6);
    gap: .25rem;
}

.lc-abas .nav-link {
    border: 0;
    border-bottom: 2px solid transparent;
    border-radius: .5rem .5rem 0 0;
    color: var(--text-gray, #737B8B);
    font-weight: 500;
    padding: .65rem 1rem;
}

.lc-abas .nav-link:hover { color: var(--primary); }

/* A aba ativa se marca pela linha embaixo, e nao por caixa: a ficha ja tem
   cartao demais desenhado, e mais uma moldura viraria ruido. */
.lc-abas .nav-link.active {
    color: var(--primary);
    background: transparent;
    border-bottom-color: var(--primary);
}

/* ------------------------------------------------------------------
 * Etiqueta do painel da plataforma.
 *
 * As duas telas — a nossa e a do cliente — nao podem ser confundidas: quem
 * opera a plataforma ve dados de todas as locadoras, e achar que esta dentro de
 * um tenant e o engano caro deste painel. Por isso a etiqueta e permanente, e
 * nao um detalhe do cabecalho.
 * ------------------------------------------------------------------ */

.lc-etiqueta-plataforma {
    display: inline-flex;
    align-items: center;
    background: #3b2a20;
    color: #f6f1ea;
    border-radius: 999px;
    padding: .2rem .75rem;
    font-size: .8rem;
    font-weight: 600;
    letter-spacing: .02em;
}

/* O aviso ao lado da etiqueta vive sobre o cabecalho escuro: `text-muted` do
   tema e cinza de fundo claro, e sumia ali. */
.lc-etiqueta-aviso {
    color: var(--lc-header-fg-mute, rgba(255, 255, 255, .64));
    font-size: .85rem;
}

/* ------------------------------------------------------------------
 * Cards lado a lado com a mesma altura.
 *
 * `cardClass: 'h-100'` sozinho nao resolve: `height: 100%` precisa de um pai
 * com altura resolvida, e a coluna do Bootstrap so estica **como flex item**.
 * Sem isto, o card curto ficava com metade cinza ao lado do card alto e o bloco
 * seguinte parecia invadir a linha — o que aparecia nos relatorios sem dado,
 * onde os dois cards dizem apenas "Nenhuma ocorrencia no periodo".
 *
 * `:has` limita o efeito as colunas que realmente pedem altura igual; nenhuma
 * outra tela muda. E o card fica em `block` de proposito: transformar o proprio
 * card em flex desalinha o cabecalho colapsavel do tema, que conta com o fluxo
 * normal.
 * ------------------------------------------------------------------ */

.row > [class*="col-"]:has(> .cm-content-box.h-100) {
    display: flex;
    flex-direction: column;
}

.cm-content-box.h-100 {
    flex: 1 1 auto;
}

/* ------------------------------------------------------------------
 * Deposito na ficha do pedido: checklists e conferencias.
 *
 * Os dois blocos eram tabela crua, uma atras da outra, separadas por um fio:
 * um pedido com seis produtos conferidos na saida e na volta sao doze listas
 * iguais, e nessa parede nao se acha nada. Aqui cada execucao e cada
 * conferencia e um painel com cabecalho proprio — o que se pergunta no
 * telefone ("saiu revisado?", "o que foi que quebrou?") se responde no
 * cabecalho, sem ler linha por linha.
 *
 * Toda cor sai de variavel do tema, e nao de hex fixo: a mesma tela e lida no
 * claro do escritorio e no escuro. Os tons de fundo sao rgba sobre as _rgb_ do
 * Bootstrap porque as `*-bg-subtle` do tema so viram no escuro sob
 * `[data-bs-theme]`, que este projeto nao usa — ficariam rosa-claro sobre
 * cartao preto.
 * ------------------------------------------------------------------ */

.lc-exec,
.lc-conf {
    border: 1px solid var(--border, #e6e6e6);
    border-radius: .6rem;
    overflow: hidden;
}

.lc-exec + .lc-exec,
.lc-conf + .lc-conf {
    margin-top: .85rem;
}

/* A tinta da borda esquerda e o unico sinal que se le de relance numa pilha de
   paineis: verde fechou, ambar ainda esta aberto, vermelho voltou com item
   fora do normal. */
.lc-exec.e-fechada,
.lc-conf.e-limpa {
    border-left: 3px solid var(--bs-success, #1EBA62);
}

.lc-exec.e-aberta {
    border-left: 3px solid var(--bs-warning, #FFAB2D);
}

.lc-conf.e-alerta {
    border-left: 3px solid var(--bs-danger, #fd5353);
}

.lc-exec-cab,
.lc-conf-cab {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .75rem;
    padding: .6rem .85rem;
    background: var(--card-element-color, #f3f3f3);
    border-bottom: 1px solid var(--border, #e6e6e6);
}

.lc-exec-momento {
    flex: 0 0 auto;
    width: 2rem;
    height: 2rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    font-size: .85rem;
    color: var(--primary);
    background: var(--card, #fff);
    border: 1px solid var(--border, #e6e6e6);
}

.lc-conf.e-limpa .lc-exec-momento { color: var(--bs-success, #1EBA62); }
.lc-conf.e-alerta .lc-exec-momento { color: var(--bs-danger, #fd5353); }

/* `min-width: 0` porque nome de produto longo em flex item nao quebra sozinho:
   sem isto ele empurra a fracao e o badge para fora do cartao. */
.lc-exec-identidade {
    flex: 1 1 10rem;
    min-width: 0;
}

.lc-exec-nome {
    display: block;
    line-height: 1.25;
    word-break: break-word;
}

.lc-exec-meta {
    font-size: .78rem;
    color: var(--text, #888);
    line-height: 1.35;
}

.lc-exec-progresso {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .5rem;
    margin-left: auto;
}

.lc-exec-fracao {
    font-weight: 700;
    font-size: .95rem;
    color: var(--text-dark, #2a353a);
}

.lc-exec-de {
    font-weight: 400;
    font-size: .8rem;
    opacity: .6;
}

/* A barra e o resumo do resumo: 5 de 7 se le no numero, mas "quase tudo" se ve
   sem ler. Trilho na cor da borda para acompanhar o tema. */
.lc-barra {
    display: block;
    width: 5rem;
    height: .375rem;
    border-radius: 1rem;
    background: var(--border, #e6e6e6);
    overflow: hidden;
}

.lc-barra > span {
    display: block;
    height: 100%;
    border-radius: inherit;
    background: var(--primary);
}

.lc-exec.e-fechada .lc-barra > span {
    background: var(--bs-success, #1EBA62);
}

.lc-etapas {
    list-style: none;
    margin: 0;
    padding: .25rem .85rem .5rem;
}

.lc-etapa {
    display: flex;
    align-items: flex-start;
    gap: .6rem;
    padding: .45rem 0;
}

.lc-etapa + .lc-etapa {
    border-top: 1px dashed var(--border, #e6e6e6);
}

.lc-etapa-marca {
    flex: 0 0 auto;
    margin-top: .18rem;
    font-size: .95rem;
    color: var(--text, #888);
    opacity: .55;
}

.lc-etapa.e-nao_ok .lc-etapa-marca { color: #b02a37; }
.lc-etapa.e-nao_ok .lc-etapa-desc { color: #b02a37; font-weight: 600; }
.lc-etapa.e-ok .lc-etapa-marca {
    color: var(--bs-success, #1EBA62);
    opacity: 1;
}

/* Etapa que ficou para tras num checklist JA FECHADO nao e detalhe: e material
   que saiu do galpao sem aquela conferencia. Em checklist aberto a mesma linha
   e so o que ainda falta fazer, e continua apagada. */
.lc-exec.e-fechada .lc-etapa.e-pendente .lc-etapa-marca {
    color: var(--bs-warning, #FFAB2D);
    opacity: 1;
}

.lc-etapa-corpo {
    flex: 1 1 auto;
    min-width: 0;
}

.lc-etapa-desc {
    display: block;
    line-height: 1.35;
}

/* A miniatura e a terceira coluna da linha, encostada na direita.
 *
 * `margin-left: auto` em vez de largura fixa no corpo: assim a coluna das fotos
 * fica no mesmo lugar em todas as linhas, independentemente do tamanho do
 * rotulo — que e o que faz a pilha ser lida de relance. E `margin-top: 0`
 * porque o espaco que a `.lc-foto-dano` reserva existe para quando ela vem
 * DEBAIXO do texto, na conferencia; aqui ela vem ao lado, e alinhada pelo topo
 * com o check e com a descricao. */
.lc-etapa-foto {
    flex: 0 0 auto;
    margin-top: 0;
    margin-left: auto;
}

.lc-etapa-obs {
    margin: .2rem 0 0;
    font-size: .8rem;
    line-height: 1.35;
    color: var(--text, #888);
}

/* Etiqueta de pendencia: era `text-danger` monoespacado no meio do texto e
   passava batido. Chip vermelho, com o icone do que falta. */
.lc-selo {
    display: inline-flex;
    align-items: center;
    gap: .3rem;
    margin-top: .3rem;
    padding: .12rem .45rem;
    border-radius: .3rem;
    font-size: .75rem;
    font-weight: 500;
}

.lc-selo-falta {
    color: var(--bs-danger, #fd5353);
    background: rgba(var(--bs-danger-rgb, 253, 83, 83), .12);
}

/* As fotos soltas do equipamento, no pe da conferencia.
 *
 * Separadas da lista por uma linha tracejada porque elas nao pertencem a etapa
 * nenhuma: as da lista provam um item conferido, estas mostram em que estado a
 * maquina passou de mao. Alinhadas pelo mesmo recuo das etapas, para a ficha
 * continuar lendo como uma coluna so. */
.lc-exec-fotos {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .5rem;
    margin: 0 .85rem;
    padding: .55rem 0 .75rem;
    border-top: 1px dashed var(--border, rgba(128, 128, 128, .25));
}

.lc-exec-fotos .lc-selo {
    width: 100%;
    margin-top: 0;
    padding-left: 0;
    color: var(--text, #888);
}

.lc-conf-obs {
    margin: 0;
    padding: .55rem .85rem 0;
    font-size: .82rem;
    color: var(--text, #888);
}

.lc-conf-itens {
    list-style: none;
    margin: 0;
    padding: .55rem .85rem .6rem;
}

.lc-conf-item {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: .75rem;
    padding: .45rem .6rem;
    border-radius: .4rem;
    border-left: 3px solid var(--border, #e6e6e6);
}

.lc-conf-item + .lc-conf-item {
    margin-top: .3rem;
}

/* Item que voltou normal e a maioria das linhas e nao e noticia: fica sem
   fundo e sem peso, para as poucas linhas ruins ficarem sozinhas na cor. */
.lc-conf-item.e-warning:not(.e-normal) {
    border-left-color: var(--bs-warning, #FFAB2D);
    background: rgba(var(--bs-warning-rgb, 255, 171, 45), .1);
}

.lc-conf-item.e-danger:not(.e-normal) {
    border-left-color: var(--bs-danger, #fd5353);
    background: rgba(var(--bs-danger-rgb, 253, 83, 83), .1);
}

.lc-conf-corpo {
    flex: 1 1 12rem;
    min-width: 0;
}

.lc-conf-produto {
    display: block;
    line-height: 1.3;
    word-break: break-word;
}

.lc-conf-item:not(.e-normal) .lc-conf-produto {
    font-weight: 600;
}

.lc-conf-estado {
    flex: 0 0 auto;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: .2rem;
    text-align: right;
}

.lc-conf-qtd {
    font-size: .8rem;
    color: var(--text, #888);
}

/* O seletor comeca por `a` de proposito: no tema escuro, `[data-theme-version]
   a` pinta TODO link de branco, e uma classe sozinha perde para ele. */
a.lc-conf-ocorrencia,
a.lc-conf-ocorrencia:hover {
    display: inline-flex;
    align-items: center;
    gap: .3rem;
    font-size: .78rem;
    font-weight: 600;
    color: var(--bs-danger, #fd5353);
}

a.lc-conf-ocorrencia:hover {
    text-decoration: underline;
}

/* A miniatura convida ao clique: parada, ela parece enfeite de linha. */
.lc-foto-dano img {
    transition: transform .12s ease, border-color .12s ease;
}

.lc-foto-dano:hover img {
    transform: scale(1.06);
    border-color: var(--primary);
}

/* Aba sem checklist e sem conferencia: dizer que esta vazia, e de onde vem o
   que falta. Pagina em branco se le como erro de tela. */
.lc-deposito-vazio {
    border: 1px dashed var(--border, #e6e6e6);
    border-radius: .6rem;
    padding: 2rem 1.25rem;
    text-align: center;
    font-size: .88rem;
    color: var(--text, #888);
}

.lc-deposito-vazio > i {
    display: block;
    margin-bottom: .6rem;
    font-size: 1.8rem;
    opacity: .35;
}

.lc-deposito-vazio-titulo {
    margin-bottom: .35rem;
    font-weight: 600;
    color: var(--text-dark, #2a353a);
}

/* No celular o cabecalho ja quebrou em duas linhas: a barra ocupa a largura
   que sobrou em vez de ficar num toco de 5rem encostado na direita. */
@media (max-width: 575.98px) {
    .lc-exec-progresso {
        margin-left: 0;
        width: 100%;
    }

    .lc-barra {
        flex: 1 1 auto;
        width: auto;
    }
}


/* ------------------------------------------------------------------
 * Quadro de pedidos — a mesma listagem, em colunas por situacao.
 *
 * A lista responde "onde esta o pedido nº 42"; o quadro responde "onde esta o
 * trabalho", que e a pergunta da segunda-feira de manha. Por isso ele nao
 * pagina e nao ordena por relevancia: cada coluna carrega o comeco da fila,
 * na ordem em que o prazo vence, e diz por extenso quantos ficaram de fora.
 *
 * As colunas rolam na horizontal, e cada uma rola por dentro: nove situacoes
 * nao cabem numa tela, e espremer as nove faria o cartao ficar mais estreito
 * que o nome do cliente.
 * ------------------------------------------------------------------ */

.lc-quadro {
    display: flex;
    gap: .75rem;
    align-items: flex-start;
    overflow-x: auto;
    padding-bottom: .75rem;
    scrollbar-width: thin;
}

.lc-quadro-coluna {
    --lc-situacao: var(--primary);

    flex: 0 0 19.5rem;
    display: flex;
    flex-direction: column;
    max-height: calc(100vh - 15rem);
    border: 1px solid rgba(0, 0, 0, .07);
    border-top: 3px solid var(--lc-situacao);
    border-radius: .7rem;
    background: rgba(0, 0, 0, .015);
}

.lc-quadro-cab {
    display: flex;
    align-items: baseline;
    gap: .4rem;
    padding: .6rem .7rem .5rem;
}

/* Sem caixa alta, pelo mesmo motivo dos chips: "Aguardando aprovação" e
   "Em conferência" sao justamente os rotulos que ficam ilegiveis espremidos. */
.lc-quadro-rotulo {
    font-size: .82rem;
    font-weight: 600;
    color: var(--text-dark, #2a353a);
}

.lc-quadro-conta {
    margin-left: auto;
    font-size: .8rem;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    color: var(--text-muted);
}

.lc-quadro-lista {
    display: flex;
    flex-direction: column;
    gap: .5rem;
    overflow-y: auto;
    padding: 0 .5rem .5rem;
    scrollbar-width: thin;
    /* Coluna vazia continua sendo alvo de soltar: sem altura minima, a unica
       forma de mover o primeiro pedido para ela seria acertar a faixa de
       3px do cabecalho. */
    min-height: 4.5rem;
}

/* Coluna sem cartao diz que esta vazia. Espaco em branco, numa tela de
   arrastar, se le como "ainda carregando". */
.lc-quadro-vazia {
    margin: auto;
    padding: .5rem;
    font-size: .78rem;
    text-align: center;
    color: var(--text-muted);
    opacity: .75;
}

/* Quantos a coluna nao mostrou, e o caminho para ve-los: o quadro nao pagina,
   e um numero de cartoes que nao bate com o do cabecalho, sem explicacao,
   faria a pessoa achar que sumiu pedido. */
.lc-quadro-mais {
    padding: .4rem;
    border: 0;
    border-radius: .45rem;
    background: transparent;
    font-size: .78rem;
    color: var(--primary);
}

.lc-quadro-mais:hover { background: rgba(0, 0, 0, .04); }

/* ---------------------------------------------------------- o cartao */

.lc-cartao {
    display: flex;
    flex-direction: column;
    gap: .3rem;
    padding: .55rem .65rem;
    border: 1px solid rgba(0, 0, 0, .08);
    border-radius: .55rem;
    background: #fff;
}

.lc-cartao[draggable="true"] { cursor: grab; }

.lc-cartao-topo {
    display: flex;
    align-items: center;
    gap: .4rem;
}

.lc-cartao-numero {
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    color: var(--text-dark, #2a353a);
}

.lc-cartao-numero:hover { color: var(--primary); }

/* O nome inteiro nao cabe em 16rem, e cortar no meio e melhor do que empurrar
   o cartao para tres linhas: o `title` guarda o nome completo. */
.lc-cartao-cliente {
    overflow: hidden;
    font-size: .84rem;
    color: var(--text, #7e7e7e);
    text-overflow: ellipsis;
    white-space: nowrap;
}

.lc-cartao-cliente:hover { color: var(--primary); }

.lc-cartao-periodo {
    font-size: .78rem;
    font-variant-numeric: tabular-nums;
    color: var(--text-muted);
}

.lc-cartao-rodape {
    display: flex;
    align-items: center;
    gap: .4rem;
    font-size: .78rem;
    color: var(--text-muted);
}

.lc-cartao-valor {
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    color: var(--text-dark, #2a353a);
}

.lc-cartao-acoes {
    display: flex;
    justify-content: flex-end;
    gap: .25rem;
    margin-top: .1rem;
}

/* O prazo deste pedido ja passou e ninguem esta mexendo nele. A faixa fica na
   lateral porque a borda de cima da coluna ja e da situacao — duas cores
   disputando a mesma aresta nao dizem nenhuma das duas coisas. */
.lc-cartao.e-atrasado {
    border-left: 3px solid #c1440e;
    padding-left: .5rem;
}

.lc-cartao-atraso {
    margin-left: .3rem;
    font-weight: 600;
    color: #c1440e;
}

/* ------------------------------------------------------ arrastar e soltar */

/* Enquanto um cartao esta na mao, as colunas dizem o que aceitam. Sem isto, a
   unica forma de descobrir para onde o pedido pode ir seria tentando. */
.lc-cartao.e-arrastando { opacity: .4; }

.lc-quadro.e-arrastando .lc-quadro-coluna { opacity: .45; }

.lc-quadro.e-arrastando .lc-quadro-coluna.e-alvo,
.lc-quadro.e-arrastando .lc-quadro-coluna.e-travado,
.lc-quadro.e-arrastando .lc-quadro-coluna.e-origem { opacity: 1; }

.lc-quadro-coluna.e-alvo { background: rgba(0, 0, 0, .04); }

.lc-quadro-coluna.e-alvo .lc-quadro-lista {
    border: 1px dashed var(--lc-situacao);
    border-radius: .5rem;
}

.lc-quadro-coluna.e-sobre {
    background: rgba(0, 0, 0, .07);
    box-shadow: inset 0 0 0 1px var(--lc-situacao);
}

/* Transicao que existe mas esta travada — cobranca vencida, por exemplo.
   Continua aceitando o cartao de proposito: soltar ali devolve o motivo, e
   coluna que so recusa nao ensina o que falta. */
.lc-quadro-coluna.e-travado .lc-quadro-lista {
    border: 1px dashed rgba(0, 0, 0, .2);
    border-radius: .5rem;
}

/* No celular a coluna ocupa quase a tela inteira e se rola de lado. Arrastar
   nao existe em toque — o botao de avancar no proprio cartao e o caminho,
   e ele esta la nas duas visoes. */
@media (max-width: 575.98px) {
    .lc-quadro-coluna {
        flex-basis: 85vw;
        max-height: none;
    }
}


/* ------------------------------------------------------------------
 * Menu de acoes solto no <body> enquanto esta aberto — ver "menu dentro de
 * container que rola", no script da listagem de pedidos.
 *
 * `right: auto` e o que faz o resto funcionar. O tema traz
 * `.dropdown-menu.show { right: 0 }`, que prende a borda direita do menu na
 * borda do bloco que o contem. Dentro do `.dropdown` isso e inofensivo — o
 * bloco e o proprio botao —, mas solto no `<body>` o menu passa a comecar na
 * direita da pagina: com o `left` que este script escreve, ele estica de ponta
 * a ponta; sem ele, abre a um ecra de distancia do botao. Foi essa regra, e
 * nao o posicionamento, que fez o menu parecer quebrado.
 *
 * A posicao vem do JS, em coordenadas de pagina, entao margem herdada tambem
 * sai: ela entraria na conta como um deslocamento invisivel.
 * ------------------------------------------------------------------ */

.dropdown-menu.e-solto.show {
    position: absolute;
    right: auto;
    margin: 0;
    /* O tema deixa o menu em `z-index: 8`, que basta dentro do card. No
       <body> ele disputa com o cabecalho fixo e com o menu lateral. */
    z-index: 1000;
}


/* ------------------------------------------------------------------
 * Escolha entre poucas opções que mudam o resto do formulário.
 *
 * O lado do caixa de um lançamento decide quem se procura no cadastro —
 * cliente ou fornecedor — e o que a tela pergunta a seguir. Num <select>,
 * essa consequência acontece atrás de um clique que ninguém vê: a lista fecha,
 * um campo muda, e a relação entre as duas coisas fica por conta da memória.
 *
 * Lado a lado, as duas opções são lidas antes de escolhidas, e o que muda
 * muda à vista.
 * ------------------------------------------------------------------ */

.lc-escolha {
    display: flex;
    gap: .6rem;
    flex-wrap: wrap;
}

.lc-escolha-opcao {
    flex: 1 1 12rem;
    margin: 0;
    cursor: pointer;
}

/* O rádio some da tela, e não do documento: `display: none` o tiraria da
   navegação por teclado, e a escolha ficaria só para quem usa mouse. */
.lc-escolha-opcao input {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0;
}

.lc-escolha-corpo {
    display: grid;
    grid-template-columns: auto 1fr;
    grid-template-rows: auto auto;
    align-items: center;
    column-gap: .6rem;
    padding: .75rem .9rem;
    border: 1px solid rgba(0, 0, 0, .1);
    border-radius: .6rem;
    background: #fff;
    transition: border-color .15s ease, box-shadow .15s ease;
}

.lc-escolha-corpo > i {
    grid-row: 1 / 3;
    font-size: 1.15rem;
}

.lc-escolha-titulo {
    font-weight: 600;
    color: var(--text-dark, #2a353a);
}

.lc-escolha-nota {
    font-size: .78rem;
    color: var(--text-muted);
}

.lc-escolha-opcao:hover .lc-escolha-corpo { border-color: var(--primary); }

.lc-escolha-opcao input:checked + .lc-escolha-corpo {
    border-color: var(--primary);
    box-shadow: inset 0 0 0 1px var(--primary);
    background: var(--rgba-primary-1, rgba(0, 0, 0, .02));
}

/* Foco de teclado visível: sem isto, quem navega por Tab não sabe onde está. */
.lc-escolha-opcao input:focus-visible + .lc-escolha-corpo {
    outline: 2px solid var(--primary);
    outline-offset: 2px;
}


/* ------------------------------------------------------------------
 * Prévia da regra, dentro do formulário que a define.
 *
 * A despesa recorrente não é um dado, é uma REGRA: "todo dia 31, a partir de
 * março". Um formulário de regra sem o resultado dela pede que a pessoa simule
 * de cabeça o que o dia 31 faz em fevereiro — e quem erra essa conta só
 * descobre quando a conta vence no mês seguinte.
 *
 * As datas vêm do servidor, e não de uma conta em JavaScript: é a mesma
 * `Recorrencia::caiEm()` que a geração executa. Prévia que diverge do que
 * acontece é pior que prévia nenhuma.
 * ------------------------------------------------------------------ */

.lc-previa {
    margin-top: .5rem;
    border: 1px solid rgba(0, 0, 0, .08);
    border-left: 3px solid var(--primary);
    border-radius: .6rem;
    background: rgba(0, 0, 0, .015);
    overflow: hidden;
}

.lc-previa-cab {
    display: flex;
    align-items: baseline;
    gap: .45rem;
    padding: .6rem .85rem;
    border-bottom: 1px solid rgba(0, 0, 0, .06);
    font-size: .82rem;
    font-weight: 600;
    color: var(--text-dark, #2a353a);
}

.lc-previa-nota {
    margin-left: auto;
    font-size: .76rem;
    font-weight: 400;
    color: var(--text-muted);
}

.lc-previa-corpo { padding: .35rem .85rem .6rem; }

.lc-previa-linha {
    display: flex;
    align-items: baseline;
    gap: .75rem;
    padding: .3rem 0;
    font-variant-numeric: tabular-nums;
}

.lc-previa-linha + .lc-previa-linha { border-top: 1px dashed rgba(0, 0, 0, .06); }

.lc-previa-data {
    min-width: 6rem;
    font-weight: 600;
    color: var(--text-dark, #2a353a);
}

.lc-previa-valor { flex: 1 1 auto; }

/* O mês que já virou conta. É o aviso de quem edita o dia do vencimento e não
   entende por que a conta deste mês continua no dia antigo: ela já nasceu. */
.lc-previa-linha.e-gerada { opacity: .6; }

.lc-previa-marca {
    padding: .05rem .4rem;
    border-radius: .3rem;
    background: rgba(0, 0, 0, .07);
    font-size: .7rem;
    color: var(--text-muted);
}

.lc-previa-reticencias,
.lc-previa-vazia {
    padding-top: .4rem;
    font-size: .78rem;
    color: var(--text-muted);
}

.lc-previa-vazia { margin: 0; padding: .2rem 0; }


/* ------------------------------------------------------------------
 * Trilha de passos do assistente de orçamento.
 *
 * Bolas ligadas por uma linha, marcando onde se está e por onde já se passou.
 * Sem plugin: o tema não traz stepper.
 *
 * ## Por que `passo` e não `etapa`
 *
 * "Etapa" é palavra do checklist do depósito — tem entidade (`ChecklistEtapa`)
 * e componente próprio aqui neste arquivo (`.lc-etapa`). As duas coisas usavam
 * o mesmo nome, e como o CSS de página carrega ANTES do app.css, era o
 * checklist que ganhava: a trilha aparecia com o rótulo ao lado da bola, ligado
 * por um tracejado que era o `border-top` da lista de conferência.
 *
 * Por isso estas regras estão AQUI, e não num `<style>` da página. Regra de
 * página perde toda disputa de mesmo peso, em silêncio — e a próxima colisão
 * levaria o mesmo tempo para ser encontrada.
 * ------------------------------------------------------------------ */

.lc-passos {
    display: flex;
    justify-content: space-between;
    position: relative;
}

/* A linha corre atrás das bolas; o recuo nas pontas evita que ela apareça
   sobrando à esquerda do primeiro e à direita do último. */
.lc-passos::before {
    content: "";
    position: absolute;
    top: 22px;
    left: 8%;
    right: 8%;
    height: 2px;
    background: rgba(0, 0, 0, .1);
    z-index: 0;
}

.lc-passo {
    position: relative;
    z-index: 1;
    flex: 1;
    text-align: center;
}

.lc-passo-bola {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    margin: 0 auto .375rem;
    border: 2px solid rgba(0, 0, 0, .12);
    border-radius: 50%;
    background: #fff;
    color: var(--text, #999);
    transition: background .2s ease, border-color .2s ease, color .2s ease;
}

.lc-passo-rotulo {
    font-size: .75rem;
    color: var(--text, #999);
}

.lc-passo.e-ativo .lc-passo-bola {
    border-color: var(--primary);
    color: var(--primary);
}

.lc-passo.e-ativo .lc-passo-rotulo {
    color: var(--primary);
    font-weight: 600;
}

/* Passo já dado: bola cheia. É o que faz a trilha mostrar o caminho andado, e
   não só onde se está. */
.lc-passo.e-feito .lc-passo-bola {
    border-color: var(--primary);
    background: var(--primary);
    color: #fff;
}

.lc-passo.e-feito .lc-passo-rotulo { color: var(--text-dark, #555); }

/* ------------------------------------------------------------------
   A adesão — a única parte pública do sistema

   Regra que vale para tudo aqui embaixo: o tema FinLab foi feito para tela de
   trabalho, com densidade alta e tipografia pequena. Uma página de venda quer
   o oposto — texto grande, respiro, um alvo de toque por decisão. Por isso
   este bloco redefine tamanho e espaçamento em vez de reaproveitar `.card` e
   `.form-control` como estão; e por isso ele fica todo debaixo de `.lc-adesao`
   e `.lc-publico`, sem alcançar nenhuma tela de dentro.
   ------------------------------------------------------------------ */

.lc-publico { background: #fff; }

/* O respiro do alto e das telas publicas, e nao do tema.

   Quem desliga a reserva de espaco do cabecalho e o `data-header-position` da
   casca publica, que diz `static` — a familia de regras do tema que empurra o
   `.content-body` (de 5rem a 9.5rem, conforme layout e sidebar) toda pede
   `fixed`. Estas duas linhas sao o cinto: a primeira para o dia em que alguem
   devolver o `fixed` sem perceber, e a segunda para o `margin-top` que o tema
   da a todo `.container` dentro do conteudo.

   Somados, os dois davam um palmo de branco antes da primeira palavra de uma
   pagina de venda — e quem chega de um anuncio le esse branco como pagina
   quebrada, nao como respiro. O espaco do alto passa a ser o que a propria
   tela pedir (`.lc-adesao`). */
.content-body.lc-publico { padding-top: 0; }
.content-body.lc-publico > .container { margin-top: 0; }

.lc-publico-topo {
    padding: 1rem 0;
    background: #fff;
    border-bottom: 1px solid rgba(0, 0, 0, .07);
}

/* Encostado no conteudo de proposito. O rodape fica fora do `.content-body`,
   que e o unico branco da tela — entao qualquer folga aqui em cima nao e
   folga, e uma tira cinza vazia entre o fim da pagina e o risco do rodape,
   que se le como bloco quebrado e nao como respiro. Quem separa e o risco. */
.lc-publico-rodape {
    padding: 2rem 0;
    border-top: 1px solid rgba(0, 0, 0, .07);
    font-size: .875rem;
}

.lc-adesao { padding: 2.5rem 0 6rem; }

.lc-adesao-chamada {
    max-width: 46rem;
    margin: 0 auto 2.5rem;
    text-align: center;
}

.lc-adesao-chamada h1 {
    font-size: 2.25rem;
    font-weight: 700;
    letter-spacing: -.02em;
    margin-bottom: .75rem;
}

.lc-adesao-chamada .lead { font-size: 1.125rem; color: var(--text, #666); }

.lc-adesao-bloco { margin-bottom: 3rem; }

/* Quem numera o passo é a trilha; o título só faz a pergunta. */
.lc-adesao-titulo {
    font-size: 1.375rem;
    font-weight: 700;
    margin-bottom: .5rem;
}

/* A trilha do assistente (`.lc-passos`, o mesmo componente do assistente de
   orçamento) num contexto mais largo: sem o limite ela estica pela coluna
   inteira e as três bolinhas ficam a um palmo uma da outra. */
.lc-passos-adesao {
    max-width: 30rem;
    margin-left: auto;
    margin-right: auto;
}

/* Só passo já dado volta atrás — e só ele mostra que é clicável. */
.lc-passos-adesao .lc-passo { cursor: default; }
.lc-passos-adesao .lc-passo.e-feito { cursor: pointer; }

/* O pé de cada passo: o "voltar" à esquerda e o que avança à direita, sempre
   no mesmo lugar. Passo sem "voltar" (o primeiro) mantém o botão principal na
   direita por causa do `space-between` com o texto ao lado. */
.lc-adesao-pe {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-top: 1.75rem;
}

@media (max-width: 575.98px) {
    /* No celular o botão que avança ocupa a linha inteira, e o "voltar" fica
       discreto embaixo: são o alvo grande e o escape, não dois iguais. */
    .lc-adesao-pe {
        flex-direction: column-reverse;
        align-items: stretch;
        text-align: center;
    }
}

/* A senha e os outros campos na mesma linha, do mesmo tamanho.

   O tema dá `height: 4.5rem` a `.input-group-lg .form-control` — 12px a mais
   que os 3,75rem do `.form-control-lg` que os campos vizinhos usam. Como a
   senha é a única com botão ao lado (o olho de mostrar), ela era a única dentro
   de um `.input-group`, e aparecia como um campo de outro tamanho ao lado do
   e-mail. Aqui os dois voltam à mesma altura. */
.lc-adesao .input-group-lg > .form-control,
.lc-adesao .input-group-lg > .btn {
    height: 3.75rem;
}

/* ------------------------------------------------------- o cartão do plano */

.lc-plano {
    position: relative;
    height: 100%;
    padding: 1.5rem 1.25rem 1rem;
    border: 2px solid rgba(0, 0, 0, .1);
    border-radius: .75rem;
    background: #fff;
    cursor: pointer;
    transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease;
}

.lc-plano:hover { border-color: rgba(0, 0, 0, .25); }
.lc-plano:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }

.lc-plano.e-escolhido {
    border-color: var(--primary);
    box-shadow: 0 8px 24px rgba(0, 0, 0, .08);
}

.lc-plano-etiqueta {
    position: absolute;
    top: -.75rem;
    left: 50%;
    transform: translateX(-50%);
    padding: .2rem .75rem;
    border-radius: 1rem;
    background: var(--lc-marca-acento, #d98324);
    color: #fff;
    font-size: .7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
    white-space: nowrap;
}

.lc-plano-nome { font-size: 1.125rem; font-weight: 700; }

.lc-plano-preco {
    font-size: 2.25rem;
    font-weight: 700;
    line-height: 1.1;
    letter-spacing: -.03em;
    margin: .25rem 0 .5rem;
}

.lc-plano-moeda { font-size: 1rem; font-weight: 600; margin-right: .15rem; vertical-align: .8rem; }
.lc-plano-mes { font-size: .9rem; font-weight: 500; color: var(--text, #888); }

/* A linha que decide. Cada plano diz QUEM ele é ("você atende e entrega", "tem
   gente separando material"), e é lendo essas três frases que a pessoa se
   reconhece em uma delas — então ela não pode ter cara de legenda. O
   `min-height` mantém as três listas começando na mesma altura. */
.lc-plano-chamada {
    font-size: .9375rem;
    color: var(--text-dark, #555);
    min-height: 3.5rem;
}

.lc-plano-lista { list-style: none; padding: 0; margin: 0 0 1rem; }

.lc-plano-lista li {
    display: flex;
    gap: .5rem;
    align-items: flex-start;
    padding: .3rem 0;
    font-size: .875rem;
}

.lc-plano-lista i { margin-top: .25rem; color: var(--primary); font-size: .75rem; }

/* "Escolhido" só aparece no cartão escolhido — e ocupa o lugar de sempre, para
   o cartão não crescer no clique e empurrar a página. */
.lc-plano-escolha {
    height: 2rem;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--primary);
    font-weight: 600;
    font-size: .875rem;
    opacity: 0;
    transition: opacity .15s ease;
}

.lc-plano.e-escolhido .lc-plano-escolha { opacity: 1; }

/* ------------------------------------------------- o recurso avulso */

.lc-recursos { display: flex; flex-direction: column; gap: .625rem; }

.lc-recurso {
    display: flex;
    align-items: flex-start;
    gap: .875rem;
    padding: 1rem;
    border: 2px solid rgba(0, 0, 0, .1);
    border-radius: .625rem;
    cursor: pointer;
    margin: 0;
    transition: border-color .15s ease, background .15s ease;
}

.lc-recurso:hover { border-color: rgba(0, 0, 0, .22); }
.lc-recurso.e-marcado { border-color: var(--primary); background: rgba(0, 0, 0, .015); }

.lc-recurso .form-check-input { margin-top: .2rem; flex: 0 0 auto; }

.lc-recurso-texto { flex: 1 1 auto; }
.lc-recurso-nome { font-weight: 600; }
.lc-recurso-resumo { font-size: .8125rem; color: var(--text, #777); margin-top: .15rem; }

/* A taxa de quem nao somos nos (ver `TaxasDeTerceiro`). Separada do resumo por
   um fio, porque nao e mais descricao do recurso: e dinheiro que sai por fora
   do preco ao lado. Ambar e nao vermelho — nao ha nada de errado acontecendo,
   ha uma conta que nao e nossa e que a pessoa tem direito de ver antes. */
.lc-recurso-taxa {
    display: flex;
    align-items: baseline;
    gap: .4rem;
    margin-top: .5rem;
    padding-top: .5rem;
    border-top: 1px dashed rgba(0, 0, 0, .12);
    font-size: .8125rem;
    color: #8a5a00;
}

.lc-recurso-taxa i { flex: 0 0 auto; font-size: .75rem; }

.lc-recurso-preco { flex: 0 0 auto; text-align: right; font-weight: 600; white-space: nowrap; }
.lc-recurso-preco small { display: block; font-weight: 400; color: var(--text, #999); }

/* Recurso que o plano já traz: continua visível, para a pessoa ver que ganhou
   — mas sem preço e sem poder ser somado de novo. */
.lc-recurso-incluso { display: none; }

.lc-recurso.e-incluso { cursor: default; opacity: .85; }
.lc-recurso.e-incluso .lc-recurso-preco { display: none; }

.lc-recurso.e-incluso .lc-recurso-incluso {
    display: inline-block;
    margin-left: .5rem;
    padding: .1rem .5rem;
    border-radius: 1rem;
    background: rgba(0, 0, 0, .06);
    color: var(--text, #666);
    font-size: .7rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .03em;
}

/* ------------------------------------------------------------ o resumo */

.lc-resumo-adesao {
    position: sticky;
    top: 1.5rem;
    padding: 1.5rem;
    border: 1px solid rgba(0, 0, 0, .1);
    border-radius: .75rem;
    background: #fff;
    box-shadow: 0 8px 24px rgba(0, 0, 0, .06);
}

.lc-resumo-cabeca {
    font-size: .75rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .06em;
    color: var(--text, #999);
    margin-bottom: .75rem;
}

.lc-resumo-linha {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    padding: .375rem 0;
    font-size: .875rem;
}

.lc-resumo-plano { font-weight: 600; font-size: 1rem; }

.lc-resumo-total-linha {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    margin-top: .75rem;
    padding-top: .75rem;
    border-top: 1px solid rgba(0, 0, 0, .1);
    font-size: 1.25rem;
    font-weight: 700;
}

.lc-resumo-unico { color: var(--text, #777); }

/* "Fora desta soma", encostado na soma. O total e a nossa conta e so ela; sem
   esta lista ao lado, ele se le como o custo inteiro de ter o sistema. Aparece
   so quando ha recurso com taxa escolhido ou incluso no plano — quem levou o
   Essencial nao precisa de aviso sobre o que nao comprou. */
.lc-resumo-taxa {
    margin-top: .75rem;
    padding-top: .75rem;
    border-top: 1px dashed rgba(0, 0, 0, .12);
}

.lc-resumo-taxa-cabeca {
    font-size: .6875rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .06em;
    color: #8a5a00;
    margin-bottom: .35rem;
}

.lc-resumo-taxa-linha { font-size: .75rem; line-height: 1.4; color: var(--text, #777); }
.lc-resumo-taxa-linha + .lc-resumo-taxa-linha { margin-top: .25rem; }

/* O número que decide: "R$ 0,00 agora". É a resposta à pergunta que trava a
   mão de quem está prestes a clicar, e por isso ela tem peso próprio — e fica
   ao lado do botão, no último passo, e não só no resumo da lateral. */
.lc-resumo-agora {
    margin: 1rem 0;
    padding: .875rem;
    border-radius: .5rem;
    background: rgba(0, 0, 0, .035);
    text-align: center;
}

.lc-resumo-agora-valor { font-size: 1.125rem; font-weight: 700; }
.lc-resumo-agora-texto { font-size: .8125rem; color: var(--text, #777); margin-top: .15rem; }

.lc-resumo-rodape { font-size: .75rem; color: var(--text, #999); margin: .75rem 0 0; text-align: center; }

@media (max-width: 991.98px) {
    .lc-resumo-adesao { position: static; box-shadow: none; margin-top: 1.5rem; }
    .lc-adesao-chamada h1 { font-size: 1.75rem; }
}

/* -------------------------------------------------------- a tela de pronto */

.lc-adesao-pronto { padding-top: 3rem; }

.lc-pronto-selo {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 72px;
    height: 72px;
    margin: 0 auto 1.25rem;
    border-radius: 50%;
    background: var(--primary);
    color: #fff;
    font-size: 1.75rem;
}

.lc-pronto-titulo { font-size: 2rem; font-weight: 700; letter-spacing: -.02em; }

.lc-pronto-linha { margin-top: 2.5rem; }

.lc-pronto-etapa {
    display: flex;
    gap: 1rem;
    padding-bottom: 1.5rem;
    position: relative;
}

/* A linha que liga uma etapa à seguinte — e some na última. */
.lc-pronto-etapa:not(:last-child)::before {
    content: "";
    position: absolute;
    left: 21px;
    top: 44px;
    bottom: 0;
    width: 2px;
    background: rgba(0, 0, 0, .1);
}

.lc-pronto-bola {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: rgba(0, 0, 0, .05);
    color: var(--text, #888);
}

.lc-pronto-etapa.e-agora .lc-pronto-bola { background: var(--primary); color: #fff; }
.lc-pronto-etapa strong { display: block; margin-bottom: .15rem; }
.lc-pronto-etapa p { margin: 0; color: var(--text, #777); font-size: .9375rem; }

/* O caminho de volta de quem não recebeu o e-mail. Fica discreto, mas acima da
   linha do tempo: quem precisa dele precisa antes de qualquer outra coisa. */
.lc-pronto-reenviar {
    padding: 1rem 1.25rem;
    border: 1px solid rgba(0, 0, 0, .1);
    border-radius: .625rem;
    background: rgba(0, 0, 0, .02);
}

.lc-pronto-escolha {
    margin-top: 1.5rem;
    padding: 1.25rem;
    border: 1px solid rgba(0, 0, 0, .1);
    border-radius: .625rem;
}

.lc-pronto-escolha-titulo {
    font-size: .75rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .06em;
    color: var(--text, #999);
    margin-bottom: .5rem;
}

/* ------------------------------------------------------------------
   Anotações da plataforma — o que ficou combinado na ligação

   Só aparecem em /plataforma. Nenhuma tela da locadora carrega estas classes,
   e nem poderia: a `Empresa` não tem o lado inverso da associação.
   ------------------------------------------------------------------ */

.lc-notas {
    display: flex;
    flex-direction: column;
    gap: .75rem;
}

.lc-nota {
    padding: .75rem 1rem;
    border-left: 3px solid var(--primary);
    border-radius: 0 .375rem .375rem 0;
    background: rgba(0, 0, 0, .025);
}

.lc-nota-texto { white-space: pre-line; }

/* Na fila, a última anotação divide a linha com o resto — então ela é cortada
   em duas linhas em vez de esticar a tabela. O texto inteiro fica na tela da
   locadora, que é para onde o nome da locadora leva. */
.lc-nota-celula { max-width: 20rem; }

.lc-nota-celula .lc-nota-texto {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    font-size: .8125rem;
    white-space: normal;
}

/* ------------------------------------------------------------------
   O módulo que ainda não está no plano

   A tela não pode ter cara de erro: quem chegou nela fez tudo certo. Daí o
   cartão centrado, o texto grande e a ausência de vermelho — a paleta é a
   mesma de uma página de oferta, porque é o que ela é.
   ------------------------------------------------------------------ */

.lc-fora-do-plano {
    max-width: 34rem;
    margin: 3rem auto;
    padding: 2.5rem 2rem;
    border: 1px solid rgba(0, 0, 0, .1);
    border-radius: .75rem;
    background: var(--card, #fff);
    text-align: center;
}

.lc-fora-selo {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 64px;
    height: 64px;
    margin: 0 auto 1.25rem;
    border-radius: 50%;
    background: rgba(0, 0, 0, .05);
    color: var(--text, #8a8a8a);
    font-size: 1.5rem;
}

.lc-fora-titulo {
    font-size: 1.75rem;
    font-weight: 700;
    letter-spacing: -.02em;
    margin-bottom: .25rem;
}

.lc-fora-chamada { color: var(--text, #777); margin-bottom: 1.5rem; }

.lc-fora-convite {
    font-size: 1.0625rem;
    line-height: 1.7;
    color: var(--text-dark, #555);
    margin-bottom: 2rem;
}

.lc-fora-acoes { display: flex; justify-content: center; gap: .75rem; }

.lc-fora-rodape {
    margin: 1.5rem 0 0;
    font-size: .875rem;
    color: var(--text, #999);
}

/* O item de menu com cadeado. Fica visível e apagado: some do caminho sem
   sumir da vista — módulo que some não vende. */
.dlabnav .metismenu > li.lc-menu-bloqueado > a,
.dlabnav .metismenu ul a.lc-menu-bloqueado {
    opacity: .55;
}

.lc-menu-cadeado { margin-left: auto; font-size: .7rem; }

/* ------------------------------------------------------------------
   A foto da saída, na aba Depósito

   Miniatura para achar, e não para conferir: quem precisa olhar de verdade
   abre em tamanho cheio. Daí a altura fixa e o `object-fit` — quatro fotos de
   celular em pé e deitado, sem isso, viram uma coluna de alturas diferentes em
   que nada se compara.
   ------------------------------------------------------------------ */

.lc-fotos-de-saida {
    display: flex;
    flex-wrap: wrap;
    gap: .75rem;
}

.lc-foto-de-saida {
    display: block;
    width: 11rem;
    border: 1px solid rgba(0, 0, 0, .1);
    border-radius: .5rem;
    overflow: hidden;
    text-decoration: none;
    background: var(--card, #fff);
}

.lc-foto-de-saida img {
    display: block;
    width: 100%;
    height: 8rem;
    object-fit: cover;
}

.lc-foto-de-saida-pe {
    display: block;
    padding: .375rem .5rem;
    font-size: .75rem;
    color: var(--text, #888);
}

/* ------------------------------------------------------------------
   O período do orçamento

   Um número grande ao lado das duas datas. Ele não é um campo — é a resposta
   que as datas dão —, e por isso não tem borda de input nem rótulo em cima:
   quem olha precisa distinguir de relance o que se preenche do que se lê.

   E é a informação que decide o preço do equipamento de obra, onde a faixa
   (diária, semanal, quinzenal, mensal) sai da duração. Contar no dedo entre
   26/08 e 04/09 para saber se caiu na quinzena era trabalho que a tela podia
   ter feito.
   ------------------------------------------------------------------ */

.lc-periodo {
    display: flex;
    align-items: baseline;
    gap: .4rem;
    height: calc(1.5em + 1rem + 2px);
    padding-top: 1.9rem;
}

.lc-periodo-numero {
    font-size: 1.75rem;
    font-weight: 700;
    line-height: 1;
    letter-spacing: -.02em;
    color: var(--primary);
}

.lc-periodo-rotulo { color: var(--text, #888); }

.lc-periodo-vazio {
    padding-top: .35rem;
    color: var(--text, #b0b0b0);
    font-size: .9375rem;
}

/* A hora ao lado da data, no mesmo grupo. Mais estreita porque `--:--` cabe em
   menos espaço que uma data inteira — e sem isso o navegador dá a ela a mesma
   largura, deixando a data espremida. */
.lc-hora { max-width: 7.5rem; flex: 0 0 auto; }

@media (max-width: 1199.98px) {
    .lc-periodo { padding-top: 0; height: auto; }
}

/* A faixa de aviso que vale para a tela inteira (hoje, a contagem do teste).
   Ela é irmã do `.container-fluid` de cada tela, não filha — então repete as
   medidas laterais do tema para nascer na mesma coluna dos cartões que vêm
   logo abaixo. Sem recuo em baixo de propósito: o espaço até o conteúdo é o
   `padding-top` que o próprio `.container-fluid` da tela já traz. */
.lc-avisos {
    padding: 1.875rem 1.875rem 0;
}

@media only screen and (max-width: 47.9375rem) {
    .lc-avisos { padding: 1.25rem 1.25rem 0; }
}

@media only screen and (max-width: 35.9375rem) {
    .lc-avisos { padding: 15px 15px 0; }
}


/* Campo de HTML cru — o editor de texto legal da plataforma, e o modo de
 * emergencia do editor de documento quando o CKEditor nao abre.
 *
 * Mora aqui, e nao no `<style>` de uma tela, porque duas telas usam: a segunda
 * copia envelheceria na primeira vez que alguem mexesse so numa delas. */
.lc-codigo-cru {
    display: block;
    width: 100%;
    min-height: 62vh;
    padding: 12px;
    font-family: monospace;
    font-size: 12px;
    line-height: 1.5;
    border: 1px solid rgba(0, 0, 0, .15);
    border-radius: 4px;
}
