/* ============================================================
   MAISSDoc — Portal público (Ouvidoria, e-SIC, Serviços, Consulta)
   Mesmo design system do app (ged-tokens / ged-theme-global):
   índigo #4f46e5, navy institucional #282f74, cinzas #101828…#E4E7EC.
   Cantos discretos (6px), anel interno nos cartões, tipografia maior
   e alvos de toque de 48px: legível para quem enxerga pouco e
   usa o celular. Acessibilidade (TCE 13): fonte ajustável, alto
   contraste, foco visível, atalhos de teclado, movimento reduzido.
   ============================================================ */
:root {
    --p-primary: #4f46e5;
    --p-primary-deep: #4338ca;
    --p-primary-soft: #eef2ff;
    --p-navy: #282f74;
    --p-navy-deep: #1f2560;
    --p-accent: #22d3ee;             /* traço "tecnológico" discreto */
    --p-bg: #f4f6fa;
    --p-surface: #ffffff;
    --p-surface-subtle: #f9fafb;
    --p-border: #e4e7ec;
    --p-border-control: #d0d5dd;
    --p-text: #101828;
    --p-text-2: #344054;
    --p-text-3: #475467;
    --p-muted: #667085;
    --p-success: #15803d;
    --p-success-bg: #ecfdf3;
    --p-warning: #b45309;
    --p-warning-bg: #fffbeb;
    --p-danger: #b42318;
    --p-danger-bg: #fef3f2;
    --p-radius: 6px;
    --p-radius-sm: 4px;
    --p-ring: 0 0 0 3px rgba(79, 70, 229, .22);
    --p-shadow: 0 1px 2px rgba(16, 24, 40, .05), 0 8px 24px -12px rgba(16, 24, 40, .12);
    --p-font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    --p-mono: ui-monospace, "SFMono-Regular", Menlo, Consolas, "Liberation Mono", monospace;
}

html { scroll-behavior: smooth; }
body.p-portal {
    margin: 0;
    background: var(--p-bg);
    color: var(--p-text);
    font-family: var(--p-font);
    font-size: 1.0625rem;            /* 17px: leitura confortável; A+/A− escalam a raiz */
    line-height: 1.55;
    min-height: 100vh;
    display: flex; flex-direction: column;        /* rodapé sempre no pé, mesmo em página curta */
    -webkit-font-smoothing: antialiased;
}
/* Largura total: cabeçalho, menu, conteúdo e rodapé usam 100% da tela, com 16px de margem lateral.
   Nenhuma regra abaixo pode usar `padding` abreviado num .container (zeraria esta margem). */
.p-portal .container { width: 100%; max-width: none; padding-left: 1rem; padding-right: 1rem; }
.p-portal a { color: var(--p-primary-deep); text-decoration-thickness: 1px; text-underline-offset: 3px; }
.p-portal a:hover { color: var(--p-primary); }
.p-portal :focus-visible { outline: 3px solid var(--p-primary); outline-offset: 2px; border-radius: var(--p-radius-sm); }
.p-portal ::selection { background: var(--p-primary-soft); }

/* ---------- atalhos de teclado / skip links ---------- */
.p-skip { position: absolute; left: -9999px; top: 0; z-index: 1000; }
.p-skip:focus {
    left: .75rem; top: .75rem; background: #fff; color: var(--p-text); padding: .6rem .9rem;
    border: 2px solid var(--p-primary); border-radius: var(--p-radius); font-weight: 600;
}

