
/* =========================================================
   ONIN V23 — ENTERPRISE DESIGN SYSTEM
   Visual-only redesign. Existing IDs, handlers, routes and
   API/data logic are intentionally untouched.
   ========================================================= */
:root{
  --o-primary:#1d5f8f;
  --o-primary-hover:#174e76;
  --o-primary-soft:#eaf3f9;
  --o-sidebar:#17324d;
  --o-sidebar-2:#1e4566;
  --o-sidebar-text:#e7eef5;
  --o-bg:#f4f6f8;
  --o-surface:#ffffff;
  --o-border:#d8e0e7;
  --o-text:#1f2933;
  --o-muted:#64748b;
  --o-success:#247a4b;
  --o-warning:#9a6500;
  --o-danger:#b42318;
  --o-radius:8px;
  --o-shadow:0 1px 2px rgba(16,24,40,.06),0 4px 12px rgba(16,24,40,.04);
}

*{box-sizing:border-box}
html{background:var(--o-bg)}
body{
  margin:0;
  background:var(--o-bg)!important;
  color:var(--o-text)!important;
  font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif!important;
  font-size:14px!important;
  line-height:1.45!important;
}
a{color:var(--o-primary);text-decoration:none}
a:hover{text-decoration:underline}

/* ---------- Application shell ---------- */
header, .topbar, .header, .app-header, .navbar{
  background:var(--o-surface)!important;
  color:var(--o-text)!important;
  border-bottom:1px solid var(--o-border)!important;
  box-shadow:0 1px 2px rgba(16,24,40,.04)!important;
}
.sidebar,.side-nav,.nav-panel,#sidebar,.menu,.sidenav{
  background:var(--o-sidebar)!important;
  color:var(--o-sidebar-text)!important;
  border:0!important;
}
.sidebar a,.side-nav a,.nav-panel a,#sidebar a,.menu a,.sidenav a{
  color:var(--o-sidebar-text)!important;
}
.sidebar a:hover,.side-nav a:hover,.nav-panel a:hover,#sidebar a:hover,.menu a:hover,.sidenav a:hover{
  background:var(--o-sidebar-2)!important;
  color:#fff!important;
}
.sidebar .active,.side-nav .active,.nav-panel .active,#sidebar .active,.menu .active,.sidenav .active{
  background:#245b83!important;
  color:#fff!important;
  border-left:3px solid #8fc7e8!important;
}

/* ---------- Main content hierarchy ---------- */
main,.main,.content,.page-content,.container,.workspace{
  color:var(--o-text);
}
.page-header,.content-header,.toolbar,.section-header{
  background:transparent!important;
  border:0!important;
}
h1{font-size:25px!important;line-height:1.2!important;font-weight:650!important;letter-spacing:-.02em!important;color:var(--o-text)!important}
h2{font-size:19px!important;font-weight:650!important;color:var(--o-text)!important}
h3{font-size:15px!important;font-weight:650!important;color:var(--o-text)!important}
small,.muted,.text-muted,.help-text{color:var(--o-muted)!important}

/* ---------- Surfaces ---------- */
.card,.panel,.form-card,.box,.section,.modal,.dialog,.drawer,.search-dialog{
  background:var(--o-surface)!important;
  color:var(--o-text)!important;
  border:1px solid var(--o-border)!important;
  border-radius:var(--o-radius)!important;
  box-shadow:var(--o-shadow)!important;
}

