
:root {
  --canvas:        #f6f8fb;
  --paper:         #ffffff;
  --paper-2:       #f1f4f8;
  --paper-3:       #e8edf3;
  --ink:           #0f172a;
  --ink-2:         #1e293b;
  --muted:         #64748b;
  --faint:         #94a3b8;
  --line:          #e2e8f0;
  --line-2:        #cbd5e1;
  --rule:          #e2e8f0;
  --brand:         #0d9488;
  --brand-hover:   #0f766e;
  --brand-active:  #115e59;
  --brand-soft:    #ccfbf1;
  --brand-tint:    #f0fdfa;
  --brand-on:      #ffffff;
  --gold:          #c89732;
  --gold-2:        #e0b452;
  --green:         #15803d;
  --green-soft:    #dcfce7;
  --green-tint:    #f0fdf4;
  --amber:         #b45309;
  --amber-soft:    #fef3c7;
  --amber-tint:    #fffbeb;
  --rust:          #b91c1c;
  --rust-soft:     #fee2e2;
  --rust-tint:     #fef2f2;
  --info:          #1d4ed8;
  --info-soft:     #dbeafe;
  --info-tint:     #eff6ff;
  --shadow-xs:     0 1px 2px rgba(15, 23, 42, 0.04);
  --shadow-sm:     0 1px 3px rgba(15, 23, 42, 0.06), 0 1px 2px rgba(15, 23, 42, 0.04);
  --shadow:        0 4px 12px rgba(15, 23, 42, 0.06), 0 1px 3px rgba(15, 23, 42, 0.04);
  --shadow-lg:     0 12px 32px rgba(15, 23, 42, 0.10), 0 4px 12px rgba(15, 23, 42, 0.06);
  --shadow-xl:     0 24px 56px rgba(15, 23, 42, 0.16), 0 8px 16px rgba(15, 23, 42, 0.06);
  --ring:          0 0 0 3px rgba(13, 148, 136, 0.18);
  --ring-danger:   0 0 0 3px rgba(185, 28, 28, 0.18);
  --radius-xs:     4px;
  --radius-sm:     6px;
  --radius:        8px;
  --radius-lg:     12px;
  --radius-xl:     16px;
  --t-fast:        120ms cubic-bezier(0.4, 0, 0.2, 1);
  --t:             180ms cubic-bezier(0.4, 0, 0.2, 1);
  --t-slow:        260ms cubic-bezier(0.4, 0, 0.2, 1);
  --font-sans:     'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
  --font-mono:     'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  --font-serif:    'Fraunces', Georgia, serif;
}
* {
  box-sizing: border-box;
  -webkit-tap-highlight-color: transparent;
}
html, body {
  margin: 0;
  padding: 0;
  background: var(--canvas);
  color: var(--ink);
  font-family: var(--font-sans);
  font-size: 14px;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}
button {
  font-family: inherit;
  cursor: pointer;
  border: none;
  background: none;
  color: inherit;
}
input, select, textarea {
  font-family: inherit;
  font-size: 14px;
  color: var(--ink);
}
a {
  color: var(--brand);
  text-decoration: none;
  transition: color var(--t-fast);
}
a:hover { color: var(--brand-hover); text-decoration: underline; }
h1, h2, h3, h4 {
  font-family: var(--font-sans);
  font-weight: 600;
  letter-spacing: -0.015em;
  margin: 0;
  color: var(--ink);
}
.mono { font-family: var(--font-mono); }
.muted { color: var(--muted); }
.num   { font-variant-numeric: tabular-nums; font-family: var(--font-mono); }
.lbl-sm {
  display: block;
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--muted);
  margin-bottom: 6px;
}
::selection { background: var(--brand-soft); color: var(--ink); }
#splashScreen {
  position: fixed;
  inset: 0;
  z-index: 2000;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--canvas);
  padding: 20px;
  transition: opacity 250ms ease-out;
  background-image:
    radial-gradient(circle at 20% 25%, rgba(13, 148, 136, 0.06) 0%, transparent 45%),
    radial-gradient(circle at 80% 75%, rgba(13, 148, 136, 0.04) 0%, transparent 45%);
}
#splashScreen.fading { opacity: 0; pointer-events: none; }
.splash-card {
  text-align: center;
  padding: 32px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 14px;
}
.splash-card .brand-mark {
  width: 72px;
  height: 72px;
  margin-bottom: 4px;
}
.splash-title {
  font-weight: 600;
  font-size: 22px;
  color: var(--ink);
  letter-spacing: -0.015em;
}
.splash-sub {
  font-size: 11px;
  color: var(--muted);
  letter-spacing: 0.12em;
  text-transform: uppercase;
}
.splash-spinner {
  width: 28px;
  height: 28px;
  border: 2.5px solid var(--paper-3);
  border-top-color: var(--brand);
  border-radius: 50%;
  animation: splashSpin 700ms linear infinite;
  margin-top: 6px;
}
@keyframes splashSpin { to { transform: rotate(360deg); } }
.brand-mark {
  width: 40px;
  height: 40px;
  background: url('../favicon.svg') center/contain no-repeat;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  font-size: 0;
  color: transparent;
  text-indent: -9999px;
  overflow: hidden;
  border-radius: 0;
}
a .brand-mark { text-decoration: none; }
.brand-text {
  font-weight: 600;
  font-size: 16px;
  letter-spacing: -0.01em;
  line-height: 1.2;
  color: var(--ink);
}
.brand-text small {
  display: block;
  font-weight: 400;
  font-size: 10px;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.15em;
  margin-top: 3px;
}
#loginScreen {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  background: var(--paper);
  overflow: hidden;
}
.login-left {
  background: linear-gradient(155deg, var(--brand-tint) 0%, var(--brand-soft) 50%, #99f6e4 100%);
  color: var(--ink);
  padding: 56px 64px;
  position: relative;
  overflow-y: auto;
}
.login-left::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image:
    radial-gradient(ellipse 800px 600px at 100% 0%, rgba(13, 148, 136, 0.18) 0%, transparent 55%),
    radial-gradient(ellipse 600px 400px at 0% 100%, rgba(15, 23, 42, 0.04) 0%, transparent 55%);
  pointer-events: none;
}
.login-left-inner {
  position: relative;
  max-width: 540px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  min-height: 100%;
}
.login-left-brand {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: auto;
  padding-bottom: 56px;
}
.login-left-mark {
  width: 48px;
  height: 48px;
  background: url('../favicon.svg') center/contain no-repeat;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0;
  color: transparent;
  text-indent: -9999px;
  overflow: hidden;
  flex-shrink: 0;
  position: relative;
}
.login-left-mark::after { content: none; }
.login-left-brandname {
  font-weight: 600;
  font-size: 17px;
  color: var(--ink);
  letter-spacing: -0.01em;
  line-height: 1.2;
}
.login-left-tagline {
  font-size: 10px;
  font-weight: 600;
  color: var(--brand);
  text-transform: uppercase;
  letter-spacing: 0.18em;
  margin-top: 4px;
}
.login-left-headline { margin-bottom: 44px; }
.login-left-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 11px;
  font-weight: 600;
  color: var(--brand-active);
  background: rgba(255, 255, 255, 0.6);
  padding: 6px 12px;
  border-radius: 999px;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  margin-bottom: 22px;
}
.login-left-eyebrow-dot {
  width: 6px;
  height: 6px;
  background: var(--brand);
  border-radius: 50%;
  animation: pulse 2.4s ease-in-out infinite;
}
@keyframes pulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50%      { opacity: 0.5; transform: scale(1.25); }
}
.login-left-headline h1 {
  font-size: 44px;
  font-weight: 700;
  line-height: 1.08;
  letter-spacing: -0.025em;
  color: var(--ink);
  margin-bottom: 16px;
}
.login-left-headline p {
  font-size: 16px;
  line-height: 1.55;
  color: var(--ink-2);
  max-width: 480px;
}
.login-left-features {
  list-style: none;
  padding: 0;
  margin: 0 0 40px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}
