:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;line-height:1.4;color:#181818;background:#e8eef5;--navy:#032d60;--blue:#0176d3;--blue-dark:#014486;--canvas:#e8eef5;--surface:#fff;--surface-soft:#f3f5f8;--text:#181818;--muted:#5c5c5c;--border:#c9c9c9;--green:#2e844a;--danger:#ba0517;--warning:#8a5700;--shadow:0 1px 3px rgba(24,24,24,.14)}

:root[data-theme=dark]{color-scheme:dark;--navy:#d6e9ff;--blue:#5aaef2;--blue-dark:#8ac8f7;--canvas:#101820;--surface:#18232e;--surface-soft:#22303d;--text:#f3f6f9;--muted:#b3c0cc;--border:#465767;--green:#58c77b;--danger:#ff8e9a;--warning:#ffc866;--shadow:0 1px 4px #0008}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;min-width:320px;color:var(--text);background:var(--canvas)}
button,input,textarea{font:inherit;color:inherit}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip-link{position:fixed;z-index:100;top:8px;left:8px;transform:translateY(-150%);padding:8px 12px;color:#fff;background:#032d60}
.skip-link:focus{transform:none}

.app-header{position:sticky;z-index:20;top:0;background:var(--surface);box-shadow:0 1px 3px #0003}
.utility-bar{display:flex;align-items:center;justify-content:space-between;gap:24px;height:54px;padding:0 max(20px,calc((100vw - 1440px)/2));border-bottom:1px solid var(--border)}
.brand{display:flex;align-items:center;gap:9px;color:var(--navy);text-decoration:none}
.brand__mark{display:grid;width:34px;height:34px;place-items:center;border-radius:8px;color:#fff;background:#0176d3;font-weight:800}
.utility-actions,.theme-toggle{display:flex;align-items:center;gap:9px}
.icon-button{min-height:34px;padding:4px 9px;border:1px solid var(--border);border-radius:4px;color:var(--text);background:var(--surface);cursor:pointer}
.theme-label{font-size:.75rem;font-weight:650}
.user-avatar{display:grid;width:30px;height:30px;place-items:center;border-radius:50%;color:#fff;background:#032d60;font-size:.67rem;font-weight:700}
.module-nav{display:flex;min-height:42px;padding:0 max(20px,calc((100vw - 1440px)/2));overflow-x:auto}
.module-nav a{display:flex;align-items:center;padding:0 18px;border-bottom:3px solid transparent;color:var(--text);font-size:.84rem;text-decoration:none;white-space:nowrap}
.module-nav a:hover{background:var(--surface-soft)}
.module-nav a.active{border-color:var(--blue);color:var(--navy);font-weight:700}

.page-shell{width:min(calc(100% - 32px),1440px);margin:18px auto 42px}
.app-view[hidden]{display:none}
.record-header{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:15px 18px;border:1px solid var(--border);border-radius:4px;background:var(--surface);box-shadow:var(--shadow)}
.record-identity{display:flex;align-items:center;gap:13px}
.record-icon{display:grid;width:44px;height:44px;place-items:center;border-radius:4px;color:#fff;background:#ff9a3c;font-size:1.3rem}
.record-icon--blue{background:#0176d3}
.record-type,.panel__eyebrow{margin:0;color:var(--muted);font-size:.67rem;font-weight:700;letter-spacing:.05em}
.record-header h1{margin:1px 0;font-size:1.3rem;font-weight:600}
.record-header p:not(.record-type){margin:0;color:var(--muted);font-size:.78rem}
.record-actions{display:flex;gap:8px}

.workspace{display:grid;grid-template-columns:minmax(0,2.25fr) minmax(250px,.75fr);gap:14px;margin-top:14px}
.panel{border:1px solid var(--border);border-radius:4px;background:var(--surface);box-shadow:var(--shadow)}
.panel__header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:13px 16px;border-bottom:1px solid var(--border)}
.panel__header h2{margin:2px 0;font-size:1rem}
.panel__header p:not(.panel__eyebrow){margin:0;color:var(--muted);font-size:.76rem}
.form-panel form{padding:0 16px 14px}
.form-section{margin:0;padding:18px 0;border:0;border-bottom:1px solid var(--border)}
.form-section legend{width:100%;margin-bottom:13px;font-size:.82rem;font-weight:700}
.section-number{display:inline-grid;width:22px;height:22px;margin-right:7px;place-items:center;border-radius:3px;color:#fff;background:#0176d3;font-size:.7rem}
.optional-label{margin-left:5px;color:var(--muted);font-size:.68rem;font-weight:500}
.form-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:11px 14px}
.field{display:flex;min-width:0;grid-column:span 5;flex-direction:column}
.field--wide{grid-column:span 7}
.field--full{grid-column:1/-1}
.address-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:11px 14px;align-items:start}
.field--cep{grid-column:span 3}
.field--number{grid-column:span 2}
.address-search{grid-column:span 2;align-self:start;margin-top:22px}
.field--street{grid-column:span 7}
.field--city{grid-column:span 3}
.field--uf{grid-column:span 2;min-width:72px;align-self:start}
.field--uf input{text-align:center;letter-spacing:.08em;text-transform:uppercase}
.field-note{grid-column:1/-1;margin:0;padding:9px 11px;border-left:3px solid #8e9cac;color:var(--muted);background:var(--surface-soft);font-size:.73rem}
.address-number-note{margin:0 0 12px}
label{margin-bottom:4px;font-size:.75rem;font-weight:650}
input,textarea{width:100%;min-height:34px;padding:6px 9px;border:1px solid #747474;border-radius:4px;background:var(--surface);font-size:.82rem}
textarea{resize:vertical}
input[readonly]{background:var(--surface-soft);cursor:not-allowed}
input:focus,textarea:focus{border-color:var(--blue);box-shadow:0 0 0 2px color-mix(in srgb,var(--blue) 30%,transparent);outline:none}
input[aria-invalid=true],textarea[aria-invalid=true]{border-color:var(--danger)}
.field-error{min-height:15px;margin-top:2px;color:var(--danger);font-size:.68rem}
.field-help{color:var(--muted);font-size:.67rem}
.actions{display:flex;justify-content:flex-end;gap:7px;padding-top:14px}

.button{display:inline-flex;align-items:center;justify-content:center;min-height:32px;padding:5px 13px;border:1px solid transparent;border-radius:4px;cursor:pointer;font-size:.76rem;font-weight:650;text-decoration:none}
.button:focus-visible,.module-nav a:focus-visible,.brand:focus-visible,.icon-button:focus-visible{outline:3px solid #90c9f5;outline-offset:2px}
.button:disabled{opacity:.6}
.button.is-loading{position:relative;color:transparent!important}
.button.is-loading::after{content:"";position:absolute;width:13px;height:13px;margin:auto;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;color:var(--blue-dark);animation:button-spin .6s linear infinite}
@media(prefers-reduced-motion:reduce){.button.is-loading::after{animation-duration:1.6s}}
@keyframes button-spin{to{transform:rotate(360deg)}}
.button--primary{color:#fff;background:#0176d3}
.button--primary:hover{background:#014486}
.button--secondary{border-color:var(--border);color:var(--blue-dark);background:var(--surface)}
.button--danger{border-color:color-mix(in srgb,var(--danger) 50%,transparent);color:var(--danger);background:var(--surface)}
.button--small{min-height:27px;padding:3px 9px;font-size:.7rem}

.guidance-panel{align-self:start}
.guidance-list{margin:0;padding:0;list-style:none}
.guidance-list li{display:flex;flex-direction:column;gap:3px;padding:14px 16px;border-bottom:1px solid var(--border)}
.guidance-list strong{font-size:.8rem}
.guidance-list span{color:var(--muted);font-size:.72rem}
.guidance-link{display:block;margin:14px;padding:11px;border-radius:4px;color:var(--blue-dark);background:var(--surface-soft);font-size:.76rem;font-weight:650;text-decoration:none}

.metrics{display:grid;grid-template-columns:repeat(4,1fr);margin-top:14px;border:1px solid var(--border);background:var(--surface)}
.metric{min-height:74px;padding:12px 18px;border-right:1px solid var(--border)}
.metric:last-child{border:0}
.metric span{display:block;color:var(--muted);font-size:.74rem}
.metric strong{display:block;margin-top:3px;color:var(--navy);font-size:1.55rem;font-weight:500}
.records-panel{margin-top:14px}
.audit-filters{display:flex;align-items:end;gap:8px}
.audit-filters label{display:grid;gap:4px;color:var(--muted);font-size:.68rem;font-weight:650}
.audit-filters input,.audit-filters select{min-height:32px;min-width:130px}
.pagination{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:12px 16px;border-top:1px solid var(--border);color:var(--muted);font-size:.76rem}
.table-wrapper{overflow-x:auto}
.table-wrapper:focus-visible{outline:3px solid #90c9f5}
table{width:100%;border-collapse:collapse}
th,td{padding:9px 12px;border-bottom:1px solid var(--border);text-align:left;vertical-align:middle;font-size:.76rem}
tbody tr:hover{background:var(--surface-soft)}
th{height:32px;color:var(--text);background:var(--surface-soft);font-size:.67rem;text-transform:uppercase}
.table-actions{width:145px;text-align:right}
.row-actions{display:flex;justify-content:flex-end;gap:5px}
.cell-secondary{display:block;margin-top:2px;color:var(--muted);font-size:.68rem}
.cell-notes{max-width:250px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.status-pill{color:var(--green);font-size:.69rem;font-weight:650}
.status-pill:before{display:inline-block;width:7px;height:7px;margin-right:5px;border-radius:50%;background:var(--green);content:""}
.status-pill--pending{color:var(--warning)}
.status-pill--pending:before{background:#fe9339}
.status{display:none;margin:10px 16px;padding:8px 10px;border-radius:3px;font-size:.76rem}
.status--success{display:block;color:#166534;background:#edf9f0}
.status--error{display:block;color:#8e0010;background:#fff0f1}
.status--warning{display:block;color:#6f4e09;background:#fff8e6}
.hidden{display:none!important}
.empty-state{margin:0;padding:30px;text-align:center;color:var(--muted)}

.dialog{width:min(440px,calc(100% - 32px));padding:0;border:1px solid var(--border);border-radius:6px;color:var(--text);background:var(--surface);box-shadow:0 16px 50px #0006}
.dialog::backdrop{background:#032d6088}
.dialog form{padding:0}
.dialog__header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--border)}
.dialog h2{margin:0;font-size:1rem}
.dialog p{margin:0;padding:18px 16px;color:var(--muted);font-size:.84rem}
.dialog__close{border:0;color:var(--muted);background:transparent;cursor:pointer;font-size:1.5rem}
.dialog__actions{display:flex;justify-content:flex-end;gap:8px;padding:12px 16px;border-top:1px solid var(--border)}

@media(max-width:1000px){.workspace{grid-template-columns:1fr}
.guidance-panel{display:none}
.metrics{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:680px){.app-header{position:static}
.utility-bar{padding-inline:12px}
.page-shell{width:calc(100% - 16px);margin-top:8px}
.record-header{align-items:flex-start;flex-direction:column}
.record-actions{width:100%}
.record-actions>*{flex:1}
.field,.field--wide{grid-column:1/-1}
.address-grid{grid-template-columns:2fr 1fr;gap:10px}
.field--cep{grid-column:1}
.field--number{grid-column:2}
.address-search{grid-column:1/-1;margin-top:0}
.field--street,.field--city{grid-column:1/-1}
.field--uf{grid-column:1;width:78px}
.row-actions{flex-direction:column}
.module-nav{padding:0}
.module-nav a{padding-inline:13px}
.audit-filters{width:100%;align-items:stretch;flex-direction:column}
.audit-filters input,.audit-filters select{width:100%}
}
@media(max-width:420px){.brand__name,.theme-label{display:none}
.metrics{grid-template-columns:1fr 1fr}
.metric{padding:10px}
.record-actions{align-items:stretch;flex-direction:column}
.actions{flex-direction:column-reverse}
.actions .button{width:100%}
}
.field--small{grid-column:span 2}
.field--disabled{opacity:.65}
.input-action{display:flex;gap:6px}
select{width:100%;min-height:34px;padding:6px 9px;border:1px solid #747474;border-radius:4px;color:var(--text);background:var(--surface);font-size:.82rem}
select:focus{border-color:var(--blue);outline:2px solid #90c9f5}
@media(max-width:680px){.field--small{grid-column:1/-1}.input-action{align-items:stretch;flex-direction:column}}
.inline-editor,.address-meta{display:flex;align-items:end;gap:12px;margin-bottom:12px}
.inline-editor .field{flex:1}.inline-editor .field--wide{flex:2}
.check-field{display:flex;align-items:center;gap:7px;min-height:34px;margin:0}
.check-field input{width:auto;min-height:auto}
.subtable-wrapper{overflow-x:auto;border:1px solid var(--border);border-radius:4px}
.inline-actions{display:flex;justify-content:flex-end;margin:12px 0}
.address-extra{margin-top:10px}
@media(max-width:680px){.inline-editor,.address-meta{align-items:stretch;flex-direction:column}.inline-editor .field{width:100%}}
.section-feedback{display:none;margin:10px 0;padding:9px 11px;border-left:3px solid var(--danger);color:var(--danger);background:var(--surface-soft);font-size:.76rem}
.section-feedback--visible{display:block}
.section-feedback--success{border-left-color:var(--green);color:var(--green)}
.section-feedback--warning{border-left-color:var(--warning);color:var(--warning)}
.section-feedback--info{border-left-color:var(--blue);color:var(--blue-dark)}
.row-error{outline:2px solid var(--danger);outline-offset:-2px;background:color-mix(in srgb,var(--danger) 8%,var(--surface))}

/* Sprint 7 — resumo de erros no topo (padrão GOV.UK error summary) */
.error-summary{margin:14px 0;padding:14px 16px;border:2px solid var(--danger);border-radius:4px;background:color-mix(in srgb,var(--danger) 6%,var(--surface))}
.error-summary:focus{outline:3px solid #90c9f5;outline-offset:2px}
.error-summary__title{margin:0 0 8px;color:var(--danger);font-size:.9rem}
.error-summary__list{margin:0;padding-left:18px;font-size:.78rem}
.error-summary__list li{margin:3px 0}
.error-summary__list a{color:var(--danger);font-weight:650}

/* Feedback inline das máscaras de contato */
.field-inline-feedback{min-height:14px;margin-top:3px;font-size:.68rem;font-weight:650;color:var(--muted)}
.field-inline-feedback--above{display:block;margin:0 0 5px}
.field-inline-feedback--ok{color:var(--green)}
.field-inline-feedback--pending{color:var(--warning)}

/* Densidade e zebra nas tabelas */
th,td{padding:8px 12px}
#establishments-list tr:nth-child(even),#audit-list tr.audit-row:nth-of-type(odd){background:color-mix(in srgb,var(--surface-soft) 45%,var(--surface))}
#establishments-list tr:hover,#audit-list tr.audit-row:hover{background:var(--surface-soft)}

/* Skeleton loading */
.skeleton{display:block;width:100%;height:12px;border-radius:3px;background:linear-gradient(90deg,var(--surface-soft) 25%,color-mix(in srgb,var(--border) 45%,var(--surface-soft)) 37%,var(--surface-soft) 63%);background-size:400% 100%;animation:skeleton-shimmer 1.4s ease infinite}
.skeleton-row td{padding:11px 12px}
.skeleton-row:hover{background:transparent}
@keyframes skeleton-shimmer{0%{background-position:100% 50%}100%{background-position:0 50%}}
@media(prefers-reduced-motion:reduce){.skeleton{animation:none}}

/* Auditoria — badge de operação e diff expansível */
.audit-badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:.64rem;font-weight:700;letter-spacing:.04em;border:1px solid transparent}
.audit-badge--inclusao,.audit-badge--adicionado{color:var(--green);background:color-mix(in srgb,var(--green) 14%,var(--surface));border-color:color-mix(in srgb,var(--green) 40%,transparent)}
.audit-badge--edicao,.audit-badge--alterado{color:var(--blue-dark);background:color-mix(in srgb,var(--blue) 14%,var(--surface));border-color:color-mix(in srgb,var(--blue) 40%,transparent)}
.audit-badge--exclusao,.audit-badge--removido{color:var(--danger);background:color-mix(in srgb,var(--danger) 12%,var(--surface));border-color:color-mix(in srgb,var(--danger) 40%,transparent)}
.audit-detail>td{background:var(--surface-soft);padding:14px 16px}
.diff-table{width:100%;border-collapse:collapse;margin:6px 0 4px}
.diff-table th,.diff-table td{padding:6px 10px;border:1px solid var(--border);font-size:.72rem;vertical-align:top}
.diff-table thead th{background:var(--surface);text-transform:uppercase;font-size:.62rem}
.diff-table tbody th{text-align:left;width:32%;background:var(--surface)}
.diff-before{color:var(--danger);text-decoration:line-through;text-decoration-color:color-mix(in srgb,var(--danger) 55%,transparent)}
.diff-after{color:var(--green);font-weight:650}
.diff-group{margin-top:12px}
.diff-group h4{margin:0 0 4px;font-size:.72rem;text-transform:uppercase;color:var(--muted)}
.diff-child{margin:6px 0}
.diff-child__head{margin:0;font-size:.72rem;font-weight:650}
.diff-empty{margin:4px 0;color:var(--muted);font-size:.72rem}
