:root {
  --nexus-navy: #102a43;
  --nexus-navy-2: #183b56;
  --nexus-blue: #176b87;
  --nexus-teal: #0f766e;
  --nexus-teal-light: #22a6a1;
  --nexus-amber: #d97706;
  --nexus-danger: #c2413b;
  --nexus-canvas: #f4f7fa;
  --nexus-surface: #fff;
  --nexus-surface-soft: #edf3f7;
  --nexus-border: #d9e2ec;
  --nexus-text: #243b53;
  --nexus-muted: #627d98;
  --nexus-radius-sm: .55rem;
  --nexus-radius: .8rem;
  --nexus-radius-lg: 1.1rem;
  --nexus-shadow: 0 10px 30px rgba(16, 42, 67, .07);
  --app-bg: var(--nexus-canvas);
  --app-surface: var(--nexus-surface);
  --app-surface-muted: var(--nexus-surface-soft);
  --app-border: var(--nexus-border);
  --app-text: var(--nexus-text);
  --app-muted: var(--nexus-muted);
  --app-primary: var(--nexus-blue);
  --app-primary-soft: #e3f1f5;
  --bs-primary: var(--nexus-blue);
  --bs-primary-rgb: 23, 107, 135;
  --bs-body-color: var(--nexus-text);
  --bs-body-bg: var(--nexus-canvas);
  --bs-border-color: var(--nexus-border);
  --bs-link-color: var(--nexus-blue);
  --bs-link-hover-color: var(--nexus-navy);
  --bs-font-sans-serif: Inter, "Segoe UI", system-ui, -apple-system, sans-serif;
}

html { background: var(--nexus-canvas); }
body { color: var(--nexus-text); font-family: var(--bs-font-sans-serif); -webkit-font-smoothing: antialiased; }

.app-header {
  background: rgba(255,255,255,.94) !important;
  border-color: var(--nexus-border);
  box-shadow: 0 4px 18px rgba(16,42,67,.055);
}
.app-brand { padding-left: 1rem !important; }
.app-brand-logo { width: auto; max-width: 185px; max-height: 42px; }
.app-page-context { position: relative; padding-left: 1.15rem; }
.app-page-context::before { content:""; position:absolute; left:0; top:20%; width:1px; height:60%; background:var(--nexus-border); }
.app-page-kicker { color:var(--nexus-teal); font-size:.68rem; font-weight:750; letter-spacing:.1em; text-transform:uppercase; }
.app-page-title { color:var(--nexus-navy); font-weight:720; }
.app-header-icon-btn { border-radius:var(--nexus-radius-sm); }

