/* A.R.Q. — sistema visual da aplicação. */

:root {
    /* ---- Papel e tinta ---- */
    --ds-bg: #e9edeb;
    --ds-panel: #f1f4f2;
    --ds-surface: #ffffff;
    --ds-ink: #14181a;
    --ds-ink-soft: #1e2427;
    --ds-line: #dee3e0;
    --ds-line-dash: #c4ccc8;

    /* ---- Cores de camada (áreas do escritório) ---- */
    --arq-blue: #2c6394;
    --arq-green: #1c6a53;
    --arq-amber: #92600f;
    --arq-violet: #63478a;
    --arq-clay: #a83626;

    /* Acento do sistema */
    --ds-blue: #1c6a53;
    --ds-blue-light: #2a8368;
    --ds-blue-dark: #14513f;
    --ds-blue-50: #e9f2ee;
    --ds-blue-100: #c8e0d6;
    --ds-danger: #a83626;
    --ds-success: #1c6a53;

    --ds-text-900: #14181a;
    --ds-text-700: #39423f;
    /* text-500 é o piso do texto secundário: 4.8:1 sobre o papel (AA) */
    --ds-text-500: #5b6a65;
    --ds-text-400: #7d8985;

    /* ---- Tipografia ---- */
    --ds-font-sans: "IBM Plex Sans", system-ui, -apple-system, sans-serif;
    --ds-font-display: "Archivo", "IBM Plex Sans", sans-serif;
    --arq-font-mono: "IBM Plex Mono", ui-monospace, "SFMono-Regular", monospace;

    /* ---- Movimento (discreto: isto é ferramenta de trabalho) ---- */
    --arq-ease: cubic-bezier(0.2, 0.7, 0.3, 1);
    --arq-ease-out: cubic-bezier(0.16, 1, 0.3, 1);
    --arq-fast: 130ms;
    --arq-mid: 220ms;

    /* ---- Ritmo ---- */
    --arq-gap: 2.5rem;
    --arq-lateral: 250px;
    --arq-icon-btn: 1.75rem;
    --arq-control-radius: 0.55rem;
    --arq-control-y: 0.62rem;
    --arq-control-x: 1.15rem;

    --ds-focus-ring: 0 0 0 3px rgba(28, 106, 83, 0.26);
    --ds-shadow-soft: 0 1px 2px rgba(20, 24, 26, 0.05), 0 8px 20px rgba(20, 24, 26, 0.05);
}

/* BASE */
.ds-root {
    font-family: var(--ds-font-sans); font-size: 15.5px; line-height: 1.6;
    color: var(--ds-text-900); background: var(--ds-bg);
    -webkit-font-smoothing: antialiased;
}

body { margin: 0; background: var(--ds-bg); min-height: 100vh; display: flex; flex-direction: column; }

.ds-display { font-family: var(--ds-font-display); font-variation-settings: "wdth" 108, "wght" 600; font-weight: 600; letter-spacing: -0.015em; }
.ds-h1 { font-family: var(--ds-font-display); font-variation-settings: "wdth" 118, "wght" 600; font-size: clamp(2.1rem, 4vw, 3.2rem); line-height: 1.04; letter-spacing: -0.03em; }
.ds-h2 { font-family: var(--ds-font-display); font-variation-settings: "wdth" 116, "wght" 600; font-size: clamp(1.7rem, 2.4vw, 2.1rem); line-height: 1.1; letter-spacing: -0.022em; }
.ds-muted { color: var(--ds-text-400); }

/* Rótulos técnicos */
.ds-kicker,
.nav-label,
.kpi-label,
.data-table th,
.projeto-metricas dt,
.cronograma-linha > span,
.margem-strip span,
.diag-dim,
.def-list dt,
.aceite-doc-versao{
    font-family: var(--arq-font-mono);
    font-size: 0.68rem;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.14em;
    color: var(--ds-text-500);
}

/* Números */
.num,
.margem-strip strong,
.agenda-quando strong,
.kpi-value,
.cronograma-num strong,
.diag-score strong,
.projeto-metricas dd{
    font-family: var(--arq-font-mono);
    font-feature-settings: "tnum" 1, "zero" 1;
    letter-spacing: -0.02em;
}

a { color: var(--ds-blue-dark); }

/* COTA — abre seção. Assinatura nº 1. */
.ds-card > h2.ds-display,
.ds-card > h3.ds-display,
.dash-section-head,
.prosa h2,
.secao-titulo {
    display: flex; align-items: center; gap: 0.85rem;
    margin: 0 0 1.15rem;
    font-family: var(--ds-font-display);
    font-variation-settings: "wdth" 106, "wght" 600;
    font-size: 1.02rem;
}
.ds-card > h2.ds-display::after,
.ds-card > h3.ds-display::after,
.dash-section-head::after,
.secao-titulo::after {
    content: ""; flex: 1; height: 7px; align-self: center;
    --cota: var(--sec, var(--ds-line-dash));
    background:
        linear-gradient(var(--cota), var(--cota)) center / 100% 1px no-repeat,
        linear-gradient(var(--cota), var(--cota)) left center / 1px 7px no-repeat,
        linear-gradient(var(--cota), var(--cota)) right center / 1px 7px no-repeat;
    opacity: 0.6;
}

/* POCHÊ — hachura a 45°. Assinatura nº 2. */

/* MARCA */
.app-brand { display: inline-flex; align-items: center; gap: 0.6rem; text-decoration: none; }
.app-brand-mark { width: 2rem; height: 2rem; flex-shrink: 0; }
.app-brand-mark .mk-plate { transition: fill var(--arq-mid) var(--arq-ease); }
.app-brand-mark .mk-cota { transform-origin: 16px 18.7px; transition: transform 380ms var(--arq-ease-out); }
.app-brand:hover .mk-cota { transform: scaleX(1.24); }
.app-brand-word {
    font-family: var(--ds-font-display);
    font-variation-settings: "wdth" 115, "wght" 700;
    font-size: 1.16rem; letter-spacing: 0.01em;
}

/* SHELL — barra lateral + folha com uma única régua vertical */
.app-shell { display: block; }

.nav-toggle { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }

.app-side {
    position: fixed; top: 0; left: 0; bottom: 0; width: var(--arq-lateral); z-index: 20;
    display: flex; flex-direction: column;
}
.app-side-head { display: flex; align-items: center; justify-content: space-between; padding: 1.15rem 1.15rem 0.9rem; }
.nav-burger { display: none; }

.app-nav { flex: 1; overflow-y: auto; padding: 0.25rem 0.75rem 1.25rem; display: flex; flex-direction: column; gap: 1rem; }
.nav-group { display: flex; flex-direction: column; gap: 0.1rem; }
.nav-label { display: flex; align-items: center; gap: 0.45rem; }
.nav-label::before { content: ""; width: 0.45rem; height: 0.45rem; border-radius: 1px; background: currentColor; }

.nav-link {
    position: relative; display: flex; align-items: center; gap: 0.7rem;
    padding: 0.42rem 0.65rem; border-radius: 0.55rem; text-decoration: none; font-size: 0.9rem;
    transition: background var(--arq-fast) ease, color var(--arq-fast) ease;
}
.nav-link svg { width: 1.15rem; height: 1.15rem; flex-shrink: 0; color: var(--ds-text-400); transition: color var(--arq-fast) ease; }
.nav-link:hover svg { color: var(--ds-text-700); }
.nav-link.is-active { font-weight: 600; }
.nav-link.is-active svg { color: var(--ds-blue); }
.nav-link.is-active::before {
    content: ""; position: absolute; left: -0.75rem; top: 0.35rem; bottom: 0.35rem;
    width: 3px; border-radius: 0 3px 3px 0; background: var(--ds-blue);
}
.nav-badge {
    margin-left: auto; min-width: 1.2rem; height: 1.2rem; padding: 0 0.32rem; box-sizing: border-box;
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 0.66rem; font-weight: 600; color: #fff; border-radius: 999px;
}