/* ---------- Forms: legible, proportionate widths ---------- */
label{color:#334155!important;font-weight:550!important}
input,select,textarea{
  background:#fff!important;
  color:#1f2933!important;
  border:1px solid #cbd5df!important;
  border-radius:6px!important;
  min-height:38px;
  padding:8px 10px!important;
  box-shadow:none!important;
}
textarea{min-height:88px}
input::placeholder,textarea::placeholder{color:#8a98a8!important;opacity:1}
input:focus,select:focus,textarea:focus{
  outline:none!important;
  border-color:var(--o-primary)!important;
  box-shadow:0 0 0 3px rgba(29,95,143,.14)!important;
}
/* semantic field sizing */
input[type="email"]{max-width:360px}
input[type="tel"]{max-width:240px}
input[type="date"],input[type="time"]{max-width:180px}
input[name*="cp"],input[name*="postal"],input[name*="codigoPostal"]{max-width:140px}
input[name*="cif"],input[name*="nif"]{max-width:190px}
input[name*="id"],input[name*="Id"],input[name*="codigo"]{max-width:180px}

/* ---------- Tables ---------- */
table{
  width:100%;
  border-collapse:separate!important;
  border-spacing:0!important;
  background:#fff!important;
  border:1px solid var(--o-border)!important;
  border-radius:8px!important;
  overflow:hidden!important;
  box-shadow:0 1px 2px rgba(16,24,40,.04)!important;
}
thead th,th{
  background:#f7f9fb!important;
  color:#475569!important;
  font-weight:650!important;
  text-align:left;
  border-bottom:1px solid var(--o-border)!important;
  white-space:nowrap;
}
td{
  color:#273444!important;
  background:#fff!important;
  border-bottom:1px solid #edf1f4!important;
}
tbody tr:hover td{background:#f8fbfd!important}
tbody tr:last-child td{border-bottom:0!important}

/* ---------- Buttons ---------- */
button,.btn,.button{
  color:#334155;
  background:#fff;
  border:1px solid #cbd5df;
  border-radius:6px;
  min-height:36px;
  padding:7px 12px;
  font-weight:550;
  cursor:pointer;
}
button:hover,.btn:hover,.button:hover{background:#f4f7fa}
button.primary,.btn-primary,.primary,.action-primary{
  color:#fff!important;
  background:var(--o-primary)!important;
  border-color:var(--o-primary)!important;
}
button.primary:hover,.btn-primary:hover,.primary:hover,.action-primary:hover{
  background:var(--o-primary-hover)!important;
}
button.danger,.btn-danger{color:#fff!important;background:var(--o-danger)!important;border-color:var(--o-danger)!important}

/* ---------- Status badges ---------- */
.badge,.status,.chip,.tag{
  border-radius:999px!important;
  font-size:12px!important;
  font-weight:650!important;
  padding:3px 8px!important;
}
.success,.status-success{color:#17623b!important;background:#e9f6ee!important}
.warning,.status-warning{color:#7a5000!important;background:#fff4d6!important}
.danger,.status-danger{color:#8f1d15!important;background:#fdeceb!important}
.info,.status-info{color:#174d75!important;background:#eaf3f9!important}

/* ---------- Search / lookup dialogs ---------- */
.modal,.dialog,.drawer,.search-dialog{
  z-index:2000!important;
}
.modal-backdrop,.overlay,.backdrop{
  z-index:1900!important;
}
.modal,.dialog,.search-dialog{
  color:var(--o-text)!important;
}
.modal input,.dialog input,.search-dialog input{
  background:#fff!important;color:#1f2933!important;
}

/* ---------- Breadcrumbs ---------- */
.breadcrumb,.breadcrumbs{
  color:var(--o-muted)!important;
  font-size:13px!important;
}
.breadcrumb a,.breadcrumbs a{color:var(--o-primary)!important}

/* ---------- Responsive ---------- */
@media (max-width:900px){
  .form-grid,.two-column,.three-column,.grid{
    grid-template-columns:1fr!important;
  }
}
@media (max-width:760px){
  body{font-size:14px!important}
  .sidebar,.side-nav,.nav-panel,#sidebar,.menu,.sidenav{
    max-width:86vw;
  }
  .content,.main,.page-content,.workspace{
    padding:14px!important;
  }
  .toolbar{gap:8px!important;flex-wrap:wrap!important}
  table{display:block!important;overflow-x:auto!important;white-space:nowrap!important}
  td,th{padding:9px 10px!important}
  input,select,textarea{max-width:100%!important;width:100%}
  input[type="date"],input[type="time"],input[type="tel"],input[type="email"]{width:100%;max-width:100%!important}
  .modal,.dialog,.search-dialog{width:calc(100vw - 24px)!important;max-width:none!important}
}

/* Prevent low-contrast legacy text from surviving the redesign */
.text-white,.white-text{color:#fff!important}
.bg-white{background:#fff!important}