.login-left-features li {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 16px 18px;
  background: rgba(255, 255, 255, 0.55);
  backdrop-filter: blur(8px);
  border: 1px solid rgba(255, 255, 255, 0.7);
  border-radius: var(--radius);
  font-size: 13px;
  color: var(--ink-2);
  line-height: 1.45;
  transition: transform var(--t), box-shadow var(--t), background var(--t);
}
.login-left-features li:hover {
  transform: translateY(-2px);
  background: rgba(255, 255, 255, 0.85);
  box-shadow: var(--shadow);
}
.login-left-feat-mark {
  width: 22px;
  height: 22px;
  background: var(--brand);
  color: var(--paper);
  border-radius: var(--radius-sm);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  font-weight: 700;
  flex-shrink: 0;
}
.login-left-stat {
  display: flex;
  align-items: baseline;
  gap: 16px;
  padding: 20px 0;
  border-top: 1px solid rgba(15, 23, 42, 0.08);
  margin-top: auto;
}
.login-left-stat-num {
  font-size: 56px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: -0.03em;
  color: var(--brand-active);
  font-variant-numeric: tabular-nums;
}
.login-left-stat-text {
  font-size: 12px;
  color: var(--ink-2);
  line-height: 1.45;
  max-width: 240px;
}
.login-left-foot {
  font-size: 11px;
  color: var(--muted);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  margin-top: 24px;
}
.login-right {
  background: var(--paper);
  padding: 56px 64px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  overflow-y: auto;
}
.login-card {
  width: 100%;
  max-width: 440px;
  margin: 0 auto;
  background: transparent;
  border: none;
  box-shadow: none;
  padding: 0;
  position: relative;
}
.login-card::before { content: none; }
.login-brand {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 32px;
}
.login-card h2 {
  font-size: 28px;
  font-weight: 700;
  letter-spacing: -0.02em;
  margin-bottom: 6px;
  color: var(--ink);
}
.login-sub {
  color: var(--muted);
  font-size: 14px;
  margin-bottom: 28px;
}
.auth-tabs {
  display: flex;
  gap: 4px;
  margin-bottom: 26px;
  padding: 4px;
  background: var(--paper-2);
  border-radius: var(--radius);
}
.auth-tab {
  flex: 1;
  padding: 9px 12px;
  font-size: 13px;
  font-weight: 600;
  color: var(--muted);
  background: none;
  border: none;
  border-radius: var(--radius-sm);
  cursor: pointer;
  transition: all var(--t-fast);
  letter-spacing: 0.01em;
}
.auth-tab:hover { color: var(--ink); }
.auth-tab.active {
  color: var(--ink);
  background: var(--paper);
  box-shadow: var(--shadow-xs);
}
.login-hint {
  margin-top: 20px;
  padding: 14px 16px;
  background: var(--brand-tint);
  font-size: 12px;
  color: var(--ink-2);
  border-left: 3px solid var(--brand);
  border-radius: var(--radius-sm);
  line-height: 1.5;
}
.login-error {
  color: var(--rust);
  font-size: 13px;
  margin-top: 10px;
  min-height: 18px;
}
.login-success {
  color: var(--green);
  font-size: 13px;
  margin-top: 10px;
  min-height: 18px;
  line-height: 1.55;
}
.login-right-foot {
  margin-top: 32px;
  font-size: 12px;
  color: var(--muted);
  text-align: center;
}
.login-right-foot a { color: var(--brand); }
@media (max-width: 980px) {
  #loginScreen {
    grid-template-columns: 1fr;
    grid-template-rows: auto 1fr;
    overflow-y: auto;
  }
  .login-right { order: 1; padding: 40px 28px; }
  .login-left  { order: 2; padding: 48px 32px 64px; overflow-y: visible; }
  .login-left-brand { padding-bottom: 36px; }
  .login-left-headline h1 { font-size: 34px; }
  .login-left-stat-num { font-size: 48px; }
  .login-left-features { grid-template-columns: 1fr; }
}
@media (max-width: 560px) {
  .login-right { padding: 32px 20px; }
  .login-left  { padding: 40px 22px 52px; }
  .login-left-headline h1 { font-size: 28px; }
  .login-left-headline p { font-size: 14px; }
  .login-left-stat-num { font-size: 40px; }
  .login-card h2 { font-size: 24px; }
}
#app {
  display: none;
  min-height: 100vh;
  background: var(--canvas);
}
#app.active { display: block; }
header.topbar {
  background: var(--paper);
  color: var(--ink);
  padding: 0 20px;
  height: 64px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  border-bottom: 1px solid var(--line);
  box-shadow: var(--shadow-xs);
  position: sticky;
  top: 0;
  z-index: 50;
  backdrop-filter: saturate(180%) blur(10px);
  -webkit-backdrop-filter: saturate(180%) blur(10px);
}
.top-brand {
  display: flex;
  align-items: center;
  gap: 28px;
  min-width: 0;
  flex: 0 1 auto;
}
.brand-link {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  color: var(--ink);
  text-decoration: none;
  font-family: inherit;
  flex-shrink: 0;
  transition: opacity var(--t-fast);
}
.brand-link:hover { opacity: 0.85; }
.top-brand .brand-mark {
  width: 40px;
  height: 40px;
  flex-shrink: 0;
  position: relative;
}
.top-brand .brand-mark::after { content: none; }
.brand-wordmark-stack {
  display: flex !important;
  flex-direction: column;
  gap: 1px;
  line-height: 1;
  color: var(--ink);
}
.brand-w-1, .brand-w-2 {
  font-family: inherit;
  font-size: 14px;
  font-weight: 700;
  letter-spacing: -0.01em;
  line-height: 1.05;
}
.brand-w-2 {
  color: var(--ink-2);
  font-weight: 600;
}
.brand-wordmark { display: none !important; }
.client-pill {
  display: inline-flex !important;
  align-items: center;
  padding: 6px 16px;
  background: var(--brand-tint);
  color: var(--brand-active);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  border: 1px solid var(--brand-soft);
  border-radius: 999px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 340px;
  flex-shrink: 1;
  min-width: 0;
  height: 30px;
  font-family: 'JetBrains Mono', 'Inter', ui-monospace, monospace;
}
.client-pill:empty { display: none !important; }
.top-brand .brand-text,
.top-brand .brand-divider {
  display: none !important;
}
.top-right {
  display: flex;
  align-items: center;
  gap: 8px;
  position: relative;
  flex-shrink: 0;
  flex-wrap: nowrap;
}
.tb-pill {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  height: 38px;
  padding: 0 16px;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 10px;
  color: var(--ink-2);
  font-family: inherit;
  font-size: 13.5px;
  font-weight: 600;
  letter-spacing: -0.005em;
  cursor: pointer;
  transition: all var(--t-fast);
  white-space: nowrap;
}
.tb-pill:hover {
  background: var(--paper-2);
  border-color: var(--line-2);
  color: var(--ink);
}
.tb-pill:focus-visible {
  outline: none;
  border-color: var(--brand);
  box-shadow: 0 0 0 3px rgba(13, 148, 136, 0.18);
}
.tb-pill svg { color: var(--brand-dark); flex-shrink: 0; }
.tb-pill:hover svg { color: var(--brand); }
.tb-pill-label { line-height: 1; }
.tb-pill-install {
  background: var(--brand-tint);
  border-color: var(--brand-soft);
  color: var(--brand-deep);
}
.tb-pill-install:hover {
  background: var(--brand-soft);
  border-color: var(--brand);
  color: var(--brand-deep);
}
.tb-pill-install svg { color: var(--brand) !important; }
.tb-pill-install .tb-pill-label {
  font-weight: 700;
  letter-spacing: 0.06em;
  font-size: 12.5px;
}
.tb-icon,
.notif-bell,
.ps-lang-btn {
  width: 38px;
  height: 38px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 10px;
  color: var(--ink-2);
  cursor: pointer;
  transition: all var(--t-fast);
  font-family: inherit;
  position: relative;
  flex-shrink: 0;
  padding: 0;
}
.tb-icon:hover {
  background: var(--paper-2);
  border-color: var(--line-2);
  color: var(--ink);
}
.tb-icon:focus-visible {
  outline: none;
  border-color: var(--brand);
  box-shadow: 0 0 0 3px rgba(13, 148, 136, 0.18);
}
.tb-wa {
  width: 38px;
  height: 38px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: #25d366;
  border: none;
  border-radius: 50%;
  color: var(--paper);
  cursor: pointer;
  transition: all var(--t-fast);
  flex-shrink: 0;
  text-decoration: none;
  box-shadow: 0 1px 3px rgba(37, 211, 102, 0.28);
}
.tb-wa:hover {
  background: #1ea454;
  transform: translateY(-1px);
  box-shadow: 0 4px 10px rgba(37, 211, 102, 0.38);
}
.tb-wa:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(37, 211, 102, 0.35);
}
.tb-icon-wa { display: none !important; }
.tb-divider {
  width: 1px;
  height: 24px;
  background: var(--line);
  margin: 0 4px;
  flex-shrink: 0;
}
.profile-trigger {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  width: 40px;
  height: 40px;
  background: transparent;
  border: none;
  border-radius: 50%;
  transition: all var(--t-fast);
  cursor: pointer;
  font-family: inherit;
  flex-shrink: 0;
  position: relative;
}
.profile-trigger:hover .avatar {
  transform: scale(1.05);
  box-shadow: 0 0 0 1.5px var(--brand), 0 4px 12px rgba(13, 148, 136, 0.22);
}
.profile-trigger:focus-visible { outline: none; }
.profile-trigger:focus-visible .avatar {
  box-shadow: 0 0 0 3px rgba(13, 148, 136, 0.35), 0 4px 12px rgba(13, 148, 136, 0.18);
}
.avatar {
  width: 38px;
  height: 38px;
  border-radius: 50%;
  background: var(--brand);
  color: var(--paper);
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  font-size: 15px;
  letter-spacing: 0.02em;
  flex-shrink: 0;
  box-shadow: 0 0 0 1px rgba(13, 148, 136, 0.18), 0 1px 2px rgba(15,23,42,.08);
  transition: all var(--t-fast);
  position: relative;
}
.avatar:hover { background: var(--brand-hover); }
.avatar::after {
  content: '';
  position: absolute;
  bottom: -2px; right: -2px;
  width: 12px; height: 12px;
  background: var(--paper);
  border-radius: 50%;
  border: 1px solid var(--line-2);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath fill='none' stroke='%23334155' stroke-width='1.5' stroke-linecap='round' d='M3.5 5l2.5 2.5L8.5 5'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: center;
  background-size: 9px;
}
.visually-hidden {
  position: absolute !important;
  width: 1px !important; height: 1px !important;
  padding: 0 !important; margin: -1px !important;
  overflow: hidden !important; clip: rect(0,0,0,0) !important;
  white-space: nowrap !important; border: 0 !important;
}
.profile-menu {
  position: absolute;
  top: calc(100% + 10px);
  right: 0;
  background: var(--paper);
  color: var(--ink);
  min-width: 280px;
  box-shadow: var(--shadow-lg);
  border: 1px solid var(--line);
  border-radius: 10px;
  display: none;
  z-index: 60;
  overflow: hidden;
  animation: menuIn 150ms cubic-bezier(0.4, 0, 0.2, 1);
}
@keyframes menuIn {
  from { opacity: 0; transform: translateY(-4px); }
  to   { opacity: 1; transform: translateY(0); }
}
.profile-menu.open { display: block; }
.profile-menu-head {
  display: flex;
  align-items: center;
  gap: 11px;
  padding: 14px 16px 12px;
  background: var(--paper-2);
  border-bottom: 1px solid var(--line);
}
.profile-menu-head .avatar-sm {
  width: 38px; height: 38px;
  border-radius: 50%;
  background: var(--brand);
  color: var(--paper);
  display: grid; place-items: center;
  font-weight: 700;
  font-size: 14px;
  flex-shrink: 0;
}
.profile-menu-head-text { min-width: 0; flex: 1; }
.profile-menu-name {
  font-size: 13.5px;
  font-weight: 600;
  color: var(--ink);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  letter-spacing: -0.005em;
  line-height: 1.25;
}
.profile-menu-role {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--brand-dark);
  margin-top: 3px;
  line-height: 1;
}
.profile-menu button {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 11px 16px;
  text-align: left;
  font-size: 13px;
  color: var(--ink-2);
  border-bottom: 1px solid var(--line);
  transition: background var(--t-fast), color var(--t-fast);
  background: transparent;
  border-left: none;
  border-right: none;
  border-top: none;
  font-family: inherit;
  cursor: pointer;
}
.profile-menu button:last-child { border-bottom: none; }
.profile-menu button:hover { background: var(--paper-2); color: var(--ink); }
.profile-menu button[data-destructive="true"] { color: var(--rust); }
.profile-menu button[data-destructive="true"]:hover { background: var(--rust-tint); }
.fab-wrap {
  position: fixed;
  right: 28px;
  bottom: 28px;
  z-index: 9000;
}
.fab {
  width: 60px;
  height: 60px;
  border-radius: 50%;
  background: var(--brand);
  color: var(--paper);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: none;
  cursor: pointer;
  box-shadow: 0 8px 24px rgba(13, 148, 136, 0.36), 0 2px 6px rgba(15, 23, 42, 0.18);
  opacity: 0.5;
  transition: transform 220ms cubic-bezier(0.16, 1, 0.3, 1), box-shadow 220ms ease, background 200ms ease, opacity 180ms ease;
  font-family: inherit;
  outline: none;
}
.fab:hover {
  background: var(--brand-hover);
  transform: translateY(-2px);
  opacity: 1;
  box-shadow: 0 12px 32px rgba(13, 148, 136, 0.46), 0 4px 10px rgba(15, 23, 42, 0.22);
}
.fab:focus-visible {
  opacity: 1;
  box-shadow: 0 0 0 4px rgba(13, 148, 136, 0.35), 0 8px 24px rgba(13, 148, 136, 0.32);
}
.fab-plus {
  color: var(--paper);
  transition: transform 220ms cubic-bezier(0.16, 1, 0.3, 1);
}
.fab-wrap.open .fab-plus { transform: rotate(45deg); }
.fab-wrap.open .fab {
  background: var(--brand-active);
  opacity: 1;
  box-shadow: 0 8px 24px rgba(17, 94, 89, 0.42);
}
.fab-menu {
  position: absolute;
  bottom: calc(100% + 12px);
  right: 0;
  transform: translateY(8px) scale(0.96);
  width: 280px;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 12px;
  box-shadow: 0 18px 48px rgba(15, 23, 42, 0.16), 0 4px 12px rgba(15, 23, 42, 0.06);
  opacity: 0;
  max-height: 80vh;
  overflow-y: auto;
  transform-origin: bottom right;
  pointer-events: none;
  transition: opacity 180ms ease, transform 180ms cubic-bezier(0.16, 1, 0.3, 1);
  padding: 4px 0;
}
.fab-wrap.open .fab-menu {
  opacity: 1;
  transform: translateY(0) scale(1);
  pointer-events: auto;
}
.fab-menu-head {
  padding: 10px 14px 8px;
  background: var(--paper-2);
  border-bottom: 1px solid var(--line);
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--brand-dark);
  margin: -4px 0 4px;
}
.fab-menu button {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 8px 14px;
  border: none;
  background: transparent;
  cursor: pointer;
  text-align: left;
  font-family: inherit;
  transition: background 120ms ease;
}
.fab-menu button:hover { background: var(--paper-2); }
.fab-menu button:focus-visible {
  outline: none;
  background: var(--brand-tint);
}
.fab-ic {
  width: 28px; height: 28px;
  border-radius: 7px;
  display: grid;
  place-items: center;
  flex-shrink: 0;
  font-size: 13px;
  font-weight: 700;
}
.fab-mtxt {
  display: flex;
  flex-direction: column;
  gap: 1px;
  min-width: 0;
  flex: 1;
}
.fab-mtxt strong {
  font-size: 12.5px;
  font-weight: 600;
  color: var(--ink);
  letter-spacing: -0.005em;
  line-height: 1.2;
}
.fab-mtxt small {
  font-size: 11px;
  color: var(--muted);
  font-weight: 400;
  line-height: 1.25;
}
.fab-menu-divider {
  height: 1px;
  background: var(--line);
  margin: 4px 12px;
}
.fab-menu-section-break {
  border-top: 1px solid var(--line) !important;
  margin-top: 4px;
  padding-top: 12px !important;
}
@media (max-width: 1100px) {
  .tb-pill-label { display: none; }
  .tb-pill { width: 38px; padding: 0; justify-content: center; }
  .tb-pill-install { width: auto; padding: 0 14px; }
  .tb-pill-install .tb-pill-label { display: inline-block; }
}
@media (max-width: 880px) {
  header.topbar { padding: 0 14px; gap: 10px; }
  .brand-wordmark-stack { display: none !important; }
  .client-pill { max-width: 140px; padding: 5px 12px; font-size: 10.5px; }
}
@media (max-width: 720px) {
  header.topbar { height: 58px; padding: 0 12px; gap: 6px; }
  .tb-divider { display: none; }
  .tb-wa,
  .ps-lang-btn,
  .tb-pill-install { display: none !important; }
  .top-right { gap: 5px; }
  .top-brand .brand-mark { width: 36px; height: 36px; }
  .tb-pill, .tb-icon, .notif-bell {
    width: 36px; height: 36px;
  }
  .avatar { width: 34px; height: 34px; font-size: 13px; }
  .avatar::after { width: 10px; height: 10px; background-size: 7px; }
  .profile-trigger { width: 36px; height: 36px; }
  .tb-pill[data-tb-action="smart-tools"] { display: none !important; }
}
@media (max-width: 480px) {
  .client-pill { display: none !important; }
}
@media (max-width: 640px) {
  .fab-wrap { left: 50%; right: auto; transform: translateX(-50%); bottom: 16px; }
  .fab { width: 56px; height: 56px; }
  .fab-menu { width: calc(100vw - 32px); max-width: 280px; }
}
nav.tabs {
  background: var(--paper);
  border-bottom: 1px solid var(--line);
  padding: 0 28px;
  display: flex;
  gap: 4px;
  overflow-x: auto;
  scrollbar-width: none;
  position: sticky;
  top: 60px;
  z-index: 40;
}
nav.tabs::-webkit-scrollbar { display: none; }
nav.tabs button {
  padding: 14px 18px;
  font-size: 13.5px;
  font-weight: 500;
  color: var(--muted);
  border-bottom: 2px solid transparent;
  letter-spacing: 0.005em;
  white-space: nowrap;
  position: relative;
  transition: color var(--t-fast), border-color var(--t-fast);
}
nav.tabs button:hover { color: var(--ink); }
nav.tabs button.active {
  color: var(--brand-active);
  border-bottom-color: var(--brand);
  font-weight: 600;
}
nav.tabs button .tab-num {
  display: inline-block;
  font-family: var(--font-mono);
  font-size: 10px;
  color: var(--faint);
  margin-right: 8px;
  transition: color var(--t-fast);
}
nav.tabs button.active .tab-num { color: var(--brand); }
nav.tabs button:hover .tab-num { color: var(--muted); }
nav.tabs button .tab-num,
.tab-group-trigger .tab-num { display: none !important; }
.tab-group {
  position: relative;
  display: inline-flex;
  flex-shrink: 0;
}
.tab-group-trigger {
  padding: 14px 18px;
  font-size: 13.5px;
  font-weight: 500;
  color: var(--muted);
  border-bottom: 2px solid transparent;
  letter-spacing: 0.005em;
  white-space: nowrap;
  position: relative;
  transition: color var(--t-fast), border-color var(--t-fast);
  background: transparent;
  border-left: none;
  border-right: none;
  border-top: none;
  font-family: inherit;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.tab-group-trigger:hover { color: var(--ink); }
.tab-group-trigger .tab-num {
  display: inline-block;
  font-family: var(--font-mono);
  font-size: 10px;
  color: var(--faint);
  margin-right: 4px;
  transition: color var(--t-fast);
}
.tab-group-trigger:hover .tab-num { color: var(--muted); }
.tab-caret {
  color: var(--faint);
  transition: transform 180ms cubic-bezier(0.16, 1, 0.3, 1), color var(--t-fast);
  margin-left: 4px;
}
.tab-group:hover .tab-caret { color: var(--muted); }
.tab-group.open .tab-caret { transform: rotate(180deg); color: var(--brand); }
.tab-group.open .tab-group-trigger {
  color: var(--brand-active);
  border-bottom-color: var(--brand);
  font-weight: 600;
}
.tab-group.open .tab-group-trigger .tab-num { color: var(--brand); }
.tab-group-menu {
  position: fixed;
  top: 0;
  left: 0;
  min-width: 320px;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 12px;
  box-shadow: 0 18px 48px rgba(15, 23, 42, 0.16), 0 4px 12px rgba(15, 23, 42, 0.06);
  opacity: 0;
  transform: translateY(-6px) scale(0.98);
  transform-origin: top left;
  pointer-events: none;
  transition: opacity 160ms ease, transform 160ms cubic-bezier(0.16, 1, 0.3, 1);
  z-index: 9500;
  overflow: hidden;
  padding: 6px 0;
  max-height: calc(100vh - 200px);
  overflow-y: auto;
  visibility: hidden;
}
.tab-group.open .tab-group-menu {
  opacity: 1;
  transform: translateY(0) scale(1);
  pointer-events: auto;
  visibility: visible;
}
.tab-group-menu button {
  display: flex !important;
  align-items: center;
  gap: 12px;
  width: 100%;
  padding: 9px 14px !important;
  border: none !important;
  background: transparent;
  cursor: pointer;
  text-align: left;
  font-family: inherit;
  transition: background 120ms ease;
  color: var(--ink-2) !important;
  font-weight: 400 !important;
  border-bottom: none !important;
  white-space: normal;
}
.tab-group-menu button:hover {
  background: var(--paper-2);
  color: var(--ink) !important;
}
.tab-group-menu button:focus-visible {
  outline: none;
  background: var(--brand-tint);
}
.tg-ic {
  width: 30px; height: 30px;
  border-radius: 7px;
  display: grid;
  place-items: center;
  flex-shrink: 0;
  font-size: 14px;
  font-weight: 700;
}
.tg-text {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
  flex: 1;
}
.tg-text strong {
  font-size: 13px;
  font-weight: 600;
  color: var(--ink);
  letter-spacing: -0.005em;
  line-height: 1.25;
}
.tg-text small {
  font-size: 11.5px;
  color: var(--muted);
  font-weight: 400;
  line-height: 1.3;
}
.tab-group-divider {
  height: 1px;
  background: var(--line);
  margin: 6px 12px;
}
.tab-group-section-head {
  font-size: 9.5px;
  font-weight: 600;
  color: var(--muted, var(--muted));
  letter-spacing: 0.08em;
  text-transform: uppercase;
  padding: 6px 16px 4px;
  user-select: none;
}
.tab-group-section-head:first-child { padding-top: 4px; }
@media (max-width: 720px) {
  .tab-group-menu { min-width: 280px; max-width: calc(100vw - 24px); }
  .tab-group-trigger { padding: 12px 14px; font-size: 13px; }
}
nav.subtabs,
.subtabs {
  background: var(--paper-2);
  border-bottom: 1px solid var(--line);
  padding: 0 28px;
  display: flex;
  gap: 2px;
  overflow-x: auto;
  scrollbar-width: none;
}
nav.subtabs::-webkit-scrollbar,
.subtabs::-webkit-scrollbar { display: none; }
nav.subtabs button,
.subtabs button {
  padding: 10px 14px;
  font-size: 12.5px;
  font-weight: 500;
  color: var(--muted);
  background: transparent;
  border-radius: 0;
  border-bottom: 2px solid transparent;
  white-space: nowrap;
  transition: color var(--t-fast), border-color var(--t-fast);
}
nav.subtabs button:hover,
.subtabs button:hover { color: var(--ink); }
nav.subtabs button.active,
.subtabs button.active {
  color: var(--brand-active);
  border-bottom-color: var(--brand);
  font-weight: 600;
}
main {
  padding: 32px;
  max-width: 1440px;
  margin: 0 auto;
}
.page { display: none; }
.page.active {
  display: block;
  animation: pageIn 240ms cubic-bezier(0.16, 1, 0.3, 1);
}
@keyframes pageIn {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: translateY(0); }
}
.page-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  margin-bottom: 24px;
  padding-bottom: 20px;
  border-bottom: 1px solid var(--line);
  flex-wrap: wrap;
  gap: 12px;
}
.page-head h1 {
  font-size: 28px;
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1.2;
  color: var(--ink);
}
.page-head .crumb {
  font-family: var(--font-mono);
  font-size: 11px;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.12em;
  margin-bottom: 8px;
}
.page-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  align-items: center;
}
.card {
  background: var(--paper);
  border: 1px solid var(--line);
  padding: 22px;
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-xs);
  transition: box-shadow var(--t), border-color var(--t);
}
.card:hover { box-shadow: var(--shadow-sm); }
.grid       { display: grid; gap: 16px; }
.grid-2     { grid-template-columns: repeat(2, 1fr); }
.grid-3     { grid-template-columns: repeat(3, 1fr); }
.grid-4     { grid-template-columns: repeat(4, 1fr); }
.grid-cols-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
@media (max-width: 900px) {
  .grid-2, .grid-3, .grid-4 { grid-template-columns: 1fr; }
}
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 9px 18px;
  border: 1px solid var(--brand);
  background: var(--brand);
  color: var(--brand-on);
  font-weight: 600;
  font-size: 13px;
  letter-spacing: 0.005em;
  border-radius: var(--radius);
  cursor: pointer;
  white-space: nowrap;
  transition: background var(--t-fast), border-color var(--t-fast),
              color var(--t-fast), box-shadow var(--t-fast), transform var(--t-fast);
  box-shadow: var(--shadow-xs);
}
.btn:hover {
  background: var(--brand-hover);
  border-color: var(--brand-hover);
  box-shadow: var(--shadow-sm);
  transform: translateY(-1px);
}
.btn:active {
  background: var(--brand-active);
  transform: translateY(0);
  box-shadow: var(--shadow-xs);
}
.btn:focus-visible {
  outline: none;
  box-shadow: var(--ring);
}
.btn:disabled,
.btn[disabled] {
  opacity: 0.55;
  cursor: not-allowed;
  transform: none !important;
}
.btn.primary,
.btn-primary,
.primary {
  background: var(--brand);
  border-color: var(--brand);
  color: var(--brand-on);
}
.btn.primary:hover,
.btn-primary:hover,
.primary:hover {
  background: var(--brand-hover);
  border-color: var(--brand-hover);
}
.btn.secondary,
.btn-secondary {
  background: var(--paper);
  color: var(--ink-2);
  border-color: var(--line-2);
}
.btn.secondary:hover,
.btn-secondary:hover {
  background: var(--paper-2);
  border-color: var(--ink-2);
  color: var(--ink);
}
.btn.danger,
.btn-destructive {
  background: var(--rust);
  border-color: var(--rust);
  color: var(--paper);
}
.btn.danger:hover,
.btn-destructive:hover {
  background: #991b1b;
  border-color: #991b1b;
}
.btn.danger:focus-visible { box-shadow: var(--ring-danger); }
.btn.sm,
.btn-sm   { padding: 6px 12px; font-size: 12px; gap: 6px; }
.btn.lg   { padding: 12px 24px; font-size: 14px; }
.btn.full { width: 100%; }
.btn.ghost {
  background: transparent;
  border-color: transparent;
  color: var(--brand);
  box-shadow: none;
}
.btn.ghost:hover {
  background: var(--brand-tint);
  border-color: var(--brand-tint);
  transform: none;
  box-shadow: none;
}
.field { margin-bottom: 16px; }
.field label {
  display: block;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--muted);
  margin-bottom: 6px;
  font-weight: 600;
}
.field input,
.field select,
.field textarea {
  width: 100%;
  padding: 10px 14px;
  border: 1px solid var(--line);
  background: var(--paper);
  color: var(--ink);
  font-size: 14px;
  border-radius: var(--radius);
  transition: border-color var(--t-fast), box-shadow var(--t-fast), background var(--t-fast);
  -webkit-appearance: none;
  appearance: none;
}
.field input:hover,
.field select:hover,
.field textarea:hover { border-color: var(--line-2); }
.field input:focus,
.field select:focus,
.field textarea:focus {
  outline: none;
  border-color: var(--brand);
  box-shadow: var(--ring);
  /* FIX: was `background: var(--paper)` (shorthand) which reset the caret SVG's
     background-repeat to `repeat`, tiling chevrons across the whole control on
     focus/open. Use background-color so the caret image/repeat/position survive. */
  background-color: var(--paper);
}
.field input::placeholder,
.field textarea::placeholder { color: var(--faint); }
.field select {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath fill='none' stroke='%2364748b' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round' d='M3 4.5l3 3 3-3'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 12px center;
  background-size: 12px;
  padding-right: 36px;
}
.field textarea { resize: vertical; min-height: 80px; }
.form-section { margin-bottom: 28px; }
.form-section h3 {
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--brand);
  font-family: var(--font-sans);
  font-weight: 700;
  margin-bottom: 16px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--line);
}
.form-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 16px;
}
.form-grid .full { grid-column: 1 / -1; }
@media (max-width: 700px) { .form-grid { grid-template-columns: 1fr; } }
.upload-box {
  border: 1px dashed var(--line-2);
  padding: 18px;
  text-align: center;
  cursor: pointer;
  background: var(--paper-2);
  min-height: 100px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  gap: 6px;
  border-radius: var(--radius);
  transition: border-color var(--t-fast), background var(--t-fast);
}
.upload-box:hover {
  border-color: var(--brand);
  background: var(--brand-tint);
}
.upload-box.has-file {
  border-style: solid;
  border-color: var(--green);
  background: var(--green-tint);
  padding: 12px;
}
.upload-box img {
  max-height: 70px;
  max-width: 100%;
  object-fit: contain;
  border-radius: var(--radius-sm);
}
.upload-box .upload-label {
  font-size: 11px;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.1em;
  font-weight: 600;
}
.csv-area {
  width: 100%;
  padding: 12px 14px;
  border: 1px solid var(--line);
  font-family: var(--font-mono);
  font-size: 12px;
  min-height: 140px;
  border-radius: var(--radius);
  background: var(--paper);
  transition: border-color var(--t-fast), box-shadow var(--t-fast);
}
.csv-area:focus {
  outline: none;
  border-color: var(--brand);
  box-shadow: var(--ring);
}
.bulk-row,
.bulk-head {
  display: grid;
  grid-template-columns: 1.4fr 1.2fr 1.4fr 1fr 1fr 0.9fr 0.9fr 30px;
  gap: 6px;
  margin-bottom: 6px;
}
.bulk-row input,
.bulk-row select {
  padding: 8px 10px;
  border: 1px solid var(--line);
  font-size: 12px;
  border-radius: var(--radius-sm);
  background: var(--paper);
}
.bulk-row .x {
  color: var(--rust);
  font-size: 14px;
  border: 1px solid var(--line);
  background: var(--paper);
  cursor: pointer;
  border-radius: var(--radius-sm);
  transition: all var(--t-fast);
}
.bulk-row .x:hover { background: var(--rust-tint); border-color: var(--rust); }
.bulk-head {
  margin-bottom: 8px;
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--muted);
  font-weight: 600;
}
.search-bar {
  position: relative;
  margin-bottom: 16px;
}
.search-bar input {
  width: 100%;
  padding: 10px 14px 10px 38px;
  border: 1px solid var(--line);
  background: var(--paper);
  border-radius: var(--radius);
  transition: border-color var(--t-fast), box-shadow var(--t-fast);
}
.search-bar input:focus {
  outline: none;
  border-color: var(--brand);
  box-shadow: var(--ring);
}
.search-bar::before {
  content: '';
  position: absolute;
  left: 14px;
  top: 50%;
  transform: translateY(-50%);
  width: 14px;
  height: 14px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14'%3E%3Cpath fill='none' stroke='%2364748b' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round' d='M6 1.5a4.5 4.5 0 1 0 0 9 4.5 4.5 0 0 0 0-9zm6.5 11L9.3 9.3'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-size: contain;
  pointer-events: none;
}
.filter-row {
  display: flex;
  gap: 10px;
  align-items: center;
  flex-wrap: wrap;
  margin-bottom: 16px;
}
.filter-row select,
.filter-row input {
  padding: 9px 12px;
  border: 1px solid var(--line);
  background: var(--paper);
  font-size: 13px;
  border-radius: var(--radius);
  color: var(--ink-2);
}
.filter-row select { padding-right: 32px; appearance: none; -webkit-appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath fill='none' stroke='%2364748b' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round' d='M3 4.5l3 3 3-3'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 10px center; background-size: 12px;
}
.filter-row select:focus,
.filter-row input:focus { outline: none; border-color: var(--brand); box-shadow: var(--ring); }
.jv-account-combo { position: relative; }
.jv-account-input {
  width: 100%;
  border: 1px solid var(--line);
  background: var(--paper);
  font-size: 12px;
  padding: 7px 10px;
  border-radius: var(--radius-sm);
  outline: none;
  transition: border-color var(--t-fast), box-shadow var(--t-fast);
}
.jv-account-input:focus {
  border-color: var(--brand);
  box-shadow: var(--ring);
}
.jv-account-panel {
  position: fixed;
  background: var(--paper);
  border: 1px solid var(--line);
  box-shadow: var(--shadow-lg);
  max-height: 340px;
  overflow-y: auto;
  z-index: 200;
  border-radius: var(--radius);
}
.jv-account-opt {
  padding: 8px 12px;
  cursor: pointer;
  border-top: 1px solid var(--line);
  font-size: 12px;
  color: var(--ink-2);
  transition: background var(--t-fast);
}
.jv-account-opt:hover { background: var(--paper-2); }
.jv-account-opt:first-child { border-top: none !important; }
.tbl {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  font-size: 13px;
  background: var(--paper);
}
.tbl thead th {
  text-align: left;
  font-size: 10.5px;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--muted);
  font-weight: 600;
  padding: 11px 12px;
  background: var(--paper-2);
  border-bottom: 1px solid var(--line);
  position: sticky;
  top: 0;
  z-index: 2;
  white-space: nowrap;
}
.tbl thead th:first-child { border-top-left-radius: var(--radius); }
.tbl thead th:last-child  { border-top-right-radius: var(--radius); }
.tbl tbody td {
  padding: 12px 12px;
  border-bottom: 1px solid var(--line);
  vertical-align: middle;
  color: var(--ink-2);
}
.tbl tbody tr {
  transition: background var(--t-fast);
}
.tbl tbody tr:hover { background: var(--brand-tint); }
.tbl tbody tr:last-child td { border-bottom: none; }
.tbl .num,
.tbl td.num,
.tbl th.num {
  text-align: right;
  font-family: var(--font-mono);
  font-variant-numeric: tabular-nums;
}
.tbl .actions,
.tbl td.actions,
.tbl th.actions {
  text-align: right;
  white-space: nowrap;
}
.tbl .actions button,
.tbl td.actions button {
  padding: 5px 10px;
  font-size: 11.5px;
  color: var(--ink-2);
  border: 1px solid var(--line);
  background: var(--paper);
  margin-left: 4px;
  border-radius: var(--radius-sm);
  transition: all var(--t-fast);
  cursor: pointer;
}
.tbl .actions button:hover,
.tbl td.actions button:hover {
  background: var(--paper-2);
  border-color: var(--line-2);
  color: var(--ink);
}
.tbl .actions button.del,
.tbl td.actions button.del {
  color: var(--rust);
  border-color: var(--rust-soft);
}
.tbl .actions button.del:hover,
.tbl td.actions button.del:hover {
  background: var(--rust-tint);
  border-color: var(--rust);
}
.data-tbl {
  width: 100%;
  font-size: 13px;
}
.empty {
  text-align: center;
  padding: 56px 20px;
  color: var(--muted);
}
.empty .icon {
  font-size: 36px;
  opacity: 0.5;
  margin-bottom: 14px;
  display: block;
}
.table-scroll,
.table-wrap {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  position: relative;
  border-radius: var(--radius);
}
.line-table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  margin-bottom: 12px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  overflow: hidden;
}
.line-table th {
  background: var(--paper-2);
  padding: 9px 10px;
  font-size: 10.5px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--muted);
  text-align: left;
  border-bottom: 1px solid var(--line);
  font-weight: 600;
}
.line-table td {
  padding: 4px;
  border-bottom: 1px solid var(--line);
  border-right: 1px solid var(--line);
}
.line-table td:last-child { border-right: none; }
.line-table tr:last-child td { border-bottom: none; }
.line-table input,
.line-table select {
  width: 100%;
  padding: 7px 9px;
  border: 1px solid transparent;
  font-size: 13px;
  background: transparent;
  border-radius: var(--radius-sm);
  transition: all var(--t-fast);
}
.line-table input:focus,
.line-table select:focus {
  outline: none;
  background: var(--paper);
  border-color: var(--brand);
  box-shadow: var(--ring);
}
.line-table .num-input {
  text-align: right;
  font-family: var(--font-mono);
  font-variant-numeric: tabular-nums;
}
.line-table .del-btn {
  color: var(--rust);
  font-size: 16px;
  padding: 4px 8px;
  border-radius: var(--radius-sm);
  transition: background var(--t-fast);
}
.line-table .del-btn:hover { background: var(--rust-tint); }
.totals-box {
  background: var(--paper-2);
  padding: 18px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
}
.totals-row {
  display: flex;
  justify-content: space-between;
  padding: 6px 0;
  font-size: 13px;
  color: var(--ink-2);
}
.totals-row .v {
  font-family: var(--font-mono);
  font-variant-numeric: tabular-nums;
  color: var(--ink);
}
.totals-row.grand {
  border-top: 2px solid var(--ink);
  margin-top: 10px;
  padding-top: 12px;
  font-size: 16px;
  font-weight: 700;
  color: var(--ink);
}
.builder-grid {
  display: grid;
  grid-template-columns: 2fr 1fr;
  gap: 24px;
}
.builder-grid > * { min-width: 0; }
.builder-grid .invoice-preview {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  min-height: 0 !important;
  overflow-x: auto;
}
@media (max-width: 1200px) { .builder-grid { grid-template-columns: 3fr 2fr; } }
@media (max-width: 1000px) { .builder-grid { grid-template-columns: 1fr; } }
.badge {
  display: inline-block;
  padding: 3px 10px;
  font-size: 10.5px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-weight: 700;
  border-radius: 999px;
  border: 1px solid transparent;
  line-height: 1.45;
  white-space: nowrap;
}
.badge.admin     { background: var(--ink); color: var(--paper); }
.badge.staff     { background: var(--paper-2); color: var(--ink-2); border-color: var(--line); }
.badge.client    { background: var(--info-soft); color: var(--info); border-color: #c7d2fe; }
.badge.paid      { background: var(--green-soft); color: var(--green); }
.badge.unpaid    { background: var(--rust-soft); color: var(--rust); }
.badge.partial   { background: var(--amber-soft); color: var(--amber); }
.badge.cancelled { background: var(--paper-3); color: var(--muted); text-decoration: line-through; }
.badge.draft     { background: var(--paper-2); color: var(--muted); }
.badge.active    { background: var(--green-soft); color: var(--green); }
.badge.disabled  { background: var(--rust-soft); color: var(--rust); }
.toast {
  position: fixed;
  bottom: 24px;
  right: 24px;
  background: var(--ink);
  color: var(--paper);
  padding: 14px 20px;
  border-left: 3px solid var(--brand);
  box-shadow: var(--shadow-xl);
  z-index: 200;
  font-size: 13px;
  border-radius: var(--radius);
  max-width: 380px;
  animation: toastIn 220ms cubic-bezier(0.16, 1, 0.3, 1);
}
@keyframes toastIn {
  from { opacity: 0; transform: translateY(12px); }
  to   { opacity: 1; transform: translateY(0); }
}
.toast.error   { border-left-color: var(--rust); }
.toast.success { border-left-color: var(--green); }
.toast.info    { border-left-color: var(--info); }
.modal-bg {
  position: fixed;
  inset: 0;
  background: rgba(15, 23, 42, 0.45);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  display: none;
  align-items: center;
  justify-content: center;
  z-index: 100;
  padding: 24px;
  overflow-y: auto;
  animation: bgIn 180ms ease-out;
}
@keyframes bgIn { from { opacity: 0; } to { opacity: 1; } }
.modal-bg.open { display: flex; }
.modal {
  background: var(--paper);
  width: 100%;
  max-width: 900px;
  max-height: 92vh;
  overflow-y: auto;
  box-shadow: var(--shadow-xl);
  border-radius: var(--radius-lg);
  border: 1px solid var(--line);
  animation: modalIn 240ms cubic-bezier(0.16, 1, 0.3, 1);
}
@keyframes modalIn {
  from { opacity: 0; transform: translateY(16px) scale(0.98); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}
.modal.lg { max-width: 1100px; }
.modal-head {
  padding: 20px 28px;
  border-bottom: 1px solid var(--line);
  display: flex;
  justify-content: space-between;
  align-items: center;
  position: sticky;
  top: 0;
  background: var(--paper);
  z-index: 5;
  border-top-left-radius: var(--radius-lg);
  border-top-right-radius: var(--radius-lg);
}
.modal-head h2 {
  font-size: 20px;
  font-weight: 700;
  letter-spacing: -0.015em;
  color: var(--ink);
}
.modal-close {
  font-size: 22px;
  color: var(--muted);
  width: 32px;
  height: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--radius-sm);
  transition: all var(--t-fast);
}
.modal-close:hover { background: var(--paper-2); color: var(--ink); }
.modal-body { padding: 24px 28px; }
.modal-foot {
  padding: 16px 28px;
  border-top: 1px solid var(--line);
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  background: var(--paper-2);
  position: sticky;
  bottom: 0;
  flex-wrap: wrap;
  border-bottom-left-radius: var(--radius-lg);
  border-bottom-right-radius: var(--radius-lg);
}
.stat {
  background: var(--paper);
  border: 1px solid var(--line);
  padding: 20px;
  position: relative;
  overflow: hidden;
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-xs);
  transition: transform var(--t), box-shadow var(--t);
}
.stat:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow);
}
.stat::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 4px;
  height: 100%;
  background: var(--brand);
  border-radius: 4px 0 0 4px;
}
.stat .label {
  font-size: 10.5px;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--muted);
  font-weight: 600;
  margin-bottom: 8px;
}
.stat .value {
  font-size: 26px;
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--ink);
  font-variant-numeric: tabular-nums;
}
.stat .sub {
  font-size: 11px;
  color: var(--muted);
  margin-top: 4px;
  font-family: var(--font-mono);
}
.stat-tile {
  background: var(--paper);
  border: 1px solid var(--line);
  padding: 16px 18px;
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-xs);
  transition: transform var(--t), box-shadow var(--t);
}
.stat-tile:hover {
  transform: translateY(-1px);
  box-shadow: var(--shadow-sm);
}
.stat-tile .stat-label {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--muted);
  margin-bottom: 6px;
  font-weight: 600;
}
.stat-tile .stat-value {
  font-size: 22px;
  font-weight: 700;
  font-family: var(--font-mono);
  font-variant-numeric: tabular-nums;
  color: var(--ink);
  letter-spacing: -0.01em;
}
.kpi-tile {
  background: var(--paper);
  border: 1px solid var(--line);
  padding: 18px 20px;
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-xs);
  transition: transform var(--t), box-shadow var(--t);
}
.kpi-tile:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow);
}
.kpi-tile .kpi-label {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--muted);
  margin-bottom: 8px;
  font-weight: 600;
}
.kpi-tile .kpi-value {
  font-size: 26px;
  font-weight: 700;
  font-family: var(--font-mono);
  font-variant-numeric: tabular-nums;
  color: var(--ink);
  line-height: 1.15;
  letter-spacing: -0.015em;
}
.kpi-tile .kpi-sub {
  font-size: 11.5px;
  color: var(--muted);
  margin-top: 6px;
  line-height: 1.45;
}
.chart-card { padding: 20px 22px; }
.chart-card .chart-title {
  font-size: 13px;
  font-weight: 600;
  margin: 0 0 14px;
  color: var(--ink);
  text-transform: uppercase;
  letter-spacing: 0.08em;
}
.chart-card canvas { max-height: 300px; }
.dash-charts > .card.chart-card[style*="grid-column"] canvas { max-height: 340px; }
.dash-period-row .btn.sm { padding: 6px 12px; font-size: 12px; }
.dash-period-row .btn.sm:not(.active) {
  background: var(--paper);
  color: var(--ink-2);
  border-color: var(--line);
}
.adm-subtabs {
  display: flex;
  gap: 2px;
  padding: 0 4px;
  border-bottom: 1px solid var(--line);
  flex-wrap: wrap;
}
.adm-subtab {
  background: transparent;
  border: none;
  border-bottom: 2px solid transparent;
  padding: 10px 16px;
  font-family: inherit;
  font-size: 13px;
  font-weight: 500;
  color: var(--muted);
  cursor: pointer;
  letter-spacing: 0.005em;
  transition: color var(--t-fast), border-color var(--t-fast), background var(--t-fast);
  border-radius: var(--radius-sm) var(--radius-sm) 0 0;
  white-space: nowrap;
}
.adm-subtab:hover { color: var(--ink); background: var(--paper-2); }
.adm-subtab.active {
  color: var(--brand-active);
  border-bottom-color: var(--brand);
  font-weight: 600;
}
.ar-card {
  background: var(--paper);
  border: 1px solid var(--line);
  padding: 16px 18px;
  border-radius: var(--radius);
  box-shadow: var(--shadow-xs);
  transition: box-shadow var(--t);
}
.ar-card:hover { box-shadow: var(--shadow-sm); }
.ar-card-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 12px;
}
.ar-card-head strong {
  font-size: 13.5px;
  font-weight: 600;
  display: block;
  margin-bottom: 3px;
  color: var(--ink);
}
.ar-card-desc {
  font-size: 11.5px;
  color: var(--muted);
  line-height: 1.5;
}
.ar-card-body {
  margin-top: 12px;
  font-size: 12px;
}
.ar-card-body:empty { margin-top: 0; }
.ar-card-body table { width: 100%; font-size: 12px; }
.ar-card-body table th {
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--muted);
  font-weight: 600;
  padding: 5px 6px;
  border-bottom: 1px solid var(--line);
  text-align: left;
}
.ar-card-body table td {
  padding: 6px;
  border-bottom: 1px solid var(--line);
  color: var(--ink-2);
}
.ar-card-body table td.num,
.ar-card-body table th.num {
  text-align: right;
  font-variant-numeric: tabular-nums;
  font-family: var(--font-mono);
}
.ar-card-empty {
  padding: 18px;
  color: var(--muted);
  text-align: center;
  font-size: 12px;
  background: var(--paper-2);
  border: 1px dashed var(--line);
  border-radius: var(--radius);
}
.pwa-install-btn {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  background: var(--brand-tint);
  color: var(--brand-active);
  border: 1px solid var(--brand-soft);
  font-size: 12px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  cursor: pointer;
  border-radius: var(--radius);
  transition: all var(--t-fast);
}
.pwa-install-btn:hover {
  background: var(--brand-soft);
  border-color: var(--brand);
}
@media (max-width: 900px) {
  .pwa-install-btn .pwa-install-label { display: none; }
  .pwa-install-btn { padding: 6px 10px; }
}
.invoice-preview{background:var(--paper);padding:0;border:1px solid var(--line);font-family:'Inter',sans-serif;color:#1a1a1a;width:210mm;min-height:297mm;margin:0 auto;box-shadow:0 2px 12px rgba(0,0,0,.08)}
.inv-page{padding:14mm 14mm;min-height:297mm;position:relative;display:flex;flex-direction:column;font-size:13px}
.inv-page > .inv-foot{margin-top:auto}
.inv-meta{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:14px;font-size:13px}
.inv-meta .block-title{font-size:10px;text-transform:uppercase;letter-spacing:.15em;color:#666;margin-bottom:4px;font-weight:600}
.inv-meta strong{font-weight:600;font-size:14px;display:block;margin-bottom:2px}
.inv-meta .small{font-size:12px;color:#555;line-height:1.45}
.inv-numbers{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:16px;padding:10px 14px;background:#fbf8f3;border:1px solid #ddd;font-size:13px}
.inv-numbers .lbl{font-size:10px;text-transform:uppercase;letter-spacing:.15em;color:#666;font-weight:600;margin-bottom:2px}
.inv-numbers .val{font-family:'JetBrains Mono',monospace;font-size:13px;font-weight:600}
.inv-items{width:100%;border-collapse:collapse;margin-bottom:12px;font-size:12.5px}
.inv-items th{background:#0d1b2a;color:var(--paper);padding:8px 7px;text-align:left;font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;font-weight:600}
.inv-items td{padding:8px 7px;border-bottom:1px solid #ddd;vertical-align:top}
.inv-items .right{text-align:right;font-family:'JetBrains Mono',monospace}
.inv-totals{margin-left:auto;width:320px;font-size:13px}
.inv-totals .row{display:flex;justify-content:space-between;padding:4px 0}
.inv-totals .row .v{font-family:'JetBrains Mono',monospace}
.inv-totals .grand{border-top:2px solid #1a1a1a;margin-top:4px;padding-top:7px;font-weight:700;font-size:16px;font-family:'Fraunces',serif}
.inv-foot{margin-top:auto;padding-top:14px;border-top:1px solid #ddd;display:grid;grid-template-columns:1fr 1fr;gap:20px;font-size:11.5px;align-items:end}
.inv-foot .terms-col{color:#555;line-height:1.5;font-size:11px}
.inv-foot .terms-col .terms-title{font-weight:600;color:#1a1a1a;margin-bottom:3px;font-size:11.5px}
.inv-foot .sig-block{text-align:right;display:flex;flex-direction:column;justify-content:flex-end;align-items:flex-end;min-height:90px}
.inv-foot .sig-block img{max-height:55px;margin-bottom:4px}
.inv-foot .stamp-img{max-height:60px;opacity:.85;margin-bottom:4px}
.inv-foot .sig-line{border-top:1px solid #1a1a1a;width:180px;margin-top:6px;padding-top:4px;font-size:11px}
.inv-words{margin:10px 0;padding:8px 12px;background:#fbf8f3;border-left:3px solid #a8842b;font-size:12px;font-style:italic}
.qr-box{margin-top:8px;text-align:left}
.qr-box canvas,.qr-box img{display:block;margin:0 auto}
.qr-box canvas{width:100px !important;height:100px !important}
.inv-logo{max-height:60px;max-width:160px;object-fit:contain;margin-bottom:6px}
.inv-head-uni{margin-bottom:18px;font-family:'Inter',sans-serif}
.inv-head-uni .head-top-line{height:3px;background:var(--accent,#a8842b)}
.inv-head-uni .head-main{display:flex;align-items:center;gap:22px;padding:14px 0 12px}
.inv-head-uni .head-logo{flex:0 0 auto;width:110px;display:flex;align-items:center;justify-content:center}
.inv-head-uni .head-logo img{max-width:110px;max-height:90px;object-fit:contain;margin:0 !important}
.inv-head-uni .head-info{flex:1 1 auto;min-width:0}
.inv-head-uni .head-company{font-family:'Fraunces',serif;font-size:24px;font-weight:700;color:var(--accent,#a8842b);line-height:1.15;margin-bottom:5px}
.inv-head-uni .head-addr{font-size:12px;color:#333;line-height:1.5;margin-bottom:2px}
.inv-head-uni .head-line{font-size:12px;color:#333;line-height:1.45}
.inv-head-uni .head-divider{height:1px;background:#e0d8c4}
.inv-head-uni .head-title-row{display:flex;justify-content:center;align-items:center;padding:9px 0 7px;border-bottom:2px solid var(--accent,#a8842b);margin-bottom:0}
.inv-head-uni .head-doc-title{font-family:'Fraunces',serif;font-size:22px;font-weight:700;color:#1a1a1a;letter-spacing:.05em;line-height:1;text-align:center;text-transform:uppercase}
.t-modern .inv-head-uni .head-doc-title{color:var(--accent)}
.t-vibrant .inv-head-uni .head-doc-title{color:var(--accent)}
.t-ocean .inv-head-uni .head-doc-title{color:var(--accent);font-family:'Space Grotesk',sans-serif}
.t-sunset .inv-head-uni .head-doc-title{color:var(--accent);font-family:'Playfair Display',serif}
.t-emerald .inv-head-uni .head-doc-title{color:var(--accent);font-family:'Space Grotesk',sans-serif}
.t-royal .inv-head-uni .head-doc-title{color:var(--accent);font-family:'Playfair Display',serif}
.t-mono .inv-head-uni{font-family:'JetBrains Mono',monospace}
.t-mono .inv-head-uni .head-doc-title{font-family:'JetBrains Mono',monospace;text-transform:uppercase;letter-spacing:.2em;font-size:22px}
.t-mono .inv-head-uni .head-company{font-family:'JetBrains Mono',monospace;font-size:24px}
.t-pastel .inv-head-uni .head-doc-title{color:var(--accent);font-family:'Playfair Display',serif}
.t-pastel .inv-head-uni .head-company{font-family:'Playfair Display',serif}
.t-editorial .inv-head-uni .head-doc-title{font-size:36px;letter-spacing:-.02em}
.t-minimal .inv-head-uni .head-top-line{display:none}
.t-minimal .inv-head-uni .head-doc-title{text-transform:uppercase;letter-spacing:.1em;font-size:24px}
.t-classic .inv-head{display:none}
.t-classic .biz-name{display:inline}
.t-classic .doc-title{display:inline}
.t-modern{background:var(--paper)}
.t-modern .inv-head{background:#0d1b2a;color:var(--paper);padding:32px 16mm;margin:-18mm -16mm 26px}
.t-modern .doc-title{font-size:36px;font-family:'Fraunces',serif;font-weight:600;letter-spacing:-.02em}
.t-minimal .inv-head{text-align:center;border-bottom:1px solid #1a1a1a;padding-bottom:24px;margin-bottom:28px}
.t-minimal .doc-title{font-family:'Fraunces',serif;font-size:42px;letter-spacing:.08em;text-transform:uppercase}
.t-minimal .biz-name{font-size:15px;letter-spacing:.3em;text-transform:uppercase;color:#555;margin-top:10px}
.t-corporate .inv-head{display:flex;justify-content:space-between;align-items:center;padding:20px 0;border-top:4px solid #a8842b;border-bottom:1px solid #ddd;margin-bottom:22px}
.t-corporate .biz-name{font-family:'Fraunces',serif;font-size:26px;color:#a8842b;font-weight:700}
.t-corporate .doc-title{font-size:26px;text-align:right;font-family:'Fraunces',serif}
.t-compact{font-size:12px}
.t-compact .inv-head{display:grid;grid-template-columns:1fr 1fr;gap:22px;padding-bottom:14px;border-bottom:1px solid #1a1a1a;margin-bottom:18px}
.t-compact .biz-name{font-family:'Fraunces',serif;font-size:22px;font-weight:600}
.t-compact .doc-title{font-size:20px;text-align:right;letter-spacing:.15em;text-transform:uppercase}
.t-editorial{font-family:'Fraunces',serif}
.t-editorial .inv-head{padding-bottom:22px;border-bottom:1px solid #1a1a1a;margin-bottom:22px}
.t-editorial .doc-title{font-size:48px;font-weight:600;letter-spacing:-.03em;margin-bottom:6px}
.t-editorial .doc-sub{font-family:'Inter',sans-serif;font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:#666}
.t-boxed{border:2px solid #1a1a1a}
.t-boxed .inv-head{background:#fbf8f3;padding:26px;border-bottom:2px solid #1a1a1a;display:flex;justify-content:space-between}
.t-boxed .inv-page{padding:0}
.t-boxed .inv-body{padding:26px}
.t-boxed .biz-name{font-family:'Fraunces',serif;font-size:26px;font-weight:600}
.t-boxed .doc-title{font-family:'Fraunces',serif;font-size:30px;text-align:right}
.t-slim .inv-head{display:flex;justify-content:space-between;align-items:flex-end;padding-bottom:12px;border-bottom:1px solid #1a1a1a;margin-bottom:26px}
.t-slim .biz-name{font-family:'Fraunces',serif;font-size:24px}
.t-slim .doc-title{font-family:'JetBrains Mono',monospace;font-size:16px;letter-spacing:.3em;text-transform:uppercase}
.t-vibrant .inv-head{background:linear-gradient(135deg,#6c5ce7 0%,#a29bfe 60%,#fd79a8 100%);color:var(--paper);padding:40px 16mm;margin:-18mm -16mm 26px;position:relative;overflow:hidden}
.t-vibrant .inv-head::after{content:'';position:absolute;right:-40px;top:-40px;width:180px;height:180px;background:rgba(255,255,255,.1);border-radius:50%}
.t-vibrant .doc-title{font-family:'Playfair Display',serif;font-size:40px;font-weight:700;position:relative;z-index:2}
.t-vibrant .biz-name{font-size:24px;font-family:'Fraunces',serif;position:relative;z-index:2}
.t-vibrant .inv-items th{background:#6c5ce7}
.t-vibrant .inv-words{background:#f3f0ff;border-left-color:#6c5ce7}
.t-vibrant .inv-totals .grand{border-top-color:#6c5ce7;color:#6c5ce7}
.t-ocean .inv-head{background:linear-gradient(135deg,var(--brand) 0%,#06b6d4 100%);color:var(--paper);padding:34px 16mm;margin:-18mm -16mm 26px;border-bottom:6px solid #f59e0b}
.t-ocean .doc-title{font-family:'Space Grotesk',sans-serif;font-size:34px;font-weight:700}
.t-ocean .biz-name{font-size:22px;font-family:'Fraunces',serif}
.t-ocean .inv-items th{background:var(--brand)}
.t-ocean .inv-numbers{background:#ecfeff;border-color:#a5f3fc}
.t-ocean .inv-words{background:#ecfeff;border-left-color:var(--brand)}
.t-ocean .inv-totals .grand{border-top-color:var(--brand);color:var(--brand)}
.t-sunset{background:#fffaf5}
.t-sunset .inv-head{display:flex;justify-content:space-between;align-items:center;padding:22px 0;margin-bottom:22px;position:relative}
.t-sunset .inv-head::after{content:'';position:absolute;bottom:0;left:0;right:0;height:6px;background:linear-gradient(90deg,#f43f5e,#f97316,#fbbf24)}
.t-sunset .biz-name{font-family:'Playfair Display',serif;font-size:28px;color:#9f1239;font-weight:700}
.t-sunset .doc-title{font-family:'Playfair Display',serif;font-size:36px;text-align:right;color:#7c2d12;font-weight:700}
.t-sunset .inv-items th{background:#9f1239}
.t-sunset .inv-numbers{background:#fff1f2;border-color:#fecdd3}
.t-sunset .inv-words{background:#fff1f2;border-left-color:#f43f5e}
.t-sunset .inv-totals .grand{border-top-color:#9f1239;color:#9f1239}
.t-emerald .inv-head{display:flex;justify-content:space-between;align-items:flex-start;border-left:8px solid #059669;padding:16px 0 16px 22px;margin-bottom:22px;background:linear-gradient(90deg,#ecfdf5 0%,transparent 60%)}
.t-emerald .biz-name{font-family:'Space Grotesk',sans-serif;font-size:26px;color:#064e3b;font-weight:700}
.t-emerald .doc-title{font-family:'Space Grotesk',sans-serif;font-size:30px;text-align:right;color:#059669;font-weight:700}
.t-emerald .inv-items th{background:#059669}
.t-emerald .inv-numbers{background:#ecfdf5;border-color:#a7f3d0}
.t-emerald .inv-words{background:#ecfdf5;border-left-color:#059669}
.t-emerald .inv-totals .grand{border-top-color:#059669;color:#059669}
.t-royal .inv-head{background:#1e1b4b;color:var(--paper);padding:34px 16mm;margin:-18mm -16mm 0;position:relative}
.t-royal .inv-head::after{content:'';position:absolute;bottom:-8px;left:0;right:0;height:8px;background:linear-gradient(90deg,#fbbf24,#f59e0b,#fbbf24)}
.t-royal .doc-title{font-family:'Playfair Display',serif;font-size:38px;font-weight:700;color:#fbbf24}
.t-royal .biz-name{font-size:22px;font-family:'Fraunces',serif;color:#e0e7ff}
.t-royal .inv-page{padding-top:50px}
.t-royal .inv-items th{background:#1e1b4b}
.t-royal .inv-numbers{background:#eef2ff;border-color:#c7d2fe}
.t-royal .inv-words{background:#eef2ff;border-left-color:#1e1b4b}
.t-royal .inv-totals .grand{border-top-color:#1e1b4b;color:#1e1b4b}
.t-mono{font-family:'JetBrains Mono',monospace;font-size:13px}
.t-mono .inv-head{border:2px solid #000;padding:18px 22px;margin-bottom:22px;display:flex;justify-content:space-between;align-items:center}
.t-mono .biz-name{font-family:'JetBrains Mono',monospace;font-size:22px;font-weight:700}
.t-mono .doc-title{font-family:'JetBrains Mono',monospace;font-size:18px;text-transform:uppercase;letter-spacing:.3em;background:#000;color:var(--paper);padding:10px 18px}
.t-mono .inv-items th{background:#000}
.t-mono .inv-numbers{background:var(--paper);border:2px solid #000}
.t-pastel{background:linear-gradient(135deg,#fef9c3 0%,#fce7f3 50%,var(--info-soft) 100%)}
.t-pastel .inv-page{background:rgba(255,255,255,.92);margin:18px;border-radius:8px}
.t-pastel .inv-head{display:flex;justify-content:space-between;align-items:center;padding-bottom:18px;border-bottom:2px dashed #ec4899;margin-bottom:22px}
.t-pastel .biz-name{font-family:'Playfair Display',serif;font-size:26px;color:#9d174d;font-weight:700}
.t-pastel .doc-title{font-family:'Playfair Display',serif;font-size:32px;color:#1e40af;font-weight:700}
.t-pastel .inv-items th{background:#9d174d}
.t-pastel .inv-words{background:#fdf2f8;border-left-color:#ec4899}
.t-pastel .inv-totals .grand{border-top-color:#9d174d;color:#9d174d}
.badge{display:inline-block;padding:2px 8px;font-size:10px;text-transform:uppercase;letter-spacing:.1em;font-weight:600;border-radius:2px}
.badge.admin{background:var(--ink);color:var(--paper)}
.badge.staff{background:var(--paper-2);color:var(--ink);border:1px solid var(--line)}
.badge.client{background:#e8f0f8;color:#1e40af;border:1px solid #c7d2fe}
.badge.paid{background:#e3f1e6;color:var(--green)}
.badge.unpaid{background:#fce9e3;color:var(--rust)}
.badge.partial{background:#fff4d6;color:#8a6f00}
.badge.cancelled{background:#e6e6e6;color:#666;text-decoration:line-through}
.badge.draft{background:var(--paper-2);color:var(--muted)}
.badge.active{background:#e3f1e6;color:var(--green)}
.badge.disabled{background:#fce9e3;color:var(--rust)}
.search-bar{position:relative;margin-bottom:16px}
.search-bar input{width:100%;padding:10px 14px 10px 36px;border:1px solid var(--line);background:var(--paper)}
.search-bar::before{content:'⌕';position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--muted);font-size:16px}
.filter-row{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:16px}
.filter-row select{padding:8px 12px;border:1px solid var(--line);background:var(--paper);font-size:13px}
.toast{position:fixed;bottom:24px;right:24px;background:var(--ink);color:var(--paper);padding:14px 20px;border-left:3px solid var(--gold);box-shadow:0 8px 24px rgba(0,0,0,.2);z-index:200;font-size:13px;animation:slideIn .2s;max-width:380px}
.toast.error{border-left-color:var(--rust)}
.toast.success{border-left-color:var(--green)}
.toast.info{border-left-color:var(--brand)}
@keyframes slideIn{from{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}
.bulk-row{display:grid;grid-template-columns:1.4fr 1.2fr 1.4fr 1fr 1fr 0.9fr 0.9fr 30px;gap:6px;margin-bottom:6px}
.bulk-row input,.bulk-row select{padding:7px 8px;border:1px solid var(--line);font-size:12px}
.bulk-row .x{color:var(--rust);font-size:14px;border:1px solid var(--line);background:var(--paper);cursor:pointer}
.bulk-head{display:grid;grid-template-columns:1.4fr 1.2fr 1.4fr 1fr 1fr 0.9fr 0.9fr 30px;gap:6px;margin-bottom:8px;font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);font-weight:600}
.csv-area{width:100%;padding:10px;border:1px solid var(--line);font-family:'JetBrains Mono',monospace;font-size:12px;min-height:140px}
@media print{
  @page{size:A4 portrait;margin:0}
  html,body{margin:0;padding:0;background:var(--paper)}
  body *{visibility:hidden}
  #printArea, #printArea *{visibility:visible}
  #printArea{position:absolute;left:0;top:0;width:210mm}
  #printArea .invoice-preview{
    width:210mm !important;
    min-height:297mm !important;
    max-width:none !important;
    box-shadow:none !important;
    border:none !important;
    margin:0 !important;
    page-break-after:always;
  }
  .inv-page{padding:18mm 16mm !important}
}
@media(max-width:768px){
  main{padding:16px 12px}
  header.topbar{padding:10px 14px;flex-wrap:wrap;gap:8px}
  .top-brand .brand-text{font-size:13px}
  .top-brand .brand-text small{display:none}
  .client-pill{display:none}
  .page-head{flex-direction:column;align-items:flex-start;gap:8px;margin-bottom:18px}
  .page-head h1{font-size:24px}
  .page-head>div:last-child{display:flex;flex-wrap:wrap;gap:8px}
  .btn{padding:11px 16px;font-size:14px}
  .btn.sm,.btn.secondary.sm{padding:9px 12px;font-size:13px}
  .grid-2,.grid-3,.grid-4{grid-template-columns:1fr;gap:12px}
  .stat .value{font-size:22px}
  .form-grid{grid-template-columns:1fr !important;gap:10px}
  .builder-grid{grid-template-columns:1fr !important;gap:16px}
  .field input,.field select,.field textarea{font-size:16px;padding:11px 12px}
  .tbl,.line-table,.inv-items{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;white-space:nowrap;width:100%;position:relative}
  .tbl thead th,.tbl tbody td{white-space:nowrap;padding:12px 10px}
  .table-wrap{position:relative}
  .table-wrap::after{content:'';position:absolute;top:0;right:0;width:24px;height:100%;background:linear-gradient(to right,transparent,rgba(0,0,0,0.06));pointer-events:none}
  .tbl tbody td:first-child{position:sticky;left:0;background:var(--paper);box-shadow:1px 0 0 var(--line)}
  .tbl thead th:first-child{position:sticky;left:0;background:var(--paper-2);z-index:2}
  .tbl td.actions{white-space:normal}
  .tbl td.actions button{display:inline-block;margin:2px;padding:8px 12px;font-size:13px}
  .search-bar{flex-direction:column}
  .search-bar input{width:100%}
  .modal,.modal.lg{max-width:100vw;width:100vw;max-height:100vh;height:100vh;border-radius:0}
  .modal-bg{padding:0}
  .modal-head{position:sticky;top:0;background:var(--paper);z-index:5}
  .modal-body{padding:14px !important}
  .profile-menu{right:8px;left:8px;width:auto}
  .profile-menu button{padding:14px 16px}
  .line-table{min-width:680px}
  .line-table input,.line-table select{font-size:15px;padding:9px 8px}
  .builder-preview{display:none}
  .add-line-btn,#addLineBtn{width:100%;padding:13px;font-size:15px;margin-top:10px}
  .form-section{padding:16px 14px;margin-bottom:14px}
  .form-section h3{font-size:16px;margin-bottom:12px}
  .invoice-paper,.inv-paper{transform:scale(1);width:100% !important;min-width:0 !important}
  .tabs,.subtabs{overflow-x:auto;white-space:nowrap;-webkit-overflow-scrolling:touch}
  .login-card{padding:28px 20px}
  h1{font-size:24px}
  h2{font-size:20px}
  .toast{left:12px;right:12px;bottom:16px;width:auto;text-align:center}
}
@media(max-width:480px){
  .page-head h1{font-size:20px}
  .btn{width:auto}
  .top-brand .brand-mark{width:32px;height:32px}
  .stat .value{font-size:20px}
  .modal-head h2{font-size:17px}
  .modal-body{max-height:calc(100vh - 60px);overflow-y:auto;-webkit-overflow-scrolling:touch}
  .profile-menu{right:6px;left:6px;width:auto}
  .profile-menu button{padding:15px 16px;font-size:15px}
  .grid-3,.grid-4{grid-template-columns:1fr 1fr;gap:10px}
  .stat{padding:14px 12px}
  .stat .label{font-size:11px}
  .card{padding:16px 14px}
  .tabs,.subtabs{display:flex;overflow-x:auto;gap:4px;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .tabs::-webkit-scrollbar,.subtabs::-webkit-scrollbar{display:none}
  .tabs button,.subtabs button{flex:0 0 auto}
}
@media(max-width:360px){
  .grid-3,.grid-4{grid-template-columns:1fr}
  .page-head h1{font-size:18px}
}
.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.stat-tile{
  background:var(--card-bg,var(--paper));
  border:1px solid var(--line,#e5e3dc);
  padding:14px 16px;
  border-radius:6px;
}
.stat-tile .stat-label{
  font-size:11px;
  text-transform:uppercase;
  letter-spacing:.12em;
  color:var(--muted,#7a7568);
  margin-bottom:6px;
}
.stat-tile .stat-value{
  font-size:24px;
  font-weight:600;
  font-family:'JetBrains Mono',monospace;
  color:var(--ink,#1f1d18);
}
.btn.del.sm,
button.del.sm{
  padding:4px 8px;
  font-size:12px;
}
.line-table input[type="text"],
.line-table input[type="number"]{
  width:100%;
  border:1px solid var(--line,#e5e3dc);
  padding:6px 8px;
  font:inherit;
  background:transparent;
}
.adm-subtabs { padding:0 4px; }
.adm-subtab{
  background:transparent;
  border:none;
  border-bottom:2px solid transparent;
  padding:10px 16px;
  font:inherit;
  font-size:13px;
  font-weight:500;
  color:var(--muted, #7a7568);
  cursor:pointer;
  letter-spacing:.02em;
  transition:color .15s ease, border-color .15s ease;
}
.adm-subtab:hover{ color:var(--ink, #1f1d18); }
.adm-subtab.active{
  color:var(--ink, #1f1d18);
  border-bottom-color:var(--gold, #b88a44);
}
.kpi-tile{
  background:var(--paper);
  border:1px solid var(--line, #e5e3dc);
  padding:16px 18px;
  border-radius:6px;
  transition:transform .12s ease, box-shadow .12s ease;
}
.kpi-tile:hover{
  transform:translateY(-1px);
  box-shadow:0 2px 12px rgba(0,0,0,.06);
}
.kpi-tile .kpi-label{
  font-size:11px;
  text-transform:uppercase;
  letter-spacing:.12em;
  color:var(--muted, #7a7568);
  margin-bottom:8px;
}
.kpi-tile .kpi-value{
  font-size:24px;
  font-weight:600;
  font-family:'JetBrains Mono', monospace;
  color:var(--ink, #1f1d18);
  line-height:1.2;
}
.kpi-tile .kpi-sub{
  font-size:11px;
  color:var(--muted, #7a7568);
  margin-top:6px;
  line-height:1.4;
}
.chart-card{ padding:18px 20px; }
.chart-card .chart-title{
  font-size:14px;
  font-weight:600;
  margin:0 0 14px;
  color:var(--ink, #1f1d18);
  text-transform:uppercase;
  letter-spacing:.08em;
}
.chart-card canvas{
  max-height:300px;
}
.dash-charts > .card.chart-card[style*="grid-column"] canvas{
  max-height:340px;
}
.dash-period-row .btn.sm{
  padding:5px 10px;
  font-size:12px;
}
@media (max-width: 720px){
  .kpi-tile .kpi-value{ font-size:20px; }
  .chart-card{ padding:14px; }
  .chart-card canvas{ max-height:260px !important; }
}
.adm-subtabs { padding: 0 4px; }
.adm-subtab{
  background:transparent;
  border:none;
  border-bottom:2px solid transparent;
  padding:10px 16px;
  font:inherit;
  font-size:13px;
  font-weight:500;
  color:var(--muted, #7a7568);
  cursor:pointer;
  letter-spacing:.02em;
  transition:color .15s ease, border-color .15s ease;
}
.adm-subtab:hover{ color:var(--ink, #1f1d18); }
.adm-subtab.active{
  color:var(--ink, #1f1d18);
  border-bottom-color:var(--gold, #b88a44);
}
.totals-box .totals-row{
  display:flex;
  justify-content:space-between;
  padding:4px 0;
  font-size:13px;
}
.totals-box .totals-row.grand{
  border-top:1px solid var(--ink, #0d1b2a);
  font-weight:700;
  font-size:15px;
  padding-top:8px;
  margin-top:6px;
}
nav.tabs [data-quotes-overview-tab] {
  display: none !important;
}
.t-traditional .inv-page{border:8px double #8B1A1A;padding:14mm 13mm;position:relative}
.t-traditional .inv-page::before,
.t-traditional .inv-page::after{
  content:'';position:absolute;left:8px;right:8px;height:4px;
  background:repeating-linear-gradient(90deg,#FF9933 0 12px,#8B1A1A 12px 24px)
}
.t-traditional .inv-page::before{top:8px}
.t-traditional .inv-page::after{bottom:8px}
.t-traditional .inv-head-uni{padding-top:12px}
.t-traditional .inv-head-uni .head-doc-title{
  font-family:'Playfair Display',serif;color:#8B1A1A;font-size:26px;
  text-transform:uppercase;letter-spacing:.12em;
  border-bottom:none;position:relative
}
.t-traditional .inv-head-uni .head-doc-title::before,
.t-traditional .inv-head-uni .head-doc-title::after{content:'❋';color:#FF9933;margin:0 14px;font-size:14px;vertical-align:middle}
.t-traditional .inv-head-uni .head-company{color:#8B1A1A;font-family:'Playfair Display',serif;font-size:26px}
.t-traditional .inv-head-uni .head-title-row{border-bottom:2px solid #FF9933}
.t-traditional .inv-head-uni .head-top-line{background:#8B1A1A;height:3px}
.t-traditional .inv-head-uni .head-divider{background:#FF9933;height:1px}
.t-traditional .inv-items th{background:#8B1A1A;color:var(--paper);font-family:'Playfair Display',serif}
.t-traditional .inv-totals .grand{border-top:2px solid #8B1A1A;color:#8B1A1A}
.t-traditional .inv-words{background:#FFF8E7;border-left:3px solid #8B1A1A}
.t-traditional .block-title{color:#8B1A1A}
.t-gstfirst .inv-head-uni{background:var(--green-tint);padding:14px 16px;border-radius:6px;border-left:4px solid var(--green)}
.t-gstfirst .inv-head-uni .head-doc-title{color:var(--green);font-family:'Space Grotesk',sans-serif;font-weight:700;letter-spacing:-.01em}
.t-gstfirst .inv-head-uni .head-company{color:#14532D;font-family:'Space Grotesk',sans-serif}
.t-gstfirst .inv-head-uni .head-title-row{border-bottom-color:var(--green)}
.t-gstfirst .inv-items{border:2px solid var(--green);border-radius:4px;overflow:hidden}
.t-gstfirst .inv-items th{background:var(--green);color:var(--paper);letter-spacing:.04em;text-transform:uppercase;font-size:11px}
.t-gstfirst .inv-items td{padding:8px 8px}
.t-gstfirst .inv-items tbody tr:nth-child(even){background:var(--green-tint)}
.t-gstfirst .inv-totals{background:var(--green-tint);border:2px solid var(--green);border-radius:6px;padding:12px;margin-top:8px}
.t-gstfirst .inv-totals .row{padding:5px 8px}
.t-gstfirst .inv-totals .grand{background:var(--green);color:var(--paper);margin:6px -12px -12px;padding:10px 12px;border-radius:0 0 4px 4px;border-top:none;font-size:16px}
.t-construction .inv-page{background:#FBF4E4;background-image:radial-gradient(rgba(146,108,46,.06) 1px,transparent 1px);background-size:8px 8px}
.t-construction .inv-head-uni .head-doc-title{
  font-family:'JetBrains Mono',monospace;color:#5A2E10;
  text-transform:uppercase;letter-spacing:.3em;font-size:18px;font-weight:800
}
.t-construction .inv-head-uni .head-company{font-family:'JetBrains Mono',monospace;color:#5A2E10;font-weight:800;text-transform:uppercase;letter-spacing:.05em}
.t-construction .inv-head-uni .head-top-line{height:4px;background:#5A2E10}
.t-construction .inv-head-uni .head-title-row{border-bottom:3px double #5A2E10}
.t-construction .inv-head-uni .head-divider{background:#5A2E10;height:1px}
.t-construction .inv-items{border:2px solid #5A2E10}
.t-construction .inv-items th{background:#5A2E10;color:#FBF4E4;font-family:'JetBrains Mono',monospace;text-transform:uppercase;letter-spacing:.06em;border-right:1px solid #FBF4E4}
.t-construction .inv-items td{border-right:1px dashed #d3c096}
.t-construction .inv-totals{font-family:'JetBrains Mono',monospace}
.t-construction .inv-totals .grand{border-top:3px double #5A2E10;color:#5A2E10;font-size:18px;font-weight:800;text-transform:uppercase}
.t-construction .inv-numbers{background:rgba(90,46,16,.06);padding:10px;border:1px dashed #5A2E10}
.t-construction .block-title{font-family:'JetBrains Mono',monospace;color:#5A2E10;text-transform:uppercase;letter-spacing:.1em}
.t-pharma .inv-head-uni .head-doc-title{color:#0369A1;font-family:'Space Grotesk',sans-serif;font-weight:600;letter-spacing:.04em}
.t-pharma .inv-head-uni .head-company{color:#075985;font-family:'Space Grotesk',sans-serif;font-weight:700}
.t-pharma .inv-head-uni .head-top-line{background:#0369A1;height:2px}
.t-pharma .inv-head-uni .head-divider{background:#E0F2FE;height:1px}
.t-pharma .inv-head-uni .head-title-row{border-bottom:1px solid #0369A1}
.t-pharma .inv-items th{background:#F0F9FF;color:#0C4A6E;border-bottom:2px solid #0369A1;text-transform:uppercase;letter-spacing:.05em;font-size:10px;font-weight:700}
.t-pharma .inv-items td{border-bottom:1px solid #E0F2FE}
.t-pharma .inv-items tbody tr:hover{background:#F0F9FF}
.t-pharma .inv-totals .grand{border-top:1px solid #0369A1;color:#0C4A6E;background:#F0F9FF;padding:8px;margin-top:4px}
.t-pharma .inv-words{background:#F0F9FF;border-left:3px solid #0369A1;color:#0C4A6E}
.t-pharma .block-title{color:#0369A1;text-transform:uppercase;letter-spacing:.06em;font-size:10px}
.t-pharma .inv-numbers .lbl{color:#0369A1;text-transform:uppercase;letter-spacing:.06em;font-size:9px}
.t-tech .inv-page{padding-top:0}
.t-tech .inv-head-uni{
  background:linear-gradient(135deg,#0EA5E9 0%,#6366F1 50%,#A855F7 100%);
  color:var(--paper);padding:36px 22px 22px;margin:-18mm -16mm 26px;position:relative;overflow:hidden
}
.t-tech .inv-head-uni::after{
  content:'';position:absolute;right:-60px;top:-60px;width:200px;height:200px;
  background:radial-gradient(circle,rgba(255,255,255,.18) 0%,transparent 70%)
}
.t-tech .inv-head-uni .head-doc-title{color:var(--paper);font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:32px;letter-spacing:-.02em;text-transform:none;text-align:left}
.t-tech .inv-head-uni .head-title-row{border:none;justify-content:flex-start;padding:14px 0 0}
.t-tech .inv-head-uni .head-company{color:var(--paper);font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:26px;letter-spacing:-.01em}
.t-tech .inv-head-uni .head-addr,.t-tech .inv-head-uni .head-line{color:rgba(255,255,255,.92)}
.t-tech .inv-head-uni .head-top-line,.t-tech .inv-head-uni .head-divider{display:none}
.t-tech .inv-items th{background:var(--ink);color:var(--paper);font-family:'Space Grotesk',sans-serif;text-transform:uppercase;letter-spacing:.06em;font-size:10px}
.t-tech .inv-items tbody tr:nth-child(odd){background:#F8FAFC}
.t-tech .inv-totals .grand{border-top:2px solid #6366F1;color:#6366F1;font-size:17px}
.t-tech .inv-words{background:#EEF2FF;border-left:3px solid #6366F1}
.t-restaurant .inv-page{font-family:'Fraunces',serif;background:var(--amber-tint);background-image:repeating-linear-gradient(0deg,transparent 0 22px,rgba(154,52,18,.04) 22px 23px)}
.t-restaurant .inv-head-uni{text-align:center}
.t-restaurant .inv-head-uni .head-main{justify-content:center}
.t-restaurant .inv-head-uni .head-info{text-align:center;flex:0 0 auto}
.t-restaurant .inv-head-uni .head-doc-title{
  font-family:'Playfair Display',serif;font-style:italic;color:#9A3412;font-size:32px;text-transform:none;letter-spacing:.02em
}
.t-restaurant .inv-head-uni .head-doc-title::before,
.t-restaurant .inv-head-uni .head-doc-title::after{content:'~';margin:0 14px;color:#D97706}
.t-restaurant .inv-head-uni .head-company{font-family:'Playfair Display',serif;color:#9A3412;font-size:30px;font-weight:700}
.t-restaurant .inv-head-uni .head-top-line{display:none}
.t-restaurant .inv-head-uni .head-divider{background:#9A3412;height:1px;border:none;border-bottom:2px dotted #9A3412}
.t-restaurant .inv-head-uni .head-title-row{border-bottom:none}
.t-restaurant .inv-items{border-top:2px dashed #9A3412;border-bottom:2px dashed #9A3412}
.t-restaurant .inv-items th{background:transparent;color:#9A3412;font-family:'Playfair Display',serif;font-style:italic;border-bottom:1px dotted #9A3412}
.t-restaurant .inv-items td{border-bottom:1px dotted rgba(154,52,18,.3)}
.t-restaurant .inv-totals .grand{border-top:2px dashed #9A3412;color:#9A3412;font-family:'Playfair Display',serif;font-size:18px;font-weight:700}
.t-restaurant .block-title{font-family:'Playfair Display',serif;font-style:italic;color:#9A3412}
.t-boutique .inv-page{padding:18mm 14mm}
.t-boutique .inv-head-uni{text-align:center}
.t-boutique .inv-head-uni .head-main{justify-content:center;flex-direction:column;align-items:center;gap:8px}
.t-boutique .inv-head-uni .head-info{text-align:center}
.t-boutique .inv-head-uni .head-doc-title{
  font-family:'Playfair Display',serif;color:#8B6914;font-size:14px;
  font-weight:400;letter-spacing:.5em;text-transform:uppercase
}
.t-boutique .inv-head-uni .head-company{font-family:'Playfair Display',serif;color:#1a1a1a;font-size:32px;letter-spacing:.02em;font-weight:400}
.t-boutique .inv-head-uni .head-top-line{background:#8B6914;height:1px;width:60px;margin:0 auto 14px;display:block}
.t-boutique .inv-head-uni .head-divider{background:#8B6914;width:80px;margin:14px auto 0;height:1px}
.t-boutique .inv-head-uni .head-title-row{border:none;padding:14px 0 0}
.t-boutique .inv-items th{background:transparent;color:#8B6914;font-family:'Playfair Display',serif;text-transform:uppercase;letter-spacing:.2em;font-size:10px;border-bottom:1px solid #8B6914;font-weight:400}
.t-boutique .inv-items td{border-bottom:1px solid #f0e4c8;padding:10px 8px}
.t-boutique .inv-totals .grand{border-top:1px solid #8B6914;color:#1a1a1a;font-family:'Playfair Display',serif;font-size:18px;letter-spacing:.04em;font-weight:400}
.t-boutique .block-title{color:#8B6914;text-transform:uppercase;letter-spacing:.25em;font-size:9px;font-family:'Playfair Display',serif}
.t-boutique .inv-numbers .lbl{color:#8B6914;text-transform:uppercase;letter-spacing:.2em;font-size:9px}
.t-legal .inv-page{font-family:'Fraunces',serif;padding:18mm 16mm}
.t-legal .inv-head-uni{border-top:3px double #1a1a1a;border-bottom:3px double #1a1a1a;padding:18px 0;margin-bottom:24px;position:relative}
.t-legal .inv-head-uni::before{
  content:'INVOICE';position:absolute;right:0;top:50%;transform:translateY(-50%) rotate(-20deg);
  font-size:90px;color:rgba(26,26,26,.04);letter-spacing:.1em;font-weight:700;pointer-events:none
}
.t-legal .inv-head-uni .head-doc-title{color:#1a1a1a;font-family:'Fraunces',serif;font-size:18px;letter-spacing:.2em;text-transform:uppercase;font-weight:400}
.t-legal .inv-head-uni .head-company{font-family:'Fraunces',serif;color:#1a1a1a;font-size:30px;font-weight:600;letter-spacing:.01em}
.t-legal .inv-head-uni .head-top-line{display:none}
.t-legal .inv-head-uni .head-divider{display:none}
.t-legal .inv-head-uni .head-title-row{border-bottom:none;padding:8px 0 0}
.t-legal .inv-items th{background:transparent;color:#1a1a1a;border-bottom:2px solid #1a1a1a;border-top:1px solid #1a1a1a;font-family:'Fraunces',serif;text-transform:uppercase;letter-spacing:.08em;font-size:10px;font-weight:600}
.t-legal .inv-items td{border-bottom:1px solid #ddd;padding:9px 8px}
.t-legal .inv-totals .grand{border-top:3px double #1a1a1a;color:#1a1a1a;font-family:'Fraunces',serif;font-size:18px;font-weight:600;letter-spacing:.02em}
.t-legal .block-title{color:#1a1a1a;font-family:'Fraunces',serif;text-transform:uppercase;letter-spacing:.12em;font-size:9px;font-weight:600}
.t-manufacturing .inv-head-uni{background:var(--ink);color:var(--paper);padding:20px 18px;margin:-18mm -16mm 22px}
.t-manufacturing .inv-head-uni .head-doc-title{color:#FCD34D;font-family:'JetBrains Mono',monospace;font-size:22px;letter-spacing:.2em;text-transform:uppercase;font-weight:700;text-align:left}
.t-manufacturing .inv-head-uni .head-title-row{justify-content:flex-start;border:none;padding-top:12px}
.t-manufacturing .inv-head-uni .head-company{color:var(--paper);font-family:'JetBrains Mono',monospace;font-size:24px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.t-manufacturing .inv-head-uni .head-addr,.t-manufacturing .inv-head-uni .head-line{color:var(--line-2);font-family:'JetBrains Mono',monospace;font-size:11px}
.t-manufacturing .inv-head-uni .head-top-line{display:none}
.t-manufacturing .inv-head-uni .head-divider{background:#FCD34D;height:1px;margin:14px 0 0}
.t-manufacturing .inv-items th{background:var(--ink);color:#FCD34D;font-family:'JetBrains Mono',monospace;text-transform:uppercase;letter-spacing:.06em;font-size:10px;border-right:1px solid #334155}
.t-manufacturing .inv-items td{font-family:'JetBrains Mono',monospace;font-size:11px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}
.t-manufacturing .inv-items tbody tr:nth-child(even){background:#F8FAFC}
.t-manufacturing .inv-totals{font-family:'JetBrains Mono',monospace}
.t-manufacturing .inv-totals .grand{background:var(--ink);color:#FCD34D;padding:10px 12px;margin-top:6px;border:none;font-size:18px;letter-spacing:.04em;text-transform:uppercase}
.t-manufacturing .block-title{font-family:'JetBrains Mono',monospace;color:var(--ink);text-transform:uppercase;letter-spacing:.1em;font-size:10px}
.t-export .inv-page{border:3px solid #1E40AF;padding:14mm 12mm;position:relative}
.t-export .inv-page::before{
  content:'EXPORT';position:absolute;top:8px;right:14px;background:#1E40AF;color:var(--paper);
  padding:3px 12px;font-family:'JetBrains Mono',monospace;font-size:10px;font-weight:700;letter-spacing:.2em
}
.t-export .inv-head-uni .head-doc-title{color:#1E40AF;font-family:'Space Grotesk',sans-serif;font-size:24px;letter-spacing:.04em}
.t-export .inv-head-uni .head-company{color:#1E40AF;font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:24px}
.t-export .inv-head-uni .head-top-line{display:none}
.t-export .inv-head-uni .head-divider{background:repeating-linear-gradient(90deg,#1E40AF 0 10px,transparent 10px 18px);height:2px}
.t-export .inv-head-uni .head-title-row{border-bottom:2px solid #1E40AF}
.t-export .inv-items th{background:#1E40AF;color:var(--paper);text-transform:uppercase;letter-spacing:.05em;font-size:10px}
.t-export .inv-items td{font-family:'JetBrains Mono',monospace;font-size:11px}
.t-export .inv-numbers{background:var(--info-tint);border:1px solid #1E40AF;padding:10px;font-family:'JetBrains Mono',monospace}
.t-export .inv-numbers .lbl{color:#1E40AF;font-family:'Space Grotesk',sans-serif;text-transform:uppercase;letter-spacing:.06em;font-size:9px}
.t-export .inv-totals .grand{background:#1E40AF;color:var(--paper);padding:10px 12px;margin-top:6px;border:none;font-size:17px}
.t-export .block-title{color:#1E40AF;text-transform:uppercase;letter-spacing:.08em;font-size:10px;font-family:'Space Grotesk',sans-serif}
.t-garage .inv-page{background:#FFFEF7;padding:14mm 12mm}
.t-garage .inv-head-uni .head-doc-title{
  font-family:'Caveat','Brush Script MT',cursive;color:#DC2626;font-size:42px;
  text-transform:none;letter-spacing:.02em;font-weight:700;transform:rotate(-1deg);display:inline-block
}
.t-garage .inv-head-uni .head-company{font-family:'Caveat','Brush Script MT',cursive;color:#1a1a1a;font-size:36px;font-weight:700}
.t-garage .inv-head-uni .head-top-line{background:#DC2626;height:3px;border-radius:2px}
.t-garage .inv-head-uni .head-divider{background:#DC2626;height:1px}
.t-garage .inv-head-uni .head-title-row{border-bottom:3px solid #DC2626;border-bottom-style:dashed}
.t-garage .inv-items th{background:var(--amber-soft);color:#92400E;font-weight:700;text-transform:uppercase;letter-spacing:.04em;font-size:11px}
.t-garage .inv-items td{font-size:12px;border-bottom:1px dashed #fde68a}
.t-garage .inv-totals .grand{border-top:3px dashed #DC2626;color:#DC2626;font-size:20px;font-family:'Caveat','Brush Script MT',cursive;font-weight:700}
.t-garage .inv-words{background:var(--amber-soft);border-left:3px solid #DC2626;font-style:italic}
.t-garage .block-title{color:#DC2626;font-family:'Caveat','Brush Script MT',cursive;font-size:14px}
.t-ecommerce .inv-page{padding:14mm 12mm}
.t-ecommerce .inv-head-uni{background:var(--ink);color:var(--paper);padding:18px 16px;margin:-18mm -16mm 22px;border-bottom:6px solid #F97316}
.t-ecommerce .inv-head-uni .head-doc-title{
  color:#F97316;font-family:'Space Grotesk',sans-serif;font-weight:800;font-size:24px;
  letter-spacing:.04em;text-transform:uppercase;text-align:left
}
.t-ecommerce .inv-head-uni .head-doc-title::before{content:'📦 ';font-size:20px;vertical-align:middle}
.t-ecommerce .inv-head-uni .head-company{color:var(--paper);font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:22px;text-transform:uppercase;letter-spacing:.02em}
.t-ecommerce .inv-head-uni .head-addr,.t-ecommerce .inv-head-uni .head-line{color:var(--line-2)}
.t-ecommerce .inv-head-uni .head-top-line{display:none}
.t-ecommerce .inv-head-uni .head-divider{display:none}
.t-ecommerce .inv-head-uni .head-title-row{border:none;justify-content:flex-start;padding:10px 0 0}
.t-ecommerce .inv-items th{background:var(--ink);color:var(--paper);text-transform:uppercase;letter-spacing:.06em;font-size:10px}
.t-ecommerce .inv-items tbody tr:nth-child(odd){background:#FFF7ED}
.t-ecommerce .inv-totals .grand{background:#F97316;color:var(--paper);padding:12px;margin:8px -12px -12px;font-size:18px;font-weight:800;border:none;text-transform:uppercase;letter-spacing:.04em}
.t-ecommerce .inv-words{background:#FFF7ED;border-left:3px solid #F97316;color:#9A3412}
.t-ecommerce .block-title{color:#F97316;text-transform:uppercase;letter-spacing:.08em;font-size:10px;font-weight:700}
.t-realestate .inv-page{padding:16mm 14mm}
.t-realestate .inv-head-uni{padding:20px 0;border-top:8px solid #1E3A8A;border-bottom:1px solid #1E3A8A}
.t-realestate .inv-head-uni .head-doc-title{
  font-family:'Playfair Display',serif;color:#CA8A04;font-size:18px;
  letter-spacing:.4em;text-transform:uppercase;font-weight:600
}
.t-realestate .inv-head-uni .head-company{font-family:'Playfair Display',serif;color:#1E3A8A;font-size:32px;font-weight:700;letter-spacing:.01em}
.t-realestate .inv-head-uni .head-top-line{display:none}
.t-realestate .inv-head-uni .head-divider{background:linear-gradient(90deg,transparent,#CA8A04 30%,#CA8A04 70%,transparent);height:1px}
.t-realestate .inv-head-uni .head-title-row{border:none;padding-top:14px}
.t-realestate .inv-items th{background:#1E3A8A;color:#CA8A04;font-family:'Playfair Display',serif;text-transform:uppercase;letter-spacing:.1em;font-size:10px;font-weight:600}
.t-realestate .inv-items td{border-bottom:1px solid #E5E7EB;padding:10px 8px}
.t-realestate .inv-totals{background:#F8FAFC;padding:14px;border:1px solid #CA8A04}
.t-realestate .inv-totals .grand{border-top:2px solid #CA8A04;color:#1E3A8A;font-family:'Playfair Display',serif;font-size:20px;font-weight:700;letter-spacing:.02em;margin-top:8px;padding-top:8px}
.t-realestate .inv-words{background:var(--amber-soft);border-left:3px solid #CA8A04;font-family:'Playfair Display',serif;font-style:italic}
.t-realestate .block-title{color:#1E3A8A;text-transform:uppercase;letter-spacing:.2em;font-size:9px;font-family:'Playfair Display',serif}
.t-hotel .inv-page{padding:18mm 14mm;background:#FFFEF7}
.t-hotel .inv-head-uni{text-align:center;padding:16px 0}
.t-hotel .inv-head-uni .head-main{flex-direction:column;align-items:center;justify-content:center;gap:8px}
.t-hotel .inv-head-uni .head-info{text-align:center}
.t-hotel .inv-head-uni .head-doc-title{
  font-family:'Allura','Brush Script MT',cursive;color:#A16207;font-size:38px;
  text-transform:none;letter-spacing:.02em;font-weight:400
}
.t-hotel .inv-head-uni .head-doc-title::before,
.t-hotel .inv-head-uni .head-doc-title::after{
  content:'';display:inline-block;width:40px;height:1px;background:#A16207;margin:0 16px;vertical-align:middle
}
.t-hotel .inv-head-uni .head-company{font-family:'Playfair Display',serif;color:#1a1a1a;font-size:36px;font-weight:400;letter-spacing:.04em}
.t-hotel .inv-head-uni .head-top-line{display:block;background:#A16207;height:1px;width:120px;margin:0 auto}
.t-hotel .inv-head-uni .head-divider{background:#A16207;width:120px;margin:14px auto 0;height:1px}
.t-hotel .inv-head-uni .head-title-row{border:none;padding:10px 0}
.t-hotel .inv-items th{background:linear-gradient(180deg,#FCD34D 0%,#A16207 100%);color:#1a1a1a;font-family:'Playfair Display',serif;text-transform:uppercase;letter-spacing:.12em;font-size:10px;font-weight:600}
.t-hotel .inv-items td{border-bottom:1px solid var(--amber-soft);padding:10px 8px;font-family:'Playfair Display',serif}
.t-hotel .inv-totals .grand{border-top:2px solid #A16207;color:#A16207;font-family:'Playfair Display',serif;font-size:20px;font-weight:600;letter-spacing:.02em}
.t-hotel .inv-words{background:var(--amber-soft);border-left:3px solid #A16207;font-family:'Playfair Display',serif;font-style:italic;color:#78350F}
.t-hotel .block-title{color:#A16207;font-family:'Playfair Display',serif;text-transform:uppercase;letter-spacing:.2em;font-size:9px;font-weight:600}
.t-hotel .inv-numbers .lbl{font-family:'Playfair Display',serif;color:#A16207;text-transform:uppercase;letter-spacing:.15em;font-size:9px}
@media print {
  @page { size: A4 portrait; margin: 0; }
  html, body { margin: 0; padding: 0; background: var(--paper); }
  body * { visibility: hidden; }
  #printArea, #printArea * { visibility: visible; }
  #printArea { position: absolute; left: 0; top: 0; width: 210mm; }
  #printArea .invoice-preview {
    width: 210mm !important;
    min-height: 297mm !important;
    max-width: none !important;
    box-shadow: none !important;
    border: none !important;
    margin: 0 !important;
    page-break-after: always;
  }
  .inv-page { padding: 18mm 16mm !important; }
}
@media (hover: none) and (pointer: coarse) {
  button, .btn, input[type="submit"], input[type="button"], select {
    min-height: 44px;
  }
  input, textarea {
    min-height: 40px;
    font-size: 16px;
  }
  td.actions button { min-height: 36px; padding: 6px 10px; }
}
@media (max-width: 900px) {
  nav.tabs {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    padding: 0 16px;
    top: 56px;
  }
  nav.tabs button { flex-shrink: 0; white-space: nowrap; padding: 13px 14px; }
  header.topbar { padding: 10px 16px; }
  main { padding: 22px 18px; }
  .page-head h1 { font-size: 24px; }
  .form-grid { grid-template-columns: 1fr; }
  .form-grid .field.full, .form-grid > * { grid-column: 1 / -1; }
  .grid.grid-4 { grid-template-columns: 1fr 1fr; }
  .login-left { padding: 40px 32px 56px; }
}
@media (max-width: 768px) {
  main { padding: 16px 12px; }
  header.topbar { padding: 10px 12px; flex-wrap: wrap; gap: 8px; }
  .top-brand .brand-text { font-size: 13px; }
  .top-brand .brand-text small { display: none; }
  .client-pill { display: none; }
  .page-head {
    flex-direction: column;
    align-items: flex-start;
    gap: 10px;
    margin-bottom: 18px;
    padding-bottom: 14px;
  }
  .page-head h1 { font-size: 22px; }
  .page-head > div:last-child { display: flex; flex-wrap: wrap; gap: 8px; }
  .btn { padding: 10px 16px; font-size: 14px; }
  .btn.sm, .btn.secondary.sm { padding: 8px 12px; font-size: 13px; }
  .grid-2, .grid-3, .grid-4 { grid-template-columns: 1fr; gap: 12px; }
  .stat .value { font-size: 22px; }
  .form-grid { grid-template-columns: 1fr !important; gap: 10px; }
  .builder-grid { grid-template-columns: 1fr !important; gap: 16px; }
  .field input, .field select, .field textarea {
    font-size: 16px;
    padding: 11px 14px;
  }
  .tbl, .line-table, .inv-items {
    display: block;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    white-space: nowrap;
    width: 100%;
    position: relative;
  }
  .tbl thead th, .tbl tbody td { white-space: nowrap; padding: 12px 10px; }
  .table-wrap { position: relative; }
  .table-wrap::after {
    content: '';
    position: absolute;
    top: 0;
    right: 0;
    width: 24px;
    height: 100%;
    background: linear-gradient(to right, transparent, rgba(15, 23, 42, 0.06));
    pointer-events: none;
  }
  .tbl tbody td:first-child {
    position: sticky;
    left: 0;
    background: var(--paper);
    box-shadow: 1px 0 0 var(--line);
  }
  .tbl thead th:first-child {
    position: sticky;
    left: 0;
    background: var(--paper-2);
    z-index: 2;
  }
  .tbl td.actions { white-space: normal; }
  .tbl td.actions button { display: inline-block; margin: 2px; padding: 8px 12px; font-size: 13px; }
  .search-bar { flex-direction: column; }
  .search-bar input { width: 100%; }
  .modal, .modal.lg {
    max-width: 100vw;
    width: 100vw;
    max-height: 100vh;
    height: 100vh;
    border-radius: 0;
    border-left: none;
    border-right: none;
  }
  .modal-bg { padding: 0; }
  .modal-head { position: sticky; top: 0; background: var(--paper); z-index: 5; border-radius: 0; }
  .modal-body { padding: 16px !important; }
  .modal-foot { border-radius: 0; }
  .profile-menu { right: 8px; left: 8px; width: auto; }
  .profile-menu button { padding: 14px 16px; }
  .line-table { min-width: 680px; }
  .line-table input, .line-table select { font-size: 15px; padding: 9px 10px; }
  .builder-preview { display: none; }
  .add-line-btn, #addLineBtn { width: 100%; padding: 13px; font-size: 15px; margin-top: 10px; }
  .form-section { padding: 16px 14px; margin-bottom: 14px; }
  .form-section h3 { font-size: 13px; margin-bottom: 12px; }
  .invoice-paper, .inv-paper { transform: scale(1); width: 100% !important; min-width: 0 !important; }
  .tabs, .subtabs { overflow-x: auto; white-space: nowrap; -webkit-overflow-scrolling: touch; }
  .login-card { padding: 0; }
  h1 { font-size: 22px; }
  h2 { font-size: 18px; }
  .toast { left: 12px; right: 12px; bottom: 16px; width: auto; max-width: none; text-align: center; }
  .bulk-row, .bulk-head { grid-template-columns: 1fr 1fr; gap: 6px; }
}
@media (max-width: 480px) {
  .page-head h1 { font-size: 20px; }
  .top-brand .brand-mark { width: 32px; height: 32px; }
  .stat .value { font-size: 20px; }
  .modal-head h2 { font-size: 17px; }
  .modal-body { max-height: calc(100vh - 60px); overflow-y: auto; -webkit-overflow-scrolling: touch; }
  .profile-menu { right: 6px; left: 6px; width: auto; }
  .profile-menu button { padding: 15px 16px; font-size: 15px; }
  .grid-3, .grid-4 { grid-template-columns: 1fr 1fr; gap: 10px; }
  .stat { padding: 14px 12px; }
  .stat .label { font-size: 11px; }
  .card { padding: 16px 14px; }
  .tabs, .subtabs { display: flex; overflow-x: auto; gap: 4px; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
  .tabs::-webkit-scrollbar, .subtabs::-webkit-scrollbar { display: none; }
  .tabs button, .subtabs button { flex: 0 0 auto; }
}
@media (max-width: 360px) {
  .grid-3, .grid-4 { grid-template-columns: 1fr; }
  .page-head h1 { font-size: 18px; }
}
@media (max-width: 900px) {
  .qrmp-months-grid { grid-template-columns: 1fr !important; }
  .qrmp-2col-grid   { grid-template-columns: 1fr !important; }
}
body.ll-imp-editor-readonly button.btn-destructive,
body.ll-imp-editor-readonly .btn.danger,
body.ll-imp-editor-readonly button[data-destructive="true"],
body.ll-imp-view-only button.btn-destructive,
body.ll-imp-view-only .btn.danger,
body.ll-imp-view-only button[data-destructive="true"] {
  opacity: 0.42;
  cursor: not-allowed;
  pointer-events: none;
  position: relative;
}
body.ll-imp-editor-readonly button.btn-destructive::after,
body.ll-imp-editor-readonly .btn.danger::after,
body.ll-imp-editor-readonly button[data-destructive="true"]::after {
  content: '🔒';
  position: absolute;
  top: 50%;
  right: 6px;
  transform: translateY(-50%);
  font-size: 10px;
  opacity: 0.7;
}
body.ll-imp-editor-readonly .imp-editor-blocked-hint {
  display: block;
  font-size: 11px;
  color: #a05a3a;
  margin-top: 4px;
}
body:not(.ll-imp-editor-readonly) .imp-editor-blocked-hint {
  display: none;
}
* {
  scrollbar-width: thin;
  scrollbar-color: var(--line-2) transparent;
}
*::-webkit-scrollbar { width: 10px; height: 10px; }
*::-webkit-scrollbar-track { background: transparent; }
*::-webkit-scrollbar-thumb {
  background: var(--line-2);
  border-radius: 999px;
  border: 2px solid transparent;
  background-clip: padding-box;
}
*::-webkit-scrollbar-thumb:hover { background-color: var(--muted); background-clip: padding-box; border: 2px solid transparent; }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}
#modal-asset .modal {
  max-width: 900px;
  width: 92vw;
}
#modal-asset .modal-head h2 {
  font-size: 20px;
  font-weight: 700;
  letter-spacing: -0.01em;
}
#modal-asset .modal-body {
  padding: 4px 0 0;
  background: var(--paper);
}
.fa-section {
  padding: 20px 28px;
  border-bottom: 1px solid var(--line);
}
.fa-section:last-of-type { border-bottom: none; }
.fa-section-meta {
  background: var(--paper-2);
  border-top: 2px solid var(--line);
  border-bottom: 2px solid var(--line);
}
.fa-section-head {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  margin-bottom: 16px;
}
.fa-section-num {
  flex-shrink: 0;
  width: 30px;
  height: 30px;
  display: grid;
  place-items: center;
  background: var(--brand-tint);
  color: var(--brand-deep);
  border-radius: 8px;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.02em;
}
.fa-section-title {
  margin: 0;
  font-size: 14px;
  font-weight: 700;
  color: var(--ink);
  letter-spacing: -0.01em;
  line-height: 1.3;
}
.fa-section-sub {
  margin: 4px 0 0;
  font-size: 12px;
  color: var(--muted);
  line-height: 1.5;
  max-width: 720px;
}
.fa-section-sub a {
  color: var(--brand-dark);
  text-decoration: none;
  font-weight: 600;
}
.fa-section-sub a:hover { text-decoration: underline; }
.fa-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px 22px;
}
.fa-field { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.fa-field-wide,
.fa-field-full { grid-column: 1 / -1; }
.fa-field label {
  font-size: 12px;
  font-weight: 600;
  color: var(--ink-2);
  letter-spacing: -0.005em;
}
.fa-field label .req {
  color: var(--rust, var(--rust));
  font-weight: 700;
  margin-left: 2px;
}
.fa-field input,
.fa-field select,
.fa-field textarea {
  width: 100%;
  padding: 8px 12px;
  border: 1px solid var(--line);
  border-radius: 7px;
  background: var(--paper);
  color: var(--ink);
  font-family: inherit;
  font-size: 13px;
  line-height: 1.4;
  transition: border-color 120ms ease, box-shadow 120ms ease;
}
.fa-field input.num { text-align: right; font-variant-numeric: tabular-nums; }
.fa-field input:focus,
.fa-field select:focus,
.fa-field textarea:focus {
  outline: none;
  border-color: var(--brand);
  box-shadow: 0 0 0 3px rgba(13, 148, 136, 0.16);
}
.fa-field input:disabled,
.fa-field select:disabled,
.fa-field textarea:disabled {
  background: var(--paper-2);
  color: var(--muted);
  cursor: not-allowed;
}
.fa-field input[readonly] {
  background: var(--paper-2);
  cursor: default;
}
.fa-field textarea { resize: vertical; min-height: 70px; font-family: inherit; }
.fa-hint {
  font-size: 11px;
  color: var(--muted);
  line-height: 1.4;
}
.fa-hint-lock { color: var(--amber-dark, #92400e); font-weight: 500; }
.fa-stat {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.fa-stat label {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--muted);
}
.fa-stat strong {
  font-size: 18px;
  font-weight: 700;
  color: var(--ink);
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.01em;
}
.fa-tbl {
  width: 100%;
  border-collapse: collapse;
  font-size: 12.5px;
  margin-top: 6px;
}
.fa-tbl th,
.fa-tbl td {
  text-align: left;
  padding: 9px 12px;
  border-bottom: 1px solid var(--line);
}
.fa-tbl th {
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
  background: var(--paper-2);
}
.fa-tbl td.right,
.fa-tbl th.right { text-align: right; font-variant-numeric: tabular-nums; }
.fa-tbl td.muted.center { text-align: center; color: var(--muted); padding: 18px 12px; }
.fa-footer {
  display: flex;
  gap: 10px;
  padding: 18px 28px;
  background: var(--paper-2);
  border-top: 1px solid var(--line);
  position: sticky;
  bottom: 0;
}
.fa-footer .btn { font-weight: 600; }
.fa-footer .btn.secondary { background: var(--paper); border: 1px solid var(--line); color: var(--ink-2); }
.fa-footer .btn.secondary:hover { background: var(--paper-2); border-color: var(--line-2); color: var(--ink); }
@media (max-width: 720px) {
  .fa-section { padding: 16px 20px; }
  .fa-grid { grid-template-columns: 1fr; gap: 12px; }
  .fa-footer { padding: 14px 20px; flex-wrap: wrap; }
}
.jv-tax-suggest-wrap {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin: 12px 0;
}
.jv-tax-suggest-wrap:empty { display: none; }
.jv-tax-card {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 12px 14px;
  background: var(--brand-tint, var(--brand-tint));
  border: 1px solid var(--brand-soft, var(--brand-soft));
  border-left: 3px solid var(--brand, var(--brand));
  border-radius: 8px;
  animation: jvTaxSlideIn 220ms cubic-bezier(0.16, 1, 0.3, 1);
}
@keyframes jvTaxSlideIn {
  from { opacity: 0; transform: translateY(-4px); }
  to   { opacity: 1; transform: translateY(0); }
}
.jv-tax-card-icon {
  flex-shrink: 0;
  width: 32px; height: 32px;
  border-radius: 8px;
  display: grid;
  place-items: center;
  font-size: 14px;
  font-weight: 700;
}
.jv-tax-card-body { flex: 1; min-width: 0; }
.jv-tax-card-title {
  font-size: 13px;
  font-weight: 700;
  color: var(--ink);
  letter-spacing: -0.005em;
  margin-bottom: 3px;
}
.jv-tax-card-sub {
  font-size: 12px;
  color: var(--muted);
  line-height: 1.45;
}
.jv-tax-card-sub strong { color: var(--ink-2); font-weight: 600; }
.jv-tax-card-actions {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
}
.jv-tax-card-actions .btn.sm {
  background: var(--brand);
  color: var(--paper);
  border: none;
  padding: 6px 12px;
  font-size: 12px;
  font-weight: 600;
  border-radius: 6px;
  cursor: pointer;
}
.jv-tax-card-actions .btn.sm:hover { background: var(--brand-dark, var(--brand-hover)); }
.jv-tax-card-actions .btn-link {
  background: transparent;
  border: none;
  color: var(--muted);
  font-size: 18px;
  line-height: 1;
  padding: 4px 8px;
  cursor: pointer;
  border-radius: 4px;
  transition: all 120ms ease;
}
.jv-tax-card-actions .btn-link:hover {
  background: var(--rust-tint, var(--rust-soft));
  color: var(--rust, var(--rust));
}
.ss-section {
  margin: 18px 0 16px;
}
.ss-section h3 {
  font-size: 14px;
  font-weight: 500;
  margin: 0 0 10px;
  color: var(--ink, var(--ink));
}
.ss-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 14px 16px;
  margin: 14px 0;
  padding: 16px;
  background: #f8fafc;
  border-radius: 8px;
  border: 1px solid var(--line);
}
.ss-grid label {
  font-size: 12px;
  color: var(--muted);
  display: flex;
  flex-direction: column;
  gap: 5px;
}
.ss-grid input[type="text"],
.ss-grid input[type="number"],
.ss-grid select {
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 6px;
  font-size: 13px;
  background: var(--paper);
  font-family: inherit;
}
.ss-grid input[type="text"]:focus,
.ss-grid input[type="number"]:focus,
.ss-grid select:focus {
  outline: none;
  border-color: var(--p, var(--info));
  box-shadow: 0 0 0 2px rgba(29, 78, 216, 0.12);
}
.ss-preview {
  background: var(--paper);
  border: 1px dashed var(--line);
  border-radius: 6px;
  padding: 10px 12px;
  grid-column: span 2;
}
@media (max-width: 720px) {
  .ss-preview { grid-column: span 1; }
}
.ss-preview-label {
  font-size: 11px;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.5px;
  margin-bottom: 4px;
}
.ss-preview-value {
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 16px;
  font-weight: 500;
  color: var(--ink, var(--ink));
}
.ss-radio-card {
  display: flex;
  gap: 10px;
  padding: 12px 14px;
  border: 1px solid var(--line);
  border-radius: 8px;
  cursor: pointer;
  min-width: 220px;
  align-items: flex-start;
  background: var(--paper);
  transition: border-color 120ms, background 120ms;
}
.ss-radio-card input[type="radio"] {
  margin-top: 2px;
  accent-color: var(--p, var(--info));
}
.ss-radio-card strong {
  font-size: 13px;
  font-weight: 500;
  display: block;
}
.ss-radio-card small {
  font-size: 11px;
  color: var(--muted);
  display: block;
  margin-top: 2px;
}
.ss-radio-card.active {
  border-color: var(--p, var(--info));
  background: var(--info-tint);
}
.ss-toggle-row {
  display: flex;
  gap: 12px;
  padding: 12px 0;
  border-top: 1px solid var(--line);
  align-items: flex-start;
  cursor: pointer;
}
.ss-toggle-row:first-of-type {
  border-top: none;
}
.ss-toggle-row input[type="checkbox"] {
  margin-top: 3px;
  accent-color: var(--p, var(--info));
  flex-shrink: 0;
}
.ss-toggle-row strong {
  font-size: 13px;
  font-weight: 500;
  display: block;
}
.ss-toggle-row small {
  font-size: 12px;
  color: var(--muted);
  display: block;
  margin-top: 2px;
  line-height: 1.4;
}
.ss-feature-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 12px 4px;
  border-bottom: 1px solid var(--line);
  cursor: pointer;
  gap: 16px;
}
.ss-feature-row:last-of-type {
  border-bottom: none;
}
.ss-feature-row input[type="checkbox"] {
  accent-color: var(--p, var(--info));
  width: 18px;
  height: 18px;
  flex-shrink: 0;
  cursor: pointer;
}
.ss-warn {
  padding: 10px 14px;
  background: var(--amber-soft);
  border-radius: 6px;
  font-size: 12px;
  color: #854f0b;
  margin-top: 12px;
  line-height: 1.5;
}
.ss-warn strong { font-weight: 500; }
.ss-info {
  padding: 10px 14px;
  background: var(--info-soft);
  border-radius: 6px;
  font-size: 12px;
  color: #0c447c;
  margin-top: 12px;
  line-height: 1.5;
}
.ss-info strong { font-weight: 500; }
.ss-actions {
  margin-top: 16px;
  display: flex;
  justify-content: flex-end;
  gap: 8px;
}
.pr-pane {
  padding: 16px 18px;
}
#cgListBody table.tbl {
  margin-bottom: 4px;
}
#cgListBody table.tbl th {
  background: var(--paper-2, #f8fafc);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.4px;
  color: var(--muted);
}
#page-newInvoice .bld-advanced { display: none; }
#page-newInvoice.show-advanced .bld-advanced { display: block; }
body:not(:has(#app.active)) .fab-wrap { display: none !important; }
body.ll-no-fab .fab-wrap { display: none !important; }
.dash-toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;flex-wrap:wrap;gap:12px}
.dash-greet{font-size:18px;font-weight:600;letter-spacing:-.01em;color:var(--ink)}
.dash-greet strong{font-weight:700}
.dash-greet .dash-name{font-family:var(--font-mono);font-size:12px;color:var(--muted);font-weight:500;margin-left:10px;text-transform:uppercase;letter-spacing:.06em}
.dash-pill{padding:7px 14px;background:var(--paper);border:1px solid var(--line);border-radius:5px;font-size:12.5px;font-weight:500;cursor:pointer;color:var(--ink-2);font-family:inherit;transition:all .12s}
.dash-pill:hover{background:var(--brand-tint);border-color:var(--brand);color:var(--brand-deep)}
.dash-kpi-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-bottom:20px}
.dash-kpi{background:var(--paper);border:1px solid var(--line);border-radius:6px;padding:13px 16px;transition:all .15s}
.dash-kpi:hover{border-color:var(--line-2);box-shadow:0 4px 12px var(--shadow-xs)}
.dash-kpi .kpi-row{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:9px}
.dash-kpi .kpi-label{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-weight:600}
.dash-kpi .kpi-ic{width:26px;height:26px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:12.5px}
.dash-kpi .kpi-val{font-size:20px;font-weight:700;font-family:var(--font-mono);letter-spacing:-.01em;color:var(--ink);line-height:1.1}
.dash-kpi .kpi-foot{display:flex;align-items:center;gap:6px;margin-top:5px;font-size:10.5px;font-family:var(--font-mono);color:var(--muted)}
.dash-kpi .kpi-foot .vs{color:var(--muted)}
.dash-wgrid{display:grid;grid-template-columns:repeat(12,1fr);gap:14px}
.dash-w{background:var(--paper);border:1px solid var(--line);border-radius:6px;overflow:hidden;transition:all .15s;min-height:120px}
.dash-w:hover{border-color:var(--line-2);box-shadow:0 4px 12px var(--shadow-xs)}
.dash-w12{grid-column:span 12}
.dash-w8 {grid-column:span 8}
.dash-w6 {grid-column:span 6}
.dash-w4 {grid-column:span 4}
.dash-w3 {grid-column:span 3}
@media (max-width:1024px){
  .dash-w8,.dash-w6{grid-column:span 12}
  .dash-w4,.dash-w3{grid-column:span 6}
}
@media (max-width:640px){
  .dash-w4,.dash-w3{grid-column:span 12}
}
.dash-w .w-head{padding:13px 16px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line)}
.dash-w .w-head h3{margin:0;font-size:13.5px;font-weight:600;color:var(--ink);display:flex;align-items:center;gap:8px}
.dash-w .w-head .w-ic{font-size:14px}
.dash-w .w-head .w-meta{font-size:10.5px;color:var(--muted);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em}
.dash-w .w-head-r{display:flex;align-items:center;gap:8px}
.dash-w .w-head .w-link{font-size:11px;color:var(--brand);font-weight:600;text-decoration:none;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.06em}
.dash-w .w-head .w-link:hover{color:var(--brand-deep)}
.dash-w .w-body{padding:16px}
.dash-w-err{padding:18px;color:var(--rust);font-size:12px;text-align:center}
.dash-w .chart-bars{display:flex;align-items:flex-end;gap:6px;height:140px;padding:8px 0 18px;position:relative;border-bottom:1px solid var(--line)}
.dash-w .chart-bars .bar{flex:1;background:linear-gradient(180deg,var(--brand) 0%,var(--brand-deep) 100%);border-radius:3px 3px 0 0;position:relative;transition:all .15s;cursor:pointer;min-height:5%}
.dash-w .chart-bars .bar:hover{opacity:.85;transform:translateY(-2px)}
.dash-w .chart-bars .bar::after{content:attr(data-month);position:absolute;bottom:-16px;left:0;right:0;text-align:center;font-size:9px;color:var(--muted);font-family:var(--font-mono);letter-spacing:.04em}
.dash-w .chart-bars .bar.peak{background:linear-gradient(180deg,#fbbf24 0%,#d97706 100%)}
.dash-w .chart-legend{display:flex;justify-content:space-between;align-items:center;margin-top:14px;font-size:11px;color:var(--muted);font-family:var(--font-mono);flex-wrap:wrap;gap:8px}
.dash-w .chart-legend .r{font-weight:600;color:var(--ink)}
.dash-w .donut-wrap{display:flex;align-items:center;gap:20px}
.dash-w .donut-svg{flex:0 0 130px;width:130px}
.dash-w .donut-legend{flex:1;display:flex;flex-direction:column;gap:8px;min-width:0}
.dash-w .legend-row{display:flex;align-items:center;gap:9px;font-size:12px}
.dash-w .legend-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}
.dash-w .legend-label{flex:1;color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dash-w .legend-val{font-family:var(--font-mono);font-weight:600;color:var(--ink);font-size:11.5px}
.dash-w .row-list{display:flex;flex-direction:column}
.dash-w .lrow{padding:10px 16px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:12px;cursor:pointer;transition:background .12s}
.dash-w .lrow:hover{background:var(--paper-2)}
.dash-w .lrow:last-child{border-bottom:0}
.dash-w .lrow-l{display:flex;align-items:center;gap:11px;flex:1;min-width:0}
.dash-w .l-ic{width:30px;height:30px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:12px;flex-shrink:0}
.dash-w .l-text{flex:1;min-width:0}
.dash-w .l-title{font-size:12.5px;color:var(--ink);font-weight:500;display:flex;align-items:center;gap:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dash-w .l-num{font-family:var(--font-mono);font-size:10.5px;color:var(--muted);padding:1px 5px;background:var(--paper-2);border-radius:3px}
.dash-w .l-meta{font-size:10.5px;color:var(--muted);margin-top:2px;font-family:var(--font-mono)}
.dash-w .lrow-r{display:flex;align-items:center;gap:10px;flex-shrink:0}
.dash-w .l-amt{font-family:var(--font-mono);font-size:12.5px;font-weight:600;color:var(--ink)}
.dash-w .pill{font-size:9.5px;font-family:var(--font-mono);font-weight:600;padding:2px 7px;border-radius:9px;letter-spacing:.04em}
.dash-w .pill.paid{background:var(--green-soft);color:var(--green)}
.dash-w .pill.unpaid{background:var(--rust-soft);color:var(--rust)}
.dash-w .pill.partial{background:var(--amber-soft);color:var(--gold)}
.dash-w .pill.draft,.dash-w .pill.cancelled{background:var(--line);color:#475569}
.dash-w .flow-summary{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.dash-w .flow-card{padding:13px;border-radius:6px;border:1px solid var(--line)}
.dash-w .flow-card.pos{background:linear-gradient(135deg,var(--green-soft) 0%,#ecfdf5 100%);border-color:#bbf7d0}
.dash-w .flow-card.neg{background:linear-gradient(135deg,var(--rust-soft) 0%,var(--rust-tint) 100%);border-color:#fecaca}
.dash-w .flow-label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:600;margin-bottom:5px}
.dash-w .flow-val{font-size:18px;font-weight:700;font-family:var(--font-mono);letter-spacing:-.01em;line-height:1.1}
.dash-w .flow-card.pos .flow-val{color:#14532d}
.dash-w .flow-card.neg .flow-val{color:#7f1d1d}
.dash-w .flow-meta{font-size:10.5px;color:var(--muted);font-family:var(--font-mono);margin-top:4px}
.dash-w .flow-net{margin-top:14px;padding:10px 13px;background:var(--paper-2);border-radius:5px;border:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--muted);font-weight:500}
.dash-w .aged-list{display:flex;flex-direction:column}
.dash-w .aged-row{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px dashed var(--line);font-size:12px;color:var(--ink-2);font-family:var(--font-mono)}
.dash-w .aged-row:last-child{border-bottom:0}
.dash-w .aged-row .risk{background:var(--rust-soft);color:var(--rust);font-family:var(--font-mono);font-size:9px;padding:1px 5px;border-radius:8px;font-weight:600;margin-left:4px;letter-spacing:.04em}
.dash-w .aged-total{margin-top:8px;padding:10px;background:var(--paper-2);border-radius:5px;text-align:center;border:1px solid var(--line)}
.dash-w .aged-total-label{font-size:10.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-weight:600}
.dash-w .aged-total-val{font-family:var(--font-mono);font-size:17px;font-weight:700;color:var(--ink);margin-top:2px}
.dash-w .cal-list{display:flex;flex-direction:column}
.dash-w .cal-day{padding:9px 16px;border-bottom:1px solid var(--line);display:flex;gap:13px;align-items:center}
.dash-w .cal-day:last-child{border-bottom:0}
.dash-w .cal-date{display:flex;flex-direction:column;align-items:center;flex-shrink:0;width:38px}
.dash-w .cal-date .dn{font-family:var(--font-mono);font-size:9px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.06em}
.dash-w .cal-date .dd{font-size:19px;font-weight:700;color:var(--ink);line-height:1.1}
.dash-w .cal-date .dm{font-family:var(--font-mono);font-size:9px;color:var(--muted);text-transform:uppercase}
.dash-w .cal-date.urgent .dd{color:var(--rust)}
.dash-w .cal-date.soon .dd{color:var(--amber)}
.dash-w .cal-event{flex:1;min-width:0}
.dash-w .cal-title{font-size:12.5px;color:var(--ink);font-weight:500}
.dash-w .cal-meta{font-size:10.5px;color:var(--muted);font-family:var(--font-mono);margin-top:2px}
.dash-w .cal-status{padding:2px 7px;border-radius:9px;font-size:9.5px;font-family:var(--font-mono);font-weight:600;letter-spacing:.04em}
.dash-w .cal-status.urgent{background:var(--rust-soft);color:var(--rust)}
.dash-w .cal-status.soon{background:var(--amber-soft);color:var(--gold)}
.dash-w .cal-status.upcoming{background:var(--brand-soft);color:var(--brand-hover)}
.dash-w .quick-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.dash-w .qa{padding:13px 8px;border:1px solid var(--line);border-radius:5px;cursor:pointer;text-align:center;transition:all .15s;background:var(--paper)}
.dash-w .qa:hover{border-color:var(--brand);background:var(--brand-soft);transform:translateY(-1px)}
.dash-w .qa-ic{width:30px;height:30px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:14px;margin:0 auto 6px}
.dash-w .qa-label{font-size:10.5px;font-weight:500;color:var(--ink-2);line-height:1.3}
.dash-w .pnl-rows{display:flex;flex-direction:column}
.dash-w .pnl-row{display:flex;justify-content:space-between;align-items:center;padding:9px 0;border-bottom:1px dashed var(--line);font-size:13px;color:var(--ink-2);font-family:var(--font-mono)}
.dash-w .pnl-row.total{font-weight:700;font-size:14.5px;color:var(--ink);border-bottom:0;padding-top:11px;margin-top:3px;border-top:2px solid var(--ink)}
.dash-empty{padding:60px 30px;text-align:center;background:var(--paper);border:1px dashed var(--line-2);border-radius:8px}
.dash-empty-ic{font-size:42px;margin-bottom:14px;opacity:.7}
.dash-empty h3{margin:0 0 6px;font-size:16px;color:var(--ink)}
.dash-empty p{margin:0;color:var(--muted);font-size:13px}
.dash-empty-row{padding:24px 16px;text-align:center;color:var(--muted);font-size:12.5px}
.dash-cust-side{background:var(--paper-2);border-right:1px solid var(--line);padding:18px;overflow-y:auto}
.dash-cust-sub{font-size:11.5px;color:var(--muted);margin-bottom:14px;line-height:1.55}
.dash-cust-cats{display:flex;flex-direction:column;gap:3px;margin-bottom:18px}
.dash-cust-cat{padding:8px 11px;border-radius:5px;font-size:12.5px;color:var(--ink-2);cursor:pointer;display:flex;justify-content:space-between;align-items:center;transition:all .12s}
.dash-cust-cat:hover{background:var(--paper)}
.dash-cust-cat.active{background:var(--brand);color:var(--paper);font-weight:600}
.dash-cust-cat .cnt{font-family:var(--font-mono);font-size:10px;background:rgba(0,0,0,.08);padding:1px 6px;border-radius:8px}
.dash-cust-cat.active .cnt{background:rgba(255,255,255,.22)}
.dash-cust-totalbar{padding:10px;background:var(--paper);border:1px solid var(--line);border-radius:5px;font-size:11px;text-align:center;color:var(--muted);font-family:var(--font-mono);letter-spacing:.04em}
.dash-cust-actions{display:flex;flex-direction:column;gap:8px;border-top:1px solid var(--line);padding-top:14px}
.dash-cust-main{padding:20px;overflow-y:auto}
.widget-catalog{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.wcat{border:1px solid var(--line);border-radius:6px;padding:13px;background:var(--paper);transition:all .15s;position:relative;overflow:hidden;display:flex;flex-direction:column}
.wcat:hover{border-color:var(--brand);box-shadow:0 4px 12px rgba(13,148,136,.08)}
.wcat.on{border-color:var(--brand);background:linear-gradient(135deg,var(--brand-tint) 0%,var(--paper) 100%)}
.wcat-top{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:8px}
.wcat-ic{width:34px;height:34px;border-radius:7px;display:flex;align-items:center;justify-content:center;font-size:16px}
.wcat-name{font-size:13px;font-weight:600;color:var(--ink);margin:0 0 3px}
.wcat-desc{font-size:11px;color:var(--muted);line-height:1.5;margin:0 0 11px;flex:1}
.wcat-foot{display:flex;justify-content:space-between;align-items:center;border-top:1px dashed var(--line);padding-top:8px;margin-top:auto}
.wcat-size{font-family:var(--font-mono);font-size:9px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-weight:600}
.wcat-order{display:flex;gap:3px}
.wcat-order .ord-btn{width:22px;height:22px;border:1px solid var(--line-2);background:var(--paper);border-radius:3px;cursor:pointer;font-size:11px;color:var(--ink-2);padding:0;line-height:1}
.wcat-order .ord-btn:hover{background:var(--brand-tint);border-color:var(--brand);color:var(--brand-deep)}
.dash-cust-main .tgl,.wcat .tgl{position:relative;display:inline-block;width:34px;height:19px;flex:0 0 34px}
.dash-cust-main .tgl input,.wcat .tgl input{opacity:0;width:0;height:0}
.dash-cust-main .tgl-slider,.wcat .tgl-slider{position:absolute;cursor:pointer;inset:0;background:var(--line-2);transition:.18s;border-radius:19px}
.dash-cust-main .tgl-slider::before,.wcat .tgl-slider::before{position:absolute;content:"";height:13px;width:13px;left:3px;bottom:3px;background:var(--paper);transition:.18s;border-radius:50%;box-shadow:0 1px 2px rgba(0,0,0,.18)}
.dash-cust-main .tgl input:checked + .tgl-slider,.wcat .tgl input:checked + .tgl-slider{background:var(--brand)}
.dash-cust-main .tgl input:checked + .tgl-slider::before,.wcat .tgl input:checked + .tgl-slider::before{transform:translateX(15px)}
.ll-bnav {
  display: none;
  position: fixed;
  left: 0; right: 0; bottom: 0;
  z-index: 8900;
  background: var(--paper);
  border-top: 1px solid var(--line, #e5e7eb);
  box-shadow: 0 -2px 8px rgba(15, 23, 42, 0.06);
  padding-bottom: env(safe-area-inset-bottom, 0px);
  grid-template-columns: repeat(5, 1fr);
  align-items: stretch;
}
.ll-bnav-item {
  background: none;
  border: none;
  margin: 0;
  padding: 8px 4px 6px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2px;
  color: var(--muted);
  font-family: inherit;
  font-size: 11px;
  font-weight: 500;
  cursor: pointer;
  min-height: 56px;
  -webkit-tap-highlight-color: transparent;
  position: relative;
  transition: color .12s ease;
}
.ll-bnav-item:active { opacity: 0.65; }
.ll-bnav-item[aria-current="page"] { color: var(--brand, var(--brand)); }
.ll-bnav-item[aria-current="page"]::before {
  content: "";
  position: absolute;
  top: 0; left: 50%;
  width: 28px; height: 3px;
  background: var(--brand, var(--brand));
  border-radius: 0 0 3px 3px;
  transform: translateX(-50%);
}
.ll-bnav-item svg { display: block; }
.ll-bnav-lbl {
  font-size: 10.5px;
  line-height: 1.2;
  letter-spacing: 0.01em;
}
.ll-bnav-fab { padding: 0; }
.ll-bnav-fab .ll-bnav-fab-circle {
  width: 52px; height: 52px; border-radius: 50%;
  background: var(--brand, var(--brand));
  color: var(--paper);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 4px 14px rgba(13, 148, 136, 0.4),
              0 2px 4px rgba(15, 23, 42, 0.15);
  margin-top: -18px;
  transition: transform .14s ease, box-shadow .14s ease;
}
.ll-bnav-fab:active .ll-bnav-fab-circle {
  transform: scale(0.94);
  box-shadow: 0 2px 8px rgba(13, 148, 136, 0.3);
}
@media (max-width: 900px) {
  .ll-bnav { display: grid; }
  body { padding-bottom: 76px; }
  body.has-bnav-extra-pad { padding-bottom: 90px; }
  html body .fab-wrap { display: none; }
  .fab-wrap.open .fab-menu {
    position: fixed;
    bottom: calc(76px + env(safe-area-inset-bottom, 0px));
    left: 50%;
    transform: translateX(-50%);
    display: flex !important;
  }
}
@media (max-width: 900px) {
  .btn, button.btn, a.btn,
  button[type="button"], button[type="submit"], button[type="reset"] {
    min-height: 44px;
  }
  .ll-bnav-item,
  .tbl button, .tbl-actions button,
  .chip, .chip-btn,
  .icon-btn, .actions button {
    min-height: unset;
  }
  .tbl tbody tr td {
    padding-top: 12px;
    padding-bottom: 12px;
  }
}
.ll-zoomable {
  touch-action: pan-x pan-y pinch-zoom;
  -webkit-user-select: none;
  user-select: none;
  overflow: auto;
  -webkit-overflow-scrolling: touch;
}
.ll-zoomable img,
.ll-zoomable canvas,
.ll-zoomable iframe {
  max-width: none;
  display: block;
}
@media (max-width: 900px) {
  .invoice-preview,
  #statementBody,
  #previewBody,
  .pdf-preview {
    touch-action: pan-x pan-y pinch-zoom;
    -webkit-overflow-scrolling: touch;
  }
}
:root {
  --sp-1: 4px;
  --sp-2: 8px;
  --sp-3: 12px;
  --sp-4: 16px;
  --sp-5: 20px;
  --sp-6: 24px;
  --sp-7: 32px;
  --sp-8: 48px;
  --radius-xs:   4px;
  --radius-md:   8px;
  --radius-xl:  12px;
  --radius-pill: 9999px;
  --ease-out:    cubic-bezier(0.16, 1, 0.3, 1);
  --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
}
.empty-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--sp-3);
  padding: var(--sp-7) var(--sp-4);
  text-align: center;
  color: var(--muted);
  background: var(--paper);
  border: 1px dashed var(--line-2);
  border-radius: var(--radius-md);
}
.empty-state.sm {
  padding: var(--sp-4) var(--sp-3);
  gap: var(--sp-2);
  border-style: solid;
  background: var(--paper-2);
}
.empty-state.lg {
  padding: var(--sp-8) var(--sp-5);
  gap: var(--sp-4);
}
.empty-state-icon {
  font-size: 36px;
  line-height: 1;
  opacity: 0.7;
  margin-bottom: var(--sp-1);
}
.empty-state.lg .empty-state-icon { font-size: 52px; }
.empty-state.sm .empty-state-icon { font-size: 22px; margin-bottom: 0; }
.empty-state-title {
  margin: 0;
  font-size: 15px;
  font-weight: 600;
  color: var(--ink);
  line-height: 1.3;
}
.empty-state.lg .empty-state-title { font-size: 18px; }
.empty-state.sm .empty-state-title { font-size: 13px; }
.empty-state-body {
  margin: 0;
  font-size: 13px;
  color: var(--muted);
  line-height: 1.5;
  max-width: 380px;
}
.empty-state.lg .empty-state-body { font-size: 14px; max-width: 460px; }
.empty-state.sm .empty-state-body { font-size: 12px; }
.empty-state .btn { margin-top: var(--sp-2); }
@keyframes ll-skeleton-shimmer {
  0%   { background-position: -180% 0; }
  100% { background-position:  180% 0; }
}
.skeleton {
  display: block;
  background: linear-gradient(
    90deg,
    var(--paper-2) 0%,
    var(--paper-3) 50%,
    var(--paper-2) 100%
  );
  background-size: 220% 100%;
  animation: ll-skeleton-shimmer 1.4s ease-in-out infinite;
  border-radius: var(--radius-sm);
  opacity: 0.85;
}
.skeleton-line {
  height: 12px;
  width: 100%;
  margin: 6px 0;
}
.skeleton-line.short { width: 60%; }
.skeleton-line.tiny  { width: 30%; }
.skeleton-num {
  height: 28px;
  width: 80%;
  margin: 8px 0;
}
.skeleton-card {
  height: 100px;
  width: 100%;
}
@media (prefers-reduced-motion: reduce) {
  .skeleton { animation: none; background: var(--paper-2); }
}
@keyframes ll-spinner-spin {
  to { transform: rotate(360deg); }
}
.spinner {
  display: inline-block;
  width: 16px;
  height: 16px;
  border: 2px solid currentColor;
  border-right-color: transparent;
  border-radius: var(--radius-pill);
  animation: ll-spinner-spin 0.7s linear infinite;
  vertical-align: -3px;
  opacity: 0.8;
}
.spinner-sm { width: 12px; height: 12px; border-width: 1.5px; }
.spinner-lg { width: 24px; height: 24px; border-width: 2.5px; }
@media (prefers-reduced-motion: reduce) {
  .spinner { animation-duration: 2s; }
}
:where(button, a, [role="button"], [role="menuitem"], [role="tab"],
       [tabindex]):focus-visible {
  outline: 2px solid var(--brand);
  outline-offset: 2px;
  border-radius: var(--radius-sm);
}
.fab-menu :where(button, [role="menuitem"]):focus-visible {
  outline-offset: -2px;
}
.dash-greet {
  font-size: 17px;
  font-weight: 500;
  letter-spacing: -0.005em;
  color: var(--ink-2);
}
.dash-name {
  font-weight: 700;
  color: var(--ink);
}
.dash-kpi {
  transition: transform var(--t-fast), box-shadow var(--t-fast);
}
.dash-kpi:hover {
  transform: translateY(-1px);
  box-shadow: var(--shadow);
}
.dash-w {
  transition: box-shadow var(--t-fast);
}
.dash-w:hover {
  box-shadow: var(--shadow);
}
.dash-w-loading {
  display: flex;
  flex-direction: column;
  gap: var(--sp-2);
  padding: var(--sp-4);
}
.dash-w-loading .skeleton-line { margin: 4px 0; }
.dash-w-err {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--sp-2);
  padding: var(--sp-5) var(--sp-4);
  color: var(--rust);
  font-size: 12.5px;
  background: var(--rust-tint);
  border: 1px solid var(--rust-soft);
  border-radius: var(--radius-md);
}
.dash-w-err::before {
  content: '⚠';
  font-size: 16px;
  flex-shrink: 0;
}
@media (max-width: 720px) {
  .dash-toolbar {
    gap: var(--sp-2);
    flex-wrap: wrap;
  }
  .dash-greet { font-size: 15px; }
  .dash-wgrid { gap: var(--sp-3); }
}
.ll-toast {
  transition: transform 220ms var(--ease-out),
              opacity 220ms var(--ease-out);
}
.modal-close,
.drawer-close,
button[aria-label="Close"] {
  min-width: 36px;
  min-height: 36px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--radius-sm);
  transition: background var(--t-fast), color var(--t-fast);
}
.modal-close:hover,
.drawer-close:hover,
button[aria-label="Close"]:hover {
  background: var(--paper-2);
  color: var(--ink);
}
@media (max-width: 720px) {
  .modal-close,
  .drawer-close { min-width: 44px; min-height: 44px; }
}
button:disabled,
.btn:disabled,
.btn[disabled] {
  color: var(--muted);
  opacity: 0.6;
  cursor: not-allowed;
}
@media (max-width: 720px) {
  table .btn.xs,
  table .btn-xs {
    min-height: 36px;
    padding-left: 10px;
    padding-right: 10px;
  }
}
.btn-sm {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 6px 12px;
  font-size: 12px;
  font-weight: 600;
  gap: 6px;
  border: 1px solid var(--line-2);
  background: var(--paper);
  color: var(--ink);
  border-radius: var(--radius-sm);
  cursor: pointer;
  white-space: nowrap;
  transition: background var(--t-fast), border-color var(--t-fast);
}
.btn-sm:hover {
  background: var(--paper-2);
  border-color: var(--line-2);
}
.btn-sm.btn-primary,
.btn-sm.btn-brand {
  background: var(--brand);
  border-color: var(--brand);
  color: var(--brand-on);
}
.btn-sm.btn-primary:hover,
.btn-sm.btn-brand:hover {
  background: var(--brand-hover);
  border-color: var(--brand-hover);
}
.btn-sm.btn-danger {
  background: var(--rust);
  border-color: var(--rust);
  color: var(--paper);
}
.btn-sm.btn-danger:hover {
  background: #991b1b;
  border-color: #991b1b;
}
.card {
  align-self: start;
}
.card.fill { align-self: stretch; }
.data-tbl th[data-sort] {
  cursor: pointer;
  user-select: none;
  position: relative;
  padding-right: 22px;
  transition: color var(--t-fast);
}
.data-tbl th[data-sort]:hover {
  color: var(--brand);
}
.data-tbl th[data-sort]::after {
  content: '⇅';
  position: absolute;
  right: 6px;
  top: 50%;
  transform: translateY(-50%);
  font-size: 10px;
  opacity: 0.3;
  transition: opacity var(--t-fast);
}
.data-tbl th[data-sort]:hover::after {
  opacity: 0.6;
}
.data-tbl th[data-sort].sort-asc::after  { content: '↑'; opacity: 1; color: var(--brand); }
.data-tbl th[data-sort].sort-desc::after { content: '↓'; opacity: 1; color: var(--brand); }
.list-search-bar {
  display: flex;
  align-items: center;
  gap: var(--sp-2);
  margin-bottom: var(--sp-3);
}
.list-search-bar input[type="search"],
.list-search-bar input.list-search {
  flex: 1;
  max-width: 320px;
  padding: 8px 12px 8px 34px;
  font-size: 13px;
  border: 1px solid var(--line-2);
  border-radius: var(--radius-sm);
  background: var(--paper) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='11' cy='11' r='8'/><line x1='21' y1='21' x2='16.65' y2='16.65'/></svg>") no-repeat 11px center;
  color: var(--ink);
  outline: none;
  transition: border-color var(--t-fast), box-shadow var(--t-fast);
}
.list-search-bar input[type="search"]:focus,
.list-search-bar input.list-search:focus {
  border-color: var(--brand);
  box-shadow: 0 0 0 3px var(--brand-tint);
}
.list-search-bar .list-search-meta {
  font-size: 12px;
  color: var(--muted);
  font-family: var(--font-mono);
}
.data-tbl tfoot tr {
  border-top: 2px solid var(--ink);
  background: var(--paper-2);
}
.data-tbl tfoot td {
  padding: 10px 12px;
  font-weight: 600;
  color: var(--ink);
  font-variant-numeric: tabular-nums;
}
.data-tbl tfoot td.right {
  text-align: right;
}
.data-tbl tfoot td.tfoot-label {
  font-weight: 600;
  color: var(--ink-2);
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
@media (max-width: 768px) {
  .btn, button, input[type="submit"], input[type="button"], select {
    min-height: 44px;
  }
  input[type="text"], input[type="email"], input[type="password"],
  input[type="number"], input[type="tel"], input[type="url"],
  input[type="date"], input[type="time"], input[type="datetime-local"],
  textarea, select {
    font-size: 16px;
  }
  .bld-row, .builder-row { flex-direction: column; gap: 6px; align-items: stretch; }
  .bld-row > *, .builder-row > * { width: 100% !important; }
  .bld-head, .builder-head { padding: 8px 10px; font-size: 13px; }
  .modal, .modal-content {
    width: 95vw !important;
    max-width: 95vw !important;
    max-height: 92vh !important;
  }
  .sidenav, .side-nav, .left-nav {
    position: fixed; left: -100%; top: 0; bottom: 0; z-index: 999;
    width: 80vw; max-width: 320px;
    transition: left 0.25s ease;
    box-shadow: 2px 0 12px rgba(0,0,0,0.15);
  }
  .sidenav.open, .side-nav.open, .left-nav.open { left: 0; }
  .topbar, .top-bar { padding: 6px 10px; }
  .topbar h1 { font-size: 16px; }
  .page, .page-content { padding: 10px 8px; }
  .page-head { flex-direction: column; align-items: stretch; gap: 8px; }
  .page-actions { width: 100%; display: flex; gap: 6px; flex-wrap: wrap; }
  .page-actions button { flex: 1; min-width: 44%; }
  table { max-width: 100%; }
  .table-wrap, .responsive-table {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
}
@media (max-width: 480px) {
  .kpi-grid, .stat-grid { grid-template-columns: 1fr !important; }
  .page, .page-content { padding: 8px 6px; }
}

/* =====================================================================
 * v26.4 — INVOICE BUILDER MOBILE RESPONSIVE — Tier-2/3 city CA segment
 * Additive only. Targets <= 768px breakpoint.
 * Selectors: .bld-* invoice builder + .builder-grid + #page-newInvoice.
 * ===================================================================== */

/* v26.4 */
@media (max-width: 768px) {
  /* Builder grid → fully stacked: form on top, preview below */
  .builder-grid {
    grid-template-columns: 1fr !important;
    gap: 12px;
  }
  .builder-grid .invoice-preview,
  .builder-preview {
    position: static !important;
    width: 100% !important;
    max-width: 100% !important;
    margin-top: 16px;
    border-top: 2px solid #efe3c0;
    padding-top: 12px;
  }

  /* Customer / Bill To section → single column */
  .bld-billto, .bld-customer, .bld-customer-grid,
  .bld-form-row, .bld-2col, .bld-3col {
    display: block !important;
    grid-template-columns: 1fr !important;
  }
  .bld-billto > *, .bld-customer-grid > *,
  .bld-form-row > *, .bld-2col > *, .bld-3col > * {
    width: 100% !important;
    margin-bottom: 8px;
  }

  /* All builder form inputs full-width, 16px to defeat iOS zoom */
  #page-newInvoice input[type="text"],
  #page-newInvoice input[type="email"],
  #page-newInvoice input[type="tel"],
  #page-newInvoice input[type="number"],
  #page-newInvoice input[type="date"],
  #page-newInvoice select,
  #page-newInvoice textarea,
  .bld-input, .bld-select {
    width: 100% !important;
    min-height: 44px;
    font-size: 16px !important;
    padding: 10px 12px;
    box-sizing: border-box;
  }

  /* Buttons: 44px touch target */
  #page-newInvoice button,
  #page-newInvoice .btn,
  .bld-btn, .bld-btn-primary, .bld-btn-secondary {
    min-height: 44px;
    padding: 10px 14px;
    font-size: 14px;
    border-radius: 6px;
    touch-action: manipulation;
  }

  /* Line items table → stacked cards (one card per row) */
  .bld-items-table, .bld-line-table, .invoice-items-table {
    display: block;
    width: 100%;
  }
  .bld-items-table thead, .bld-line-table thead, .invoice-items-table thead {
    display: none;
  }
  .bld-items-table tbody, .bld-line-table tbody, .invoice-items-table tbody {
    display: block;
    width: 100%;
  }
  .bld-items-table tr, .bld-line-table tr, .invoice-items-table tbody tr {
    display: block;
    background: var(--paper);
    border: 1px solid #efe3c0;
    border-radius: 8px;
    padding: 10px;
    margin-bottom: 10px;
    box-shadow: 0 1px 2px rgba(0,0,0,0.04);
  }
  .bld-items-table td, .bld-line-table td, .invoice-items-table tbody td {
    display: flex;
    justify-content: space-between;
    align-items: center;
    border: none !important;
    padding: 6px 0 !important;
    text-align: right;
    min-height: 36px;
    font-size: 13px;
    gap: 8px;
  }
  .bld-items-table td::before,
  .bld-line-table td::before,
  .invoice-items-table tbody td::before {
    content: attr(data-label);
    font-weight: 600;
    color: #6e6750;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.02em;
    text-align: left;
    flex-shrink: 0;
    max-width: 38%;
  }
  /* When a td contains an input, let it grow */
  .bld-items-table td input,
  .bld-line-table td input,
  .invoice-items-table tbody td input {
    flex: 1;
    min-width: 0;
    text-align: right;
  }

  /* Totals section: stack right-aligned numbers but reduce padding */
  .bld-totals, .invoice-totals {
    width: 100% !important;
    margin-top: 12px;
    padding: 10px;
  }
  .bld-totals-row, .invoice-totals-row {
    display: flex;
    justify-content: space-between;
    padding: 4px 0;
    font-size: 13px;
  }

  /* Advanced section disclosed but full-width */
  #page-newInvoice .bld-advanced { padding: 8px; }

  /* Sticky action bar at bottom for Save/Cancel on mobile */
  .bld-action-bar, .invoice-action-bar {
    position: sticky;
    bottom: 0;
    left: 0;
    right: 0;
    background: var(--paper);
    border-top: 1px solid #efe3c0;
    padding: 8px;
    z-index: 50;
    display: flex;
    gap: 8px;
  }
  .bld-action-bar > button, .invoice-action-bar > button { flex: 1; }
}

/* v26.4 */
@media (max-width: 480px) {
  .builder-grid { gap: 8px; }
  #page-newInvoice input, #page-newInvoice select { font-size: 16px !important; }
  .bld-items-table td, .bld-line-table td { font-size: 12px; }
  .bld-totals-row { font-size: 12px; }
}