/* V7PCs: global visual tokens and reusable components. Loaded after module layouts. */
:root {
  color-scheme:light;
  --v7-navy:#17233B; --v7-navy-hover:#203250; --v7-sidebar-text:#DCE5F2;
  --v7-bg:#F4F7FB; --v7-surface:#FFFFFF; --v7-border:#E3E9F2; --v7-input-border:#D7DFEA;
  --v7-heading:#10203A; --v7-text:#24344D; --v7-muted:#718096;
  --v7-blue:#2F80ED; --v7-blue-soft:#EAF3FF; --v7-blue-ink:#1D58A6;
  --v7-success:#22C55E; --v7-success-soft:#EAF8EF; --v7-success-ink:#166534;
  --v7-warning:#F4B740; --v7-warning-soft:#FFF4D6; --v7-warning-ink:#805B10;
  --v7-danger:#EF4444; --v7-danger-soft:#FDECEC; --v7-danger-ink:#B42323;
  --v7-radius:12px; --v7-radius-small:8px; --v7-shadow:0 2px 8px rgb(16 32 58 / 4%);
  --v7-space-1:4px; --v7-space-2:8px; --v7-space-3:12px; --v7-space-4:16px; --v7-space-5:24px; --v7-space-6:32px;
  --v7-font:"Segoe UI",Arial,Helvetica,system-ui,sans-serif;
  --v7-mono:ui-monospace,SFMono-Regular,Consolas,monospace;
  /* Compatibility aliases keep existing module layouts on the same tokens. */
  --paper:var(--v7-bg); --ink:var(--v7-heading); --muted:var(--v7-muted); --line:var(--v7-border);
  --blue:var(--v7-blue-soft); --green:var(--v7-success); --green-ink:var(--v7-success-ink);
  --yellow:var(--v7-warning-soft); --coral:var(--v7-danger); --sans:var(--v7-font); --mono:var(--v7-mono);
}
.v7-ui { margin:0; min-width:320px; background:var(--v7-bg); background-image:none; color:var(--v7-text); font-family:var(--v7-font); font-size:13px; line-height:1.55; }
.v7-ui * { box-sizing:border-box; }
.v7-ui [hidden] { display:none !important; }
.v7-ui h1,.v7-ui h2,.v7-ui h3 { color:var(--v7-heading); overflow-wrap:anywhere; }
.v7-ui h1 { max-width:none; font-size:clamp(22px,2.4vw,28px); line-height:1.25; letter-spacing:-.6px; }
.v7-ui a { text-underline-offset:3px; }
.v7-ui :focus-visible { outline:3px solid var(--v7-blue); outline-offset:3px; }
.v7-ui .app-shell { width:auto; max-width:1600px; margin:0 auto; padding:0 var(--v7-space-5); min-width:0; }
.v7-ui.has-sidebar .app-shell { max-width:none; margin-left:230px; }
.v7-ui .topbar { height:auto; min-height:64px; gap:16px; border-bottom:1px solid var(--v7-border); flex-wrap:wrap; }
.v7-ui .brand { color:var(--v7-heading); }
.v7-ui .brand-mark { color:var(--v7-surface); background:var(--v7-blue); border-radius:8px; }
.v7-ui .account-name { color:var(--v7-muted); font-size:12px; }
.v7-ui .account-nav { margin-left:auto; }
.v7-ui .page-shell { padding:18px 0 28px; min-width:0; min-height:calc(100vh - 118px); }
.v7-ui .breadcrumbs { margin-bottom:16px; color:var(--v7-muted); font:11px var(--v7-font); flex-wrap:wrap; }
.v7-ui .breadcrumbs a:hover { color:var(--v7-blue); }
.v7-ui .footer { font:10px var(--v7-font); color:var(--v7-muted); }
.v7-ui .footer b { color:var(--v7-blue); }
.v7-ui .app-sidebar { position:fixed; inset:0 auto 0 0; z-index:40; width:230px; display:flex; flex-direction:column; gap:20px; padding:24px 14px 16px; background:var(--v7-navy); color:var(--v7-sidebar-text); overflow-y:auto; }
.v7-ui .sidebar-brand { display:flex; align-items:center; gap:12px; padding:0 10px; color:var(--v7-surface); text-decoration:none; font-size:17px; }
.v7-ui .sidebar-brand b { display:block; font-size:10px; font-weight:400; color:var(--v7-sidebar-text); }
.v7-ui .sidebar-caption { color:var(--v7-sidebar-text); font-size:9px; letter-spacing:1px; padding:0 12px; }
.v7-ui .app-navigation { display:grid; gap:4px; }
.v7-ui .app-navigation a { border:0; border-radius:var(--v7-radius-small); min-height:40px; display:flex; align-items:center; padding:9px 12px; color:var(--v7-sidebar-text); text-decoration:none; font-size:12px; line-height:1.4; }
.v7-ui .app-navigation a:hover { background:var(--v7-navy-hover); color:var(--v7-surface); }
.v7-ui .app-navigation .nav-current { background:var(--v7-blue); color:var(--v7-surface); font-weight:600; }
.v7-ui .sidebar-footer { padding:20px 12px 0; margin-top:auto; color:var(--v7-sidebar-text); font-size:10px; }
.v7-ui .sidebar-toggle { display:none; }
.v7-ui .page-heading,.v7-ui .detail-hero,.v7-ui .dashboard-intro { align-items:center; gap:16px; margin-bottom:18px; animation:none; }
.v7-ui .eyebrow,.v7-ui .dashboard-breadcrumb { color:var(--v7-muted); font:10px var(--v7-font); letter-spacing:.5px; }
.v7-ui .eyebrow span,.v7-ui .dashboard-breadcrumb span { color:var(--v7-blue); }
.v7-ui .page-intro,.v7-ui .dashboard-subtitle { color:var(--v7-muted); font-size:12px; line-height:1.6; }
.v7-ui :is(.v7-card,.table-panel,.region-panel,.form-panel,.future-panel,.summary-card,.login-panel,.portal-panel,.user-form-panel,.visit-form-panel,.technician-finance,.expense-table-panel,.report-block,.report-summary,.expense-form-panel,.os-table-panel,.os-form-panel,.os-card,.os-client-card,.dashboard-section,.module,.access-denied,.future-cards article,.finance-footer-actions) { min-width:0; background:var(--v7-surface); border:1px solid var(--v7-border); border-radius:var(--v7-radius); box-shadow:var(--v7-shadow); }
.v7-ui .v7-card { padding:20px; }
.v7-ui .table-heading { padding:16px 18px; }
.v7-ui :is(.section-heading,.table-heading,.portal-panel-heading,.dashboard-section-heading) h2 { font-size:15px; }
.v7-ui :is(.portal-panel-heading,.dashboard-section-heading) > a { color:var(--v7-blue-ink); font-size:11px; }
.v7-ui :is(.metric-strip,.contact-ribbon,.filter-bar,.os-filter-bar,.finance-filters,.period-selector,.filter-form,.close-status,.selected-client,.advance-panel) { border:1px solid var(--v7-border); background:var(--v7-surface); border-radius:var(--v7-radius); padding:12px; gap:10px; }
.v7-ui :is(.filter-bar,.os-filter-bar,.finance-filters) { grid-template-columns:repeat(auto-fit,minmax(130px,1fr)); align-items:end; }
.v7-ui .filter-form { align-items:end; }
.v7-ui .metric-strip,.v7-ui .contact-ribbon { flex-wrap:wrap; }
.v7-ui .metric { min-width:120px; flex:1; }
.v7-ui :is(.metric,.portal-metrics article,.technician-metrics>a,.finance-metric,.finance-indicators>a) span { color:var(--v7-muted); font:10px var(--v7-font); }
.v7-ui :is(.portal-metrics article,.technician-metrics>a,.finance-metric,.finance-indicators>a) { min-width:0; background:var(--v7-surface); border:1px solid var(--v7-border); border-top:3px solid var(--v7-blue); border-radius:var(--v7-radius); padding:16px; box-shadow:var(--v7-shadow); }
.v7-ui :is(.portal-metrics,.technician-metrics,.finance-metrics,.finance-indicators) { gap:12px; }
.v7-ui :is(.portal-metrics,.technician-metrics,.finance-metrics,.finance-indicators) strong { color:var(--v7-heading); font-family:var(--v7-font); font-weight:700; }
.v7-ui :is(.metric-parts,.metric-gross,.metric-expense,.metric-net) { border-top-color:var(--v7-blue); }
.v7-ui .metric-pending { border-top-color:var(--v7-warning); }
.v7-ui .technician-metrics>a.metric-critical { border-top-color:var(--v7-danger); }
.v7-ui .technician-metrics .metric-critical strong { color:var(--v7-danger-ink); }
.v7-ui .accountant-metrics article { border-top-color:var(--v7-blue); }
.v7-ui .dashboard-main { padding:0; }
.v7-ui .dashboard-section { padding:18px; margin-bottom:12px; }
.v7-ui .dashboard-columns { gap:14px; }
.v7-ui .dashboard-metrics { border:0; gap:10px; }
.v7-ui .dashboard-metrics>a { border:1px solid var(--v7-border); border-radius:var(--v7-radius-small); padding:12px; background:var(--v7-bg); min-height:80px; }
.v7-ui .dashboard-metrics>a:hover { background:var(--v7-blue-soft); }
.v7-ui .dashboard-metrics span { color:var(--v7-muted); font:10px var(--v7-font); }
.v7-ui .dashboard-metrics strong { color:var(--v7-heading); font:700 20px var(--v7-font); }
.v7-ui .dashboard-alerts a { border-color:var(--v7-warning); border-radius:var(--v7-radius-small); background:var(--v7-warning-soft); }
.v7-ui .dashboard-alerts a:first-child,.v7-ui .dashboard-metrics .dashboard-alert-critical { border-color:var(--v7-danger); background:var(--v7-danger-soft); }
.v7-ui .dashboard-alerts a:first-child strong,.v7-ui .dashboard-metrics .dashboard-alert-critical strong { color:var(--v7-danger-ink); }
.v7-ui .module { animation:none; }
.v7-ui .module-icon,.v7-ui .summary-icon,.v7-ui .region-symbol,.v7-ui .form-section-heading>span,.v7-ui .empty-mark { background:var(--v7-blue-soft); color:var(--v7-blue-ink); border-radius:var(--v7-radius-small); }
.v7-ui .module strong { color:var(--v7-heading); }
.v7-ui :is(.row-link,.row-actions a,.expense-row-actions a,.client-os-all,.client-context-link,.os-number,.client-name:hover,.pagination a,.notification-actions a,.notification-actions button,.expense-row-actions button,.portal-row:hover strong) { color:var(--v7-blue-ink); }
.v7-ui :is(.portal-row,.client-os-row,.visit-entry) { border-color:var(--v7-border); }
.v7-ui .portal-row strong { font-size:12px; color:var(--v7-text); }
.v7-ui .portal-row small { font-size:11px; color:var(--v7-muted); }
.v7-ui .portal-row time { font-size:11px; color:var(--v7-muted); }
.v7-ui :is(.portal-row-overdue,.visit-overdue-row) { background:var(--v7-danger-soft); }
.v7-ui :is(.portal-row-overdue strong,.portal-row-overdue time,.visit-overdue-row td) { color:var(--v7-danger-ink); }
/* Inputs retain the Django widgets, names, required flags and validation. */
.v7-ui :is(input,select,textarea):not([type=checkbox]):not([type=radio]):not([type=hidden]):not([type=submit]) { min-width:0; max-width:100%; min-height:40px; padding:9px 11px; border:1px solid var(--v7-input-border); border-radius:var(--v7-radius-small); background:var(--v7-surface); color:var(--v7-text); font:13px/1.5 var(--v7-font); }
.v7-ui :is(.field,.visit-form-field,.ticket-field) :is(input,select,textarea):not([type=checkbox]):not([type=radio]) { width:100%; }
.v7-ui select.form-control { appearance:auto; }
.v7-ui textarea { min-height:110px; resize:vertical; }
.v7-ui :is(input,select,textarea):focus { border-color:var(--v7-blue); outline:2px solid var(--v7-blue-soft); outline-offset:1px; box-shadow:none; }
.v7-ui :is(input[type=checkbox],input[type=radio]) { accent-color:var(--v7-blue); width:16px; height:16px; flex-shrink:0; }
.v7-ui :is(.field label,.visit-form-field,.ticket-field label,.filter-form label,.period-selector label,.upload-form label) { color:var(--v7-text); font:600 11px/1.5 var(--v7-font); }
.v7-ui .field-help { color:var(--v7-muted); font-size:11px; }
.v7-ui :is(.field-error,.form-errors,.visit-form-errors,.ticket-form-error,.errorlist,.required-mark) { color:var(--v7-danger-ink); font-size:12px; }
.v7-ui :is(.form-errors,.visit-form-errors) { background:var(--v7-danger-soft); border:1px solid var(--v7-danger); border-radius:var(--v7-radius-small); padding:12px; margin-bottom:14px; }
.v7-ui .errorlist { padding-left:18px; }
.v7-ui .v7-form-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px 16px; }
.v7-ui .v7-form-grid .field-checkbox { display:flex; gap:8px; align-items:center; }
.v7-ui .v7-form-grid .field-checkbox label { margin:0; }
.v7-ui .form-section { border-color:var(--v7-border); }
.v7-ui .form-actions,.v7-ui .visit-form-actions { flex-wrap:wrap; gap:10px; padding-top:18px; }
/* Navigation/selection is blue. Executing or completing an action is green. */
.v7-ui .button,.v7-ui .home-primary-action,.v7-ui .ticket-detail .button { min-height:38px; padding:9px 14px; border:1px solid var(--v7-input-border); border-radius:var(--v7-radius-small); background:var(--v7-surface); color:var(--v7-text); font:600 12px/1.4 var(--v7-font); text-decoration:none; cursor:pointer; }
.v7-ui a.button-primary,.v7-ui .home-primary-action,.v7-ui a.button-dark,.v7-ui .ticket-detail a.button-primary { background:var(--v7-blue); color:var(--v7-surface); border-color:var(--v7-blue); }
.v7-ui button.button-primary,.v7-ui button.button-dark,.v7-ui .ticket-detail button.button-primary { background:var(--v7-success); color:var(--v7-heading); border-color:var(--v7-success); }
.v7-ui .button-danger,.v7-ui .ticket-detail .button-danger { color:var(--v7-danger-ink); background:var(--v7-danger-soft); border-color:var(--v7-danger); }
.v7-ui .button-whatsapp,.v7-ui .ticket-detail .button-whatsapp { color:var(--v7-success-ink); background:var(--v7-success-soft); border-color:var(--v7-success); }
.v7-ui .button:hover,.v7-ui .home-primary-action:hover { transform:none; filter:brightness(.97); }
.v7-ui .text-button { color:var(--v7-blue-ink); font:600 12px var(--v7-font); }
.v7-ui .text-danger { color:var(--v7-danger-ink); }
.v7-ui .button:disabled { opacity:.55; cursor:not-allowed; }
/* Unified semantic badges: original status values stay unchanged. */
.v7-ui :is(.v7-badge,.os-status,.status-badge,.expense-status,.user-status,.region-tag,.ticket-recorded) { display:inline-flex; align-items:center; gap:4px; padding:4px 9px; min-height:24px; border:1px solid transparent; border-radius:30px; background:var(--v7-blue-soft); color:var(--v7-blue-ink); font:600 10px/1.4 var(--v7-font); white-space:nowrap; }
.v7-ui :is(.status-em_atendimento,.status-em_conferencia) { color:var(--v7-surface); background:var(--v7-blue-ink); }
.v7-ui :is(.status-finalizado,.status-faturado_pago,.status-pago,.status-paga,.status-conferido,.status-conferida,.status-realizada,.status-aprovado,.status-aprovada,.status-concluido,.status-concluida,.expense-paid,.user-status-active,.ticket-recorded,.finance-recognized) { color:var(--v7-success-ink); background:var(--v7-success-soft); }
.v7-ui :is(.status-agendado,.status-planejada,.status-aguardando_aprovacao,.status-aguardando_pagamento,.status-pendente,.status-pendente_comprovante,.status-pendente_conferencia,.status-pendente_envio,.status-solicitado,.status-inactive,.finance-unrecognized) { color:var(--v7-warning-ink); background:var(--v7-warning-soft); }
.v7-ui .expense-status { color:var(--v7-warning-ink); background:var(--v7-warning-soft); }
.v7-ui .expense-paid { color:var(--v7-success-ink); background:var(--v7-success-soft); }
.v7-ui :is(.status-atrasada,.status-atrasado,.status-rejeitado,.status-rejeitada,.status-recusado,.status-recusada,.status-cancelado,.status-cancelada,.status-nao_realizada,.expense-overdue,.user-status-inactive) { color:var(--v7-danger-ink); background:var(--v7-danger-soft); }
.v7-ui .notice { padding:13px 16px; border:1px solid var(--v7-blue); border-radius:var(--v7-radius-small); background:var(--v7-blue-soft); color:var(--v7-blue-ink); font-size:12px; }
.v7-ui .notice-success { color:var(--v7-success-ink); background:var(--v7-success-soft); border-color:var(--v7-success); }
.v7-ui :is(.notice-warning,.no-payment-note,.request-approval) { color:var(--v7-warning-ink); background:var(--v7-warning-soft); border-color:var(--v7-warning); border-radius:var(--v7-radius-small); }
.v7-ui :is(.notice-error,.notice-danger) { color:var(--v7-danger-ink); background:var(--v7-danger-soft); border-color:var(--v7-danger); }
.v7-ui .cmv-notice { background:var(--v7-blue-soft); border-color:var(--v7-border); border-radius:var(--v7-radius-small); }
/* All tables use compact headers, light separators and horizontal scroll. */
.v7-ui :is(.table-scroll,.audit-table-wrap) { overflow-x:auto; max-width:100%; }
.v7-ui table { border-collapse:collapse; width:100%; }
.v7-ui thead,.v7-ui .audit-table th { background:var(--v7-bg); }
.v7-ui th,.v7-ui .audit-table th { color:var(--v7-muted); font:600 10px/1.4 var(--v7-font); padding:12px; white-space:nowrap; }
.v7-ui td,.v7-ui .audit-table td { border-color:var(--v7-border); color:var(--v7-text); font-size:12px; padding:13px 12px; }
.v7-ui tbody tr:hover { background:var(--v7-blue-soft); }
.v7-ui .audit-table td a { color:var(--v7-blue-ink); }
.v7-ui :is(.row-actions,.expense-row-actions,.user-actions) { justify-content:flex-end; }
.v7-ui th:last-child,.v7-ui td:has(.row-actions,.expense-row-actions,.user-actions,.row-link) { text-align:right; }
.v7-ui .pagination { flex-wrap:wrap; align-items:center; color:var(--v7-muted); font:11px var(--v7-font); }
.v7-ui .pagination a { padding:6px 10px; border:1px solid var(--v7-border); border-radius:6px; background:var(--v7-surface); }
.v7-ui :is(.empty-state,.portal-empty) { color:var(--v7-muted); }
.v7-ui .empty-state { padding:38px 18px; }
.v7-ui .empty-state p { font-size:12px; }
.v7-ui :is(.visits-filter a,.ticket-tabs a) { color:var(--v7-muted); border-radius:6px; font-size:12px; }
.v7-ui .visits-filter a.filter-current { background:var(--v7-blue-soft); border-color:var(--v7-blue); color:var(--v7-blue-ink); }
.v7-ui .notification-bell { color:var(--v7-blue-ink); }
.v7-ui .notification-bell .notification-bell-icon { border-color:var(--v7-blue-ink); }
.v7-ui .notification-bell .notification-bell-icon::before,.v7-ui .notification-bell .notification-bell-icon::after { background:var(--v7-blue-ink); }
.v7-ui .notification-bell>span:not(.notification-bell-icon) { background:var(--v7-danger); }
.v7-ui .notification-unread { background:var(--v7-blue-soft); }
/* O.S. consumes the global sidebar and palette, retaining its own workspace geometry. */
.v7-ui .ticket-detail { --ticket-border:var(--v7-border); --ticket-muted:var(--v7-muted); --ticket-ink:var(--v7-text); font-family:var(--v7-font); background:transparent; padding:0; }
.v7-ui .ticket-console { display:block; border:0; overflow:visible; }
.v7-ui .ticket-console .ticket-console-content { padding:0; }
.v7-ui .ticket-detail .ticket-card { border-radius:var(--v7-radius); border-color:var(--v7-border); background:var(--v7-surface); box-shadow:var(--v7-shadow); }
.v7-ui .ticket-detail a { color:var(--v7-blue-ink); }
.v7-ui .ticket-detail .button { color:var(--v7-text); }
.v7-ui .ticket-detail .ticket-solution { border-top:3px solid var(--v7-blue); }
.v7-ui .ticket-detail .ticket-tabs a[aria-selected="true"] { color:var(--v7-blue-ink); border-bottom-color:var(--v7-blue); }
.v7-ui .ticket-detail .is-complete .ticket-timeline-dot { background:var(--v7-blue); border-color:var(--v7-blue); }
.v7-ui .ticket-detail .ticket-deadline,.v7-ui .ticket-detail .ticket-sla-card { border-color:var(--v7-border); }
.v7-ui .ticket-detail .sla-atrasado { background:var(--v7-danger-soft); color:var(--v7-danger-ink); border-color:var(--v7-danger); }
.v7-ui .ticket-detail .sla-proximo { background:var(--v7-warning-soft); color:var(--v7-warning-ink); border-color:var(--v7-warning); }
.v7-ui .ticket-detail .sla-atrasado .ticket-recorded { background:var(--v7-danger-soft); color:var(--v7-danger-ink); }
.v7-ui .ticket-detail .sla-proximo .ticket-recorded { background:var(--v7-warning-soft); color:var(--v7-warning-ink); }
.v7-ui .ticket-detail textarea,.v7-ui .ticket-detail select,.v7-ui .ticket-detail input { border-color:var(--v7-input-border); }
.v7-ui .ticket-detail :is(input,select,textarea):focus { border-color:var(--v7-blue); outline:2px solid var(--v7-blue-soft); }
.v7-ui .login-intro h1 { font-size:clamp(32px,4vw,48px); }
.v7-ui .login-stamp { color:var(--v7-border); }
@media(max-width:1200px) {
  .v7-ui.has-sidebar .app-shell { margin-left:210px; padding:0 18px; }
  .v7-ui .app-sidebar { width:210px; }
  .v7-ui .finance-filters { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .v7-ui .dashboard-metrics { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media(max-width:900px) {
  .v7-ui.has-sidebar .app-shell { margin-left:0; }
  .v7-ui .app-sidebar { position:static; width:auto; padding:16px 18px; gap:12px; }
  .v7-ui .sidebar-brand,.v7-ui .sidebar-caption,.v7-ui .sidebar-footer { display:none; }
  .v7-ui .app-navigation { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .v7-ui.js-ready .app-sidebar { display:none; }
  .v7-ui.js-ready.sidebar-open .app-sidebar { display:flex; }
  .v7-ui.js-ready .sidebar-toggle { display:inline-flex; }
  .v7-ui .topbar { flex-wrap:nowrap; }
  .v7-ui .topbar .brand { margin-right:auto; }
  .v7-ui .account-nav { gap:12px; }
  .v7-ui .directory-layout,.v7-ui .detail-workspace,.v7-ui .request-detail-grid { grid-template-columns:1fr; }
  .v7-ui .technician-metrics,.v7-ui .accountant-metrics { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media(max-width:600px) {
  .v7-ui .app-shell,.v7-ui.has-sidebar .app-shell { padding:0 12px; width:auto; }
  .v7-ui .page-shell { padding-top:12px; }
  .v7-ui .page-heading { flex-wrap:wrap; align-items:flex-start; }
  .v7-ui .page-heading h1 { font-size:22px; }
  .v7-ui .account-name,.v7-ui .brand-name b { display:none; }
  .v7-ui .brand-name { font-size:12px; }
  .v7-ui .brand-mark { width:30px; height:30px; }
  .v7-ui .topbar { gap:8px; }
  .v7-ui .sidebar-toggle { padding:8px; min-height:34px; }
  .v7-ui .sidebar-toggle span:last-child { display:none; }
  .v7-ui .app-navigation { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .v7-ui :is(.form-grid,.os-form-panel .form-grid,.expense-form-grid,.user-form-grid,.v7-form-grid,.visit-form-grid,.visit-checklist-grid) { grid-template-columns:1fr; }
  .v7-ui :is(.filter-bar,.os-filter-bar,.finance-filters) { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .v7-ui .filter-bar .sort-control { grid-column:auto; }
  .v7-ui .finance-filters .search-field { grid-column:1/-1; }
  .v7-ui .finance-filters .period-caption { margin:0; }
  .v7-ui .finance-metrics,.v7-ui .finance-indicators,.v7-ui .portal-columns { grid-template-columns:1fr; }
  .v7-ui .dashboard-columns { grid-template-columns:1fr; }
  .v7-ui .table-scroll { overflow-x:auto; }
  .v7-ui table { display:table; min-width:640px; }
  .v7-ui thead { display:table-header-group; }
  .v7-ui tbody { display:table-row-group; padding:0; }
  .v7-ui tr,.v7-ui tbody tr { display:table-row; padding:0; }
  .v7-ui td,.v7-ui td:first-child,.v7-ui td:last-child { display:table-cell; width:auto; text-align:left; }
  .v7-ui td::before { display:none; }
  .v7-ui .table-heading { flex-wrap:wrap; }
  .v7-ui .login-intro { min-height:160px; }
  .v7-ui .footer { flex-wrap:wrap; gap:6px; padding:12px 0; }
}
@media(prefers-reduced-motion:reduce) { .v7-ui *, .v7-ui *::before,.v7-ui *::after { animation:none !important; transition:none !important; scroll-behavior:auto !important; } }
.v7-ui .ticket-detail .ticket-actions { background:transparent; border:0; box-shadow:none; }
.v7-ui .directory-layout,.v7-ui .metric-strip,.v7-ui .detail-hero { animation:none; }
.v7-ui form[method="get"] button:is(.button-primary,.button-dark) { background:var(--v7-blue); border-color:var(--v7-blue); color:var(--v7-surface); }
.v7-ui .table-scroll,.v7-ui .audit-table-wrap { display:block; min-width:0; width:100%; overflow:auto; }
.v7-ui .table-scroll,.v7-ui .audit-table-wrap { contain:paint; }

.v7-ui .menu-icon { width:14px; height:12px; display:inline-block; background:linear-gradient(var(--v7-text),var(--v7-text)) 0 0/100% 2px,linear-gradient(var(--v7-text),var(--v7-text)) 0 5px/100% 2px,linear-gradient(var(--v7-text),var(--v7-text)) 0 10px/100% 2px; background-repeat:no-repeat; }
.v7-ui .region-symbol { font-size:0; }
.v7-ui .region-symbol::before { content:""; width:14px; height:14px; border:1px solid var(--v7-blue); border-radius:50%; box-shadow:inset 0 0 0 3px var(--v7-blue-soft); }

/* Compact customer directory: layout only; other screens keep their spacing. */
.v7-ui.clients-directory-page .topbar { min-height:52px; }
.v7-ui.clients-directory-page .page-shell { padding-top:10px; padding-bottom:16px; }
.v7-ui.clients-directory-page .breadcrumbs { margin-bottom:8px; font-size:10px; }
.v7-ui.clients-directory-page .clients-heading { margin-bottom:10px; gap:10px; }
.v7-ui.clients-directory-page .clients-heading h1 { font-size:22px; }
.v7-ui.clients-directory-page .client-summary { margin-top:3px; font-size:11px; }
.v7-ui.clients-directory-page .clients-heading .button { min-height:34px; padding:7px 12px; }
.v7-ui.clients-directory-page .filter-bar { padding:8px; margin-bottom:10px; gap:8px; }
.v7-ui.clients-directory-page :is(input,select):not([type=checkbox]):not([type=radio]):not([type=hidden]):not([type=submit]) { min-height:34px; padding:6px 10px; font-size:12px; }
.v7-ui.clients-directory-page .filter-bar .button { min-height:34px; padding:7px 12px; }
.v7-ui.clients-directory-page .directory-layout { gap:12px; }
.v7-ui.clients-directory-page .table-heading { padding:11px 14px; }
.v7-ui.clients-directory-page .table-heading h2 { font-size:13px; }
.v7-ui.clients-directory-page th { padding:9px 10px; }
.v7-ui.clients-directory-page td { padding:7px 10px; font-size:11px; }
.v7-ui.clients-directory-page .client-name { font-size:12px; line-height:1.4; }
.v7-ui.clients-directory-page .client-secondary { margin-top:2px; font-size:10px; line-height:1.4; }
.v7-ui.clients-directory-page .region-panel { padding:12px; }
.v7-ui.clients-directory-page .region-panel h2 { font-size:13px; }
.v7-ui.clients-directory-page .region-panel .eyebrow { margin-bottom:4px; }
.v7-ui.clients-directory-page .region-list { margin-top:10px; }
.v7-ui.clients-directory-page .region-list a { min-height:32px; }
.v7-ui.clients-directory-page .region-note { margin-top:8px; }
.v7-ui.clients-directory-page .pagination { padding:10px 14px; }
@media(max-width:600px) {
  .v7-ui.clients-directory-page .clients-heading { align-items:center; }
  .v7-ui.clients-directory-page .clients-heading>.button { margin-left:auto; }
}

/* Mobile navigation overlays the workspace and keeps background actions inert. */
.v7-ui .sidebar-backdrop,.v7-ui .sidebar-close { display:none; }
.v7-ui :is(.field,.visit-form-field,.ticket-field,.upload-form,.period-selector) { min-width:0; }
.v7-ui :is(.portal-row,.notification-item,.detail-actions,.form-actions) { overflow-wrap:anywhere; }
@media(max-width:900px) {
  .v7-ui.js-ready .app-sidebar { position:fixed; inset:0 auto 0 0; width:min(300px,calc(100vw - 60px)); height:100dvh; z-index:60; padding:16px; }
  .v7-ui.js-ready .app-navigation { grid-template-columns:1fr; }
  .v7-ui.js-ready .sidebar-close { display:block; border:1px solid var(--v7-sidebar-text); border-radius:8px; background:transparent; color:var(--v7-sidebar-text); min-height:44px; cursor:pointer; }
  .v7-ui.js-ready .sidebar-backdrop:not([hidden]) { display:block; position:fixed; inset:0; z-index:50; background:rgb(16 32 58 / 50%); border:0; }
  .v7-ui.sidebar-open { overflow:hidden; }
}
@media(max-width:600px) {
  .v7-ui :is(.technician-metrics,.accountant-metrics,.metric-strip,.portal-metrics,.technician-money-metrics,.dashboard-metrics,.dashboard-small-metrics,.helpdesk-summary) { grid-template-columns:1fr; }
  .v7-ui :is(.page-heading,.dashboard-intro,.period-selector,.upload-form,.detail-actions,.finance-footer-actions) { flex-wrap:wrap; }
  .v7-ui .ticket-detail .ticket-action-disclosure form>label { width:100%; }
  .v7-ui .ticket-detail .ticket-action-disclosure input { width:100%; }
  .v7-ui .ticket-detail .ticket-sidebar .ticket-client-data { grid-template-columns:1fr; }
}