.sidebar { background:var(--nexus-navy); border:0; scrollbar-color:#486581 transparent; }
.sidebar .nav-link { color:#d9e2ec; border-radius:.65rem; font-size:.92rem; }
.sidebar .nav-link .bi:not(.bi-chevron-down) { color:#9fb3c8; }
.sidebar .nav-link:hover { color:#fff; background:rgba(255,255,255,.075); }
.sidebar .nav-link:hover .bi:not(.bi-chevron-down) { color:#fff; }
.sidebar .nav-link.active { color:#fff; background:linear-gradient(90deg,rgba(34,166,161,.28),rgba(23,107,135,.14)); box-shadow:inset 3px 0 0 var(--nexus-teal-light); }
.sidebar .nav-link.active .bi:not(.bi-chevron-down) { color:#5eead4; }
.sidebar hr { border-color:rgba(217,226,236,.14); }
.sidebar .app-sidebar-section-title { color:#829ab1; letter-spacing:.11em; }
.sidebar .btn-toggle-nav a { color:#b8c7d5; }
.sidebar .btn-toggle-nav a.active { color:#7ee2db; }
.sidebar .app-nav-summary { color:#bcccdc !important; background:rgba(255,255,255,.045); }
.sidebar .app-nav-summary .text-muted { color:#9fb3c8 !important; }
.app-sidebar-flyout { background:var(--nexus-navy); border-color:var(--nexus-navy-2); }
.app-sidebar-flyout-title { color:#9fb3c8; }

main { background:var(--nexus-canvas); }
h1, h2, h3, h4, h5, h6 { color:var(--nexus-navy); }
.card, .ux-card, .modal-content, .offcanvas { border-color:var(--nexus-border) !important; border-radius:var(--nexus-radius) !important; box-shadow:var(--nexus-shadow); }
.card-header, .ux-card-header, .modal-header { background:#fff; border-color:var(--nexus-border); }
.table { --bs-table-bg:transparent; --bs-table-color:var(--nexus-text); }
.table thead th { color:var(--nexus-muted) !important; background:#f6f9fb !important; font-size:.74rem !important; letter-spacing:.055em !important; text-transform:uppercase; }
.table > :not(caption) > * > * { border-bottom-color:#e7edf3; }
.table-hover > tbody > tr:hover > * { --bs-table-bg-state:#f0f7f8; }
.form-label { color:var(--nexus-navy) !important; font-size:.84rem; font-weight:680 !important; }
.form-control, .form-select, .bootstrap-select > .dropdown-toggle { border-color:#cbd6e2; border-radius:var(--nexus-radius-sm); min-height:42px; }
.form-control:focus, .form-select:focus { border-color:var(--nexus-teal-light); box-shadow:0 0 0 .2rem rgba(34,166,161,.16); }
.btn { border-radius:var(--nexus-radius-sm); font-weight:650; }
.btn-primary { background:var(--nexus-blue); border-color:var(--nexus-blue); box-shadow:0 4px 12px rgba(23,107,135,.16); }
.btn-primary:hover, .btn-primary:focus { background:#125a73; border-color:#125a73; }
.btn-outline-primary { color:var(--nexus-blue); border-color:rgba(23,107,135,.45); }
.btn-outline-primary:hover { background:var(--nexus-blue); border-color:var(--nexus-blue); }
.badge { font-weight:650; letter-spacing:.01em; }
.text-primary { color:var(--nexus-blue) !important; }
.bg-primary, .text-bg-primary { background-color:var(--nexus-blue) !important; }
.progress-bar { background:linear-gradient(90deg,var(--nexus-blue),var(--nexus-teal-light)); }
.dropdown-menu { border-color:var(--nexus-border); border-radius:var(--nexus-radius); box-shadow:0 18px 42px rgba(16,42,67,.15); }
.dropdown-item { border-radius:.4rem; }
.dropdown-item:active { background:var(--nexus-blue); }

.nexus-eyebrow { color:var(--nexus-teal); font-size:.72rem; font-weight:800; letter-spacing:.12em; text-transform:uppercase; }
.nexus-page-title { margin:0; color:var(--nexus-navy); font-size:clamp(1.55rem,2vw,2.15rem); font-weight:760; letter-spacing:-.025em; }
.nexus-page-subtitle { margin:.3rem 0 0; color:var(--nexus-muted); }
.nexus-status-dot { display:inline-block; width:.48rem; height:.48rem; border-radius:50%; background:#2fbd91; box-shadow:0 0 0 4px rgba(47,189,145,.12); }

@media (max-width:767.98px) {
  .app-brand-logo { max-width:132px; max-height:36px; }
  .app-brand { padding-left:0 !important; }
  .sidebar { box-shadow:12px 0 32px rgba(16,42,67,.22); }
  main { padding-left:.75rem !important; padding-right:.75rem !important; }
}

/* Cruscotto personale. */
.nexus-quick-links { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:.75rem; margin:-.35rem 0 1rem; }
.nexus-quick-links > a { display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:.7rem; min-width:0; padding:.8rem .9rem; border:1px solid var(--nexus-border); border-radius:.8rem; background:#fff; color:var(--nexus-text); text-decoration:none; box-shadow:0 7px 20px rgba(16,42,67,.045); transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease; }
.nexus-quick-links > a:hover { transform:translateY(-2px); border-color:#a9cbd3; box-shadow:0 12px 26px rgba(16,42,67,.08); }
.nexus-quick-links > a > .bi { color:#829ab1; }
.nexus-quick-links strong,.nexus-quick-links small { display:block; min-width:0; }
.nexus-quick-links strong { color:var(--nexus-navy); font-size:.9rem; }
.nexus-quick-links small { margin-top:.05rem; overflow:hidden; color:var(--nexus-muted); font-size:.75rem; text-overflow:ellipsis; white-space:nowrap; }
.nexus-quick-icon { display:grid; place-items:center; width:36px; height:36px; border-radius:.65rem; background:#e7f2f4; color:var(--nexus-blue); }
.nexus-page-index .timesheet-shell { grid-template-columns:minmax(0,1.65fr) minmax(290px,.72fr); }
.nexus-page-index .day-progress-card { border-color:#c9dce4; background:linear-gradient(135deg,#fff,#f2f8f9); }
.nexus-page-index .task-panel { margin-top:1rem; }
@media (max-width:1199.98px) { .nexus-quick-links { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:575.98px) { .nexus-quick-links { grid-template-columns:1fr; } }

@media (prefers-reduced-motion:reduce) { *,*::before,*::after { scroll-behavior:auto !important; transition-duration:.01ms !important; animation-duration:.01ms !important; } }

/* --------------------------------------------------------------------------
   NEXUS application shell
   -------------------------------------------------------------------------- */
.nexus-app { min-height:100vh; background:var(--nexus-canvas); }
.nexus-app > .container-fluid > .row { min-height:calc(100vh - var(--app-header-height)); }
.nexus-app main { position:relative; isolation:isolate; padding-top:2rem !important; }
.nexus-app main::before {
  content:""; position:absolute; z-index:-1; inset:0 0 auto; height:190px; pointer-events:none;
  background:linear-gradient(180deg,rgba(227,241,245,.85),rgba(244,247,250,0));
  mask-image:linear-gradient(#000,transparent);
}
.nexus-app main > .container-fluid { max-width:1680px; margin-inline:auto; }

.app-header { height:var(--app-header-height); z-index:1040; }
.app-brand { height:var(--app-header-height); border-right:1px solid var(--nexus-border); }
.app-header-actions { gap:.2rem; }
.app-create-btn { min-height:40px; padding-inline:1rem; }
.app-create-menu { width:330px; padding:.7rem; }
.app-create-menu-head { display:grid; gap:.15rem; padding:.45rem .55rem .8rem; border-bottom:1px solid var(--nexus-border); }
.app-create-menu-head strong { color:var(--nexus-navy); }
.app-create-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.35rem; padding-top:.55rem; }
.app-create-grid .dropdown-item { display:flex; align-items:center; gap:.65rem; min-height:48px; padding:.65rem; color:var(--nexus-text); }
.app-create-grid .dropdown-item i { display:grid; place-items:center; width:30px; height:30px; border-radius:.5rem; background:#e3f1f5; color:var(--nexus-blue); }
.app-create-grid .dropdown-item:hover { background:#f1f6f8; }

/* Sidebar: primo livello per aree, secondo livello per funzionalità. */
.sidebar { padding-bottom:2rem; }
.sidebar > .position-sticky { padding-top:.7rem !important; }
.nexus-sidebar-context { display:flex; align-items:center; gap:.7rem; margin:.1rem .7rem .55rem; padding:.7rem; border:1px solid rgba(255,255,255,.08); border-radius:.75rem; background:linear-gradient(135deg,rgba(34,166,161,.14),rgba(255,255,255,.03)); }
.nexus-sidebar-context-mark { display:grid; flex:0 0 34px; width:34px; height:34px; place-items:center; border-radius:.6rem; background:rgba(94,234,212,.13); color:#7ee2db; }
.nexus-sidebar-context-copy { display:grid; min-width:0; }
.nexus-sidebar-context-copy strong { overflow:hidden; color:#f0f4f8; font-size:.8rem; text-overflow:ellipsis; white-space:nowrap; }
.nexus-sidebar-context-copy small { display:flex; align-items:center; gap:.45rem; color:#9fb3c8; font-size:.68rem; }
.nexus-sidebar-context-copy .nexus-status-dot { width:.35rem; height:.35rem; box-shadow:none; }
.sidebar .app-sidebar-toggle-row { margin-bottom:.5rem !important; }
.sidebar .app-sidebar-toggle { border-color:rgba(255,255,255,.14); color:#bcccdc; background:rgba(255,255,255,.04); }
.sidebar .app-sidebar-toggle:hover { color:#fff; background:rgba(255,255,255,.1); }
.sidebar .app-sidebar-section-title { position:relative; margin-top:.35rem; padding:1rem 1.2rem .4rem; }
.sidebar .app-sidebar-section-title::after { content:""; position:absolute; right:1rem; bottom:.52rem; left:1.2rem; height:1px; background:linear-gradient(90deg,rgba(159,179,200,.2),transparent); }
.sidebar .nav-link { min-height:44px; margin:2px .65rem; padding:.62rem .75rem; }
.sidebar > * > .nav > li > .nav-link { font-weight:650; }
.sidebar .btn-toggle-nav { margin:.1rem .65rem .45rem; padding:.25rem 0 .35rem; border:1px solid rgba(255,255,255,.065); border-radius:.75rem; background:rgba(4,26,45,.28); }
.sidebar .btn-toggle-nav ul { margin:0; }
.sidebar .btn-toggle-nav a { min-height:38px; margin:0 .35rem; padding:.5rem .7rem .5rem 2.25rem; border-radius:.5rem; font-size:.84rem; }
.sidebar .btn-toggle-nav a::before { content:""; width:5px; height:5px; margin-left:-1.05rem; margin-right:.65rem; border-radius:50%; background:#627d98; }
.sidebar .btn-toggle-nav a.active::before { background:#5eead4; box-shadow:0 0 0 4px rgba(94,234,212,.1); }
.sidebar .app-nav-action > a { color:#8de4dd; }
.nexus-sidebar-footer { display:grid; gap:.2rem; margin:1rem .7rem 0; padding-top:.8rem; border-top:1px solid rgba(255,255,255,.1); }
.nexus-sidebar-footer a { display:flex; align-items:center; gap:.75rem; padding:.55rem .7rem; border-radius:.55rem; color:#9fb3c8; font-size:.78rem; text-decoration:none; }
.nexus-sidebar-footer a:hover { color:#fff; background:rgba(255,255,255,.06); }
html.app-sidebar-collapsed .nexus-sidebar-context { justify-content:center; padding:.55rem; }
html.app-sidebar-collapsed .nexus-sidebar-context-copy,html.app-sidebar-collapsed .nexus-sidebar-footer span { display:none; }
html.app-sidebar-collapsed .nexus-sidebar-footer a { justify-content:center; }

/* Linguaggio comune per intestazioni di pagina già presenti. */
:is(.timesheet-header,.customer-page-header,.supplier-page-header,.sale-page-header,.ticket-page-header,.task-board-header,.project-admin-header,.analysis-page-header,.contact-admin-header,.customization-header,.orders-page-header) {
  position:relative; margin-bottom:1.4rem !important; padding:1.25rem 1.35rem; overflow:hidden;
  border:1px solid rgba(217,226,236,.9); border-radius:var(--nexus-radius-lg); background:rgba(255,255,255,.88);
  box-shadow:0 10px 32px rgba(16,42,67,.055); backdrop-filter:blur(8px);
}
:is(.timesheet-header,.customer-page-header,.supplier-page-header,.sale-page-header,.ticket-page-header,.task-board-header,.project-admin-header,.analysis-page-header,.contact-admin-header,.customization-header,.orders-page-header)::after {
  content:""; position:absolute; right:-45px; top:-65px; width:190px; height:190px; border:1px solid rgba(34,166,161,.12); border-radius:50%; box-shadow:0 0 0 28px rgba(34,166,161,.035),0 0 0 58px rgba(23,107,135,.025); pointer-events:none;
}
:is(.timesheet-title,.customer-page-title,.supplier-page-title,.sale-page-title,.ticket-page-title,.task-board-title,.project-admin-title,.analysis-page-title,.contact-admin-title,.customization-title,.orders-page-title) {
  color:var(--nexus-navy) !important; font-weight:780 !important; letter-spacing:-.035em !important;
}

/* Toolbar e filtri: meno form amministrativo, più command bar. */
:is(.filter-card,.filters-card,.filter-panel,.search-panel,.task-toolbar,.orders-filter-panel,.customer-filter-card,.supplier-filter-card) {
  border:1px solid var(--nexus-border) !important; border-radius:var(--nexus-radius) !important; background:rgba(255,255,255,.93) !important; box-shadow:0 8px 24px rgba(16,42,67,.045);
}
.filter-pills { display:flex; flex-wrap:wrap; gap:.4rem; }
.filter-pills .badge { padding:.48rem .7rem; color:var(--nexus-navy); background:#e7f2f4 !important; border:1px solid #cbe2e6; }

/* Tabelle come registri operativi. */
.table-responsive { border:1px solid var(--nexus-border); border-radius:var(--nexus-radius); background:#fff; }
.table-responsive > .table { margin-bottom:0; }
.table thead { position:sticky; top:0; z-index:2; }
.table thead th { height:46px; padding:.8rem .85rem !important; vertical-align:middle; border-bottom:1px solid var(--nexus-border) !important; }
.table tbody td { min-height:54px; padding:.78rem .85rem; vertical-align:middle; }
.table tbody tr { transition:background-color .14s ease,box-shadow .14s ease; }
.table tbody tr:hover { box-shadow:inset 3px 0 0 var(--nexus-teal-light); }
.table a:not(.btn) { color:var(--nexus-navy); font-weight:680; text-decoration:none; }
.table a:not(.btn):hover { color:var(--nexus-blue); }

/* Stati e indicatori. */
.badge.bg-success,.badge.text-bg-success { background:#dff5ed !important; color:#176b55 !important; border:1px solid #bce9d9; }
.badge.bg-warning,.badge.text-bg-warning { background:#fff3d6 !important; color:#92530a !important; border:1px solid #f3d596; }
.badge.bg-danger,.badge.text-bg-danger { background:#fde8e7 !important; color:#a43833 !important; border:1px solid #f5c4c1; }
.badge.bg-secondary,.badge.text-bg-secondary { background:#e9eef3 !important; color:#486581 !important; border:1px solid #d4dee8; }
.badge.bg-info,.badge.text-bg-info { background:#e1f2f6 !important; color:#155e75 !important; border:1px solid #bee3ea; }

/* Modali e drawer diventano superfici contestuali. */
.modal-backdrop.show { opacity:.35; backdrop-filter:blur(2px); }
.modal-content { overflow:hidden; }
.modal-header { min-height:64px; padding:1rem 1.2rem; }
.modal-title { font-weight:760; letter-spacing:-.02em; }
.modal-footer { background:#f7fafc; border-color:var(--nexus-border); }
.offcanvas { border:0 !important; box-shadow:-18px 0 48px rgba(16,42,67,.18); }
.offcanvas-header { min-height:68px; border-bottom:1px solid var(--nexus-border); background:#fff; }
.offcanvas-body { background:#f7fafc; }

/* Navigazione contestuale delle commesse. */
.project-admin-tabs { position:sticky; top:calc(var(--app-header-height) + .5rem); z-index:30; gap:.2rem !important; padding:.42rem !important; border-radius:.85rem !important; background:rgba(255,255,255,.94) !important; box-shadow:0 10px 28px rgba(16,42,67,.09) !important; backdrop-filter:blur(12px); }
.project-admin-tabs .nav-link { display:flex; align-items:center; min-height:42px; padding:.58rem .8rem; font-size:.84rem; }
.project-admin-tabs .nav-link.active { background:var(--nexus-navy) !important; box-shadow:0 5px 14px rgba(16,42,67,.18); }
.project-command-center { border:1px solid #cddde5 !important; border-radius:1rem !important; background:linear-gradient(135deg,#fff 0%,#f1f7f8 100%) !important; box-shadow:0 16px 40px rgba(16,42,67,.075) !important; }
.project-command-title { color:var(--nexus-navy) !important; font-size:clamp(1.4rem,2.4vw,2rem) !important; letter-spacing:-.035em; }
.project-kpi { position:relative; overflow:hidden; }
.project-kpi::after { content:""; position:absolute; right:-18px; bottom:-26px; width:70px; height:70px; border-radius:50%; background:rgba(34,166,161,.07); }

/* Supporto coerente con la shell. */
#btnSupportLauncher { background:var(--nexus-navy) !important; border-color:var(--nexus-navy) !important; box-shadow:0 10px 28px rgba(16,42,67,.28) !important; }
.support-chat-header { background:linear-gradient(135deg,var(--nexus-navy),var(--nexus-blue)) !important; }
.support-chat-panel { border-radius:1rem !important; border-color:var(--nexus-border) !important; box-shadow:0 22px 55px rgba(16,42,67,.22) !important; }

@media (min-width:1200px) {
  .nexus-app:not(.nexus-page-login) main { padding-inline:clamp(1.5rem,2.6vw,3.2rem) !important; }
}
@media (max-width:991.98px) {
  :is(.timesheet-header,.customer-page-header,.supplier-page-header,.sale-page-header,.ticket-page-header,.task-board-header,.project-admin-header,.analysis-page-header,.contact-admin-header,.customization-header,.orders-page-header) { padding:1rem; }
  .project-admin-tabs { position:static; }
}
@media (max-width:767.98px) {
  .nexus-app main { padding-top:1rem !important; }
  .app-brand { border-right:0; }
  .table-responsive { border:0; border-radius:0; }
  .app-create-menu { width:min(330px,calc(100vw - 1.5rem)); }
}
