/* Ravi ERP fixed colour system: navy + blue brand, semantic status colours only. */
:root{
  --ravi-primary:#0f2747;
  --ravi-primary-soft:#193a63;
  --ravi-accent:#2563eb;
  --ravi-accent-dark:#1d4ed8;
  --ravi-brand:#2563eb;
  --ravi-brand-dark:#1d4ed8;
  --ravi-brand-deep:#0f2747;
  --ravi-brand-soft:#eff6ff;
  --ravi-brand-border:#bfdbfe;
  --ravi-bg:#f1f5f9;
  --ravi-card:#fff;
  --ravi-surface:#fff;
  --ravi-light:#f8fafc;
  --ravi-soft:#f8fafc;
  --ravi-border:#e2e8f0;
  --ravi-title:#0f172a;
  --ravi-text:#334155;
  --ravi-muted:#64748b;
  --ravi-info:#2563eb;
  --ravi-info-dark:#1d4ed8;
  --ravi-info-bg:#eff6ff;
  --ravi-info-text:#1d4ed8;
  --ravi-info-border:#bfdbfe;
  --ravi-shadow:0 12px 34px rgba(15,39,71,.08);
  --ravi-shadow-hover:0 16px 40px rgba(15,39,71,.12);
  --ravi-brand-gradient:linear-gradient(120deg,#0f2747 0%,#193a63 52%,#2563eb 100%);
}

body,.ravi-main{background:#f1f5f9}.ravi-sidebar{background:linear-gradient(180deg,#0b1f38,#0f2747)}
.ravi-app a,.ravi-app a:hover,.ravi-app a:focus,.ravi-app a:active{text-decoration:none}
.ravi-sidebar .ravi-logo,.ravi-login-brand .ravi-login-logo{filter:brightness(0) saturate(100%) invert(1)}
.ravi-menu-link.ravi-active,.ravi-dropdown.ravi-open>.ravi-dropdown-toggle{background:rgba(37,99,235,.2)!important;color:#fff!important}
.ravi-menu-link.ravi-active::before,.ravi-dropdown.ravi-open>.ravi-dropdown-toggle::before{background:#60a5fa!important}

/* One visual identity for every module header. */
.ravi-app :where(
  .activity-hero,.attention-hero,.billing-hero,.calendar-hero,.collection-hero,
  .customer-directory-hero,.customer-form-hero,.customer-hero,.customer-profile-hero,
  .expense-entry-hero,.expense-hero,.fy-hero,.generator-directory-hero,.generator-form-hero,
  .generator-hero,.generator-profile-hero,.income-entry-hero,.income-hero,.ltr-control-hero,
  .ltr-entry-control-hero,.ltr-entry-hero,.ltr-hero,.payment-account-hero,.payment-hero,
  .ravi-asset-hero,.ravi-customer-hero,.report-dashboard-hero,.vehicle-directory-hero,
  .vehicle-form-hero,.vehicle-profile-hero,.work-create-hero,.works-index-hero,.work-space-hero,
  .backup-hero,.dashboard-welcome
){border-color:#1d4ed8!important;color:#fff!important;background:var(--ravi-brand-gradient)!important;box-shadow:0 14px 34px rgba(15,39,71,.16)!important}

.ravi-app :where(
  .activity-hero,.attention-hero,.billing-hero,.calendar-hero,.collection-hero,
  .customer-directory-hero,.customer-form-hero,.customer-hero,.customer-profile-hero,
  .expense-entry-hero,.expense-hero,.fy-hero,.generator-directory-hero,.generator-form-hero,
  .generator-hero,.generator-profile-hero,.income-entry-hero,.income-hero,.ltr-control-hero,
  .ltr-entry-control-hero,.ltr-entry-hero,.ltr-hero,.payment-account-hero,.payment-hero,
  .ravi-asset-hero,.ravi-customer-hero,.report-dashboard-hero,.vehicle-directory-hero,
  .vehicle-form-hero,.vehicle-profile-hero,.work-create-hero,.works-index-hero,.work-space-hero,
  .backup-hero,.dashboard-welcome
) :where(h1,h2,h3,p,small,.expense-kicker,.payment-kicker,[class*="kicker"]){color:inherit!important}

/* Primary controls use brand blue. Green/amber/red remain reserved for statuses. */
.ravi-app :where(
  .ravi-btn-primary,.expense-add,.income-add,.billing-new,.ltr-hero>a,.ltr-filters button,
  .activity-filters>button,.backup-create button,.backup-settings form>button,
  .backup-upload-panel form>button,.payment-filter.is-active
){border-color:var(--ravi-brand-dark)!important;color:#fff!important;background:var(--ravi-brand)!important;box-shadow:0 8px 20px rgba(37,99,235,.2)!important}

.ravi-app :where(a,button):focus-visible{outline:3px solid rgba(37,99,235,.28)!important;outline-offset:2px}
.ravi-app :where(input,select,textarea):focus{border-color:#60a5fa!important;box-shadow:0 0 0 3px rgba(37,99,235,.12)!important}

/* Reusable informational accents are blue, not module-specific teal/violet/cyan. */
.ravi-app :where(
  .activity-kicker,.collection-list-head span,.ltr-register-head span,.ltr-form-head span,
  .payment-panel-title span,.payment-detail-head .payment-kicker,.generator-panel-heading span,
  .generator-photo-copy>span,.expense-kicker,.expense-entry-hero>div>span
){color:var(--ravi-brand)!important}
.ravi-app :where(
  .payment-customer>span,.payment-panel-title>i,.payment-timeline i,.collection-next>i,
  .generator-panel-heading>i,.generator-service-icon,.expense-form-heading>i
){color:var(--ravi-brand-dark)!important;background:var(--ravi-brand-soft)!important}

.ravi-app :where(.payment-money-grid .is-balance){border-color:var(--ravi-brand-dark)!important;background:var(--ravi-brand-gradient)!important}
.ravi-app .dashboard-metric{border-color:var(--ravi-border)!important;background:var(--ravi-surface)!important}
.ravi-app .dashboard-metric .dashboard-metric-icon{color:var(--ravi-brand-dark)!important;background:var(--ravi-brand-soft)!important}
.ravi-app .dashboard-primary-action{border-color:rgba(255,255,255,.22)!important;color:#fff!important;background:rgba(255,255,255,.12)!important}
.ravi-app .dashboard-section-kicker{color:var(--ravi-brand)!important}
.ravi-sidebar-collapse{display:grid;place-items:center;transition:background .18s ease,transform .25s ease}
.ravi-sidebar-collapse:hover{background:#2563eb}
.ravi-app.ravi-sidebar-collapsed .ravi-sidebar-collapse{right:16px;transform:rotate(180deg)}
.ravi-app .dashboard-briefing-stats{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 2px}
.ravi-app .dashboard-briefing-stats span{display:inline-flex;align-items:center;gap:5px;padding:4px 8px;border:1px solid rgba(255,255,255,.18);border-radius:999px;color:#eff6ff;background:rgba(255,255,255,.1);font-size:10px;font-weight:750}
.ravi-app .dashboard-briefing-stats .is-urgent{color:#fff7ed;background:rgba(194,65,12,.28)}
.ravi-app .ravi-daily-list-item{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start}
.ravi-app .ravi-daily-item-copy{min-width:0}
.ravi-app .dashboard-briefing-actions{display:flex;grid-column:2;flex-wrap:wrap;gap:5px;margin-top:7px}
.ravi-app .dashboard-briefing-actions form{margin:0}
.ravi-app .dashboard-briefing-actions button{display:inline-flex;align-items:center;gap:4px;padding:4px 7px;border:1px solid rgba(255,255,255,.2);border-radius:7px;color:#fff;background:rgba(255,255,255,.1);font-size:9px;font-weight:750;cursor:pointer}
.ravi-app .dashboard-briefing-actions button:hover{background:rgba(255,255,255,.2)}
.ravi-app :where(.backup-notice,.generator-deployment-banner,.ltr-transport-note){border-color:var(--ravi-brand-border)!important;color:var(--ravi-brand-dark)!important;background:var(--ravi-brand-soft)!important}

/* Preserve semantic colours exclusively for operational meaning. */
.ravi-app :where(.is-success,.status-paid,.status-active,.backup-state.good){color:var(--ravi-success-text)!important;background:var(--ravi-success-bg)!important}
.ravi-app :where(.is-warning,.status-unpaid,.status-awaiting_amount){color:var(--ravi-warning-text)!important;background:var(--ravi-warning-bg)!important}
.ravi-app :where(.is-danger,.status-cancelled,.backup-state.bad,.danger){color:var(--ravi-danger-text)!important;background:var(--ravi-danger-bg)!important}
.ravi-app .backup-restore button.danger{border-color:#b91c1c!important;color:#fff!important;background:#b91c1c!important}

.theme-dark{
  --ravi-bg:#020617;--ravi-card:#0f172a;--ravi-surface:#0f172a;--ravi-light:#111c30;
  --ravi-soft:#111c30;--ravi-border:#26364d;--ravi-title:#f8fafc;--ravi-text:#dbe5f1;
  --ravi-muted:#94a3b8;--ravi-brand-soft:#172554;--ravi-brand-border:#1e40af;
}
.theme-dark body,.theme-dark .ravi-main{background:#020617}
.theme-dark .ravi-app :where(.backup-notice,.generator-deployment-banner,.ltr-transport-note){border-color:#1e40af!important;color:#bfdbfe!important;background:#172554!important}

@media(max-width:600px){
  .ravi-app .dashboard-briefing-actions button{padding:5px 8px;font-size:10px}
}

@media(max-width:1024px){
  .ravi-app.ravi-sidebar-collapsed .ravi-sidebar{width:min(320px,86vw)!important;max-width:320px!important;flex-basis:auto!important;padding:14px 12px!important;overflow-y:auto!important}
  .ravi-sidebar-collapse{position:sticky;top:4px;float:right;z-index:2;background:rgba(37,99,235,.78)}
}

/* Phone and installed-app ergonomics. */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
.ravi-app :where(a,button,input,select,textarea){touch-action:manipulation}
@supports(height:100dvh){
  .ravi-app,.ravi-shell,.ravi-sidebar{height:100dvh}
  .ravi-login-panel{min-height:calc(100dvh - 32px)}
}
@media(max-width:600px){
  .ravi-main{padding-bottom:env(safe-area-inset-bottom)}
  .ravi-page-content{padding-bottom:calc(18px + env(safe-area-inset-bottom))}
  .ravi-topbar{padding-top:calc(10px + env(safe-area-inset-top))}
  .ravi-sidebar{padding-bottom:calc(14px + env(safe-area-inset-bottom));padding-left:calc(12px + env(safe-area-inset-left))}
  .ravi-app :where(input:not([type="checkbox"]):not([type="radio"]),select,textarea){font-size:16px!important}
  .ravi-app :where(.ravi-btn,.ravi-btn-primary,.ravi-btn-secondary,.ravi-btn-small,button[type="submit"]){min-height:44px}
  .ravi-menu-link,.ravi-dropdown-toggle{min-height:46px}
  .ravi-modal-content,.modal-content{max-height:calc(100dvh - 24px);overflow-y:auto}
}