/* Pé da lateral: monograma sem caixa */
.app-side-foot { padding: 0.9rem 1.05rem 1rem; display: flex; flex-direction: column; gap: 0.7rem; }
.app-empresa { display: flex; align-items: baseline; gap: 0.55rem; }
.app-empresa-ico {
    flex-shrink: 0; font-family: var(--ds-font-display);
    font-variation-settings: "wdth" 115, "wght" 700; font-size: 1.05rem; text-transform: uppercase; line-height: 1;
}
.app-empresa-info { display: flex; flex-direction: column; line-height: 1.3; overflow: hidden; }
.app-empresa-info strong { font-size: 0.85rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.app-empresa-info span { color: var(--ds-text-500); font-family: var(--arq-font-mono); font-size: 0.7rem; }
.app-sair {
    display: flex; align-items: center; gap: 0.4rem; background: none; border: 0;
    color: var(--ds-text-500); font: inherit; font-size: 0.78rem; cursor: pointer; padding: 0.2rem 0;
    transition: color var(--arq-fast) ease;
}
.app-sair svg { width: 0.9rem; height: 0.9rem; }
.app-inline-form { margin: 0; }
/* Sair e os links legais dividem a última linha da lateral */
.app-side-rodape { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.app-side-rodape .pe-legal { padding: 0; }
.app-link-btn { background: none; border: 0; color: var(--ds-blue-dark); font: inherit; cursor: pointer; padding: 0; transition: color var(--arq-fast) ease; }
.app-link-btn:hover { text-decoration: underline; }

/* --- A folha: uma régua só, na margem esquerda (margem de encadernação) --- */
.app-frame { position: relative; margin-left: var(--arq-lateral); min-height: 100vh; }
.app-main {
    position: relative;
    width: 100%; margin: 0 auto; box-sizing: border-box;
    min-height: 100vh;
    /* Tabela larga rola dentro do .table-scroll, mas a página ainda ganhava */
    overflow-x: clip;
}
.app-main--public { max-width: 64rem; border-left: 0; min-height: auto; padding: 3rem 1.5rem 4rem; }

/* ---- Mensagens ---- */
.app-messages { display: flex; flex-direction: column; gap: 0.5rem; margin-bottom: 1.5rem; }
.app-message { padding: 0.7rem 1rem; border-radius: 0.6rem; font-size: 0.9rem; border: 1px solid transparent; }
.app-message--success { color: var(--ds-blue-dark); background: var(--ds-blue-50); border-color: var(--ds-blue-100); }
.app-message--error { color: var(--ds-danger); background: color-mix(in srgb, var(--ds-danger) 7%, #fff); border-color: color-mix(in srgb, var(--ds-danger) 24%, var(--ds-line)); }
.app-message--info, .app-message--warning { color: var(--arq-amber); background: color-mix(in srgb, var(--arq-amber) 7%, #fff); border-color: color-mix(in srgb, var(--arq-amber) 26%, var(--ds-line)); }

/* RITMO — a página e suas seções */
.page { display: flex; flex-direction: column; gap: var(--arq-gap); }
/* telas de conteúdo curto ficam centradas na folha, não coladas à esquerda */
.page--narrow { margin: 0 auto; width: 100%; }
.page--leitura { margin: 0 auto; width: 100%; }
.doc-voltar { align-self: flex-start; }

.page-head { margin-bottom: 0; }
.page-head--row { display: flex; align-items: flex-start; justify-content: space-between; gap: 1.5rem; }
/* desloca as ações para a linha do título — com margem, não com padding: */
.page-head--row > :not(:first-child) { margin-top: 1.15rem; flex-shrink: 0; }
.page-head .ds-kicker { display: block; }
.page-head h1 { margin: 0.3rem 0 0; }
.page-sub { margin: 0.6rem 0 0; color: var(--ds-text-500); max-width: 46rem; line-height: 1.55; }
.page-head-actions { display: flex; gap: 0.5rem; flex-shrink: 0; }

/* --- .ds-card deixa de ser caixa: é um bloco impresso na folha --- */
.ds-card {
    background: none; border: 0; border-radius: 0; padding: 0;
    box-shadow: none; display: block;
}
.ds-card:hover { box-shadow: none; }

/* Grades internas de um bloco */
.detalhe-grid { display: grid; gap: 2rem 3rem; grid-template-columns: 1fr; align-items: start; }
@media (min-width: 62rem) {
    .detalhe-grid { grid-template-columns: 1fr 1fr; }
}

/* --- Superfície de verdade: só para objeto repetido numa grade --- */
.projeto-card, .obra-card, .auth-card {
    background: var(--ds-surface); border: 1px solid var(--ds-line); border-radius: 0.9rem;
}

/* BOTÕES — movimento contido */
.ds-btn { display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem;
    white-space: nowrap; cursor: pointer; text-decoration: none;
    font-family: var(--ds-font-sans); font-weight: 500; font-size: 0.9rem; line-height: 1.2;
    border-radius: var(--arq-control-radius);
    padding: var(--arq-control-y) var(--arq-control-x);
    background: var(--ds-surface); color: var(--ds-text-900); border: 1px solid var(--ds-line);
}
.ds-btn svg { width: 1rem; height: 1rem; }
.ds-btn:hover { border-color: var(--ds-blue-100); color: var(--ds-blue-dark); box-shadow: var(--ds-shadow-soft); }
.ds-btn--solid { color: #fff; }
.ds-btn--solid:hover { color: #fff; }
.ds-btn:active { box-shadow: none; }
.ds-btn:focus-visible { outline: 2px solid var(--ds-blue-light); outline-offset: 2px; }
.ds-btn[disabled] { opacity: 0.5; pointer-events: none; }

/* Envio em curso: um filete percorre a base do botão */
.ds-btn.is-busy { pointer-events: none; opacity: 0.8; overflow: hidden; }
.ds-btn.is-busy::before {
    content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 2px;
    background: currentColor; opacity: 0.5;
    animation: arq-busy 900ms var(--arq-ease) infinite;
}
@keyframes arq-busy {
    0% { transform: scaleX(0); transform-origin: left; }
    50% { transform: scaleX(1); transform-origin: left; }
    51% { transform: scaleX(1); transform-origin: right; }
    100% { transform: scaleX(0); transform-origin: right; }
}

.form-actions { display: flex; gap: 0.6rem; justify-content: flex-end; margin-top: 1rem; }

/* Chips de filtro */
.filtro-chips { display: flex; flex-wrap: wrap; gap: 0.4rem; }
.chip {
    font-size: 0.85rem; text-decoration: none;
    padding: 0.32rem 0.85rem; border-radius: 999px;
    transition: background var(--arq-fast) ease, color var(--arq-fast) ease, border-color var(--arq-fast) ease;
}
.chip:hover { color: var(--ds-blue-dark); }

/* FORMULÁRIOS — campos preenchidos, sem contorno de caixa */
.form-card { display: flex; flex-direction: column; }
.contrato-editor { max-width: 74rem; }
.contrato-editor .contrato-corpo { min-height: 34rem; }
.contrato-leitura { max-width: 74rem; }
.contrato-texto { max-width: 74rem; white-space: normal; line-height: 1.7; }
.contrato-origem-resumo {
    display: grid; grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 1px; margin: 0; background: var(--ds-line);
}
.contrato-origem-resumo > div { padding: 0.75rem 0.85rem; background: var(--ds-panel); }
.contrato-origem-resumo dt {
    font-family: var(--arq-font-mono); font-size: 0.66rem;
    text-transform: uppercase; letter-spacing: 0.08em; color: var(--ds-text-500);
}
.contrato-origem-resumo dd { margin: 0.25rem 0 0; font-weight: 500; }
.contrato-cronograma-origem {
    display: grid; grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr));
    border-bottom: 1px solid var(--ds-line);
}
.contrato-cronograma-origem > span {
    display: flex; justify-content: space-between; gap: 0.75rem;
    padding: 0.6rem 0.75rem; border-top: 1px solid var(--ds-line);
    font-size: 0.78rem;
}
.contrato-cronograma-origem strong { font-weight: 500; }
.contrato-cronograma-origem time { color: var(--ds-text-500); white-space: nowrap; }
.contrato-modelo {
    display: flex; align-items: end; justify-content: space-between; gap: 1rem;
    margin-bottom: 1.5rem; padding-bottom: 1.25rem; border-bottom: 1px solid var(--ds-line);
}
.contrato-modelo .secao-sub { margin-bottom: 0; }
.contrato-modelo-controles { display: flex; align-items: center; gap: 0.5rem; min-width: min(100%, 30rem); }
.contrato-modelo-controles select {
    flex: 1; min-width: 12rem; padding: 0.6rem 0.8rem;
    border: 1px solid var(--ds-line-dash); border-radius: 0.5rem;
    background: var(--ds-surface); color: var(--ds-text-900); font: inherit;
}
@media (max-width: 48rem) {
    .contrato-origem-resumo { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .contrato-modelo { align-items: stretch; flex-direction: column; }
    .contrato-modelo-controles { min-width: 0; flex-wrap: wrap; }
    .contrato-modelo-controles select { flex-basis: 100%; }
}
.contrato-parcelas, .contrato-alteracoes, .contrato-documentos {
    padding-top: 1.75rem; border-top: 1px solid var(--ds-line);
}
.contrato-secao-head {
    display: flex; align-items: start; justify-content: space-between;
    gap: 1rem; margin-bottom: 1rem;
}
.contrato-secao-head .secao-sub { max-width: 50rem; margin: 0.3rem 0 0; line-height: 1.5; }
.contrato-valores {
    display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1px; margin: 0 0 1.25rem; background: var(--ds-line);
    border-top: 1px solid var(--ds-line); border-bottom: 1px solid var(--ds-line);
}
.contrato-valores > div { padding: 0.8rem 0.9rem; background: var(--ds-panel); }
.contrato-valores dt {
    font-family: var(--arq-font-mono); font-size: 0.64rem; font-weight: 500;
    text-transform: uppercase; letter-spacing: 0.1em; color: var(--ds-text-500);
}
.contrato-valores dd { margin: 0.25rem 0 0; font-size: 1.05rem; font-weight: 600; }
.contrato-alteracao-form {
    display: grid; grid-template-columns: 12rem minmax(18rem, 1fr) 12rem auto;
    align-items: start; gap: 0.8rem; padding: 0.9rem 0 1.2rem;
    border-bottom: 1px solid var(--ds-line);
}
.contrato-campo { display: flex; min-width: 0; flex-direction: column; gap: 0.35rem; }
.contrato-campo label {
    font-family: var(--arq-font-mono); font-size: 0.66rem; font-weight: 500;
    text-transform: uppercase; letter-spacing: 0.1em; color: var(--ds-text-500);
}
.contrato-campo input, .contrato-campo select, .contrato-campo textarea {
    width: 100%; min-height: 2.65rem; box-sizing: border-box; padding: 0.6rem 0.75rem;
    border: 1px solid var(--ds-line-dash); border-radius: 0.5rem;
    background: var(--ds-surface); color: var(--ds-text-900); font: inherit;
}
.contrato-campo textarea { min-height: 2.65rem; height: 2.65rem; resize: vertical; }
.contrato-campo input:focus, .contrato-campo select:focus, .contrato-campo textarea:focus {
    outline: none; border-color: var(--ds-blue-light); box-shadow: var(--ds-focus-ring);
}
.contrato-campo small { font-size: 0.7rem; line-height: 1.35; color: var(--ds-text-500); }
.contrato-alteracao-form .linha-ico { margin-top: 1.35rem; }
.contrato-parcela-form {
    display: grid; grid-template-columns: minmax(15rem, 1fr) 12rem 12rem auto;
    align-items: end; gap: 0.8rem; padding-bottom: 1.1rem;
    border-bottom: 1px solid var(--ds-line);
}
.contrato-dividir-form {
    display: grid; grid-template-columns: repeat(2, minmax(9rem, 1fr)) auto;
    align-items: end; gap: 0.8rem; padding: 0.9rem 0;
}
.contrato-lancar-form {
    display: flex; align-items: center; gap: 0.75rem; flex-wrap: wrap;
    padding-top: 1rem;
}
.contrato-parcelas-tabela .is-editando input {
    width: 100%; min-width: 7rem; box-sizing: border-box; padding: 0.5rem 0.6rem;
    border: 1px solid var(--ds-blue-light); border-radius: 0.4rem;
    background: var(--ds-surface); color: var(--ds-text-900); font: inherit;
}
.contrato-alteracao-edicao form {
    display: grid; grid-template-columns: 13rem minmax(16rem, 1fr) 13rem auto;
    align-items: end; gap: 0.8rem;
}
.contrato-documento-edicao form {
    display: grid; grid-template-columns: minmax(12rem, 1fr) minmax(15rem, 1.3fr) auto;
    align-items: end; gap: 0.8rem;
}

.contrato-alteracoes-lista { list-style: none; margin: 0; padding: 0; }
.contrato-alteracoes-lista > li {
    padding: 0.9rem 0; border-bottom: 1px solid var(--ds-line);
}
.contrato-alteracoes-lista > li.data-empty { border-bottom: 0; }
.contrato-alteracao-topo { display: flex; align-items: center; gap: 0.6rem; flex-wrap: wrap; }
.contrato-alteracao-tipo {
    font-family: var(--arq-font-mono); font-size: 0.64rem; font-weight: 500;
    text-transform: uppercase; letter-spacing: 0.06em; color: var(--ds-blue-dark);
}
.contrato-alteracao-tipo--aditivo { color: var(--arq-violet); }
.contrato-alteracao-tipo--prazo { color: var(--arq-amber); }
.contrato-alteracao-tipo--condicoes { color: var(--ds-text-700); }
.contrato-alteracao-topo time {
    font-family: var(--arq-font-mono); font-size: 0.66rem; color: var(--ds-text-500);
}
.contrato-impacto { margin-left: auto; font-size: 0.8rem; white-space: nowrap; }
.contrato-impacto.is-neutro { color: var(--ds-text-500); font-weight: 400; }
.contrato-alteracoes-lista p { max-width: 54rem; margin: 0.45rem 0 0; font-size: 0.9rem; line-height: 1.5; }
.contrato-documentos-contagem {
    flex-shrink: 0; font-family: var(--arq-font-mono); font-size: 0.68rem;
    text-transform: uppercase; letter-spacing: 0.08em; color: var(--ds-text-500);
}
.contrato-documento-form {
    display: grid; grid-template-columns: minmax(13rem, 1fr) minmax(17rem, 1.4fr) auto;
    align-items: end; gap: 0.8rem; padding-bottom: 1.1rem;
    border-bottom: 1px solid var(--ds-line);
}
.contrato-documento-form .ds-btn { min-height: 2.65rem; }
.contrato-campo--arquivo input[type="file"] { padding: 0.38rem; }
.contrato-campo--arquivo input[type="file"]::file-selector-button {
    margin-right: 0.65rem; padding: 0.38rem 0.65rem;
    border: 0; border-radius: 0.35rem; background: var(--ds-panel);
    color: var(--ds-text-700); cursor: pointer;
}
.contrato-documentos-lista { list-style: none; margin: 0; padding: 0; }
.contrato-documentos-lista > li {
    display: grid; grid-template-columns: 3rem minmax(0, 1fr) auto;
    align-items: center; gap: 0.9rem; padding: 0.75rem 0;
    border-bottom: 1px solid var(--ds-line);
}
.contrato-documentos-lista > li.data-empty { display: block; }
.contrato-documentos-lista .arquivo-acoes form { margin: 0; }
@media (max-width: 62rem) {
    .contrato-alteracao-form, .contrato-alteracao-edicao form { grid-template-columns: 1fr 1fr; }
    .contrato-campo--descricao { grid-column: 1 / -1; grid-row: 1; }
    .contrato-documento-form, .contrato-documento-edicao form { grid-template-columns: 1fr 1fr; }
    .contrato-documento-form .ds-btn { justify-self: start; }
    .contrato-parcela-form { grid-template-columns: 1fr 1fr; }
    .contrato-parcela-form .contrato-campo:first-child { grid-column: 1 / -1; }
    .contrato-dividir-form { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 40rem) {
    .contrato-valores { grid-template-columns: 1fr; }
    .contrato-parcela-form, .contrato-dividir-form,
    .contrato-alteracao-form, .contrato-alteracao-edicao form,
    .contrato-documento-form, .contrato-documento-edicao form { grid-template-columns: 1fr; }
    .contrato-parcela-form .contrato-campo:first-child { grid-column: auto; }
    .contrato-campo--descricao { grid-column: auto; grid-row: auto; }
    .contrato-secao-head { flex-direction: column; }
    .contrato-impacto { width: 100%; margin-left: 0; }
    .contrato-documentos-lista > li { grid-template-columns: 2.5rem minmax(0, 1fr); }
    .contrato-documentos-lista .arquivo-acoes { grid-column: 2; }
    .contrato-alteracao-form .ds-btn { width: 100%; margin-top: 0; }
}
.form-card p, .form-block { margin: 0 0 1rem; display: flex; flex-direction: column; gap: 0.35rem; }
.form-card label, .form-block, .auth-field > span {
    font-family: var(--arq-font-mono); font-size: 0.68rem; font-weight: 500;
    text-transform: uppercase; letter-spacing: 0.12em; color: var(--ds-text-500);
}
.form-card input, .form-card select, .form-card textarea,
.form-block input, .form-block select, .form-block textarea,
.inline-add input, .inline-add select, .inline-add textarea,
.avanco-form input, .auth-field input {
    width: 100%; box-sizing: border-box; padding: 0.6rem 0.8rem;
    font: inherit; color: var(--ds-text-900);
    background: var(--ds-panel); border: 1px solid transparent; border-radius: 0.5rem;
    transition: background var(--arq-fast) ease, border-color var(--arq-fast) ease, box-shadow var(--arq-fast) ease;
}
.form-card input:hover, .form-card select:hover, .form-card textarea:hover { border-color: var(--ds-line-dash); }
.form-card input:focus, .form-card select:focus, .form-card textarea:focus,
.form-block input:focus, .form-block select:focus, .form-block textarea:focus,
.inline-add input:focus, .inline-add select:focus, .inline-add textarea:focus,
.avanco-form input:focus, .auth-field input:focus {
    outline: none; background: var(--ds-surface);
    border-color: var(--ds-blue-light); box-shadow: var(--ds-focus-ring);
}
.form-card .helptext { font-size: 0.78rem; color: var(--ds-text-500); text-transform: none; letter-spacing: 0; font-family: var(--ds-font-sans); }
/* botão de envio não ocupa a coluna inteira do formulário */
.form-card > .ds-btn, .form-card form > .ds-btn { align-self: flex-start; margin-top: 0.35rem; }
.form-card form { display: flex; flex-direction: column; }

/* Linha "adicionar": uma faixa, não uma fileira de caixinhas */
.inline-add {
    display: flex; flex-wrap: wrap; gap: 0.4rem; align-items: center;
    background: var(--ds-panel); border-radius: 0.6rem; padding: 0.4rem; margin: 0 0 1.25rem;
}
.inline-add input, .inline-add select { width: auto; flex: 1; min-width: 8rem; }
.inline-add input[type="number"], .inline-add input[type="date"] { flex: 0 1 8rem; }
.ds-card > .inline-add:last-child { margin-bottom: 0; }

/* TABELAS — impressas na folha */
.data-table { width: 100%; border-collapse: collapse; font-size: 0.9rem; }
.data-table th, .data-table td { text-align: left; padding: 0.7rem 0.75rem; border-bottom: 1px solid var(--ds-line); }
.data-table th:first-child, .data-table td:first-child { padding-left: 0; }
.data-table th:last-child, .data-table td:last-child { padding-right: 0; }
.data-table th { padding-top: 0.4rem; padding-bottom: 0.55rem; border-bottom-color: var(--ds-line-dash); }
.data-table td.num, .data-table th.num { text-align: right; white-space: nowrap; }
.data-table a { color: var(--ds-blue-dark); text-decoration: none; font-weight: 500; }
.data-table a:hover { text-decoration: underline; }
.data-table tbody tr { transition: background var(--arq-fast) ease; }
.data-table tfoot th { border-top: 1px solid var(--ds-line-dash); border-bottom: 0; padding-top: 0.7rem; }
.data-table .app-inline-form { display: inline; }
.data-table td .app-link-btn { white-space: nowrap; }
.data-empty { color: var(--ds-text-500); padding: 1.5rem 0 !important; }
tr.is-done td { color: var(--ds-text-400); text-decoration: line-through; }
.table-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.table-scroll .data-table { min-width: 42rem; }

.valor--entrada { color: var(--ds-blue-dark); }
.valor--saida { color: var(--ds-danger); }

.def-list { display: grid; grid-template-columns: auto 1fr; gap: 0.5rem 1.25rem; margin: 0; }
.def-list dd { margin: 0; }

/* BADGES E TAGS */
.ds-badge {
    display: inline-flex; align-items: center; gap: 0.4rem;
    font-family: var(--arq-font-mono); font-size: 0.66rem; text-transform: uppercase;
    letter-spacing: 0.08em; padding: 0.2rem 0.55rem; border-radius: 999px;
}
.ds-badge .ds-dot { width: 0.35rem; height: 0.35rem; border-radius: 50%; }
.ds-badge--info { border: 1px solid var(--ds-blue-100); }
.ds-badge--info .ds-dot { background: var(--ds-blue); }
.tag-alerta {
    font-family: var(--arq-font-mono); font-size: 0.64rem; text-transform: uppercase; letter-spacing: 0.06em;
    color: var(--ds-danger); background: color-mix(in srgb, var(--ds-danger) 8%, #fff);
    border: 1px solid color-mix(in srgb, var(--ds-danger) 25%, var(--ds-line));
    padding: 0.1rem 0.4rem; border-radius: 999px;
}

/* Glifo de legenda, sem caixa */
.arq-glifo { flex-shrink: 0; color: var(--sec, var(--ds-text-500)); font-size: 0.6rem; line-height: 1.9; }

/* PAINEL — hero claro com foto, faixa de indicadores e índice */
/* --- Cabeçalho com foto: sangra até as bordas da folha e encosta no topo. */
.dash-hero, .page-head--foto {
    position: relative; overflow: hidden;
    margin: -2.6rem -3rem 0; padding: 3.1rem 3rem 2.3rem;
    min-height: 12rem; display: flex; align-items: flex-end;
    justify-content: space-between; gap: 1.5rem;
    background:
        /* a foto dissolve no papel embaixo, em vez de terminar num corte seco */
        linear-gradient(to top, var(--ds-bg) 2%, transparent 42%),
        linear-gradient(96deg,
            var(--ds-bg) 26%,
            color-mix(in srgb, var(--ds-bg) 78%, transparent) 46%,
            transparent 74%),
        var(--hero, none) center bottom / cover no-repeat,
        var(--ds-panel);
    animation: none;
}
/* O hero do painel usa a foto do escritório quando existe. */
.dash-hero { --hero: var(--fundo-escritorio, url("../img/hero-painel.652c6c054a26.jpg")); }
/* nas páginas internas a foto é faixa, não hero: mais baixa que a do painel */
.page-head--foto { min-height: 9.5rem; padding: 2.5rem 3rem 1.9rem; }
.page-head--comercial { --hero: url("../img/hero-comercial.a383fca1a57e.jpg"); }
.page-head--producao { --hero: url("../img/hero-producao.3c4433dbab54.jpg"); }
.page-head--gestao { --hero: url("../img/hero-gestao.1c06a0ac180f.jpg"); }
.page-head--obra { --hero: url("../img/hero-obra.47cb5645861d.jpg"); }

.dash-hero-in, .page-head--foto > div:first-child { position: relative; z-index: 2; max-width: 36rem; }
.dash-hero .ds-kicker, .page-head--foto .ds-kicker { display: block; color: var(--ds-blue-dark); }
.dash-hero h1 { margin: 0.45rem 0 0.5rem; color: var(--ds-text-900); }
.dash-hero p { margin: 0; color: var(--ds-text-700); max-width: 32rem; }
.page-head--foto > :not(:first-child) { position: relative; z-index: 2; margin-top: 0; }

/* Carimbo: campos da folha, impressos abaixo do hero */
.dash-carimbo {
    display: flex; flex-wrap: wrap; margin: 0;
    border-top: 1px solid var(--ds-line-dash); border-bottom: 1px solid var(--ds-line-dash);
}
.dash-carimbo > div { padding: 0.8rem 1.75rem 0.85rem 0; }
.dash-carimbo > div + div { padding-left: 1.75rem; border-left: 1px solid var(--ds-line); }
.dash-carimbo dt { font-family: var(--arq-font-mono); font-size: 0.62rem; font-weight: 500; text-transform: uppercase; letter-spacing: 0.16em; color: var(--ds-text-500); }
.dash-carimbo dd { margin: 0.25rem 0 0; font-size: 0.88rem; color: var(--ds-text-900); }

/* --- Indicadores: uma faixa dividida por filetes, não quatro caixas --- */
/* Faixa única: o gap de 1px deixa a cor do fundo aparecer como filete, */
.kpi-row {
    display: grid; grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr)); border-radius: 0.9rem; overflow: hidden;
}
.kpi {
    position: relative; display: flex; flex-direction: column; gap: 0.3rem;
    padding: 1.15rem 1.3rem 1.2rem; text-decoration: none;
    transition: background var(--arq-fast) ease;
}
.kpi::after {
    content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 2px;
    background: var(--sec); transform: scaleX(0); transform-origin: left;
    transition: transform var(--arq-mid) var(--arq-ease);
}
.kpi:hover::after { transform: scaleX(1); }
.kpi-value { font-size: 1.95rem; line-height: 1.05; color: var(--ds-text-900); }
.kpi-foot { font-size: 0.78rem; color: var(--ds-text-500); }
.kpi--alert .kpi-value { color: var(--ds-danger); }

/* --- Retomada do onboarding: faixa tingida --- */

/* --- Atalhos: índice da folha, linhas separadas por filete --- */
.dash-section { display: flex; flex-direction: column; gap: 0.25rem; }
.dash-section-head { color: var(--sec); }

/* PROJETOS E OBRAS — objetos numa grade, aqui a superfície faz sentido */
/* align-items: start impede que um card alto estique os vizinhos da linha */
.projeto-grid { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fill, minmax(19rem, 1fr)); align-items: start; }
.obra-grid { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fill, minmax(22rem, 1fr)); align-items: start; }
.projeto-card, .obra-card { padding: 1.25rem 1.35rem 1.35rem; transition: border-color var(--arq-fast) ease, box-shadow var(--arq-mid) var(--arq-ease); }
.projeto-card:hover, .obra-card:hover { border-color: var(--ds-blue-100); box-shadow: var(--ds-shadow-soft); }
.projeto-card-top, .obra-card-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 0.75rem; }
/* o título ocupa sempre duas linhas: nome curto e nome longo alinham igual */
.projeto-nome {
    font-family: var(--ds-font-display); font-variation-settings: "wdth" 108, "wght" 600;
    font-size: 1.05rem; line-height: 1.3; color: var(--ds-text-900); text-decoration: none;
    display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2;
    overflow: hidden; min-height: 2.6em;
}
.projeto-nome:hover { color: var(--ds-blue-dark); }
.projeto-cliente { margin: 0.3rem 0 1rem; font-size: 0.86rem; color: var(--ds-text-500); }
.projeto-metricas { display: grid; grid-template-columns: 1fr 1fr; gap: 0.9rem 0.6rem; margin: 0; padding-top: 0.9rem; border-top: 1px solid var(--ds-line); }
.projeto-metricas dd { margin: 0.2rem 0 0; font-size: 0.92rem; font-weight: 500; }

.cronograma { display: flex; flex-direction: column; gap: 0.55rem; margin: 1rem 0 0.75rem; }
.cronograma-linha { display: grid; grid-template-columns: 4.5rem 1fr 3.4rem; align-items: center; gap: 0.6rem; }
.cronograma-linha b { font-size: 0.82rem; text-align: right; }
.cronograma-real { background: linear-gradient(90deg, #3a4149, #616a73) !important; box-shadow: none !important; }
.cronograma-resumo { display: flex; flex-wrap: wrap; align-items: flex-start; gap: 2.5rem; padding: 1.15rem 0; border-top: 1px solid var(--ds-line-dash); border-bottom: 1px solid var(--ds-line-dash); }
.cronograma-num { display: flex; flex-direction: column; gap: 0.2rem; }
.cronograma-num strong { font-size: 1.7rem; letter-spacing: -0.03em; }
.desvio-forte { color: var(--ds-danger); }
.cronograma-resumo .desvio-alerta { flex-basis: 100%; }

.ds-progress { width: 100%; height: 8px; border-radius: 999px; background: color-mix(in srgb, var(--ds-ink) 8%, transparent); overflow: hidden; box-shadow: none; }
.ds-progress--on-light { background: color-mix(in srgb, var(--ds-ink) 8%, transparent); box-shadow: none; }
.ds-progress-fill { height: 100%; width: 0; border-radius: 999px; background: linear-gradient(90deg, var(--ds-blue-dark), var(--ds-blue-light)); box-shadow: none; transition: width 800ms var(--arq-ease-out); }
.ds-progress-fill::after { display: none; }

/* Avisos: faixa tingida com triângulo de revisão */
.desvio-alerta, .visita-pendencia {
    display: flex; align-items: flex-start; gap: 0.55rem; margin: 0.5rem 0 0;
    font-size: 0.85rem; color: var(--ds-danger);
    background: color-mix(in srgb, var(--ds-danger) 6%, #fff);
    border: 1px solid color-mix(in srgb, var(--ds-danger) 22%, var(--ds-line));
    border-radius: 0.55rem; padding: 0.5rem 0.7rem;
}
.desvio-alerta::before, .visita-pendencia::before { content: "▲"; font-size: 0.6rem; line-height: 1.6; flex-shrink: 0; }
.desvio-ok { font-size: 0.82rem; color: var(--ds-blue-dark); margin: 0.5rem 0 0; }
.desvio-ok::before { content: "■ "; font-size: 0.58rem; vertical-align: middle; }
.linha-desvio td { background: color-mix(in srgb, var(--ds-danger) 3.5%, #fff); }
.linha-desvio td:first-child::before { content: "▲"; color: var(--ds-danger); font-size: 0.56rem; margin-right: 0.45rem; vertical-align: middle; }
.avanco-form { display: flex; align-items: center; gap: 0.3rem; }
.avanco-form input { width: 4.2rem; padding: 0.3rem 0.45rem; font-family: var(--arq-font-mono); font-size: 0.82rem; }

/* Etapas: linhas com marcador, sem caixa */
.etapas, .pendencias { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.etapa {
    display: flex; align-items: center; gap: 0.75rem;
    padding: 0.7rem 0.35rem; border-bottom: 1px solid var(--ds-line);
    transition: background var(--arq-fast) ease;
}
.etapa::before { content: ""; flex-shrink: 0; width: 0.5rem; height: 0.5rem; border-radius: 1px; background: var(--ds-line-dash); }
.etapa > div:first-of-type { flex: 1; }
.etapa--andamento::before { background: var(--arq-blue); box-shadow: 0 0 0 3px color-mix(in srgb, var(--arq-blue) 16%, transparent); }
.etapa--concluida::before { background: var(--arq-green); }
.etapa--concluida strong { color: var(--ds-text-500); }

.pendencias li { display: flex; align-items: center; justify-content: space-between; gap: 0.6rem; font-size: 0.9rem; padding: 0.6rem 0.35rem; border-bottom: 1px solid var(--ds-line); }
.pendencias .is-resolvida { color: var(--ds-text-400); text-decoration: line-through; }
.pendencias li.data-empty { justify-content: flex-start; border-bottom: 0; }

.horas-comp-head { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; }
.horas-comp-head h3 { margin: 0; }
.horas-comp-head + .ds-progress { margin-top: 0.85rem; }

.margem-strip { display: flex; flex-wrap: wrap; gap: 2.5rem; padding: 1.15rem 0; border-top: 1px solid var(--ds-line-dash); border-bottom: 1px solid var(--ds-line-dash); }
.margem-strip > div { display: flex; flex-direction: column; gap: 0.25rem; }
.margem-strip strong { font-size: 1.25rem; }
.quantitativos-projeto { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1px; margin: 1.1rem 0 0; padding: 1px; border-radius: 0.7rem; background: var(--ds-line); overflow: hidden; box-shadow: 0 10px 30px rgba(18, 32, 28, 0.06); }
.quantitativo { --metrica: var(--arq-green); position: relative; display: flex; min-width: 0; min-height: 5.4rem; flex-direction: column; justify-content: center; gap: 0.3rem; padding: 1.05rem 1.15rem; background: color-mix(in srgb, var(--metrica) 9%, var(--ds-surface)); }
.quantitativo span { color: color-mix(in srgb, var(--metrica) 62%, var(--ds-text-700)); font-family: var(--arq-font-mono); font-size: 0.66rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.08em; }
.quantitativo strong { color: color-mix(in srgb, var(--metrica) 72%, var(--ds-ink)); font-family: var(--arq-font-mono); font-size: 1.18rem; overflow-wrap: anywhere; }
.quantitativo small { color: var(--ds-text-500); font-size: 0.7rem; }
.quantitativo--horas { --metrica: var(--arq-blue); }
.quantitativo--inicio { --metrica: var(--arq-violet); }
.quantitativo--entrega { --metrica: var(--arq-amber); }
@media (max-width: 48rem) { .quantitativos-projeto { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.margem-final strong { color: var(--ds-blue-dark); }

/* FINANCEIRO E PRECIFICAÇÃO */
.ht-hint { font-size: 0.82rem; color: var(--ds-text-500); margin: 0 0 0.85rem; }
.field-help { display: block; font-size: 0.76rem; color: var(--ds-text-500); line-height: 1.4; }
.financeiro-resumo, .precificacao-resumo {
    display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1px; overflow: hidden; border-radius: 0.7rem; background: var(--ds-line);
    box-shadow: 0 8px 24px rgba(18, 32, 28, 0.05);
}
.financeiro-metrica, .precificacao-metrica {
    --metrica: var(--arq-green); display: flex; min-width: 0; min-height: 6rem;
    flex-direction: column; justify-content: center; gap: 0.25rem; padding: 1rem 1.2rem;
    background: color-mix(in srgb, var(--metrica) 8%, var(--ds-surface));
}
.financeiro-metrica > span, .precificacao-metrica > span {
    font-family: var(--arq-font-mono); font-size: 0.64rem; font-weight: 600;
    text-transform: uppercase; letter-spacing: 0.08em;
    color: color-mix(in srgb, var(--metrica) 68%, var(--ds-text-700));
}
.financeiro-metrica strong, .precificacao-metrica strong {
    font-size: clamp(1.15rem, 2.2vw, 1.65rem); line-height: 1.2; white-space: nowrap;
    color: color-mix(in srgb, var(--metrica) 72%, var(--ds-ink));
}
.financeiro-metrica small, .precificacao-metrica small { color: var(--ds-text-500); font-size: 0.7rem; }
.financeiro-metrica--saida { --metrica: var(--arq-clay); }
.financeiro-metrica--saldo, .precificacao-metrica--final { --metrica: var(--arq-blue); }
.precificacao-metrica--custo { --metrica: var(--arq-amber); }
.precificacao-metrica--base { --metrica: var(--arq-green); }
.contas-resumo { padding-bottom: 1.5rem; border-bottom: 1px solid var(--ds-line); }
.contas-faixa { display: flex; flex-wrap: wrap; border-top: 1px solid var(--ds-line); border-bottom: 1px solid var(--ds-line); }
.conta-saldo { display: flex; min-width: 10rem; flex-direction: column; gap: 0.25rem; padding: 0.8rem 1.5rem 0.85rem 0; }
.conta-saldo + .conta-saldo { padding-left: 1.5rem; border-left: 1px solid var(--ds-line); }
.conta-saldo span { color: var(--ds-text-500); font-size: 0.76rem; }
.conta-saldo strong { font-size: 1.15rem; white-space: nowrap; }
.conta-inicial-form {
    display: grid; grid-template-columns: minmax(14rem, 1fr) minmax(12rem, 0.7fr) 10rem auto;
    align-items: end; gap: 0.8rem; padding: 1rem 0; border-top: 1px solid var(--ds-line);
}
.conta-inicial-form > div { display: flex; flex-direction: column; }
.conta-inicial-form > div span { font-size: 0.78rem; color: var(--ds-text-500); }
.conta-inicial-form input {
    width: 100%; min-height: 2.65rem; box-sizing: border-box; padding: 0.6rem 0.75rem;
    border: 1px solid var(--ds-line-dash); border-radius: 0.5rem; background: var(--ds-surface); font: inherit;
}
.financeiro-lancamentos { min-width: 0; }
.financeiro-tabela td:nth-child(2) strong, .financeiro-tabela td:nth-child(2) small { display: block; }
.financeiro-tabela td:nth-child(2) small { margin-top: 0.12rem; color: var(--ds-text-500); }
.financeiro-tabela td:first-child, .financeiro-tabela td:nth-child(5), .financeiro-tabela td:last-child { white-space: nowrap; }
.financeiro-status {
    display: inline-flex; padding: 0.16rem 0.48rem; border-radius: 999px;
    font-family: var(--arq-font-mono); font-size: 0.62rem; text-transform: uppercase;
    background: var(--ds-panel); color: var(--ds-text-500);
}
.financeiro-status--realizado { background: var(--ds-blue-50); color: var(--ds-blue-dark); }
.financeiro-status--previsto { background: color-mix(in srgb, var(--arq-amber) 10%, var(--ds-surface)); color: var(--arq-amber); }
.precificacao-parametros-secao { padding-bottom: 1.75rem; border-bottom: 1px solid var(--ds-line); }
.precificacao-parametros {
    display: grid; grid-template-columns: repeat(4, minmax(10rem, 1fr)) auto;
    align-items: start; gap: 1rem;
}
.precificacao-parametros > p { display: flex; min-width: 0; flex-direction: column; gap: 0.35rem; margin: 0; }
.precificacao-parametros label {
    font-family: var(--arq-font-mono); font-size: 0.66rem; font-weight: 500;
    text-transform: uppercase; letter-spacing: 0.08em; color: var(--ds-text-500);
}
.precificacao-parametros input {
    width: 100%; min-height: 2.65rem; box-sizing: border-box; padding: 0.6rem 0.75rem;
    border: 1px solid var(--ds-line-dash); border-radius: 0.5rem; background: var(--ds-surface); font: inherit;
}
.precificacao-parametros .ds-btn { min-height: 2.65rem; margin-top: 1.42rem; }
.precificacao-detalhes { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 3rem; align-items: start; }
.inline-add.precificacao-inline {
    display: grid; grid-template-columns: minmax(10rem, 1fr) 8rem auto;
    padding: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none;
}
.precificacao-inline input { min-width: 0; }
.precificacao-table-scroll { overflow-x: visible; }
.precificacao-table-scroll .precificacao-tabela { min-width: 0; table-layout: fixed; }
.precificacao-tabela th:last-child, .precificacao-tabela td:last-child { width: var(--arq-icon-btn); }
.precificacao-tabela th:nth-child(2), .precificacao-tabela td:nth-child(2) {
    width: 7.5rem; text-align: right; white-space: nowrap;
}
@media (max-width: 70rem) {
    .precificacao-parametros { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .precificacao-parametros .ds-btn { justify-self: start; }
}
@media (max-width: 52rem) {
    .financeiro-resumo, .precificacao-resumo { grid-template-columns: 1fr; }
    .financeiro-metrica, .precificacao-metrica { min-height: 4.8rem; }
    .precificacao-detalhes, .conta-inicial-form { grid-template-columns: 1fr; }
    .conta-inicial-form .ds-btn { justify-self: start; }
}
@media (max-width: 36rem) {
    .precificacao-parametros { grid-template-columns: 1fr; }
    .precificacao-parametros .ds-btn { width: 100%; }
    .conta-saldo { width: 100%; padding-right: 0; }
    .conta-saldo + .conta-saldo { padding-left: 0; border-left: 0; border-top: 1px solid var(--ds-line); }
}
.proposta-hora-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 1.5rem; }
.proposta-hora-atual { display: flex; flex-direction: column; align-items: flex-end; gap: 0.18rem; white-space: nowrap; }
.proposta-hora-atual span, .proposta-hora-manual > span {
    font-family: var(--arq-font-mono); font-size: 0.66rem; text-transform: uppercase;
    letter-spacing: 0.08em; color: var(--ds-text-500);
}
.proposta-hora-atual strong { color: var(--ds-blue-dark); font-size: 1.1rem; }
.fatores-projeto { margin: 1rem 0; padding: 0; border: 0; }
.fatores-projeto legend { margin-bottom: 0.55rem; font-size: 0.84rem; font-weight: 650; }
.fatores-lista { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-bottom: 0.5rem; }
.fator-check { display: inline-flex; align-items: center; gap: 0.4rem; border: 1px solid var(--ds-line); border-radius: 0.45rem; padding: 0.45rem 0.7rem; font-size: 0.85rem; cursor: pointer; transition: border-color 150ms ease, background 150ms ease, transform 150ms ease; }
.fator-check:hover { border-color: var(--ds-blue); transform: translateY(-1px); }
.fator-check:has(input:checked) { border-color: var(--ds-blue); background: var(--ds-blue-soft); }
.fator-check input { accent-color: var(--ds-blue); }
.fator-check em { color: var(--ds-blue-dark); font-style: normal; font-weight: 600; }
.ht-proposta-form .inline-add {
    margin-bottom: 0; padding: 0; border: 0; border-radius: 0;
    background: none; box-shadow: none;
}
.proposta-hora-manual { display: flex; min-width: min(18rem, 100%); flex-direction: column; gap: 0.3rem; }
.inline-add .proposta-hora-manual input[type="number"] {
    width: 100%; height: 2.65rem; min-height: 2.65rem; flex: none;
}
@media (max-width: 42rem) {
    .proposta-hora-head { align-items: flex-start; flex-direction: column; gap: 0.65rem; }
    .proposta-hora-atual { align-items: flex-start; }
    .ht-proposta-form .inline-add { align-items: stretch; flex-direction: column; }
}
.termo-fixo {
    display: flex; min-width: 0; flex-direction: column; gap: 0.25rem;
    margin: 0 0 1rem;
}
.termo-fixo span {
    font-family: var(--arq-font-mono); font-size: 0.68rem; font-weight: 500;
    text-transform: uppercase; letter-spacing: 0.12em; color: var(--ds-text-500);
}
.termo-fixo strong {
    display: flex; align-items: center; min-height: 2.65rem; box-sizing: border-box;
    padding: 0.6rem 0.8rem; border-radius: 0.5rem;
    background: var(--ds-panel); color: var(--ds-text-700);
    font-size: 0.94rem; font-weight: 500;
}
.cronograma-proposta { border-top: 1px solid var(--ds-line); }
.cronograma-proposta-linha {
    display: grid; grid-template-columns: minmax(0, 1fr) 11rem;
    align-items: center; gap: 1rem; padding: 0.75rem 0;
    border-bottom: 1px solid var(--ds-line);
}
.cronograma-proposta-linha > div { display: flex; flex-direction: column; gap: 0.12rem; }
.cronograma-proposta-linha strong { font-size: 0.92rem; font-weight: 500; }
.cronograma-proposta-linha > div span {
    font-family: var(--arq-font-mono); font-size: 0.66rem;
    text-transform: uppercase; letter-spacing: 0.08em; color: var(--ds-text-500);
}
.cronograma-proposta-linha.is-complementar strong { color: var(--ds-blue-dark); }
.cronograma-proposta-linha input {
    width: 100%; box-sizing: border-box; padding: 0.5rem 0.65rem;
    border: 1px solid var(--ds-line-dash); border-radius: 0.45rem;
    background: var(--ds-surface); color: var(--ds-text-900); font: inherit;
}
.cronograma-proposta-linha time { text-align: right; font-family: var(--arq-font-mono); font-size: 0.82rem; }
@media (max-width: 36rem) {
    .cronograma-proposta-linha { grid-template-columns: 1fr; gap: 0.5rem; }
    .cronograma-proposta-linha time { text-align: left; }
}

/* TAREFAS, AGENDA E LINHA DO TEMPO */
/* --- Apontamento de horas --- */

.agenda-lista { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.agenda-lista li { display: flex; gap: 1.15rem; align-items: flex-start; padding: 0.85rem 0.35rem; border-bottom: 1px solid var(--ds-line); }
.agenda-lista li:last-child { border-bottom: 0; }
.agenda-quando { display: flex; flex-direction: column; align-items: center; min-width: 3rem; }
.agenda-quando strong { font-size: 1.05rem; }
.agenda-quando span { font-size: 0.78rem; color: var(--ds-text-500); }
.agenda-info { flex: 1; }
.agenda-info strong { margin-right: 0.5rem; }
.agenda-info p { margin: 0.25rem 0 0; font-size: 0.85rem; color: var(--ds-text-500); }
.agenda-lista--passados li { opacity: 0.65; }

/* Linha de construção com nós */
.timeline { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 1rem; }
.timeline li { position: relative; padding-left: 1.35rem; }
.timeline li::before { content: ""; position: absolute; left: 0.28rem; top: 1.1rem; bottom: -1rem; border-left: 1px dashed var(--ds-line-dash); }
.timeline li:last-child::before { display: none; }
.timeline li::after { content: ""; position: absolute; left: 0; top: 0.42rem; width: 0.6rem; height: 0.6rem; border-radius: 1px; background: var(--ds-bg); border: 1.5px solid var(--ds-blue); }
.timeline li.data-empty { padding-left: 0; }
.timeline li.data-empty::before, .timeline li.data-empty::after { display: none; }
.timeline-tipo { font-weight: 600; font-size: 0.88rem; }
.timeline-data { color: var(--ds-text-500); font-family: var(--arq-font-mono); font-size: 0.7rem; margin-left: 0.5rem; }
.timeline p { margin: 0.25rem 0 0; font-size: 0.9rem; }
.visitas-timeline, .medicoes-lista { margin-top: 1.15rem; }
.visita-acao { color: var(--ds-blue-dark); font-size: 0.85rem; font-weight: 500; }

/* NOTIFICAÇÕES E REGULATÓRIO */
.notif-lista { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.notif-item {
    display: flex; align-items: flex-start; justify-content: space-between; gap: 0.85rem;
    padding: 0.95rem 0.35rem; border-bottom: 1px solid var(--ds-line);
    transition: background var(--arq-fast) ease;
}
.notif-item:hover { background: var(--ds-panel); }
.notif-item--info { --sec: var(--arq-blue); }
.notif-item--alerta { --sec: var(--arq-amber); }
.notif-item--critico { --sec: var(--ds-danger); }
.notif-corpo { flex: 1; }
.notif-corpo strong { display: block; font-size: 0.94rem; }
.notif-corpo p { margin: 0.15rem 0; font-size: 0.88rem; color: var(--ds-text-500); }
.notif-item.is-lida { opacity: 0.5; }

.alerta-card {
    border: 1px solid color-mix(in srgb, var(--arq-amber) 26%, var(--ds-line));
    border-radius: 0.8rem; padding: 1.15rem 1.3rem;
}
.alerta-card > h2.ds-display, .alerta-card > h3.ds-display { --sec: var(--arq-amber); color: var(--arq-amber); }
.alerta-card .pendencias li { border-bottom-color: color-mix(in srgb, var(--arq-amber) 18%, var(--ds-line)); }
.alerta-card .pendencias li:last-child { border-bottom: 0; padding-bottom: 0; }

/* ONBOARDING E DIAGNÓSTICO */

.diagnostico .page-head { text-align: center; }
.diagnostico .page-sub { margin-left: auto; margin-right: auto; }
.diag-form { display: flex; flex-direction: column; gap: 2.25rem; }
.diag-pergunta { border: 0; margin: 0; padding: 0; overflow: hidden; }
.diag-pergunta legend {
    float: left; width: 100%; padding: 0; margin: 0;
    font-family: var(--ds-font-display); font-variation-settings: "wdth" 106, "wght" 600;
    font-size: 1.05rem; line-height: 1.35;
}
.diag-dim { display: block; color: var(--ds-blue-dark); margin-bottom: 0.5rem; }
.diag-opcoes { clear: both; display: flex; flex-direction: column; gap: 0.4rem; margin-top: 1.1rem; }
.diag-opcao {
    display: flex; align-items: flex-start; gap: 0.6rem; padding: 0.7rem 0.85rem;
    border: 1px solid transparent; border-radius: 0.55rem; background: var(--ds-panel); cursor: pointer;
    transition: background var(--arq-fast) ease, border-color var(--arq-fast) ease;
}
.diag-opcao:hover { background: var(--ds-blue-50); }
.diag-opcao input { margin-top: 0.2rem; accent-color: var(--ds-blue); }
.diag-opcao:has(input:checked) { border-color: var(--ds-blue); background: var(--ds-blue-50); }
.diag-submit { align-self: flex-start; }
.diag-resultado { display: flex; flex-direction: column; gap: 1rem; align-items: center; text-align: center; }
.diag-score strong { font-family: var(--arq-font-mono); font-size: 3.2rem; letter-spacing: -0.04em; color: var(--ds-blue-dark); }
.diag-score span { font-family: var(--arq-font-mono); font-size: 1.3rem; color: var(--ds-text-400); }
.diag-resultado .ds-progress { max-width: 22rem; }
.diag-faixa { margin: 0.2rem 0 0; }
.diag-resultado p { max-width: 34rem; color: var(--ds-text-700); }

/* TERMOS, PRIVACIDADE E ACEITE */
.prosa { max-width: 40rem; }
.prosa h2 { margin: 2.25rem 0 0.85rem; }
.prosa h2:first-child { margin-top: 0; }
.prosa p { margin: 0 0 0.9rem; line-height: 1.65; color: var(--ds-text-700); }
.prosa-item { position: relative; padding-left: 1.15rem; }
.prosa-item::before { content: ""; position: absolute; left: 0; top: 0.65rem; width: 0.4rem; height: 0.4rem; border-radius: 1px; background: var(--ds-blue); }
.prosa-pe { margin-top: 2.5rem; padding-top: 1.15rem; border-top: 1px solid var(--ds-line-dash); }

.aceite-docs { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--ds-line-dash); }
.aceite-docs li { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; padding: 1rem 0.35rem; border-bottom: 1px solid var(--ds-line); }
.aceite-doc-nome { font-family: var(--ds-font-display); font-variation-settings: "wdth" 106, "wght" 600; font-size: 1rem; color: var(--ds-text-900); text-decoration: none; }
.aceite-doc-nome:hover { color: var(--ds-blue-dark); }
.aceite-doc-versao { margin-left: 0.6rem; }
.aceite-docs p { margin: 0.3rem 0 0; font-size: 0.88rem; color: var(--ds-text-500); }
.aceite-doc-ler { white-space: nowrap; font-size: 0.88rem; }
.aceite-form { display: flex; flex-direction: column; gap: 1.25rem; align-items: flex-start; }
.aceite-check { display: flex; gap: 0.65rem; align-items: flex-start; cursor: pointer; line-height: 1.5; }
.aceite-check input { margin-top: 0.28rem; accent-color: var(--ds-blue); flex-shrink: 0; }
.aceite-sair { margin-top: -1rem; }

/* Rodapé público com os links legais */
.pe-legal { margin-top: 3rem; padding-top: 1.15rem; border-top: 1px solid var(--ds-line); display: flex; flex-wrap: wrap; gap: 1.25rem; font-size: 0.82rem; }
.pe-legal a { color: var(--ds-text-500); text-decoration: none; }
.pe-legal a:hover { text-decoration: underline; }
.pe-legal--lateral { margin: 0; padding: 0.55rem 0 0; border-top: 0; gap: 0.9rem; font-size: 0.76rem; }

/* LOGIN — foto ocupando a tela, texto solto sobre ela */
.tela-login { min-height: 100vh; }
.tela-login .app-main--public { max-width: none; padding: 0; flex: 1; display: flex; }
.tela-login .auth-shell { flex: 1; }
.auth-shell {
    position: relative; min-height: 100vh;
    background: url("../img/login-arquitetura.ff95281775d6.jpg") center / cover no-repeat, var(--ds-ink);
}
.auth-shell::before {
    content: ""; position: absolute; inset: 0; pointer-events: none;
    background:
        linear-gradient(105deg, rgba(10, 14, 15, 0.84) 0%, rgba(10, 14, 15, 0.52) 34%,
            rgba(10, 14, 15, 0.26) 58%, rgba(10, 14, 15, 0.46) 100%),
        linear-gradient(to top, rgba(10, 14, 15, 0.55), transparent 38%);
}
/* A foto sangra na tela inteira, mas o conteúdo obedece a uma largura de */
.auth-quadro {
    position: relative; z-index: 2; min-height: 100vh;
    display: grid; grid-template-columns: 1fr; gap: 2.5rem; align-items: center;
    max-width: 76rem; margin: 0 auto;
    padding: clamp(1.5rem, 4vw, 3.5rem);
    box-sizing: border-box;
}
@media (min-width: 62rem) {
    .auth-quadro { grid-template-columns: minmax(0, 1fr) 21rem; gap: 4.5rem; }
}

/* Texto livre sobre a imagem — sem card */
.auth-hero { position: relative; z-index: 2; background: none; border: 0; border-radius: 0; padding: 0; box-shadow: none; min-height: 0; display: block; }
.auth-hero-inner { display: flex; flex-direction: column; gap: 1.15rem; max-width: 34rem; }
.auth-brand { display: inline-flex; align-items: center; gap: 0.65rem; align-self: flex-start; }
.auth-brand svg { width: 2.4rem; height: 2.4rem; }
.auth-brand .mk-plate { fill: rgba(255, 255, 255, 0.12); }
.auth-brand .mk-a { stroke: #fff; }
.auth-brand .mk-cota { stroke: #3fa98a; }
.auth-brand-word { font-family: var(--ds-font-display); font-variation-settings: "wdth" 115, "wght" 700; font-size: 1.3rem; color: #fff; }
.auth-hero .ds-kicker { display: block; }
.auth-hero h1 { margin: 0; color: #fff; }

/* Formulário: vidro sobre a foto. O véu de branco a 78% deixa o concreto */
.auth-card {
    position: relative; z-index: 2; display: flex; flex-direction: column; gap: 1.15rem;
    padding: 1.75rem; border-radius: 0.9rem;
}
.auth-card .auth-disclaimer { font-size: 0.76rem; }
.auth-visitor { border-top-color: rgba(20, 24, 26, 0.1); }
.auth-header h2 { margin: 0 0 0.2rem; font-size: 1.35rem; }
.auth-header p { margin: 0; color: var(--ds-text-500); font-size: 0.9rem; }
.auth-error { color: var(--ds-danger); font-size: 0.9rem; margin: 0; }
.auth-form { display: flex; flex-direction: column; gap: 1rem; }
.auth-field { display: block; }
.auth-field > span { display: block; margin-bottom: 0.4rem; }
.auth-submit { width: 100%; padding: 0.72rem 1rem; }
.auth-visitor { border-top: 1px solid var(--ds-line); padding-top: 1.15rem; }
.auth-visitor p { font-size: 0.85rem; color: var(--ds-text-500); margin: 0 0 0.85rem; }
.auth-visitor-btn { width: 100%; }
.auth-disclaimer { font-size: 0.75rem; color: var(--ds-text-400); margin: 0; }
.auth-legal { font-size: 0.78rem; color: var(--ds-text-500); margin: 0; line-height: 1.5; }
.auth-legal a { color: var(--ds-blue-dark); }

/* ENTRADA — a folha monta ao carregar */
@keyframes arq-rise { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
.page > * { animation: arq-rise 460ms var(--arq-ease-out) both; }
.page > *:nth-child(1) { animation-delay: 0ms; }
.page > *:nth-child(2) { animation-delay: 55ms; }
.page > *:nth-child(3) { animation-delay: 110ms; }
.page > *:nth-child(4) { animation-delay: 165ms; }
.page > *:nth-child(n + 5) { animation-delay: 210ms; }
.app-message { animation: arq-rise 340ms var(--arq-ease-out) both; }

/* RESPONSIVO */
@media (max-width: 62rem) {
    .app-side {
        position: sticky; top: 0; width: auto; height: auto;
        border-right: 0; border-bottom: 1px solid var(--ds-line);
    }
    .app-side-head { padding: 0.8rem 1rem; }
    .nav-burger {
        display: inline-flex; align-items: center; justify-content: center;
        width: 2.5rem; height: 2.5rem; border: 1px solid var(--ds-line); border-radius: 0.5rem;
        background: var(--ds-surface); cursor: pointer;
    }
    .nav-burger svg { width: 1.35rem; height: 1.35rem; }
    .app-nav, .app-side-foot { display: none; }
    .nav-toggle:checked ~ .app-side .app-nav,
    .nav-toggle:checked ~ .app-side .app-side-foot { display: flex; }
    .app-frame { margin-left: 0; }
    .app-main { padding: 1.6rem 1.15rem 3.5rem; min-height: auto; }
    .page { gap: 1.85rem; }
    .page-head--row { flex-direction: column; align-items: stretch; gap: 1rem; }
    .page-head--row > :not(:first-child) { margin-top: 0; }
    .page-head-actions { flex-wrap: wrap; }
    /* No estreito a foto vira faixa no topo e o texto desce para o papel: */
    .dash-hero, .page-head--foto {
        margin: -1.6rem -1.15rem 0; padding: 6.5rem 1.15rem 1.4rem;
        min-height: 0; flex-direction: column; align-items: stretch; gap: 1rem;
        background:
            linear-gradient(to top,
                var(--ds-bg) 42%,
                color-mix(in srgb, var(--ds-bg) 80%, transparent) 62%,
                transparent 88%),
            var(--hero, none) center top / cover no-repeat, var(--ds-panel);
    }
    .dash-hero-in, .page-head--foto > div:first-child { max-width: none; }
    .page-head--foto > :not(:first-child) { margin-top: 0; }

    .detalhe-grid { gap: 1.85rem; }
    .dash-carimbo > div + div { padding-left: 0; border-left: 0; }
    .auth-quadro { align-items: stretch; align-content: center; }
}

/* MOVIMENTO REDUZIDO */
@media (prefers-reduced-motion: reduce) {
    .page > *, .app-message { animation: none; }
    .ds-btn,
    .chip,
    .kpi,
    .projeto-card,
    .obra-card,
    .notif-item,
    .diag-opcao,
    .ds-progress-fill,
    .app-brand-mark .mk-cota { transition-duration: 1ms; }
    .ds-btn:active { transform: none; }

    .ds-btn.is-busy::before { animation: none; transform: scaleX(1); }
}

/* ACESSIBILIDADE */
.ds-root :focus-visible, a:focus-visible, button:focus-visible,
input:focus-visible, select:focus-visible, textarea:focus-visible {
    outline: 2px solid var(--ds-blue-light); outline-offset: 2px;
}

/* --- Briefings --- */
.briefing-bloco {
    margin: 1.5rem 0 0.5rem; font-family: var(--arq-font-mono); font-size: 0.68rem;
    text-transform: uppercase; letter-spacing: 0.14em; color: var(--ds-text-500);
}
.briefing-pergunta-linha { align-items: flex-start; }
.briefing-opcoes-preview { display: block; margin-top: 0.2rem; font-size: 0.82rem; color: var(--ds-text-500); }

.briefing-respostas { display: flex; flex-direction: column; gap: 2rem; }
/* O csrf é um input hidden, e alguma regra de input o tirava do display:none */
.briefing-respostas > input[type="hidden"] { display: none; }
.briefing-pergunta { border: 0; margin: 0 0 1.75rem; padding: 0; overflow: hidden; }
.briefing-pergunta:last-of-type { margin-bottom: 0; }
.briefing-pergunta legend {
    float: left; width: 100%; padding: 0; margin: 0 0 0.6rem;
    font-weight: 600; font-size: 0.96rem; line-height: 1.35;
}
.briefing-opcoes { clear: both; display: flex; flex-wrap: wrap; gap: 0.4rem; margin-bottom: 0.7rem; }
.briefing-opcao {
    display: inline-flex; align-items: center; gap: 0.45rem; cursor: pointer;
    padding: 0.38rem 0.8rem; border-radius: 999px; font-size: 0.87rem;
    background: var(--ds-panel); border: 1px solid transparent;
    transition: background var(--arq-fast) ease, border-color var(--arq-fast) ease;
}
.briefing-opcao input { accent-color: var(--ds-blue); }
.briefing-opcao:hover { background: var(--ds-blue-50); }
.briefing-opcao:has(input:checked) { background: var(--ds-blue-50); border-color: var(--ds-blue); }
.briefing-complemento { clear: both; display: block; }
.briefing-complemento > span {
    display: block; margin-bottom: 0.3rem;
    font-family: var(--arq-font-mono); font-size: 0.66rem; text-transform: uppercase;
    letter-spacing: 0.12em; color: var(--ds-text-500);
}
.briefing-complemento textarea {
    width: 100%; box-sizing: border-box; padding: 0.6rem 0.8rem; font: inherit;
    background: var(--ds-panel); border: 1px solid transparent; border-radius: 0.5rem;
}
.briefing-complemento textarea:focus {
    outline: none; background: var(--ds-surface);
    border-color: var(--ds-blue-light); box-shadow: var(--ds-focus-ring);
}

/* --- Apoio de IA: sempre marcado como rascunho, nunca como resultado final --- */

/* --- Contrato: o corpo é para ler, então monoespaçada e linha larga --- */
.contrato-corpo {
    width: 100%; box-sizing: border-box; padding: 1rem 1.15rem;
    font-family: var(--arq-font-mono); font-size: 0.82rem; line-height: 1.7;
    background: var(--ds-panel); border: 1px solid transparent; border-radius: 0.6rem;
    resize: vertical;
}
.contrato-corpo:focus {
    outline: none; background: var(--ds-surface);
    border-color: var(--ds-blue-light); box-shadow: var(--ds-focus-ring);
}

/* FUNDO E SUPERFÍCIES */
.app-shell { background: transparent; }
.app-shell::before {
    content: ""; position: fixed; inset: 0; z-index: -2; pointer-events: none;
    background:
        linear-gradient(90deg,
            transparent 0 15rem, rgba(255, 255, 255, 0.34) 26rem, rgba(255, 255, 255, 0.5) 60%),
        radial-gradient(46rem 40rem at 6% 4%, rgba(52, 168, 133, 0.16), transparent 62%),
        radial-gradient(40rem 36rem at 96% 12%, rgba(70, 140, 200, 0.2), transparent 60%),
        radial-gradient(44rem 40rem at 82% 98%, rgba(24, 92, 74, 0.16), transparent 62%),
        radial-gradient(34rem 30rem at 26% 96%, rgba(196, 132, 84, 0.14), transparent 62%),
        var(--fundo-escritorio, url("../img/fundo-vidro.0ac999b2ce11.jpg")) center / cover no-repeat,
        var(--ds-ink);
}
.app-main {
    --ds-text-500: #5b6a65; --ds-text-400: #78857f;
    background: var(--ds-bg); border-left: 1px solid var(--ds-line);
}
.app-main--public { background: none; box-shadow: none; }
.app-frame { background: transparent; }
.app-side {
    -webkit-backdrop-filter: blur(40px) saturate(200%);
    backdrop-filter: blur(40px) saturate(200%);
}

/* Elementos compartilhados usam os mesmos estados de movimento. */
.ds-btn {
    position: relative; overflow: hidden;
    transition: background var(--arq-fast) ease, color var(--arq-fast) ease,
        border-color var(--arq-fast) ease, box-shadow var(--arq-mid) var(--arq-ease),
        transform var(--arq-fast) var(--arq-ease-out);
}
.ds-btn:hover { transform: translateY(-1px); }
.ds-btn:active { transform: translateY(1px); transition-duration: 60ms; }
.ds-btn > * { position: relative; z-index: 1; }

.kpi-row {
    position: relative; gap: 0; background: var(--ds-surface);
    border-color: var(--ds-line); box-shadow: var(--ds-shadow-soft);
}
.kpi { background: none; }
.kpi:first-child { border-left: 0; }
.kpi:hover { background: var(--ds-panel); }
.projeto-card, .obra-card {
    position: relative; overflow: hidden; background: var(--ds-surface);
    border-color: var(--ds-line);
}
.chip {
    background: var(--ds-surface); border-color: var(--ds-line-dash);
    color: var(--ds-text-700); box-shadow: none;
}
.chip:hover { background: var(--ds-panel); border-color: var(--ds-blue-light); }
.chip.is-active { background: var(--ds-ink); border-color: var(--ds-ink); color: #fff; }
.ds-badge--info { background: var(--ds-blue-50); border-color: var(--ds-blue-100); color: var(--ds-blue-dark); }

.form-card input, .form-card select, .form-card textarea,
.form-block input, .form-block select, .form-block textarea,
.inline-add, .inline-add input, .inline-add select,
.briefing-complemento textarea, .contrato-corpo, .diag-opcao, .briefing-opcao {
    background: var(--ds-surface); border-color: var(--ds-line-dash); box-shadow: none;
}

/* Texto e controles sobre o vidro escuro do acesso público. */
.auth-card { overflow: hidden; color: #fff; }
.auth-card .auth-header h2, .auth-card .aceite-doc-nome { color: #fff; }
.auth-card .auth-header p, .auth-card .auth-visitor p,
.auth-card .auth-legal, .auth-card .auth-disclaimer,
.auth-card .auth-field > span { color: rgba(255, 255, 255, 0.88); }
.auth-card .auth-legal a { color: #7fe0bd; }
.auth-card .auth-error { color: #ffb4a8; }
.auth-card .auth-visitor { border-top-color: rgba(255, 255, 255, 0.28); }
.auth-card .auth-field input { color: #fff; }
.auth-card .auth-field input::placeholder { color: rgba(255, 255, 255, 0.6); }
.auth-card .ds-btn:not(.ds-btn--solid),
.auth-card .ds-btn:not(.ds-btn--solid):hover { color: #fff; }

.dash-section--comercial { --sec: #1d4d78; }
.dash-section--producao { --sec: #12513e; }
.dash-section--gestao { --sec: #6d460a; }

@media (prefers-reduced-transparency: reduce) {
    .app-shell::before { display: none; }
    .app-shell { background: var(--ds-bg); }
    .app-side, .auth-card { -webkit-backdrop-filter: none; backdrop-filter: none; }
    .auth-card { background: rgba(16, 22, 20, 0.94); }
}
@media (max-width: 62rem) {
    .app-main { border-left: 0; box-shadow: none; }
}

/* BARRAS DE ROLAGEM — um fio, não um trilho */
* { scrollbar-width: thin; scrollbar-color: rgba(60, 78, 72, 0.32) transparent; }
::-webkit-scrollbar { width: 9px; height: 9px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb {
    background: rgba(60, 78, 72, 0.28);
    border-radius: 99px;
    border: 2px solid transparent;
    background-clip: content-box;
}
::-webkit-scrollbar-thumb:hover { background: rgba(60, 78, 72, 0.5); background-clip: content-box; }
::-webkit-scrollbar-corner { background: transparent; }

/* A faixa de contexto: de onde esta tela foi aberta. */
.contexto-projeto {
    display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.5rem 0.75rem;
    margin: 0 0 1.5rem; padding: 0.65rem 0 0.75rem;
    border-top: 1px solid var(--ds-line); border-bottom: 1px solid var(--ds-line);
}
.contexto-projeto .ds-kicker { margin: 0; }
.contexto-projeto a { font-weight: 600; color: var(--ds-blue-dark); }
.contexto-cliente { color: var(--ds-text-500); font-size: 0.85rem; }

/* FRENTES — o painel mostra trabalho, não menu */
.dash-frentes { margin-top: 2.5rem; }

.frente-lista { list-style: none; margin: 0; padding: 0; }
.frente {
    display: grid;
    align-items: center; gap: 1.5rem;
    padding: 0.95rem 0; border-top: 1px solid var(--ds-line);
}
.frente:last-child { border-bottom: 1px solid var(--ds-line); }
.frente-id { display: flex; flex-direction: column; gap: 0.15rem; min-width: 0; }
.frente-nome {
    font-weight: 600; color: var(--ds-text-900); text-decoration: none;
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.frente-nome:hover { color: var(--ds-blue-dark); text-decoration: underline; }
.frente-cliente {
    font-size: 0.8rem; color: var(--ds-text-500);
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.frente-avanco { display: flex; flex-direction: column; gap: 0.35rem; }
.frente-conta { font-family: var(--arq-font-mono); font-size: 0.72rem; color: var(--ds-text-500); }
.frente-cta { white-space: nowrap; }
.frente-pronto {
    font-family: var(--arq-font-mono); font-size: 0.75rem;
    color: var(--ds-blue-dark); white-space: nowrap;
}
.frente-vazio { color: var(--ds-text-500); margin: 0; }

@media (max-width: 52rem) {
    .frente { grid-template-columns: 1fr; gap: 0.7rem; }
    .frente-cta { justify-self: start; }

}

/* AJUSTE DE LEITURA, VOLTA DO VIDRO NA LATERAL E LOGIN MAIS CALMO */

/* --- Largura de leitura ------------------------------------------ */
.app-main { max-width: 74rem; padding: 2.4rem 3rem 5rem; }
.page--leitura { max-width: 58rem; }
.page--narrow { max-width: 38rem; }
.page-sub, .secao-sub { max-width: 46rem; }

/* --- O caminho de volta, sempre no mesmo canto -------------------- */
.voltar {
    align-self: flex-start;
    display: inline-flex; align-items: center; gap: 0.45rem;
    margin-bottom: -1.2rem;
    padding: 0.32rem 0.7rem 0.32rem 0.5rem;
    border: 1px solid transparent; border-radius: 0.5rem;
    font-size: 0.84rem; color: var(--ds-text-500); text-decoration: none;
    transition: background var(--arq-fast) ease, color var(--arq-fast) ease,
                border-color var(--arq-fast) ease;
}
.voltar:hover {
    background: var(--ds-surface); border-color: var(--ds-line);
    color: var(--ds-blue-dark);
}
.voltar span { font-size: 1rem; line-height: 1; }

/* --- A lateral é vidro de novo ----------------------------------- */
.app-side .nav-link {
    margin-bottom: 0.14rem;
}

/* Os rótulos de grupo também precisam de chão: medidos sobre o vidro puro */
.nav-label {
    border-radius: 0.4rem;
    font-weight: 700;
}
.app-side-head, .app-side-foot { position: relative; }
.app-side-foot {
    border-top-color: rgba(255, 255, 255, 0.7);
}
.app-brand-word, .app-empresa-info strong {
    text-shadow: 0 1px 2px rgba(255, 255, 255, 0.85);
}
.app-brand-logo { width: 2rem; height: 2rem; object-fit: contain; flex-shrink: 0; }

/* --- Foco discreto ----------------------------------------------- */
.ds-root :focus-visible, a:focus-visible, button:focus-visible,
input:focus-visible, select:focus-visible, textarea:focus-visible,
.ds-btn:focus-visible {
    outline: 2px solid var(--ds-blue-dark); outline-offset: 1px;
}
.ds-btn--solid:focus-visible { outline-offset: 2px;
}
.auth-card .ds-btn--solid:focus-visible { outline-offset: 2px;
}
.form-card input:focus, .form-card select:focus, .form-card textarea:focus,
.form-block input:focus, .form-block select:focus, .form-block textarea:focus {
    box-shadow: none; border-color: var(--ds-blue-light);
    outline: 2px solid var(--ds-blue-light); outline-offset: -2px;
}
.auth-hero .ds-kicker {
    color: #7fe0bd; text-shadow: 0 1px 6px rgba(0, 0, 0, 0.75);
}
.auth-brand-word { text-shadow: 0 1px 8px rgba(0, 0, 0, 0.7); }

/* O cartão: mais vidro, menos leite. Desfoque curto para a foto ainda */
/* O véu é ESCURO, não branco. Vidro branco sobre concreto claro dá cinza */
.auth-card {
    -webkit-backdrop-filter: blur(12px) saturate(160%);
    backdrop-filter: blur(12px) saturate(160%);
}
/* Sem faixa e sem brilho de canto: o cartão reflete o que está atrás, */
.auth-card::after { display: none; }
.auth-card .auth-field input {
    background: rgba(255, 255, 255, 0.12);
    border-color: rgba(255, 255, 255, 0.32);
    box-shadow: none;
}
.auth-card .auth-field input:focus {
    background: rgba(255, 255, 255, 0.2); border-color: #7fe0bd;
    outline: 2px solid #7fe0bd; outline-offset: -2px; box-shadow: none;
}
.auth-card .ds-btn:not(.ds-btn--solid) {
    background: rgba(255, 255, 255, 0.14); border-color: rgba(255, 255, 255, 0.34);
    box-shadow: none;
}
.auth-card .ds-btn:not(.ds-btn--solid):hover { background: rgba(255, 255, 255, 0.24); }
.auth-card .ds-btn--solid {
    background: linear-gradient(160deg, rgba(38, 148, 114, 0.92), rgba(16, 76, 58, 0.94));
    border-color: rgba(255, 255, 255, 0.24);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.28), 0 6px 18px rgba(0, 0, 0, 0.3);
}
.auth-card .ds-btn--solid:hover {
    background: linear-gradient(160deg, rgba(46, 166, 130, 0.96), rgba(20, 88, 68, 0.96));
}

/* FORMULÁRIOS QUE NÃO ASSUSTAM */
.form-passo { border: 0; padding: 0; margin: 0 0 2rem; }
.form-passo[hidden] { display: none; }
.form-passo-titulo {
    display: flex; align-items: center; gap: 0.6rem;
    padding: 0; margin-bottom: 1rem;
    font-family: var(--ds-font-display); font-variation-settings: "wdth" 108, "wght" 600;
    font-size: 1.05rem; color: var(--ds-text-900);
}
.form-passo-num {
    width: 1.6rem; height: 1.6rem; border-radius: 50%; flex-shrink: 0;
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 0.78rem; font-weight: 600;
    background: var(--ds-blue); color: #fff;
}
.form-dupla { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 1rem; }
.form-dupla > p { margin: 0 0 1rem; }
@media (max-width: 40rem) { .form-dupla { grid-template-columns: 1fr; } }

/* Uma escolha que muda o rumo do trabalho merece linha própria e */
.form-marcar {
    display: flex; align-items: flex-start; gap: 0.7rem;
    padding: 0.85rem 1rem; margin: 0 0 1.25rem;
    border: 1px solid var(--ds-line); border-radius: 0.6rem;
    background: var(--ds-panel); cursor: pointer;
}
.form-marcar:hover { border-color: var(--ds-blue-light); }
.form-marcar input { margin-top: 0.2rem; flex-shrink: 0; }
.form-marcar span { display: flex; flex-direction: column; gap: 0.15rem; }
.form-marcar strong { font-weight: 500; font-size: 0.92rem; }
.form-marcar small { color: var(--ds-text-500); font-size: 0.8rem; }
.form-marcar--simples { padding: 0.5rem 0; border: 0; background: none; margin-bottom: 0; }

/* O opcional fica fechado até alguém querer. */
.abrir-campo { margin: 0.5rem 0 0; }
.abrir-campo > summary {
    display: inline-flex; align-items: center; gap: 0.45rem;
    padding: 0.42rem 0.85rem; width: fit-content;
    border: 1px solid var(--ds-line-dash); border-radius: 0.5rem;
    background: var(--ds-surface); cursor: pointer;
    font-size: 0.85rem; color: var(--ds-text-700);
    list-style: none;
    transition: border-color var(--arq-fast) ease, color var(--arq-fast) ease;
}
.abrir-campo > summary::-webkit-details-marker { display: none; }
.abrir-campo > summary::before { content: "+"; font-family: var(--arq-font-mono); }
.abrir-campo[open] > summary::before { content: "−"; }
.abrir-campo > summary:hover { border-color: var(--ds-blue-light); color: var(--ds-blue-dark); }
.abrir-campo[open] > summary { margin-bottom: 1rem; }

/* Ficha de conferência do cliente já cadastrado: leitura, não edição. */
.cliente-ficha {
    padding: 1rem 1.15rem; margin: 0 0 1.25rem;
    border: 1px solid var(--ds-line); border-radius: 0.6rem; background: var(--ds-panel);
}
.cliente-ficha[hidden], .cliente-novo[hidden] { display: none; }
.cliente-ficha-dados { display: flex; flex-wrap: wrap; gap: 0.4rem 2.5rem; margin: 0.6rem 0 0.75rem; }
.cliente-ficha-dados > div { display: flex; flex-direction: column; gap: 0.1rem; }
.cliente-ficha-dados dt {
    font-family: var(--arq-font-mono); font-size: 0.68rem;
    text-transform: uppercase; letter-spacing: 0.06em; color: var(--ds-text-500);
}
.cliente-ficha-dados dd { margin: 0; font-size: 0.92rem; }
.cliente-ficha-editar { font-size: 0.82rem; color: var(--ds-blue-dark); }

/* ELABORAÇÃO — disciplinas e etapas */
.secao { display: flex; flex-direction: column; gap: 0.35rem; }
.secao-titulo { margin: 0; font-size: 1.35rem; }
.secao-sub { margin: 0 0 1.25rem; color: var(--ds-text-500); font-size: 0.9rem; }
.bloco-titulo {
    margin: 0 0 0.75rem;
    font-family: var(--arq-font-mono); font-size: 0.72rem;
    text-transform: uppercase; letter-spacing: 0.09em; color: var(--ds-text-500);
    font-weight: 600;
}
.disciplinas { margin-bottom: 2.25rem; }

.disciplina {
    display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr) 8rem auto;
    align-items: center; gap: 1rem;
    padding: 0.8rem 0; border-top: 1px solid var(--ds-line);
}
.disciplina:last-child { border-bottom: 1px solid var(--ds-line); }

@media (max-width: 52rem) {
    .disciplina { grid-template-columns: 1fr; gap: 0.4rem; }

}

/* IDENTIDADE DO ESCRITÓRIO */
.identidade-form { display: flex; flex-direction: column; gap: var(--arq-gap); }
.identidade-basico-campos {
    display: grid; grid-template-columns: minmax(18rem, 1fr) 14rem;
    align-items: end; gap: 1.25rem;
}
.identidade-basico-campos > p, .identidade-controle > p {
    display: flex; flex-direction: column; gap: 0.35rem; margin: 0;
}
.identidade-basico label, .identidade-controle label {
    font-family: var(--arq-font-mono); font-size: 0.68rem; font-weight: 500;
    text-transform: uppercase; letter-spacing: 0.1em; color: var(--ds-text-500);
}
.identidade-basico input[type="text"], .identidade-controle input[type="file"] {
    width: 100%; box-sizing: border-box; min-height: 2.7rem;
    padding: 0.58rem 0.75rem; border: 1px solid var(--ds-line-dash);
    border-radius: 0.5rem; background: var(--ds-surface); color: var(--ds-text-900); font: inherit;
}
.identidade-cor-controle {
    display: flex; align-items: center; gap: 0.7rem; min-height: 2.7rem;
    padding: 0.35rem 0.7rem; box-sizing: border-box;
    border: 1px solid var(--ds-line-dash); border-radius: 0.5rem; background: var(--ds-surface);
}
.identidade-cor-controle input[type="color"] {
    width: 2.35rem; height: 1.75rem; padding: 0; border: 0; border-radius: 0.3rem; background: none;
}
.identidade-cor-controle span { font-size: 0.82rem; color: var(--ds-text-500); }
.identidade-assets { display: grid; grid-template-columns: 0.8fr 1.2fr; gap: 3rem; align-items: start; }
.identidade-asset header { min-height: 5.1rem; }
.identidade-previa {
    display: flex; align-items: center; justify-content: center;
    border: 1px solid var(--ds-line-dash); border-radius: 0.6rem;
    background: var(--ds-panel); overflow: hidden;
}
.identidade-previa--logo { aspect-ratio: 16 / 8; padding: 1.4rem; box-sizing: border-box; }
.identidade-previa--fundo { aspect-ratio: 16 / 8; }
.identidade-previa img { max-width: 100%; max-height: 100%; object-fit: cover; }
.identidade-previa--logo img { object-fit: contain; }
.identidade-vazio {
    font-family: var(--arq-font-mono); font-size: 0.72rem; color: var(--ds-text-400);
}
.identidade-controle { display: flex; flex-direction: column; gap: 0.6rem; padding-top: 0.85rem; }
.identidade-controle input[type="file"] { padding: 0.35rem; }
.identidade-controle input[type="file"]::file-selector-button {
    margin-right: 0.7rem; padding: 0.42rem 0.65rem; border: 0;
    border-radius: 0.35rem; background: var(--ds-panel); color: var(--ds-text-700); cursor: pointer;
}
.identidade-actions {
    display: flex; justify-content: flex-end; padding-top: 1.25rem; border-top: 1px solid var(--ds-line);
}
@media (max-width: 46rem) {
    .identidade-basico-campos, .identidade-assets { grid-template-columns: 1fr; gap: 1.5rem; }
    .identidade-asset header { min-height: 0; }
    .identidade-previa--logo, .identidade-previa--fundo { aspect-ratio: 16 / 7; }
    .identidade-actions .ds-btn { width: 100%; }
}

/* O PÁTIO ATRÁS DA FOLHA */
.app-shell::before { filter: blur(2px) saturate(0.92); transform: scale(1.03); }
.app-shell::after {
    content: ""; display: block; position: fixed; inset: 0; z-index: -1;
    pointer-events: none;
    /* Escurece o suficiente para a folha branca virar figura, e de leve */
    background: linear-gradient(165deg, rgba(16, 26, 23, 0.3), rgba(16, 26, 23, 0.46));
}

/* --- Lateral: placa sem contorno --------------------------------- */
.app-side .nav-link {
    border-color: transparent;
}
.app-side .nav-link:hover { border-color: transparent; }
.app-side .nav-link.is-active { border-color: var(--ds-blue-light);
}
.app-side { border-right-color: rgba(255, 255, 255, 0.4); }
/* A caixa de escolha é um bloco de leitura, não um rótulo de campo: precisa */
.form-card label.form-marcar, label.form-marcar {
    font-family: var(--ds-font-sans); font-size: 0.92rem; font-weight: 400;
    text-transform: none; letter-spacing: normal; color: var(--ds-text-900);
    flex-direction: row;
}
.form-card label.form-marcar strong, label.form-marcar strong {
    font-family: var(--ds-font-sans); font-size: 0.92rem; font-weight: 500;
    text-transform: none; letter-spacing: normal; color: var(--ds-text-900);
}
.form-card label.form-marcar small, label.form-marcar small {
    font-family: var(--ds-font-sans); font-size: 0.8rem; font-weight: 400;
    text-transform: none; letter-spacing: normal; color: var(--ds-text-500);
}
.form-card label.form-marcar input[type="checkbox"] {
    width: auto; flex: 0 0 auto; margin-top: 0.2rem;
}
/* Idem para a ficha de conferência do cliente. */
.form-card .cliente-ficha-dados dd { font-family: var(--ds-font-sans); }
.form-card .cliente-ficha-editar {
    font-family: var(--ds-font-sans); font-size: 0.82rem;
    text-transform: none; letter-spacing: normal;
}

/* SEM CONTORNO BRANCO */
.kpi-row,
.projeto-card,
.obra-card,
.alerta-card,
.ds-card{
    box-shadow: none;
    border-color: var(--ds-line);
}
.kpi-row { border: 1px solid var(--ds-line); }
.projeto-card, .obra-card {
    border: 1px solid var(--ds-line);
    box-shadow: none;
}
.projeto-card:hover, .obra-card:hover {
    border-color: var(--ds-line-dash);
    box-shadow: 0 2px 10px rgba(20, 24, 26, 0.07);
    transform: none;
}
.ds-btn:not(.ds-btn--solid) {
    border: 1px solid var(--ds-line-dash);
    box-shadow: none;
}
.ds-btn:not(.ds-btn--solid):hover {
    background: var(--ds-panel); border-color: var(--ds-text-400);
    box-shadow: none; color: var(--ds-text-900);
}
.ds-btn--solid {
    background: var(--ds-blue); border-color: var(--ds-blue);
    box-shadow: none;
}
.ds-btn--solid:hover { background: var(--ds-blue-dark); border-color: var(--ds-blue-dark); }
.chip { border: 1px solid var(--ds-line-dash); box-shadow: none; }
.form-card input,
.form-card select,
.form-card textarea,
.form-block input,
.form-block select,
.form-block textarea,
.inline-add,
.inline-add input,
.inline-add select,
.briefing-complemento textarea,
.contrato-corpo,
.diag-opcao,
.briefing-opcao{
    box-shadow: none; border: 1px solid var(--ds-line-dash);
}
.dash-hero, .page-head--foto { box-shadow: none; }
.app-main { box-shadow: 0 0 0 1px rgba(18, 32, 28, 0.07); }

/* FASES */
.fase-lista { list-style: none; margin: 0 0 1.25rem; padding: 0; }
.fase-linha { border-top: 1px solid var(--ds-line); }
.fase-linha:last-child { border-bottom: 1px solid var(--ds-line); }
.fase-linha-corpo {
    display: grid; grid-template-columns: 2rem minmax(0, 1fr) auto;
    align-items: center; gap: 1rem;
    padding: 0.85rem 0.6rem; text-decoration: none; color: inherit;
    transition: background var(--arq-fast) ease;
}
.fase-linha-corpo:hover { background: var(--ds-panel); }
.fase-num {
    width: 1.75rem; height: 1.75rem; border-radius: 50%;
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 0.78rem; font-weight: 600;
    background: var(--ds-panel); color: var(--ds-text-500);
    border: 1px solid var(--ds-line-dash);
}
.fase-id { display: flex; flex-direction: column; gap: 0.1rem; min-width: 0; }
.fase-id strong { font-weight: 500; }
.fase-resumo {
    font-size: 0.82rem; color: var(--ds-text-500);
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.fase-situacao { display: flex; flex-direction: column; align-items: flex-end; gap: 0.2rem; }
.fase-num-arquivos { font-family: var(--arq-font-mono); font-size: 0.7rem; color: var(--ds-text-500); }

.fase-selo { padding: 0.18rem 0.5rem; border-radius: 0.35rem;
    font-family: var(--arq-font-mono); font-size: 0.68rem;
    text-transform: uppercase; letter-spacing: 0.07em;
    background: var(--ds-panel); color: var(--ds-text-500);
    border: 1px solid var(--ds-line);
}
.fase-selo--em_elaboracao { background: var(--ds-blue-50); color: var(--ds-blue-dark); border-color: var(--ds-blue-100); }
.fase-selo--aguardando_cliente { background: #f6efe0; color: #6d460a; border-color: #e6d3ab; }
.fase-selo--ajustes { background: #f7e6e2; color: #8e2a1c; border-color: #e7c2b9; }
.fase-selo--aprovada { background: var(--ds-blue); color: #fff; border-color: var(--ds-blue); }

.fase-linha--aprovada .fase-num { background: var(--ds-blue); border-color: var(--ds-blue); color: #fff; }
.fase-linha--em_elaboracao .fase-num,
.fase-linha--ajustes .fase-num { background: var(--ds-blue-50); border-color: var(--ds-blue-light); color: var(--ds-blue-dark); }
.fase-linha--em_elaboracao .fase-id strong,
.fase-linha--ajustes .fase-id strong { font-weight: 600; color: var(--ds-blue-dark); }
.fase-linha.is-complementar .fase-num { border-style: dashed; }

/* --- A área de trabalho da fase ---------------------------------- */
/* Cartão contido, e não faixa larga: com o selo numa ponta e o botão na */
.fase-estado {
    display: flex; flex-direction: column; align-items: flex-start; gap: 0.7rem;
    max-width: 34rem;
    padding: 1rem 1.15rem 1.1rem; margin-bottom: 2rem;
    border: 1px solid var(--ds-line); border-radius: 0.6rem; background: var(--ds-panel);
}
.fase-estado-topo { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem 0.85rem; }
.fase-estado--aguardando_cliente { background: #faf5ea; border-color: #e6d3ab; }
.fase-estado--ajustes { background: #fbf0ed; border-color: #e7c2b9; }
.fase-estado--aprovada { background: var(--ds-blue-50); border-color: var(--ds-blue-100); }
.fase-estado--rascunho { background: #f4f6f7; border-color: #d9e0e4; }
.fase-estado--enviado { background: #faf5ea; border-color: #e6d3ab; }
.fase-estado--ativo { background: var(--ds-blue-50); border-color: var(--ds-blue-100); }
.fase-prazo, .fase-quem { font-family: var(--arq-font-mono); font-size: 0.74rem; color: var(--ds-text-500); }
.fase-prazo.is-atrasada { color: var(--ds-danger); font-weight: 600; }
.fase-aviso { margin: 0; font-size: 0.88rem; line-height: 1.5; color: var(--ds-text-700); }

.fase-atalhos { display: flex; gap: 0.6rem; flex-wrap: wrap; }

.fase-resposta {
    padding: 1.15rem 1.25rem; margin-bottom: 2rem;
    border: 1px solid var(--ds-line-dash); border-radius: 0.6rem; background: var(--ds-surface);
}
.fase-resposta .bloco-titulo { margin-top: 0; }
.fase-resposta-botoes { display: flex; gap: 0.6rem; margin-top: 0.85rem; flex-wrap: wrap; }

/* --- Arquivos ------------------------------------------------------ */
.galeria {
    list-style: none; margin: 0 0 1.5rem; padding: 0;
    display: grid; grid-template-columns: repeat(auto-fill, minmax(9rem, 1fr)); gap: 0.85rem;
}
.galeria li { display: flex; flex-direction: column; gap: 0.3rem; min-width: 0; }
.galeria a {
    display: block; aspect-ratio: 4 / 3; overflow: hidden;
    border: 1px solid var(--ds-line); border-radius: 0.5rem; background: var(--ds-panel);
}
.galeria img { width: 100%; height: 100%; object-fit: cover; display: block; }
.galeria span {
    font-size: 0.76rem; color: var(--ds-text-500);
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}

.arquivo-lista { list-style: none; margin: 0 0 1rem; padding: 0; }
.arquivo {
    display: grid; grid-template-columns: 3rem minmax(0, 1fr) auto;
    align-items: center; gap: 1rem;
    padding: 0.7rem 0; border-top: 1px solid var(--ds-line);
}
.arquivo:last-child { border-bottom: 1px solid var(--ds-line); }
.arquivo-tipo {
    font-family: var(--arq-font-mono); font-size: 0.66rem;
    text-transform: uppercase; letter-spacing: 0.05em;
    color: var(--ds-text-500); text-align: center;
    padding: 0.22rem 0.3rem; border: 1px solid var(--ds-line-dash); border-radius: 0.3rem;
}
.arquivo-id { display: flex; flex-direction: column; gap: 0.1rem; min-width: 0; }
.arquivo-id a { font-weight: 500; color: var(--ds-text-900); text-decoration: none; }
.arquivo-id a:hover { color: var(--ds-blue-dark); text-decoration: underline; }
.arquivo-meta { font-size: 0.76rem; color: var(--ds-text-500); }
.arquivo-acoes { display: flex; align-items: center; gap: 0.85rem; }
.arquivo-acoes form,
.arquivo-principal > form { margin: 0; }
.arquivo-favorito { color: var(--ds-text-400); }
.arquivo-favorito.is-active { color: #b7791f; }
.arquivo-favorito.is-active:hover,
.arquivo-favorito.is-active:focus-visible {
    color: #8a570c;
    background: color-mix(in srgb, #e7ad3c 16%, var(--ds-surface));
}
.arquivo-principal-lista { margin-bottom: 0; }
.arquivo-principal .arquivo-meta {
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}

/* --- Histórico ---------------------------------------------------- */

.registro {
    display: grid; grid-template-columns: 1rem minmax(0, 1fr); gap: 0.85rem;
    padding: 0.7rem 0; border-top: 1px solid var(--ds-line);
}
.registro:last-child { border-bottom: 1px solid var(--ds-line); }

@media (max-width: 46rem) {
    .fase-linha-corpo { grid-template-columns: 2rem minmax(0, 1fr); }
    .fase-situacao { grid-column: 2; align-items: flex-start; }
    .arquivo { grid-template-columns: 3rem minmax(0, 1fr); }
    .arquivo-acoes { grid-column: 2; }
    .arquivo-principal { grid-template-columns: 3rem minmax(0, 1fr) auto; }
}

/* O programa de necessidades repetido dentro da fase que o consome. */

.acoes-linha { display: flex; align-items: center; gap: 0.85rem; white-space: nowrap; }

/* Rótulo que existe para o leitor de tela e não para o olho. */
.ds-oculto {
    position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
    overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0;
}

/* Lista de modelos do escritório. */
.modelo-lista { list-style: none; margin: 0 0 1rem; padding: 0; }
.modelo {
    display: flex; align-items: center; justify-content: space-between; gap: 1rem;
    padding: 0.7rem 0; border-top: 1px solid var(--ds-line);
}
.modelo:last-child { border-bottom: 1px solid var(--ds-line); }
.modelo-id { display: flex; flex-direction: column; gap: 0.1rem; min-width: 0; }
.modelo-id a { font-weight: 500; color: var(--ds-text-900); text-decoration: none; }
.modelo-id a:hover { color: var(--ds-blue-dark); text-decoration: underline; }
.modelo-meta {
    font-size: 0.8rem; color: var(--ds-text-500);
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.modelo-inativo {
    font-family: var(--arq-font-mono); font-size: 0.68rem;
    text-transform: uppercase; color: var(--ds-text-500);
}
.modelos-grade { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 3rem; align-items: start; }
.modelos-tipo { min-width: 0; }
.modelo-lista--gestao { margin: 0; }
.modelo-lista--gestao .modelo { display: grid; grid-template-columns: 2rem minmax(0, 1fr) auto; }
.modelo-icone {
    display: inline-flex; align-items: center; justify-content: center;
    width: 2rem; height: 2rem; border-radius: 0.45rem;
    background: var(--ds-panel); color: var(--ds-blue-dark);
}
.modelo-icone svg { width: 1rem; height: 1rem; }
.modelo-acoes { display: flex; align-items: center; gap: 0.25rem; }
.modelo-acoes form { margin: 0; }
.modelo-origem, .modelo-padrao {
    align-self: flex-start; width: fit-content; margin-top: 0.15rem;
    font-family: var(--arq-font-mono); font-size: 0.6rem; text-transform: uppercase;
    letter-spacing: 0.07em; color: var(--ds-blue-dark);
}
.modelo-padrao { margin: 0 0.25rem 0 0; }
.modelo-configuracao { padding-bottom: 2rem; border-bottom: 1px solid var(--ds-line); }
.modelo-dados-form {
    display: grid; grid-template-columns: minmax(14rem, 1fr) minmax(12rem, 0.65fr) minmax(16rem, 1.3fr) auto auto auto;
    align-items: end; gap: 1rem;
}
.modelo-dados-form > p { display: flex; flex-direction: column; gap: 0.35rem; margin: 0; }
.modelo-dados-form label:not(.form-marcar) {
    font-family: var(--arq-font-mono); font-size: 0.68rem; font-weight: 500;
    text-transform: uppercase; letter-spacing: 0.1em; color: var(--ds-text-500);
}
.modelo-dados-form input:not([type="checkbox"]), .modelo-dados-form select, .modelo-dados-form textarea {
    width: 100%; min-height: 2.65rem; box-sizing: border-box; padding: 0.6rem 0.75rem;
    border: 1px solid var(--ds-line-dash); border-radius: 0.5rem;
    background: var(--ds-surface); color: var(--ds-text-900); font: inherit;
}
.modelo-dados-form textarea { height: 2.65rem; min-height: 2.65rem; resize: vertical; }
.modelo-dados-form--contrato { grid-template-columns: minmax(16rem, 0.8fr) minmax(22rem, 1.5fr) auto auto; }
.modelo-blocos { display: flex; flex-direction: column; gap: 1.75rem; }
.modelo-bloco .bloco-titulo { margin-bottom: 0.35rem; }
.modelo-pergunta-lista { list-style: none; margin: 0; padding: 0; }
.modelo-pergunta {
    display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 1rem;
    padding: 0.75rem 0; border-top: 1px solid var(--ds-line);
}
.modelo-pergunta:last-child { border-bottom: 1px solid var(--ds-line); }
.modelo-pergunta-id { display: flex; flex-direction: column; min-width: 0; gap: 0.12rem; }
.modelo-pergunta-id strong { font-size: 0.9rem; }
.modelo-pergunta .briefing-opcoes-preview { line-height: 1.4; }
.modelo-contrato-form { display: flex; flex-direction: column; gap: var(--arq-gap); }
.modelo-editor-grid { display: grid; grid-template-columns: minmax(0, 1fr) 18rem; gap: 3rem; align-items: start; }
.modelo-corpo textarea {
    width: 100%; min-height: 38rem; box-sizing: border-box; padding: 1rem 1.1rem;
    border: 1px solid var(--ds-line-dash); border-radius: 0.55rem;
    background: var(--ds-surface); color: var(--ds-text-900); font: inherit; line-height: 1.65; resize: vertical;
}
.modelo-marcadores { position: sticky; top: 1.5rem; }
.modelo-marcadores dl { margin: 0; }
.modelo-marcadores dl > div { padding: 0.65rem 0; border-top: 1px solid var(--ds-line); }
.modelo-marcadores dl > div:last-child { border-bottom: 1px solid var(--ds-line); }
.modelo-marcadores dt { font-size: 0.72rem; color: var(--ds-blue-dark); }
.modelo-marcadores dd { margin: 0.15rem 0 0; font-size: 0.78rem; color: var(--ds-text-500); }
.modelo-form-actions { padding-top: 1.25rem; border-top: 1px solid var(--ds-line); }
@media (max-width: 70rem) {
    .modelos-grade { grid-template-columns: 1fr; }
    .modelo-dados-form, .modelo-dados-form--contrato { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .modelo-editor-grid { grid-template-columns: minmax(0, 1fr) 15rem; gap: 2rem; }
}
@media (max-width: 46rem) {
    .modelo-meta { white-space: normal; }
    .modelo-dados-form, .modelo-dados-form--contrato, .modelo-editor-grid { grid-template-columns: 1fr; }
    .modelo-dados-form .ds-btn { width: 100%; }
    .modelo-marcadores { position: static; }
    .modelo-corpo textarea { min-height: 32rem; }
}

/* VIDRO SEM MOLDURA */

/* --- Login ------------------------------------------------------- */
.auth-card {
    border: 0;
    box-shadow: 0 24px 60px rgba(0, 0, 0, 0.34);
    background: linear-gradient(150deg,
        rgba(10, 17, 16, 0.44), rgba(10, 17, 16, 0.56) 52%, rgba(10, 17, 16, 0.48));
}
/* A foto fecha bem mais do lado do texto: era ali que a leitura */
.tela-login .auth-shell::before {
    background:
        linear-gradient(100deg, rgba(4, 8, 7, 0.94) 0%, rgba(4, 8, 7, 0.86) 26%,
            rgba(4, 8, 7, 0.46) 52%, rgba(4, 8, 7, 0.42) 100%),
        linear-gradient(to top, rgba(4, 8, 7, 0.6), transparent 44%);
}
.auth-hero h1 { text-shadow: none; }
.auth-hero .ds-muted { color: rgba(255, 255, 255, 0.82); }

/* --- Barra lateral: mesmo princípio ------------------------------- */
.app-side {
    border-right: 0;
}
.app-side .nav-link {
    background: transparent; border: 0; box-shadow: none;
    color: rgba(255, 255, 255, 0.88); font-weight: 450;
}
.app-side .nav-link svg { color: rgba(255, 255, 255, 0.62); }
.app-side .nav-link:hover {
    background: rgba(255, 255, 255, 0.14); border: 0; color: #fff;
}
.app-side .nav-link:hover svg { color: rgba(255, 255, 255, 0.9); }
.app-side .nav-link.is-active {
    background: rgba(255, 255, 255, 0.2); border: 0; box-shadow: none;
    color: #fff; font-weight: 600;
}
.app-side .nav-link.is-active svg { color: #7fe0bd; }
.app-side .nav-link.is-active::before { background: #7fe0bd; }

.nav-label {
    background: none; padding: 0.35rem 0.6rem 0.25rem; width: auto;
    color: rgba(255, 255, 255, 0.68); text-shadow: none;
}
.nav-group--hoje .nav-label,
.nav-group--comercial .nav-label,
.nav-group--producao .nav-label,
.nav-group--gestao .nav-label,
.nav-group--escritorio .nav-label { color: rgba(255, 255, 255, 0.68); }

.app-brand-word { color: #fff; text-shadow: none; }
.app-brand-mark .mk-plate { fill: rgba(255, 255, 255, 0.14); }
.app-brand-mark .mk-a { stroke: #fff; }
.app-brand-mark .mk-cota { stroke: #7fe0bd; }
.app-side-foot {
    background: none; border-top: 1px solid rgba(255, 255, 255, 0.16);
}
.app-empresa-info strong { color: #fff; text-shadow: none; }
.app-empresa-info span, .app-sair, .pe-legal a { color: rgba(255, 255, 255, 0.72); }
.app-sair:hover { color: #ff9d8e; }
.pe-legal a:hover { color: #fff; }
.app-empresa-ico { color: #7fe0bd; }
.nav-badge { background: #c9503c; }
.app-side .ds-btn:not(.ds-btn--solid) {
    background: rgba(255, 255, 255, 0.14); border: 0; color: #fff;
}
.app-nav { scrollbar-color: rgba(255, 255, 255, 0.28) transparent; }

@media (max-width: 62rem) {
}

/* FOCO SEM QUADRADO PRETO */
.ds-btn--solid:focus-visible {
    outline: none;
    background: var(--ds-blue-dark);
    box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.75);
}
.ds-btn:not(.ds-btn--solid):focus-visible {
    outline: none;
    background: var(--ds-panel);
    border-color: var(--ds-blue-dark);
    box-shadow: inset 0 0 0 2px var(--ds-blue-dark);
}
.app-side .nav-link:focus-visible,
.app-side .ds-btn:focus-visible, .app-sair:focus-visible, .pe-legal a:focus-visible {
    outline: none; background: rgba(255, 255, 255, 0.26);
    box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.7);
}
.auth-card .ds-btn--solid:focus-visible {
    outline: none; background: #14513f;
    box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.85);
}
.auth-card .ds-btn:not(.ds-btn--solid):focus-visible {
    outline: none; background: rgba(255, 255, 255, 0.28);
    box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.85);
}
/* Links e campos seguem com traço, que ali não vira moldura de botão. */
a:focus-visible { outline: 2px solid var(--ds-blue-dark); outline-offset: 2px; }
.app-side a:focus-visible { outline: none; }
/* Escolha múltipla como lista de caixas, não como select de arrastar. */
.escolha-multipla { border: 0; padding: 0; margin: 0 0 1.25rem; }
.escolha-multipla > legend {
    padding: 0; margin-bottom: 0.3rem;
    font-family: var(--arq-font-mono); font-size: 0.68rem; font-weight: 500;
    text-transform: uppercase; letter-spacing: 0.12em; color: var(--ds-text-500);
}
.escolha-multipla .ht-hint { margin: 0 0 0.7rem; }
.escolha-multipla .caixas > div { display: grid; gap: 0.35rem; }

.escolha-multipla .caixas label {
    display: flex; align-items: center; gap: 0.6rem;
    padding: 0.55rem 0.85rem; border-radius: 0.5rem;
    border: 1px solid var(--ds-line); background: var(--ds-surface);
    font-family: var(--ds-font-sans); font-size: 0.9rem; font-weight: 400;
    text-transform: none; letter-spacing: normal; color: var(--ds-text-900);
    cursor: pointer;
    transition: border-color var(--arq-fast) ease, background var(--arq-fast) ease;
}
.escolha-multipla .caixas label:hover { border-color: var(--ds-blue-light); background: var(--ds-panel); }
.escolha-multipla .caixas input { width: auto; flex: 0 0 auto; margin: 0; }
.escolha-multipla .caixas label:has(input:checked) { border-color: var(--ds-blue); background: var(--ds-blue-50); }
/* O campo de texto livre não é uma opção da lista: some o contorno de caixa. */
.complementar-livre { margin: 0.85rem 0 0.2rem; display: flex; flex-direction: column; gap: 0.35rem; }
@media (min-width: 34rem) {
    .escolha-multipla .caixas > div { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* AVISOS — card no canto, como no DS Stolben */
.ds-avisos {
    position: fixed; right: 1.25rem; bottom: 1.25rem; z-index: 60;
    display: flex; flex-direction: column-reverse; gap: 0.6rem;
    width: min(24rem, calc(100vw - 2.5rem));
    pointer-events: none;
}
.ds-aviso {
    pointer-events: auto;
    display: grid; gap: 0.85rem;
    border-radius: 0.65rem; overflow: hidden;
    animation: aviso-entra 320ms var(--arq-ease-out) both;
}
.ds-aviso p { margin: 0; padding: 0.05rem 0; font-size: 0.9rem; }
.ds-aviso--success .ds-aviso-marca { background: var(--ds-blue); }
.ds-aviso.is-saindo { animation: aviso-sai 260ms var(--arq-ease) both; }

@keyframes aviso-entra {
    from { opacity: 0; transform: translateY(0.8rem) scale(0.98); }
    to { opacity: 1; transform: none; }
}
@keyframes aviso-sai {
    from { opacity: 1; transform: none; }
    to { opacity: 0; transform: translateX(1rem); }
}
@media (prefers-reduced-motion: reduce) {
    .ds-aviso, .ds-aviso.is-saindo { animation: none; }
}
@media (max-width: 40rem) {
    .ds-avisos { right: 0.75rem; left: 0.75rem; bottom: 0.75rem; width: auto; }
}

/* AVISO EM VIDRO, COM ÍCONE */
.ds-aviso {
    grid-template-columns: auto minmax(0, 1fr) auto;
    padding: 0.9rem 0.9rem 0.9rem 0.95rem;
    align-items: center;
    background: rgba(22, 32, 29, 0.72);
    -webkit-backdrop-filter: blur(20px) saturate(150%);
    backdrop-filter: blur(20px) saturate(150%);
    border: 0;
    box-shadow: 0 18px 44px rgba(6, 12, 10, 0.42);
}
.ds-aviso p { color: rgba(255, 255, 255, 0.94); }
.ds-aviso-marca {
    align-self: center;
    display: inline-flex; align-items: center; justify-content: center;
    width: 1.7rem; height: 1.7rem; flex-shrink: 0;
    border-radius: 50%; background: var(--ds-blue); color: #fff;
}
.ds-aviso-marca svg { width: 0.9rem; height: 0.9rem; }
.ds-aviso--error .ds-aviso-marca { background: #c9503c; }
.ds-aviso--warning .ds-aviso-marca, .ds-aviso--info .ds-aviso-marca { background: #a8760e; }
.ds-aviso-fechar { color: rgba(255, 255, 255, 0.6); }
.ds-aviso-fechar:hover { color: #fff; background: rgba(255, 255, 255, 0.16); }
.ds-aviso-fechar:focus-visible {
    outline: none; color: #fff; box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.8);
}
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
    .ds-aviso { background: rgba(20, 29, 26, 0.96); }
}
@media (prefers-reduced-transparency: reduce) {
    .ds-aviso {
        background: rgba(20, 29, 26, 0.98);
        -webkit-backdrop-filter: none; backdrop-filter: none;
    }
}

/* MODAL DE CRIAÇÃO */
.ds-modal {
    width: min(34rem, calc(100vw - 2rem));
    padding: 1.6rem 1.6rem 1.75rem;
    border: 0; border-radius: 0.9rem;
    background: var(--ds-surface); color: var(--ds-text-900);
    box-shadow: 0 30px 70px rgba(15, 17, 21, 0.3);
}
.ds-modal--amplo { width: min(52rem, calc(100vw - 2rem)); }
.ds-modal-corpo { max-height: min(72vh, 46rem); overflow-y: auto; padding-right: 0.2rem; }
.cadastro-acoes { display: flex; align-items: center; justify-content: flex-end; gap: 0.35rem; white-space: nowrap; }
.cadastro-acoes form { margin: 0; }
.cadastro-rodape { display: flex; justify-content: flex-end; margin-top: -1.75rem; }
.ds-modal::backdrop {
    background: rgba(12, 20, 18, 0.5);
    -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px);
}
.ds-modal[open] { animation: modal-entra 220ms var(--arq-ease-out) both; }
@keyframes modal-entra {
    from { opacity: 0; transform: translateY(0.8rem) scale(0.98); }
    to { opacity: 1; transform: none; }
}
.ds-modal-fechar-form { position: absolute; top: 0.85rem; right: 0.9rem; margin: 0; }
.ds-modal-fechar { color: var(--ds-text-500); }
.ds-modal-titulo { margin: 0 2rem 0.25rem 0; font-size: 1.2rem; }
.ds-modal-sub { margin: 0 0 1.25rem; color: var(--ds-text-500); font-size: 0.88rem; }
.ds-modal-corpo .form-card { display: flex; flex-direction: column; }
.ds-modal-corpo .form-card--duas-colunas {
    display: grid; grid-template-columns: 1fr 1fr; gap: 0 1rem;
}
.ds-modal-corpo .form-card--duas-colunas .form-actions { grid-column: 1 / -1; }
.ds-modal-corpo .inline-add {
    display: flex; flex-direction: column; align-items: stretch;
    background: none; padding: 0; margin: 0; gap: 0.75rem;
}
.ds-modal-corpo .inline-add input,
.ds-modal-corpo .inline-add select { width: 100%; flex: none; }

/* O gatilho fica no cabeçalho da página, junto do título. */
.page-head--row .ds-btn--acao { flex-shrink: 0; }

@media (prefers-reduced-motion: reduce) {
    .ds-modal[open] { animation: none; }
}
@media (max-width: 40rem) {
    .ds-modal { width: calc(100vw - 1rem); padding: 1.25rem; }
    .ds-modal-corpo .form-card--duas-colunas { grid-template-columns: 1fr; }
    .ds-modal-corpo .form-card--duas-colunas .form-actions { grid-column: auto; }
}

/* CALENDÁRIO */
.cal-topo {
    display: flex; align-items: center; gap: 0.75rem;
    margin-bottom: 0.9rem;
}
.cal-mes { margin: 0; font-size: 1.15rem; flex: 1; }
.cal-passo { color: var(--ds-text-700); text-decoration: none; }
.cal-hoje {
    font-size: 0.82rem; color: var(--ds-blue-dark); text-decoration: none;
    padding: 0.3rem 0.6rem; border: 1px solid var(--ds-line-dash); border-radius: 0.45rem;
}
.cal-hoje:hover { background: var(--ds-panel); }

.cal { width: 100%; border-collapse: collapse; margin-bottom: 2.5rem; table-layout: fixed; }
.cal th {
    padding: 0.4rem 0.5rem; text-align: left;
    font-family: var(--arq-font-mono); font-size: 0.66rem; font-weight: 500;
    text-transform: uppercase; letter-spacing: 0.1em; color: var(--ds-text-500);
    border-bottom: 1px solid var(--ds-line-dash);
}
.cal-dia {
    vertical-align: top; height: 5.2rem;
    padding: 0.35rem 0.4rem 0.45rem;
    border: 1px solid var(--ds-line);
    background: var(--ds-surface);
}
.cal-dia.is-fds { background: var(--ds-panel); }
/* Dia de outro mês: quem o afasta é a falta de fundo e de moldura, não um */
.cal-dia.is-fora { background: transparent; border-color: transparent; }
.cal-num { font-family: var(--arq-font-mono); font-size: 0.74rem; color: var(--ds-text-500); }
.cal-dia.is-hoje { border-color: var(--ds-blue); box-shadow: inset 0 0 0 1px var(--ds-blue); }
.cal-dia.is-hoje .cal-num {
    display: inline-flex; align-items: center; justify-content: center;
    min-width: 1.35rem; height: 1.35rem; border-radius: 50%;
    background: var(--ds-blue); color: #fff; font-weight: 600;
}
.cal-marcas { list-style: none; margin: 0.3rem 0 0; padding: 0; display: grid; gap: 0.2rem; }
.cal-marca {
    font-size: 0.72rem; line-height: 1.25;
    padding: 0.16rem 0.35rem; border-radius: 0.28rem;
    background: var(--ds-blue-50); color: var(--ds-blue-dark);
    border-left: 2px solid var(--ds-blue);
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.cal-marca--visita { background: #f6efe0; color: #6d460a; border-left-color: var(--arq-amber); }
.cal-marca--prazo { background: #f7e6e2; color: #8e2a1c; border-left-color: var(--ds-danger); }
.cal-marca--outro { background: var(--ds-panel); color: var(--ds-text-700); border-left-color: var(--ds-line-dash); }

@media (max-width: 52rem) {
    /* No estreito a grade vira lista de dias com algo marcado: sete colunas */
    .cal thead { display: none; }
    .cal, .cal tbody, .cal tr, .cal td { display: block; width: auto; }
    .cal tr { margin: 0; }
    .cal td.cal-dia { height: auto; border: 0; border-bottom: 1px solid var(--ds-line); display: none; }
    .cal td.cal-dia.tem-compromisso, .cal td.cal-dia.is-hoje {
        display: flex; gap: 0.75rem; align-items: baseline; padding: 0.6rem 0.2rem;
    }
    .cal td.cal-dia.is-fora { display: none; }
    .cal-marcas { flex: 1; margin: 0; }
    .cal-marca { white-space: normal; }
}

/* Histórico de avisos: o mesmo ícone do toast, em lista fria. */
.aviso-hist { list-style: none; margin: 0; padding: 0; }
.aviso-hist-item {
    display: grid; grid-template-columns: 1.5rem minmax(0, 1fr); gap: 0.75rem;
    align-items: start; padding: 0.65rem 0; border-top: 1px solid var(--ds-line);
}
.aviso-hist-item:last-child { border-bottom: 1px solid var(--ds-line); }
.aviso-hist-marca {
    display: inline-flex; align-items: center; justify-content: center;
    width: 1.4rem; height: 1.4rem; margin-top: 0.05rem;
    border-radius: 50%; background: var(--ds-blue-50); color: var(--ds-blue-dark);
}
.aviso-hist-marca svg { width: 0.8rem; height: 0.8rem; }
.aviso-hist-item--erro .aviso-hist-marca { background: #f7e6e2; color: #8e2a1c; }
.aviso-hist-item--atencao .aviso-hist-marca { background: #f6efe0; color: #6d460a; }
.aviso-hist-item p { margin: 0 0 0.1rem; font-size: 0.9rem; }

/* Briefing em leitura: mesma informação, sem campo nenhum. */
.briefing-leitura { display: flex; flex-direction: column; gap: 1.1rem; margin: 0; }
.briefing-leitura > div { display: flex; flex-direction: column; gap: 0.3rem; }
.briefing-leitura dt {
    font-family: var(--arq-font-mono); font-size: 0.68rem;
    text-transform: uppercase; letter-spacing: 0.08em; color: var(--ds-text-500);
}
.briefing-leitura dd { margin: 0; }
.briefing-leitura dd p { margin: 0; font-size: 0.94rem; }
.briefing-marcadas { display: flex; flex-wrap: wrap; gap: 0.35rem; margin-bottom: 0.35rem; }
.chip--leitura {
    padding: 0.2rem 0.6rem; font-size: 0.8rem;
    background: var(--ds-blue-50); border-color: var(--ds-blue-100); color: var(--ds-blue-dark);
}

/* LEMBRETES EM POST-IT */
.lembretes { margin-bottom: 2.5rem; }
.lembretes-topo {
    display: flex; align-items: center; justify-content: flex-start;
    gap: 0.45rem; flex-wrap: wrap;
}
.lembretes-topo .secao-titulo { margin: 0; }

.postits {
    list-style: none; margin: 0.9rem 0 1rem; padding: 0;
    display: grid; grid-template-columns: repeat(auto-fill, minmax(13rem, 1fr)); gap: 1rem;
}
.postit {
    display: flex; flex-direction: column; justify-content: space-between; gap: 0.75rem;
    min-height: 8.5rem; padding: 0.9rem 0.95rem 0.7rem;
    background: #fdf3c8;
    box-shadow: 0 1px 1px rgba(20, 24, 26, 0.1), 0 8px 18px rgba(20, 24, 26, 0.12);
    transform: rotate(-0.7deg);
    transition: transform var(--arq-mid) var(--arq-ease-out),
                box-shadow var(--arq-mid) var(--arq-ease);
}
/* Alternar a inclinação evita a fileira perfeitamente alinhada, que */
.postit:nth-child(even) { transform: rotate(0.9deg); background: #fdf0d6; }
.postit:nth-child(3n) { transform: rotate(-0.3deg); }
.postit:hover {
    transform: rotate(0) translateY(-2px);
    box-shadow: 0 2px 3px rgba(20, 24, 26, 0.12), 0 14px 28px rgba(20, 24, 26, 0.18);
}
.postit p {
    margin: 0; font-size: 0.92rem; line-height: 1.45; color: #3a3117;
    white-space: pre-line; overflow-wrap: anywhere;
}
.postit footer {
    display: flex; align-items: center; justify-content: space-between; gap: 0.6rem;
    font-family: var(--arq-font-mono); font-size: 0.66rem; color: #67561c;
}
.postit footer .app-link-btn { color: #67561c; font-size: 0.66rem; }
.postit footer .app-link-btn:hover { color: #5c4d14; }
/* Conversa com o cliente ganha outro papel: é recado de fora, não nota */
.postit--cliente { background: #e4f0e9; }
.postit--cliente:nth-child(even) { background: #dcece4; }
.postit--cliente p { color: #17352a; }
.postit--cliente footer, .postit--cliente footer .app-link-btn { color: #2f5346; }

@media (prefers-reduced-motion: reduce) {
    .postit, .postit:hover { transform: none; transition: none; }
}

/* BOTÕES DE AÇÃO */
.ds-btn--acao {
    position: relative; isolation: isolate; overflow: hidden;
    display: inline-flex; align-items: center; justify-content: center; gap: 0.55rem;
    min-height: 0; padding: var(--arq-control-y) var(--arq-control-x);
    border: 1px solid transparent; border-radius: var(--arq-control-radius);
    background: var(--ds-blue); color: #fff;
    font-family: var(--ds-font-sans); font-size: 0.9rem; font-weight: 500;
    line-height: 1.2; text-decoration: none; cursor: pointer; white-space: nowrap;
    transition: background var(--arq-fast) ease, box-shadow var(--arq-mid) var(--arq-ease),
        transform var(--arq-fast) var(--arq-ease-out);
}
.ds-btn--acao > * { position: relative; z-index: 1; }
.ds-btn--acao svg {
    width: 0.95rem; height: 0.95rem; flex-shrink: 0;
    transition: transform var(--arq-mid) var(--arq-ease-out);
}
.ds-btn--acao:hover {
    background: var(--ds-blue-dark); color: #fff;
    transform: translateY(-1px); box-shadow: 0 4px 14px rgba(18, 60, 48, 0.28);
}
.ds-btn--acao:hover svg { transform: translateX(2px); }
.ds-btn--acao:active { transform: translateY(1px); box-shadow: none; }
.ds-btn--acao[disabled] { opacity: 0.5; cursor: not-allowed; pointer-events: none; }
.ds-btn--acao::before {
    content: ""; position: absolute; inset: 0; z-index: 0;
    border-radius: inherit; background: var(--ds-blue-dark);
    transform: scaleX(0); transform-origin: left center;
    transition: transform 300ms var(--arq-ease-out);
}
.ds-btn--acao:focus-visible { outline: none; background: var(--ds-blue); box-shadow: none; }
.ds-btn--acao:focus-visible::before, .ds-btn--acao:active::before { transform: scaleX(1); }
.ds-btn--acao .ds-btn-ico { display: contents; }
.auth-submit, .ds-btn--acao.is-larga { width: 100%; box-sizing: border-box; }

.auth-card .ds-btn--acao, .app-side .ds-btn--acao { background: #f2f5f3; color: var(--ds-ink); }
.auth-card .ds-btn--acao:hover, .app-side .ds-btn--acao:hover {
    background: #fff; color: var(--ds-ink); box-shadow: 0 6px 18px rgba(0, 0, 0, 0.4);
}
.auth-card .ds-btn--acao::before, .app-side .ds-btn--acao::before { background: var(--ds-blue); }
.auth-card .ds-btn--acao:focus-visible, .app-side .ds-btn--acao:focus-visible {
    background: #f2f5f3; color: #fff;
}
.auth-card .ds-btn--acao svg, .app-side .ds-btn--acao svg { color: var(--ds-blue); }
.auth-card .ds-btn--acao:focus-visible svg, .app-side .ds-btn--acao:focus-visible svg { color: #fff; }
.frente-cta { min-width: 0; padding: 0.5rem 0.95rem; font-size: 0.86rem; }

.auth-card .auth-submit,
.auth-card .auth-submit:hover,
.auth-card .auth-submit:active,
.auth-card .auth-submit:focus-visible { background: #f2f5f3; color: var(--ds-ink); }
.auth-card .auth-submit::before { display: none; }
.auth-card .auth-submit:hover svg,
.auth-card .auth-submit:active svg,
.auth-card .auth-submit:focus-visible svg { color: var(--ds-blue); transform: none; }
.auth-card .auth-submit:focus-visible { box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.78); }

@media (prefers-reduced-motion: reduce) {
    .ds-btn--acao, .ds-btn--acao:hover, .ds-btn--acao:active,
    .ds-btn--acao::before, .ds-btn--acao svg { transform: none; transition: none; }
}

/* LATERAL MENOS VERDE */
.app-side {
    background: linear-gradient(180deg,
        rgba(18, 20, 19, 0.62), rgba(16, 18, 17, 0.74) 48%, rgba(17, 19, 18, 0.68));
    box-shadow: 2px 0 40px rgba(6, 8, 7, 0.34);
}
@media (max-width: 62rem) {
    .app-side { background: rgba(16, 18, 17, 0.97); }
}

/* AÇÕES DO POST-IT */
.postit-acoes { display: inline-flex; align-items: center; gap: 0.3rem; }
.postit-ico {
    display: inline-flex; align-items: center; justify-content: center;
    width: 1.35rem; height: 1.35rem; padding: 0;
    background: none; border: 0; border-radius: 0.28rem; cursor: pointer;
    color: #67561c; opacity: 0.7;
    transition: opacity var(--arq-fast) ease, color var(--arq-fast) ease,
                background var(--arq-fast) ease;
}
.postit-ico svg { width: 0.85rem; height: 0.85rem; }
.postit:hover .postit-ico { opacity: 1; }
.postit-ico:hover { color: #5c4d14; background: rgba(92, 77, 20, 0.12); }
.postit-ico--risco:hover { color: #8e2a1c; background: rgba(142, 42, 28, 0.12); }
.postit-ico:focus-visible {
    outline: none; opacity: 1; box-shadow: inset 0 0 0 2px currentColor;
}
.postit--cliente .postit-ico { color: #2f5346; }
.postit--cliente .postit-ico:hover { color: #17352a; background: rgba(23, 53, 42, 0.1); }

/* TAREFAS DENTRO DA FASE */

.tarefa-id { display: flex; flex-direction: column; gap: 0.1rem; min-width: 0; }
.tarefa-id strong { font-weight: 500; font-size: 0.93rem; }

/* O gatilho dos complementares é um botão comum, não uma barra. */
/* Ação de manutenção, não de fluxo: fica no canto e em corpo de texto. */
.fases-rodape { display: flex; justify-content: flex-end; margin-top: 0.6rem; }
.link-discreto {
    background: none; border: 0; padding: 0.2rem 0; cursor: pointer;
    font: inherit; font-size: 0.8rem; color: var(--ds-text-500);
    text-decoration: underline; text-underline-offset: 3px;
    transition: color var(--arq-fast) ease;
}
.link-discreto:hover { color: var(--ds-blue-dark); }
.link-discreto:focus-visible {
    outline: 2px solid var(--ds-blue-dark); outline-offset: 3px; border-radius: 0.2rem;
}

/* No modal de complementares, o campo livre precisa respirar longe das */
.escolha-multipla .complementar-livre {
    margin-top: 1.5rem; padding-top: 1.25rem;
    border-top: 1px solid var(--ds-line);
}

/* O cartão de projeto virou link inteiro. */
a.projeto-card {
    display: flex; flex-direction: column; gap: 0.55rem;
    text-decoration: none; color: inherit;
}
a.projeto-card:hover { text-decoration: none; }
a.projeto-card .projeto-nome { color: var(--ds-text-900); }
a.projeto-card:hover .projeto-nome { color: var(--ds-blue-dark); }
a.projeto-card:focus-visible {
    outline: 2px solid var(--ds-blue-dark); outline-offset: 2px;
}
.projeto-card .projeto-card-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 0.75rem; }
.projeto-card .projeto-cliente { font-size: 0.84rem; color: var(--ds-text-500); }
.projeto-card .projeto-metricas {
    display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.6rem 1rem;
    margin-top: 0.35rem; padding-top: 0.7rem; border-top: 1px solid var(--ds-line);
}
.projeto-card .projeto-metricas > span { display: flex; flex-direction: column; gap: 0.1rem; min-width: 0; }
.pm-rot {
    font-family: var(--arq-font-mono); font-size: 0.64rem;
    text-transform: uppercase; letter-spacing: 0.07em; color: var(--ds-text-500);
}
.pm-val { font-size: 0.86rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* Cores dos tipos novos de compromisso no calendário. */
.cal-marca--briefing, .cal-marca--apresentacao { background: var(--ds-blue-50); color: var(--ds-blue-dark); border-left-color: var(--ds-blue); }
.cal-marca--levantamento, .cal-marca--medicao { background: #f6efe0; color: #6d460a; border-left-color: var(--arq-amber); }
.cal-marca--assinatura { background: #efecf6; color: #4f3878; border-left-color: var(--arq-violet); }
.cal-marca--entrega, .cal-marca--orgao { background: #f7e6e2; color: #8e2a1c; border-left-color: var(--ds-danger); }

/* O painel ganhou o estado da fase entre o avanço e a ação. */
.frente { grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr) auto auto; }
.frente-selo { justify-self: end; white-space: nowrap; }
@media (max-width: 62rem) {
    .frente { grid-template-columns: 1fr; }
    .frente-selo { justify-self: start; }
}

/* Resumo de uma peça (proposta, contrato) dentro da fase. */
.peca-resumo {
    display: grid; grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
    gap: 0.85rem 1.5rem; margin: 0 0 1.1rem;
}
.peca-resumo > div { display: flex; flex-direction: column; gap: 0.1rem; }
.peca-resumo dt {
    font-family: var(--arq-font-mono); font-size: 0.66rem;
    text-transform: uppercase; letter-spacing: 0.07em; color: var(--ds-text-500);
}
.peca-resumo dd { margin: 0; font-size: 0.92rem; }

/* BOTÃO DE CRIAR — o mais delicado da família */
.ds-btn--novo {
    display: inline-flex; align-items: center; gap: 0.5rem;
    padding: var(--arq-control-y) 1.05rem var(--arq-control-y) 0.9rem;
    border: 1px solid var(--ds-line-dash); border-radius: var(--arq-control-radius);
    background: var(--ds-surface); color: var(--ds-text-900);
    font-family: var(--ds-font-sans); font-size: 0.9rem; font-weight: 500;
    line-height: 1.2; text-decoration: none; cursor: pointer; white-space: nowrap;
    transition: border-color var(--arq-fast) ease, background var(--arq-fast) ease,
                box-shadow var(--arq-mid) var(--arq-ease),
                transform var(--arq-fast) var(--arq-ease-out);
}
.ds-btn--novo svg {
    width: 0.95rem; height: 0.95rem; flex-shrink: 0; color: var(--ds-blue);
    transition: transform var(--arq-mid) var(--arq-ease-out);
}
.ds-btn--novo:hover {
    background: var(--ds-panel); border-color: var(--ds-blue-light);
    color: var(--ds-blue-dark);
    transform: translateY(-1px); box-shadow: 0 4px 14px rgba(18, 32, 28, 0.12);
}
.ds-btn--novo:hover svg { transform: scale(1.14); }
.ds-btn--novo:active { transform: translateY(1px); box-shadow: none; }
.ds-btn--novo:focus-visible {
    outline: none; border-color: var(--ds-blue-dark);
    box-shadow: inset 0 0 0 2px var(--ds-blue-dark);
}
.ds-btn.ds-btn--danger {
    border-color: var(--ds-danger); background: var(--ds-danger); color: #fff;
}
.ds-btn.ds-btn--danger:hover {
    border-color: #9f2f20; background: #9f2f20; color: #fff;
    transform: translateY(-1px); box-shadow: 0 4px 14px rgba(142, 42, 28, 0.24);
}
.ds-btn.ds-btn--danger:active { transform: translateY(1px); box-shadow: none; }
.ds-btn.ds-btn--danger:focus-visible {
    outline: 2px solid color-mix(in srgb, var(--ds-danger) 45%, white); outline-offset: 2px;
}

/* Sobre o vidro escuro da lateral, o mesmo desenho invertido. */
.app-side .ds-btn--novo {
    background: rgba(255, 255, 255, 0.1); border-color: rgba(255, 255, 255, 0.22);
    color: rgba(255, 255, 255, 0.94);
}
.app-side .ds-btn--novo svg { color: #7fe0bd; }
.app-side .ds-btn--novo:hover {
    background: rgba(255, 255, 255, 0.2); border-color: rgba(255, 255, 255, 0.4);
    color: #fff; box-shadow: 0 6px 18px rgba(0, 0, 0, 0.32);
}
.app-side .ds-btn--novo:focus-visible {
    border-color: #fff; box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.8);
}
.nav-destaque.ds-btn--novo {
    justify-content: flex-start; margin: 0 0.75rem 0.5rem; padding: 0.6rem 1rem;
}

@media (prefers-reduced-motion: reduce) {
    .ds-btn--novo, .ds-btn--novo:hover, .ds-btn--novo:active { transform: none; }
    .ds-btn--novo:hover svg { transform: none; }
}

/* MAIS COR NOS INDICADORES */
/* A barra de 3px na lateral lia como divisória entre os indicadores, e uma */
.kpi { border-left: 0; padding-left: 1.3rem; padding-top: 1.35rem; }
.kpi::before {
    content: ""; position: absolute; top: 0; left: 1.3rem;
    width: 1.75rem; height: 2px; border-radius: 0 0 2px 2px;
    background: var(--sec);
    transition: width var(--arq-mid) var(--arq-ease);
}
.kpi:hover::before { width: 3rem; }
.kpi--blue { --sec: #1d4d78; }
.kpi--green { --sec: #12513e; }
.kpi--amber { --sec: #6d460a; }
.kpi--violet { --sec: #4f3878; }
.kpi--alert { --sec: #8e2a1c; }
.kpi-label { color: var(--sec); }
/* O número só assume a cor quando há algo ali; zerado ele é grafite, senão */
.kpi .kpi-value { color: var(--ds-text-900); }
.kpi.is-aceso .kpi-value { color: var(--sec); }

/* Fase bloqueada: cinza, cadeado, sem link. */
/* Bloqueada é apagada, não ilegível: a 0,72 o resumo caía para 2,8:1, e a */
.fase-linha.is-bloqueada { opacity: 0.88; }
.fase-linha.is-bloqueada .fase-resumo,
.fase-linha.is-bloqueada .fase-selo { color: var(--ds-text-700); }
.fase-linha.is-bloqueada .fase-linha-corpo { cursor: not-allowed; }
.fase-linha.is-bloqueada .fase-linha-corpo:hover { background: none; }
.fase-linha.is-bloqueada .fase-num {
    background: var(--ds-panel); border-style: dashed; color: var(--ds-text-400);
}
.fase-cadeado { width: 0.8rem; height: 0.8rem; color: var(--ds-text-400); }

/* Ícone de adicionar ao lado do título de uma seção. */
.secao-add { color: var(--ds-blue); }

/* Troca de roteiro sem caixa dentro de caixa. */
.troca-roteiro {
    margin-bottom: 2rem;
}
.troca-roteiro label {
    font-family: var(--arq-font-mono); font-size: 0.68rem; font-weight: 500;
    text-transform: uppercase; letter-spacing: 0.12em; color: var(--ds-text-500);
}

/* "Outro / complementar" repete abaixo de cada pergunta. Como caixa, virava */
.abrir-campo--fino > summary {
    font-size: 0.78rem; padding: 0.15rem 0; width: fit-content;
    border: 0; background: none; border-radius: 0;
    color: var(--ds-text-500); text-decoration: underline;
    text-decoration-color: var(--ds-line-dash);
    text-underline-offset: 0.22em;
}
.abrir-campo--fino > summary:hover {
    color: var(--ds-blue-dark); text-decoration-color: currentColor;
}
.abrir-campo--fino > summary:focus-visible {
    outline: 2px solid var(--ds-blue); outline-offset: 3px; border-radius: 0.2rem;
}
.abrir-campo--fino[open] > summary { margin-bottom: 0.55rem; }
.briefing-salvar { position: sticky; bottom: 1rem; justify-content: flex-end; }
.fase-selo { display: inline-flex; align-items: center; gap: 0.35rem; }

/* Ícone de ação numa linha de lista: aparece de leve, acende no hover. */
.linha-ico { color: var(--ds-text-400); }
.agenda-acoes { display: flex; align-items: center; gap: 0.2rem; }
.agenda-lista li:hover .linha-ico { color: var(--ds-text-500); }

/* LINHA DE ADICIONAR DENTRO DA TABELA */
.linha-add > td { vertical-align: middle; }
.linha-add input {
    width: 100%; box-sizing: border-box;
    background: none; border: 0; border-bottom: 1px solid var(--ds-line-dash);
    border-radius: 0; padding: 0.3rem 0; box-shadow: none;
    font: inherit; font-size: 0.9rem; color: var(--ds-text-900);
}
.linha-add input:focus {
    outline: none; border-bottom-color: var(--ds-blue); box-shadow: none;
    background: none;
}
.linha-add input::placeholder { color: var(--ds-text-400); }
.linha-add td.num input { text-align: right; }
/* SELETOR DE ROTEIRO */
.troca-roteiro {
    display: flex; align-items: baseline; gap: 0.75rem; flex-wrap: wrap;
    margin: 0 0 2.5rem; padding: 0 0 0.9rem;
    border-bottom: 1px solid var(--ds-line);
}
.troca-roteiro label { flex-shrink: 0; }
.troca-roteiro select {
    flex: 1; min-width: 12rem;
    background: none; border: 0; border-radius: 0;
    padding: 0.2rem 0; box-shadow: none;
    font-family: var(--ds-font-display);
    font-variation-settings: "wdth" 106, "wght" 500;
    font-size: 1.05rem; color: var(--ds-text-900);
}
.troca-roteiro select:focus {
    outline: none; box-shadow: none; background: none;
    text-decoration: underline; text-underline-offset: 5px;
    text-decoration-color: var(--ds-blue);
}
.troca-roteiro .ds-btn { flex-shrink: 0; padding: 0.32rem 0.8rem; font-size: 0.82rem; }

/* PASSO A PASSO */
.passos { list-style: none; margin: 0; padding: 0; }
.passo {
    position: relative;
    display: grid; grid-template-columns: 2rem minmax(0, 1fr); gap: 1.1rem;
    padding: 0 0 2.25rem;
}
/* O fio desce do número até o passo seguinte. */
.passo:not(:last-child)::before {
    content: ""; position: absolute; left: 0.97rem; top: 2.4rem; bottom: 0.5rem;
    width: 1px; background: var(--ds-line-dash);
}
.passo-num {
    display: inline-flex; align-items: center; justify-content: center;
    width: 2rem; height: 2rem; border-radius: 50%; flex-shrink: 0;
    background: var(--ds-surface); border: 1px solid var(--ds-line-dash);
    font-size: 0.82rem; font-weight: 600; color: var(--ds-text-500);
    position: relative; z-index: 1;
}
.passo.is-feito .passo-num {
    background: var(--ds-blue); border-color: var(--ds-blue); color: #fff;
}
.passo.is-esperando { opacity: 0.75; }

.passo-titulo { margin: 0 0 0.2rem; font-size: 1.05rem; }

.passo--final .passo-num { border-style: dashed; }
.passo--final.is-feito .passo-num { border-style: solid; }
/* O vazio de tela cheia (1,5rem de respiro) abre um buraco dentro do passo, */

.escolha-multipla label small { color: var(--ds-text-500); font-size: 0.75rem; margin-left: 0.35rem; }

/* CRONÔMETRO FLUTUANTE */
.cronometro-flutuante {
    position: fixed; right: 1.25rem; bottom: 1.25rem; z-index: 60;
    display: flex; align-items: center; gap: 1.1rem;
    max-width: min(26rem, calc(100vw - 2.5rem));
    padding: 0.75rem 0.9rem 0.75rem 1rem;
    border-radius: 0.7rem;
    background: var(--ds-ink); color: #eef2f0;
    box-shadow: 0 12px 32px rgba(12, 24, 20, 0.3);
    border-left: 3px solid var(--arq-green, #1f6f52);
}
.cronometro-flutuante.is-pausado { border-left-color: var(--arq-amber, #b07a1c); }
.cron-id { display: flex; flex-direction: column; gap: 0.1rem; min-width: 0; }
.cron-rot {
    font-family: var(--arq-font-mono); font-size: 0.62rem; font-weight: 500;
    text-transform: uppercase; letter-spacing: 0.14em; color: rgba(238, 242, 240, 0.62);
}
.cron-tempo { font-size: 1.35rem; line-height: 1.05; color: #fff; }
.cron-desc {
    font-size: 0.78rem; color: rgba(238, 242, 240, 0.72);
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.cron-acoes { display: flex; align-items: center; gap: 0.4rem; margin-left: auto; }
.cron-acoes form { margin: 0; }
.cronometro-flutuante .linha-ico { color: rgba(238, 242, 240, 0.8); }
.cronometro-flutuante .linha-ico:hover { color: #fff; background: rgba(255, 255, 255, 0.12); }
.cronometro-flutuante .linha-ico svg { width: 1rem; height: 1rem; }
.cron-parar {
    white-space: nowrap; font-size: 0.8rem;
    background: rgba(255, 255, 255, 0.1); border-color: rgba(255, 255, 255, 0.22);
    color: #eef2f0;
}
.cron-parar:hover { background: rgba(255, 255, 255, 0.18); color: #fff; }
/* Com o relógio no canto, os avisos sobem para não ficar por baixo dele. */
.cronometro-flutuante ~ .ds-avisos { bottom: 6.5rem; }

/* --- Horas do projeto: barra, entradas e a lista que a compõe --- */
.horas-bloco .horas-comp-head {
    display: flex; align-items: baseline; justify-content: space-between;
    gap: 1rem; flex-wrap: wrap;
}
.horas-bloco {
    margin-top: 1rem; padding: 1.25rem 1.35rem 1.35rem;
    border: 1px solid var(--ds-line); border-radius: 0.7rem;
    background: var(--ds-surface); box-shadow: 0 10px 28px rgba(18, 32, 28, 0.055);
}
.horas-bloco .horas-comp-head .secao-titulo { margin: 0; }
.horas-conta { font-size: 0.85rem; color: var(--ds-text-500); }
.horas-bloco .ds-progress { margin: 0.6rem 0 1.2rem; }
.horas-entradas { margin-bottom: 1.1rem; }
.hora-cronometro { display: flex; align-items: center; gap: 0.6rem; flex-wrap: wrap; }
.hora-cronometro input[type="text"] {
    flex: 0 1 24rem; min-height: 2.75rem; padding: 0.65rem 1rem; box-sizing: border-box;
    border: 1px solid var(--ds-line); border-radius: 999px;
    background: color-mix(in srgb, var(--arq-blue) 4%, var(--ds-panel));
    transition: border-color var(--arq-fast) ease, background var(--arq-fast) ease, box-shadow var(--arq-fast) ease;
}
.hora-cronometro input[type="text"]:focus {
    outline: none; border-color: var(--ds-blue-light); background: var(--ds-surface); box-shadow: var(--ds-focus-ring);
}
.hora-cronometro .ds-btn { flex-shrink: 0; display: inline-flex; align-items: center; gap: 0.4rem; }
.hora-cronometro .ds-btn svg { width: 0.95rem; height: 0.95rem; }
.data-table tr.is-rodando td { color: var(--ds-blue-dark); font-style: italic; }
@media (max-width: 36rem) { .hora-cronometro input[type="text"] { flex-basis: 100%; width: 100%; } }

.proposta-pdf-topo { display: inline-flex; align-items: center; gap: 0.45rem; flex-shrink: 0; }
.proposta-pdf-topo svg { width: 1rem; height: 1rem; }
.proposta-salvar-aviso {
    display: inline-flex; align-items: center; gap: 0.45rem;
    margin: 0.4rem 0 0.9rem; padding: 0.5rem 0.7rem;
    border-radius: 0.5rem; background: color-mix(in srgb, var(--arq-amber) 9%, var(--ds-surface));
    color: #684709; font-size: 0.8rem;
}
.proposta-salvar-aviso::before {
    content: "!"; display: inline-flex; align-items: center; justify-content: center;
    width: 1rem; height: 1rem; flex-shrink: 0; border-radius: 50%;
    background: var(--arq-amber); color: #fff; font-size: 0.66rem; font-weight: 700;
}

/* --- Total da proposta: fecha as mesmas colunas da tabela --- */
.data-table .proposta-somatorio th {
    padding-top: 0.9rem; vertical-align: top; border-top: 2px solid var(--ds-text-900);
}
.proposta-somatorio th:first-child { color: var(--ds-text-900); }
.proposta-somatorio strong { display: block; font-size: 1.35rem; color: var(--ds-text-900); }
.proposta-somatorio small {
    display: block; margin-top: 0.2rem; font-size: 0.68rem;
    font-weight: 400; color: var(--ds-text-500); white-space: nowrap;
}
.proposta-itens-tabela .col-horas { width: 7rem; }
.proposta-itens-tabela .col-valor { width: 12rem; }
.proposta-itens-tabela .col-acoes { width: 4rem; }
@media (max-width: 40rem) {
    .table-scroll .proposta-itens-tabela { min-width: 0; table-layout: fixed; font-size: 0.72rem; }
    .proposta-itens-tabela .col-horas { width: 3.7rem; }
    .proposta-itens-tabela .col-valor { width: 6.2rem; }
    .proposta-itens-tabela .col-acoes { width: 3.4rem; }
    .proposta-itens-tabela th, .proposta-itens-tabela td { padding: 0.58rem 0.2rem; }
    .proposta-itens-tabela th:first-child, .proposta-itens-tabela td:first-child { padding-left: 0; }
    .proposta-itens-tabela .linha-add td:nth-child(3) { font-size: 0.6rem; white-space: normal; }
    .proposta-itens-tabela .agenda-acoes { gap: 0; }
    .proposta-itens-tabela .linha-ico { width: 1.65rem; height: 1.65rem; }
    .proposta-somatorio strong { font-size: 0.95rem; }
    .proposta-somatorio small { font-size: 0.54rem; white-space: normal; }
}
.item-linha.is-editando td { background: var(--ds-blue-50); }
.item-linha.is-editando input {
    width: 100%; box-sizing: border-box;
    background: none; border: 0; border-bottom: 1px solid var(--ds-blue-light);
    border-radius: 0; padding: 0.25rem 0; box-shadow: none;
    font: inherit; font-size: 0.9rem; color: var(--ds-text-900);
}
.item-linha.is-editando input:focus { outline: none; border-bottom-color: var(--ds-blue); }
.item-linha.is-editando td.num input { text-align: right; }
.item-linha.is-editando form { display: contents; }
.fecho-acoes { display: flex; align-items: center; gap: 0.6rem; flex-wrap: wrap; }
.fecho-acoes form { margin: 0; }

/* Tarefas da fase: uma única tabela de trabalho, sem caixas sobrepostas. */
.fase-tarefas-contagem {
    flex-shrink: 0; color: var(--ds-text-500); font-size: 0.76rem;
    white-space: nowrap;
}
.fase-tarefas-tabela { min-width: 43rem; table-layout: fixed; }
.fase-tarefas-tabela .col-check { width: 3rem; }
.fase-tarefas-tabela .col-data { width: 9.5rem; }
.fase-tarefas-tabela .col-horas { width: 8rem; }
.fase-tarefas-tabela .col-acoes { width: 4.5rem; }
.fase-tarefas-tabela th:first-child,
.fase-tarefas-tabela td:first-child { text-align: center; }
.fase-tarefas-tabela td { vertical-align: middle; }
.fase-tarefas-tabela td:nth-child(2) { overflow-wrap: anywhere; }
.fase-tarefas-tabela .agenda-acoes { justify-content: flex-end; }
.fase-check {
    display: inline-flex; align-items: center; justify-content: center;
    width: 1.35rem; height: 1.35rem; padding: 0;
    border: 1.5px solid var(--ds-line-dash); border-radius: 0.35rem;
    background: var(--ds-surface); color: #fff; cursor: pointer;
    transition: border-color var(--arq-fast) ease, background var(--arq-fast) ease,
        transform var(--arq-fast) ease;
}
.fase-check:hover { border-color: var(--arq-green); transform: translateY(-1px); }
.fase-check:active { transform: translateY(1px); }
.fase-check:focus-visible { outline: none; box-shadow: var(--ds-focus-ring); }
.fase-check.is-feito { border-color: var(--arq-green); background: var(--arq-green); }
.fase-check.is-vazio { opacity: 0.45; cursor: default; }
.fase-check.is-vazio:hover { border-color: var(--ds-line-dash); transform: none; }
.fase-check svg { width: 0.9rem; height: 0.9rem; }
.fase-tarefas-tabela tr.is-done td { color: var(--ds-text-500); text-decoration: none; }
.fase-tarefas-tabela tr.is-done td:nth-child(2) strong { text-decoration: line-through; }
.fase-tarefas-tabela tr.is-editando td { background: var(--ds-blue-50); }
.fase-tarefas-tabela tr.is-editando input {
    width: 100%; box-sizing: border-box; padding: 0.3rem 0;
    border: 0; border-bottom: 1px solid var(--ds-blue-light); border-radius: 0;
    background: none; box-shadow: none; color: var(--ds-text-900); font: inherit;
}
.fase-tarefas-tabela tr.is-editando input:focus {
    outline: none; border-bottom-color: var(--ds-blue); box-shadow: none;
}
.fase-tarefas-tabela tr.is-editando td.num input { text-align: right; }

/* Valores monetários do painel permanecem inteiros na mesma linha. */
.kpi-value { white-space: nowrap; }
.kpi:last-child .kpi-value { font-size: 1.5rem; }
@media (min-width: 75rem) {
    .kpi-row { grid-template-columns: repeat(4, minmax(0, 1fr)) minmax(14rem, 1.35fr); }
}
@media (max-width: 40rem) {
    .fase-tarefas .contrato-secao-head { flex-direction: row; align-items: start; }
    .fase-tarefas-tabela { min-width: 40rem; }
}

/* Agenda: prazo de tarefa é trabalho planejado, não compromisso editável. */
.cal-marca--tarefa {
    background: color-mix(in srgb, var(--arq-green) 10%, var(--ds-surface));
    color: color-mix(in srgb, var(--arq-green) 72%, var(--ds-text-900));
    border-left-color: var(--arq-green);
}
.cal-marca--tarefa.is-feita { opacity: 0.55; text-decoration: line-through; }
.agenda-tarefas-mes { margin-bottom: 2rem; }
.agenda-lista--tarefas li.is-feita { opacity: 0.58; }
.agenda-lista--tarefas li.is-feita .agenda-info strong { text-decoration: line-through; }
.agenda-lista--tarefas .linha-ico { flex-shrink: 0; }

/* Próximas tarefas: um card, com indicadores e lista na mesma superfície. */
.projeto-tarefas {
    margin-top: 1rem; padding: 1.25rem 1.35rem 1.35rem;
    border: 1px solid var(--ds-line); border-radius: 0.7rem;
    background: var(--ds-surface); box-shadow: 0 10px 28px rgba(18, 32, 28, 0.055);
}
.projeto-tarefas-head {
    display: flex; align-items: start; justify-content: space-between; gap: 1rem;
}
.projeto-tarefas-head .secao-titulo { margin: 0; }
.projeto-tarefas-head .secao-sub { margin: 0.25rem 0 0; }
.projeto-tarefas-acoes { display: flex; align-items: center; gap: 0.35rem; }
.projeto-tarefas-resumo {
    display: grid; grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 1px; margin: 0.85rem 0 0; background: var(--ds-line);
    border-top: 1px solid var(--ds-line); border-bottom: 1px solid var(--ds-line);
}
.projeto-tarefas-resumo > div { padding: 0.7rem 0.8rem; background: var(--ds-panel); }
.projeto-tarefas-resumo dt {
    font-family: var(--arq-font-mono); font-size: 0.62rem; font-weight: 500;
    text-transform: uppercase; letter-spacing: 0.09em; color: var(--ds-text-500);
}
.projeto-tarefas-resumo dd {
    margin: 0.2rem 0 0; font-family: var(--arq-font-mono);
    font-size: 1.15rem; font-weight: 600; color: var(--ds-text-900);
}
.projeto-tarefas-resumo > div:nth-child(2) dd { color: var(--arq-green); }
.projeto-tarefas-resumo > div:nth-child(3) dd { color: var(--arq-amber); }
.projeto-tarefas-progresso {
    display: grid; grid-template-columns: minmax(0, 1fr) auto;
    align-items: center; gap: 0.8rem; margin: 0.8rem 0 0.35rem;
}
.projeto-tarefas-progresso span { font-size: 0.72rem; color: var(--ds-text-500); white-space: nowrap; }
.projeto-tarefas-lista { list-style: none; margin: 0; padding: 0; }
.projeto-tarefas-lista li {
    display: grid; grid-template-columns: 1.5rem minmax(0, 1fr) 7.5rem 4rem 1.75rem;
    align-items: center; gap: 0.75rem; padding: 0.72rem 0;
    border-bottom: 1px solid var(--ds-line);
}
.projeto-tarefas-lista li:last-child { border-bottom: 0; }
.projeto-tarefas-lista li.data-empty { display: block; }
.projeto-tarefa-id { display: flex; flex-direction: column; min-width: 0; gap: 0.12rem; }
.projeto-tarefa-id strong { overflow-wrap: anywhere; font-size: 0.9rem; }
.projeto-tarefa-id span {
    color: var(--ds-text-500); font-family: var(--arq-font-mono);
    font-size: 0.64rem; text-transform: uppercase; letter-spacing: 0.07em;
}
.projeto-tarefa-prazo, .projeto-tarefa-horas {
    font-size: 0.76rem; color: var(--ds-text-500); white-space: nowrap;
}
.projeto-tarefa-prazo.is-atrasada { color: var(--ds-danger); font-weight: 600; }
.projeto-tarefa-horas { text-align: right; }
.projeto-tarefas-feedback {
    display: flex; align-items: center; gap: 0.65rem;
    margin: 0.8rem 0 0; padding: 0.65rem 0.75rem;
    border-radius: 0.45rem;
    background: color-mix(in srgb, var(--arq-green) 12%, var(--ds-surface));
    color: color-mix(in srgb, var(--arq-green) 72%, var(--ds-text-900));
    animation: tarefa-confirmada 420ms var(--arq-ease-out) both;
}
.projeto-tarefas-feedback.is-reaberta {
    background: var(--ds-blue-50); color: var(--ds-blue-dark);
}
.projeto-tarefas-feedback svg { width: 1.15rem; height: 1.15rem; flex-shrink: 0; }
.projeto-tarefas-feedback span { display: flex; flex-direction: column; gap: 0.08rem; font-size: 0.78rem; }
.projeto-tarefas-feedback strong { font-size: 0.84rem; }
@keyframes tarefa-confirmada {
    from { opacity: 0; transform: translateY(-0.35rem) scale(0.98); }
    55% { transform: translateY(0) scale(1.015); }
    to { opacity: 1; transform: none; }
}
@media (max-width: 40rem) {
    .projeto-tarefas { padding: 1rem; }
    .projeto-tarefas-resumo { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .projeto-tarefas-lista li {
        grid-template-columns: 1.5rem minmax(0, 1fr) auto;
        gap: 0.55rem;
    }
    .projeto-tarefa-prazo { grid-column: 2; }
    .projeto-tarefa-horas { grid-column: 3; grid-row: 2; }
    .projeto-tarefas-lista .linha-ico { grid-column: 3; grid-row: 1; }
}

/* Controles somente com ícone: sem caixa em repouso e sem rotação. */
.secao-add,
.linha-ico,
.cal-passo,
.ds-modal-fechar,
.ds-aviso-fechar,
.nav-burger {
    border-color: transparent; background: transparent; box-shadow: none;
    transition: color var(--arq-fast) ease, background var(--arq-fast) ease,
        transform var(--arq-fast) var(--arq-ease-out);
}
.secao-add,
.linha-ico,
.cal-passo,
.ds-modal-fechar,
.ds-aviso-fechar {
    display: inline-flex; align-items: center; justify-content: center;
    width: var(--arq-icon-btn); height: var(--arq-icon-btn); flex-shrink: 0;
    padding: 0; border: 0; border-radius: 0.4rem; line-height: 0;
    cursor: pointer; text-decoration: none;
}
.secao-add svg,
.linha-ico svg,
.cal-passo svg,
.ds-modal-fechar svg,
.ds-aviso-fechar svg {
    width: 0.9rem; height: 0.9rem;
    transition: transform var(--arq-fast) var(--arq-ease-out);
}
.nav-burger svg { transition: transform var(--arq-fast) var(--arq-ease-out); }
.secao-add:hover,
.linha-ico:hover,
.linha-ico--mais:hover,
.linha-ico--risco:hover,
.cal-passo:hover,
.ds-modal-fechar:hover,
.ds-aviso-fechar:hover,
.nav-burger:hover {
    border-color: transparent; background: var(--ds-blue-50);
    color: var(--ds-blue-dark); box-shadow: none; transform: scale(1.1);
}
.secao-add:focus-visible,
.linha-ico:focus-visible,
.cal-passo:focus-visible,
.ds-modal-fechar:focus-visible,
.ds-aviso-fechar:focus-visible,
.nav-burger:focus-visible {
    outline: none; border-color: transparent; background: var(--ds-blue-50);
    color: var(--ds-blue-dark); box-shadow: none; transform: scale(1.08);
}
.linha-ico--risco:hover {
    background: color-mix(in srgb, var(--ds-danger) 11%, var(--ds-surface));
    color: var(--ds-danger);
}
.linha-ico--risco:focus-visible {
    background: color-mix(in srgb, var(--ds-danger) 11%, var(--ds-surface));
    color: var(--ds-danger);
}
@media (max-width: 62rem) {
    .nav-burger { color: rgba(255, 255, 255, 0.92); }
    .nav-burger:hover,
    .nav-burger:focus-visible { background: rgba(255, 255, 255, 0.16); color: #fff; }
}