/* ---------- barra de acessibilidade ---------- */
.p-a11y {
    background: var(--p-navy-deep); color: #e4e7ff; font-size: .9rem;
}
.p-a11y .wrap { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .5rem; min-height: 44px; }
.p-a11y .label { display: inline-flex; align-items: center; gap: .4rem; opacity: .9; }
.p-a11y .group { display: inline-flex; flex-wrap: wrap; align-items: center; gap: .25rem; }
.p-a11y button {
    background: transparent; border: 1px solid rgba(255, 255, 255, .25); color: #fff; min-height: 36px; min-width: 40px;
    padding: .25rem .65rem; border-radius: var(--p-radius-sm); font: inherit; font-weight: 600; cursor: pointer;
}
.p-a11y button:hover, .p-a11y button[aria-pressed="true"] { background: rgba(255, 255, 255, .16); border-color: #fff; }
.p-a11y button:focus-visible { outline-color: var(--p-accent); }
.p-a11y .kbd { font-family: var(--p-mono); font-size: .75rem; opacity: .75; margin-left: .35rem; }

/* ---------- cabeçalho institucional ---------- */
.p-header { background: var(--p-navy); color: #fff; border-bottom: 3px solid var(--p-primary); }
.p-header .wrap { display: flex; align-items: center; gap: 1rem; padding-top: 1.1rem; padding-bottom: 1.1rem; }
.p-header .brasao {
    height: 64px; width: 64px; object-fit: contain; background: #fff; border-radius: var(--p-radius); padding: 5px; flex: 0 0 auto;
}
.p-header .brasao-fallback {
    height: 64px; width: 64px; display: grid; place-items: center; background: rgba(255, 255, 255, .12); border-radius: var(--p-radius);
    font-size: 1.9rem; flex: 0 0 auto;
}
.p-header .nome { font-weight: 700; font-size: 1.25rem; line-height: 1.2; }
.p-header .sub { font-size: .95rem; opacity: .85; margin-top: .15rem; }
.p-header .tag {
    margin-left: auto; font-family: var(--p-mono); font-size: .75rem; letter-spacing: .08em; text-transform: uppercase;
    border: 1px solid rgba(255, 255, 255, .35); border-radius: var(--p-radius-sm); padding: .3rem .55rem; white-space: nowrap;
}

/* ---------- navegação do portal ---------- */
.p-nav { background: var(--p-surface); border-bottom: 1px solid var(--p-border); }
.p-nav ul { list-style: none; margin: 0 -.9rem; padding: 0; display: flex; gap: .25rem; overflow-x: auto; scrollbar-width: thin; }   /* texto do 1º item alinhado à margem de 16px */
.p-nav a {
    display: inline-flex; align-items: center; gap: .45rem; padding: .85rem .9rem; min-height: 52px; white-space: nowrap;
    color: var(--p-text-2); text-decoration: none; font-weight: 500; border-bottom: 3px solid transparent;
}
.p-nav a:hover { color: var(--p-primary-deep); background: var(--p-surface-subtle); }
.p-nav a[aria-current="page"] { color: var(--p-primary-deep); border-bottom-color: var(--p-primary); font-weight: 600; }
.p-nav .mdi { font-size: 1.2rem; }

/* ---------- cartão de conteúdo: largura total menos a margem de 16px, fundo cinza em volta ---------- */
.p-main { flex: 1 0 auto; padding: 1.25rem 0 2.5rem; }
.p-card {
    background: var(--p-surface); position: relative; overflow: hidden;
    border: 1px solid var(--p-border); border-radius: var(--p-radius);
}
.p-card::before {   /* traço superior: índigo → ciano, bem fino */
    content: ""; position: absolute; left: 0; right: 0; top: 0; height: 3px;
    background: linear-gradient(90deg, var(--p-primary) 0%, var(--p-primary) 70%, var(--p-accent) 100%);
}
.p-card-head { padding: 1.75rem 2rem 1.1rem; border-bottom: 1px solid var(--p-border); display: flex; gap: 1rem; align-items: flex-start; }
.p-card-head .ico {
    width: 48px; height: 48px; flex: 0 0 auto; display: grid; place-items: center; border-radius: var(--p-radius);
    background: var(--p-primary-soft); color: var(--p-primary); font-size: 1.5rem;
}
.p-card-head h1 { font-size: 1.5rem; font-weight: 700; margin: 0; line-height: 1.25; letter-spacing: -.01em; }
.p-card-head .lead { margin: .3rem 0 0; color: var(--p-text-3); font-size: 1.02rem; max-width: 90ch; }
.p-card-body { padding: 1.5rem 2rem 2rem; }

/* links de contexto no topo do conteúdo */
.p-links { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .5rem 1rem; margin-bottom: 1.25rem; font-size: .98rem; }
.p-links a { display: inline-flex; align-items: center; gap: .35rem; min-height: 44px; }

/* bloco informativo (atendimento, orientações) */
.p-info {
    background: var(--p-surface-subtle); border: 1px solid var(--p-border); border-left: 4px solid var(--p-primary);
    border-radius: var(--p-radius); padding: 1rem 1.15rem; margin-bottom: 1.4rem;
}
.p-info .titulo { font-weight: 700; margin-bottom: .5rem; display: flex; align-items: center; gap: .45rem; }
.p-info dl { margin: 0; display: grid; grid-template-columns: max-content 1fr; gap: .35rem .9rem; }
.p-info dt { color: var(--p-text-3); font-weight: 500; display: inline-flex; align-items: center; gap: .4rem; }
.p-info dt .mdi { color: var(--p-primary); font-size: 1.15rem; }
.p-info dd { margin: 0; }
.p-info dd a { word-break: break-word; }
.p-info details summary { cursor: pointer; font-weight: 600; color: var(--p-primary-deep); min-height: 44px; display: flex; align-items: center; }
.p-info details p { margin: .5rem 0 0; }

/* ---------- seções do formulário ---------- */
.p-sec { border: 1px solid var(--p-border); border-radius: var(--p-radius); padding: 1.25rem 1.25rem .75rem; margin-bottom: 1.25rem; background: #fff; }
.p-sec-h { display: flex; align-items: center; gap: .65rem; margin-bottom: 1rem; }
.p-sec-h .num {
    width: 32px; height: 32px; flex: 0 0 auto; display: grid; place-items: center; border-radius: var(--p-radius-sm);
    background: var(--p-navy); color: #fff; font-family: var(--p-mono); font-weight: 700; font-size: .95rem;
}
.p-sec-h h2 { margin: 0; font-size: 1.15rem; font-weight: 700; }
.p-sec-h .hint { margin-left: auto; font-size: .9rem; color: var(--p-muted); }

/* ---------- campos ---------- */
.p-portal .form-label { font-weight: 600; color: var(--p-text-2); margin-bottom: .4rem; font-size: 1rem; }
.p-portal .req { color: var(--p-danger); font-weight: 700; }
.p-portal .form-control, .p-portal .form-select {
    min-height: 48px; font-size: 1.05rem; color: var(--p-text); background: #fff;
    border: 1px solid var(--p-border-control); border-radius: var(--p-radius); padding: .6rem .85rem;
    transition: border-color .15s, box-shadow .15s;
}
.p-portal .form-control, .p-portal .form-select { min-width: 0; max-width: 100%; }
.p-portal .form-control::placeholder { color: #98a2b3; }
.p-portal .form-control:hover, .p-portal .form-select:hover { border-color: #98a2b3; }
.p-portal .form-control:focus, .p-portal .form-select:focus { border-color: var(--p-primary); box-shadow: var(--p-ring); outline: 0; }
.p-portal textarea.form-control { min-height: 150px; line-height: 1.5; }
.p-portal .form-text { color: var(--p-text-3); font-size: .95rem; margin-top: .35rem; }
.p-portal .form-control.is-invalid, .p-portal .form-select.is-invalid { border-color: var(--p-danger); }
.p-portal .invalid-feedback { color: var(--p-danger); font-size: .95rem; }
.p-portal .form-check-input { width: 1.35em; height: 1.35em; margin-top: .15em; border-color: var(--p-border-control); }
.p-portal .form-check-input:checked { background-color: var(--p-primary); border-color: var(--p-primary); }
.p-portal .form-check-input:focus { box-shadow: var(--p-ring); border-color: var(--p-primary); }
.p-portal .form-switch { padding-left: 3.6em; min-height: 1.6em; }
.p-portal .form-switch .form-check-input { width: 2.9em; height: 1.5em; margin-left: -3.6em; margin-top: .05em; cursor: pointer; }
.p-portal .form-check-label { font-size: 1.02rem; padding-left: .25rem; }
.p-portal .input-group-text { border-radius: var(--p-radius); border-color: var(--p-border-control); background: var(--p-surface-subtle); font-weight: 600; }
.p-portal input[type="file"].form-control { padding: .55rem .85rem; }
.p-portal input[type="file"].form-control::file-selector-button {
    background: var(--p-primary-soft); color: var(--p-primary-deep); border: 0; border-radius: var(--p-radius-sm);
    padding: .4rem .8rem; margin-right: .8rem; font-weight: 600; cursor: pointer;
}
.p-portal .text-uppercase.form-control { text-transform: uppercase; }
.p-portal .form-mono { font-family: var(--p-mono); letter-spacing: .12em; font-size: 1.2rem; }

/* ---------- botões ---------- */
.p-portal .btn { border-radius: var(--p-radius); font-weight: 600; min-height: 48px; padding: .6rem 1.25rem; font-size: 1.02rem; display: inline-flex; align-items: center; justify-content: center; gap: .4rem; }
.p-portal .btn-sm { min-height: 40px; padding: .4rem .9rem; font-size: .95rem; }
.p-portal .btn-lg { min-height: 54px; padding: .75rem 1.6rem; font-size: 1.08rem; }
.p-portal .btn-primary { background: var(--p-primary); border-color: var(--p-primary); color: #fff; }
.p-portal .btn-primary:hover, .p-portal .btn-primary:focus { background: var(--p-primary-deep); border-color: var(--p-primary-deep); color: #fff; }
.p-portal .btn-primary:focus-visible { box-shadow: var(--p-ring); }
.p-portal .btn-outline-primary { color: var(--p-primary-deep); border-color: var(--p-primary); background: #fff; }
.p-portal .btn-outline-primary:hover, .p-portal .btn-outline-primary:focus { background: var(--p-primary-soft); color: var(--p-primary-deep); border-color: var(--p-primary); }
.p-portal .btn-outline-secondary { color: var(--p-text-2); border-color: var(--p-border-control); background: #fff; }
.p-portal .btn-outline-secondary:hover, .p-portal .btn-outline-secondary:focus { background: var(--p-surface-subtle); color: var(--p-text); border-color: #98a2b3; }
.p-portal .btn .mdi { font-size: 1.2rem; }
.p-actions { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: .75rem; margin-top: .5rem; }
.p-actions .end { margin-left: auto; display: flex; gap: .75rem; flex-wrap: wrap; }

/* ---------- alertas ---------- */
.p-portal .alert { border-radius: var(--p-radius); border: 1px solid transparent; border-left-width: 4px; padding: .9rem 1.1rem; font-size: 1rem; }
.p-portal .alert .mdi { font-size: 1.2rem; vertical-align: -3px; }
.p-portal .alert-danger { background: var(--p-danger-bg); color: #7a271a; border-color: #fecdca; border-left-color: var(--p-danger); }
.p-portal .alert-success { background: var(--p-success-bg); color: #054f31; border-color: #abefc6; border-left-color: var(--p-success); }
.p-portal .alert-warning { background: var(--p-warning-bg); color: #7a2e0e; border-color: #fedf89; border-left-color: var(--p-warning); }
.p-portal .alert-info { background: var(--p-primary-soft); color: #312e81; border-color: #c7d2fe; border-left-color: var(--p-primary); }
.p-portal .alert-secondary { background: var(--p-surface-subtle); color: var(--p-text-2); border-color: var(--p-border); border-left-color: #98a2b3; }
.p-portal .alert ul { padding-left: 1.2rem; }
.p-portal .alert a { color: inherit; font-weight: 600; }

/* ---------- selos / etiquetas ---------- */
.p-badge {
    display: inline-flex; align-items: center; gap: .3rem; border-radius: var(--p-radius-sm); padding: .2rem .55rem;
    font-size: .88rem; font-weight: 600; line-height: 1.4; border: 1px solid transparent;
}
.p-badge-ok { background: var(--p-success-bg); color: var(--p-success); border-color: #abefc6; }
.p-badge-warn { background: var(--p-warning-bg); color: var(--p-warning); border-color: #fedf89; }
.p-badge-danger { background: var(--p-danger-bg); color: var(--p-danger); border-color: #fecdca; }
.p-badge-neutral { background: var(--p-surface-subtle); color: var(--p-text-2); border-color: var(--p-border); }
.p-badge-primary { background: var(--p-primary-soft); color: var(--p-primary-deep); border-color: #c7d2fe; }

/* ---------- protocolo (recibo e acompanhamento) ---------- */
.p-ticket {
    display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 1rem; margin: 1.25rem 0;
}
.p-ticket .item {
    border: 1px solid var(--p-border); border-radius: var(--p-radius); padding: 1rem 1.1rem; background: var(--p-surface-subtle);
    position: relative; text-align: left;
}
.p-ticket .item .rot { font-size: .82rem; letter-spacing: .08em; text-transform: uppercase; color: var(--p-text-3); font-weight: 600; }
.p-ticket .item .val { font-family: var(--p-mono); font-size: 2rem; font-weight: 700; letter-spacing: .08em; color: var(--p-text); margin: .2rem 0; word-break: break-all; }
.p-ticket .item.destaque .val { color: var(--p-primary-deep); }
.p-ticket .copiar {
    position: absolute; right: .6rem; top: .6rem; border: 1px solid var(--p-border-control); background: #fff; color: var(--p-text-2);
    border-radius: var(--p-radius-sm); min-height: 36px; padding: .2rem .6rem; font-size: .88rem; font-weight: 600; cursor: pointer;
}
.p-ticket .copiar:hover { border-color: var(--p-primary); color: var(--p-primary-deep); }

/* ---------- etapas do andamento ---------- */
.p-steps { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: .5rem; counter-reset: etapa; }
.p-steps li { position: relative; text-align: center; padding: .9rem .5rem .75rem; border: 1px solid var(--p-border); border-radius: var(--p-radius); background: #fff; }
.p-steps li .dot {
    width: 34px; height: 34px; margin: 0 auto .45rem; display: grid; place-items: center; border-radius: 50%;
    border: 2px solid var(--p-border-control); color: var(--p-muted); font-weight: 700; font-family: var(--p-mono);
}
.p-steps li .txt { font-size: .95rem; color: var(--p-text-3); }
.p-steps li.done { border-color: #c7d2fe; background: var(--p-primary-soft); }
.p-steps li.done .dot { background: var(--p-primary); border-color: var(--p-primary); color: #fff; }
.p-steps li.done .txt { color: var(--p-primary-deep); font-weight: 600; }
.p-steps li[aria-current="step"] { border-color: var(--p-primary); box-shadow: var(--p-ring); }
.p-steps li[aria-current="step"] .txt::after { content: " (atual)"; font-weight: 400; }

/* ---------- pares rótulo/valor ---------- */
.p-kv { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: .75rem 1.5rem; margin: 0; }
.p-kv > div { border-bottom: 1px dashed var(--p-border); padding-bottom: .5rem; }
.p-kv dt { font-size: .85rem; text-transform: uppercase; letter-spacing: .06em; color: var(--p-text-3); font-weight: 600; }
.p-kv dd { margin: .1rem 0 0; font-size: 1.02rem; }
.p-kv .full { grid-column: 1 / -1; }
.p-kv .texto { white-space: pre-wrap; line-height: 1.6; }

/* resposta / prorrogação / recursos */
.p-sec.tom-ok { border-color: #abefc6; background: var(--p-success-bg); }
.p-sec.tom-ok .num { background: var(--p-success); }
.p-sec.tom-warn { border-color: #fedf89; background: var(--p-warning-bg); }
.p-sec.tom-warn .num { background: var(--p-warning); }
.p-recurso { border: 1px solid var(--p-border); border-radius: var(--p-radius); padding: .9rem 1rem; margin-bottom: .75rem; background: #fff; }
.p-anexos { list-style: none; margin: 0; padding: 0; }
.p-anexos li { display: flex; align-items: center; gap: .5rem; padding: .5rem 0; border-bottom: 1px dashed var(--p-border); }
.p-anexos li:last-child { border-bottom: 0; }

/* ---------- catálogo de serviços ---------- */
.p-servico {
    display: flex; gap: .85rem; align-items: flex-start; height: 100%; padding: 1rem; text-decoration: none; color: inherit;
    border: 1px solid var(--p-border); border-radius: var(--p-radius); background: #fff; transition: border-color .15s, box-shadow .15s;
}
.p-servico:hover, .p-servico:focus-visible { border-color: var(--p-primary); box-shadow: var(--p-ring); color: inherit; }
.p-servico .ico { width: 42px; height: 42px; flex: 0 0 auto; display: grid; place-items: center; border-radius: var(--p-radius-sm); background: var(--p-primary-soft); color: var(--p-primary); font-size: 1.3rem; }
.p-servico .nome { font-weight: 700; }
.p-servico .desc { color: var(--p-text-3); font-size: .95rem; margin-top: .15rem; }
.p-servico .seta { margin-left: auto; color: var(--p-muted); align-self: center; }

/* ---------- tabelas (sigilo) ---------- */
.p-portal .table { font-size: .98rem; }
.p-portal .table thead th { background: var(--p-surface-subtle); color: var(--p-text-2); font-size: .85rem; text-transform: uppercase; letter-spacing: .05em; border-bottom: 1px solid var(--p-border); }
.p-portal .table td, .p-portal .table th { padding: .65rem .75rem; vertical-align: top; }

/* ---------- mapa do site / listas ---------- */
.p-mapa ul { list-style: none; padding: 0; margin: 0; }
.p-mapa li a { display: inline-flex; align-items: center; gap: .5rem; min-height: 44px; }

/* ---------- rodapé institucional (faixa navy, 4 colunas) ---------- */
.p-footer { background: var(--p-navy-deep); color: #e4e7ff; font-size: .95rem; }
.p-footer .grid { display: grid; grid-template-columns: 1.5fr 1.1fr 1fr 1.2fr; gap: 2rem 2.5rem; padding: 2.25rem 0 1.5rem; }
.p-footer h2 { font-size: .8rem; font-weight: 700; text-transform: uppercase; letter-spacing: .1em; color: #a5b4fc; margin: 0 0 .6rem; }
.p-footer p { margin: 0 0 .2rem; line-height: 1.5; }
.p-footer .brasao { height: 56px; width: 56px; object-fit: contain; background: #fff; border-radius: var(--p-radius); padding: 4px; display: block; margin-bottom: .75rem; }
.p-footer .nome { font-weight: 700; color: #fff; font-size: 1.08rem; }
.p-footer .end { margin-top: .5rem; display: flex; gap: .4rem; align-items: flex-start; }
.p-footer .end .mdi { color: #a5b4fc; flex: 0 0 auto; margin-top: .1rem; }
.p-footer ul { list-style: none; margin: 0; padding: 0; }
.p-footer a { color: #fff; text-decoration: none; display: inline-flex; align-items: center; gap: .45rem; min-height: 40px; }
.p-footer a .mdi { color: #a5b4fc; font-size: 1.1rem; }
.p-footer a:hover { color: #fff; text-decoration: underline; }
.p-footer a:focus-visible { outline-color: var(--p-accent); }
.p-footer .contato { margin: 0; }
.p-footer .contato dt { font-size: .82rem; font-weight: 600; text-transform: uppercase; letter-spacing: .06em; color: #a5b4fc; margin-top: .5rem; }
.p-footer .contato dt:first-child { margin-top: 0; }
.p-footer .contato dd { margin: 0; display: flex; gap: .45rem; align-items: center; min-height: 36px; }
.p-footer .contato dd > .mdi { color: #a5b4fc; }
.p-footer .bottom { border-top: 1px solid rgba(255, 255, 255, .14); padding: 1rem 0 1.25rem; display: flex; flex-wrap: wrap; justify-content: space-between; gap: .5rem 1.5rem; font-size: .88rem; color: #c7d2fe; }
.p-footer .bottom .tech { font-family: var(--p-mono); letter-spacing: .06em; }

/* ============================================================
   Alto contraste (body.hc): preto, branco e amarelo, sem cinzas.
   ============================================================ */
body.p-portal.hc { background: #000; color: #fff; }
body.hc .p-a11y { background: #000; border-bottom: 2px solid #ffd400; }
body.hc .p-header { background: #000; border-bottom-color: #ffd400; }
body.hc .p-header .brasao { background: #fff; }
body.hc .p-nav { background: #000; border-bottom-color: #fff; }
body.hc .p-nav a { color: #fff; }
body.hc .p-nav a[aria-current="page"], body.hc .p-nav a:hover { color: #ffd400; border-bottom-color: #ffd400; background: #000; }
body.hc .p-card, body.hc .p-sec, body.hc .p-info, body.hc .p-recurso, body.hc .p-servico, body.hc .p-ticket .item, body.hc .p-steps li {
    background: #000 !important; color: #fff; box-shadow: none; border: 2px solid #fff;
}
body.hc .p-card::before { background: #ffd400; }
body.hc .p-card-head { border-bottom-color: #fff; }
body.hc .p-card-head .ico, body.hc .p-servico .ico { background: #000; color: #ffd400; border: 1px solid #ffd400; }
body.hc .p-sec-h h2, body.hc .p-card-head h1, body.hc .form-label, body.hc .p-kv dt, body.hc .p-info .titulo { color: #ffd400; }
body.hc .p-sec-h .num { background: #ffd400; color: #000; }
body.hc a, body.hc .p-info dt .mdi { color: #ffd400; }
body.hc .p-card-head .lead, body.hc .form-text, body.hc .p-kv dd, body.hc .p-servico .desc, body.hc .p-steps li .txt, body.hc .p-ticket .item .rot { color: #fff; }
body.hc .p-footer { background: #000; color: #fff; border-top: 2px solid #ffd400; }
body.hc .p-footer h2, body.hc .p-footer a, body.hc .p-footer a .mdi, body.hc .p-footer .contato dt, body.hc .p-footer .end .mdi, body.hc .p-footer .contato dd > .mdi { color: #ffd400; }
body.hc .p-footer .nome, body.hc .p-footer .bottom { color: #fff; }
body.hc .p-footer .bottom { border-top-color: #fff; }
body.hc .form-control, body.hc .form-select, body.hc .input-group-text { background: #000 !important; color: #fff !important; border-color: #fff; }
body.hc .form-control::placeholder { color: #bbb; }
body.hc .form-control:focus, body.hc .form-select:focus { border-color: #ffd400; box-shadow: 0 0 0 3px rgba(255, 212, 0, .5); }
body.hc .btn-primary { background: #ffd400; border-color: #ffd400; color: #000; }
body.hc .btn-outline-primary, body.hc .btn-outline-secondary { background: #000; color: #ffd400; border-color: #ffd400; }
body.hc .alert { background: #000 !important; color: #fff !important; border-color: #ffd400 !important; }
body.hc .p-badge { background: #000; color: #ffd400; border-color: #ffd400; }
body.hc .p-steps li.done { border-color: #ffd400; }
body.hc .p-steps li.done .dot { background: #ffd400; border-color: #ffd400; color: #000; }
body.hc .p-ticket .item .val, body.hc .p-ticket .item.destaque .val { color: #ffd400; }
body.hc .p-ticket .copiar { background: #000; color: #ffd400; border-color: #ffd400; }
body.hc .table, body.hc .table thead th, body.hc .table td { background: #000; color: #fff; border-color: #fff; }
body.hc :focus-visible { outline-color: #ffd400; }

/* ---------- responsivo ---------- */
@media (max-width: 767.98px) {
    body.p-portal { font-size: 1.03rem; }
    .p-header .wrap { padding-top: .9rem; padding-bottom: .9rem; gap: .75rem; }
    .p-header .brasao, .p-header .brasao-fallback { height: 52px; width: 52px; }
    .p-header .nome { font-size: 1.1rem; }
    .p-header .tag { display: none; }
    .p-nav ul { flex-wrap: wrap; overflow: visible; padding: .25rem 0; margin: 0 -.7rem; }   /* nada escondido atrás de rolagem lateral */
    .p-nav a { padding: .6rem .7rem; min-height: 46px; font-size: .98rem; }
    .p-main { padding: .75rem 0 1.5rem; }
    .p-card-head, .p-card-body { padding-left: 1rem; padding-right: 1rem; }
    .p-card-head { padding-top: 1.2rem; }
    .p-card-body { padding-bottom: 1.25rem; }
    .p-card-head h1 { font-size: 1.3rem; }
    .p-sec { padding: 1rem 1rem .5rem; }
    .p-steps { grid-template-columns: repeat(2, 1fr); }
    .p-info dl { grid-template-columns: 1fr; gap: .2rem; }
    .p-info dt { margin-top: .4rem; }
    .p-ticket .item .val { font-size: 1.6rem; }
    .p-actions, .p-actions .end { width: 100%; }
    .p-actions .btn { flex: 1 1 auto; }
    .p-footer .grid { grid-template-columns: 1fr; gap: 1.5rem; padding: 1.75rem 0 1.25rem; }
}
@media (min-width: 768px) and (max-width: 1199.98px) {
    .p-footer .grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 479.98px) {
    .p-steps { grid-template-columns: 1fr 1fr; }
    .p-a11y .wrap { justify-content: center; }
    .p-a11y .label span.txt { display: none; }
}

/* ---------- movimento reduzido ---------- */
@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    .p-portal * { transition: none !important; animation: none !important; }
}

/* ---------- impressão (recibo e acompanhamento) ---------- */
@media print {
    .p-a11y, .p-nav, .p-links, .p-actions, .p-ticket .copiar, .no-print { display: none !important; }
    body.p-portal { background: #fff; font-size: 12pt; display: block; }
    .p-main { padding: 0 0 1rem; }
    .p-card { border: 1px solid #000; border-radius: 0; }
    .p-card::before { display: none; }
    .p-header { background: #fff !important; color: #000 !important; border-bottom: 2px solid #000; }
    .p-header .tag { display: none; }
    .p-ticket .item { background: #fff; border: 1px solid #000; }
    .p-footer { background: #fff !important; color: #000 !important; border-top: 1px solid #000; font-size: 10pt; }
    .p-footer .grid { grid-template-columns: 1fr 1fr; padding: .75rem 0; }
    .p-footer h2, .p-footer .contato dt, .p-footer .nome, .p-footer .bottom { color: #000 !important; }
    .p-footer .brasao { display: none; }
    a { color: #000; text-decoration: none; }
}
