:root {
  /* Silver Disk — Tandy × Apple */
  --bg-deep: #121212;
  --bg: #1a1a1a;
  --panel: #1e1e1e;
  --panel-mid: #242424;
  --border: #3a3a3a;
  --border-soft: rgba(58, 58, 58, 0.85);
  --text: #f5f5f7;
  --text-secondary: #c0c0c0;
  --amber: #f5a623;
  --amber-dark: #d4891a;
  --amber-soft: rgba(245, 166, 35, 0.18);
  --radius: 11px;
  --radius-sm: 8px;
  --font: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", system-ui, sans-serif;
  --hairline: 1px solid var(--border);
  --panel-gradient: linear-gradient(
    155deg,
    #2a2a2a 0%,
    #1f1f1f 38%,
    #232323 62%,
    #1a1a1a 100%
  );
  --panel-inset: inset 0 1px 0 rgba(255, 255, 255, 0.05);
  --space: 1.25rem;
}

* { box-sizing: border-box; margin: 0; padding: 0; }

html { color-scheme: dark; }

body {
  font-family: var(--font);
  background: var(--bg-deep);
  color: var(--text);
  min-height: 100vh;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

a { color: var(--text); text-decoration: none; }
a:hover { color: var(--text-secondary); text-decoration: underline; }

:focus-visible {
  outline: 2px solid var(--amber);
  outline-offset: 2px;
}

button:focus-visible,
a:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible {
  outline: 2px solid var(--amber);
  outline-offset: 2px;
}

/* Shared silver-disk surface */
.card,
.panel,
.login-card,
.filter-bar,
.invoice-block,
.roadmap-list,
.note-entry,
.specialty-fieldset {
  background: var(--panel-gradient);
  border: var(--hairline);
  box-shadow: var(--panel-inset);
}

.admin-banner { display: none !important; }

.site-header {
  background: var(--bg);
  border-bottom: var(--hairline);
  padding: 1.1rem 1.75rem;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1.1rem;
}

.brand {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}

.brand .console {
  font-size: 1.3rem;
  font-weight: 650;
  color: var(--text);
  letter-spacing: -0.02em;
}

.brand .product {
  font-size: 0.72rem;
  color: var(--text-secondary);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-weight: 500;
}

.brand .accent {
  color: var(--amber);
}

nav {
  display: flex;
  flex-wrap: wrap;
  gap: 0.15rem;
  align-items: center;
}

nav a {
  color: var(--text-secondary);
  padding: 0.5rem 0.9rem;
  border-radius: 999px;
  text-decoration: none;
  font-size: 0.92rem;
  font-weight: 500;
  transition: color 0.15s ease, background 0.15s ease;
}

nav a:hover {
  background: rgba(255, 255, 255, 0.04);
  color: var(--text);
  text-decoration: none;
}

nav a.active {
  background: transparent;
  color: var(--text);
  font-weight: 600;
  box-shadow: inset 0 -2px 0 var(--amber);
  border-radius: var(--radius-sm);
}

main {
  max-width: 1200px;
  margin: 0 auto;
  padding: 2.25rem 1.75rem 3.5rem;
}

h1 {
  font-size: 1.85rem;
  font-weight: 650;
  color: var(--text);
  margin-bottom: 0.45rem;
  letter-spacing: -0.025em;
}

.subtitle {
  color: var(--text-secondary);
  margin-bottom: 1.85rem;
  font-size: 0.98rem;
  font-weight: 400;
}

.cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 1.15rem;
  margin-bottom: 2.25rem;
}

.card {
  border-radius: var(--radius);
  padding: 1.4rem 1.35rem;
}

.card .label {
  font-size: 0.75rem;
  color: var(--text-secondary);
  text-transform: uppercase;
  letter-spacing: 0.1em;
  margin-bottom: 0.45rem;
  font-weight: 550;
}

.card .value {
  font-size: 2rem;
  font-weight: 650;
  color: var(--text);
  letter-spacing: -0.03em;
  font-variant-numeric: tabular-nums;
}

.card .hint {
  margin-top: 0.55rem;
  font-size: 0.85rem;
  color: var(--text-secondary);
}

.panel {
  border-radius: var(--radius);
  overflow: hidden;
}

.panel-header {
  padding: 1rem 1.25rem;
  border-bottom: var(--hairline);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.85rem;
  background: rgba(0, 0, 0, 0.18);
}

.panel-header h2 {
  font-size: 1.05rem;
  font-weight: 600;
  color: var(--text);
  letter-spacing: -0.01em;
}

.filters {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  align-items: center;
}

.filters a, .filters span {
  font-size: 0.78rem;
  padding: 0.32rem 0.7rem;
  border-radius: 999px;
  border: var(--hairline);
  color: var(--text-secondary);
  text-decoration: none;
  background: transparent;
}

.filters a:hover {
  border-color: var(--amber);
  color: var(--amber);
  text-decoration: none;
}

.filters a.active, .filters span.active {
  background: var(--amber);
  border-color: var(--amber);
  color: var(--bg-deep);
  font-weight: 600;
}

table {
  width: 100%;
  border-collapse: collapse;
}

th, td {
  text-align: left;
  padding: 0.85rem 1.2rem;
  border-bottom: var(--hairline);
}

th {
  font-size: 0.72rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--text-secondary);
  background: rgba(0, 0, 0, 0.28);
  font-weight: 600;
  border-top: 2px solid var(--amber);
  border-bottom: var(--hairline);
}

td {
  color: var(--text);
  font-size: 0.94rem;
}

tbody tr:nth-child(even) td {
  background: rgba(255, 255, 255, 0.02);
}

tr:last-child td { border-bottom: none; }

tr:hover td { background: rgba(245, 166, 35, 0.045); }

.price {
  font-variant-numeric: tabular-nums;
  color: var(--text);
  font-weight: 600;
}

.badge {
  display: inline-block;
  font-size: 0.7rem;
  padding: 0.18rem 0.55rem;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.06);
  color: var(--text-secondary);
  border: var(--hairline);
  font-weight: 550;
}

.badge.active {
  background: var(--amber-soft);
  color: var(--amber);
  border-color: rgba(245, 166, 35, 0.35);
}

.empty-state {
  text-align: center;
  padding: 4rem 1.75rem;
  color: var(--text-secondary);
}

.empty-state h2 {
  color: var(--text);
  margin-bottom: 0.55rem;
  font-weight: 600;
}

.empty-state .icon {
  font-size: 2.5rem;
  margin-bottom: 0.85rem;
  color: var(--text-secondary);
}

.muted { color: var(--text-secondary); font-size: 0.9rem; }

.error {
  background: #2a1515;
  border: 1px solid #8a3a3a;
  color: #f0c0c0;
  padding: 1rem 1.15rem;
  border-radius: var(--radius);
  margin-bottom: 1.15rem;
}

footer {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 1.75rem 2.5rem;
  color: var(--text-secondary);
  font-size: 0.8rem;
}

footer a {
  color: var(--text-secondary);
  text-decoration: none;
}
footer a:hover {
  color: var(--amber);
  text-decoration: none;
}

.logout-form button {
  background: transparent;
  border: var(--hairline);
  color: var(--text-secondary);
  border-radius: var(--radius-sm);
  padding: 0.42rem 0.8rem;
  cursor: pointer;
  font: inherit;
  font-size: 0.85rem;
}
.logout-form button:hover {
  border-color: var(--amber);
  color: var(--amber);
}

/* --- login --- */
.login-body {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 100vh;
  padding: 1.75rem;
  background: var(--bg-deep);
}

.login-card {
  width: 100%;
  max-width: 400px;
  border-radius: 12px;
  padding: 2rem 1.85rem;
}

.login-card h1 {
  margin: 1.15rem 0 1.35rem;
  font-size: 1.35rem;
}

.login-form {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.login-form label {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  font-size: 0.82rem;
  color: var(--text-secondary);
  font-weight: 500;
}

.login-form input {
  background: var(--bg-deep);
  border: var(--hairline);
  border-radius: var(--radius-sm);
  color: var(--text);
  padding: 0.7rem 0.85rem;
  font: inherit;
}

.login-form input:focus {
  border-color: var(--amber);
  outline: none;
  box-shadow: 0 0 0 3px var(--amber-soft);
}

.login-form button {
  margin-top: 0.4rem;
  background: var(--amber);
  color: var(--bg-deep);
  border: none;
  border-radius: var(--radius-sm);
  padding: 0.75rem 1.1rem;
  font-weight: 700;
  cursor: pointer;
  font: inherit;
}

.login-form button:hover {
  background: var(--amber-dark);
}

.login-card .error {
  margin-bottom: 0.85rem;
}

/* --- editable v1 additions --- */
.page-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem;
  margin-bottom: 1.25rem;
}

.btn, button.btn, a.btn {
  display: inline-block;
  padding: 0.55rem 1rem;
  border-radius: var(--radius-sm);
  font: inherit;
  font-size: 0.9rem;
  font-weight: 600;
  cursor: pointer;
  text-decoration: none;
  border: 1px solid transparent;
  appearance: none;
  -webkit-appearance: none;
}

.btn:hover, a.btn:hover { text-decoration: none; }

a.btn.btn-primary,
button.btn.btn-primary,
.btn.btn-primary,
button.btn-primary {
  background: var(--amber) !important;
  color: var(--bg-deep) !important;
  border-color: var(--amber) !important;
}
a.btn.btn-primary:hover,
button.btn.btn-primary:hover,
.btn.btn-primary:hover,
button.btn-primary:hover {
  background: var(--amber-dark) !important;
  color: var(--bg-deep) !important;
}

a.btn.btn-secondary,
button.btn.btn-secondary,
.btn.btn-secondary,
button.btn-secondary {
  background: rgba(130, 155, 185, 0.14) !important;
  color: rgba(200, 214, 230, 0.95) !important;
  border-color: rgba(130, 155, 185, 0.55) !important;
}
a.btn.btn-secondary:hover,
button.btn.btn-secondary:hover,
.btn.btn-secondary:hover,
button.btn-secondary:hover {
  background: rgba(130, 155, 185, 0.22) !important;
  border-color: rgba(245, 166, 35, 0.55) !important;
  color: var(--amber) !important;
}

.btn-link {
  background: none;
  border: none;
  color: var(--text);
  cursor: pointer;
  font: inherit;
  padding: 0;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.btn-link:hover { color: var(--amber); }
.btn-link.danger { color: #f88; }

.flash.ok {
  background: var(--amber-soft);
  border: 1px solid rgba(245, 166, 35, 0.45);
  color: var(--text);
  padding: 0.85rem 1.1rem;
  border-radius: var(--radius);
  margin-bottom: 1.15rem;
}

.form-grid {
  display: flex;
  flex-direction: column;
  gap: 1.15rem;
}

.form-body {
  padding: 1.35rem;
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.form-body label, .filter-bar label, .inline-add label {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  font-size: 0.75rem;
  color: var(--text-secondary);
  text-transform: uppercase;
  letter-spacing: 0.07em;
  font-weight: 550;
}

.form-body input, .form-body select, .form-body textarea,
.filter-bar select, .inline-add select, .inline-add input {
  background: var(--bg-deep);
  border: var(--hairline);
  border-radius: var(--radius-sm);
  color: var(--text);
  padding: 0.6rem 0.75rem;
  font: inherit;
  text-transform: none;
  letter-spacing: normal;
  font-size: 0.95rem;
}

.form-body input:focus,
.form-body select:focus,
.form-body textarea:focus,
.filter-bar select:focus,
.filter-bar input:focus,
.inline-add select:focus,
.inline-add input:focus {
  border-color: var(--amber);
  outline: none;
  box-shadow: 0 0 0 3px var(--amber-soft);
}

.form-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 0.9rem;
}

/* L19 — First / Middle / Last equal compact columns (not sparse Last far right) */
.form-row-names {
  grid-template-columns: 1fr 1fr 1fr;
  gap: 0.55rem;
  max-width: 36rem;
}
.form-row-names label {
  min-width: 0;
}
.form-row-names input.input-locked,
.form-body input.input-locked,
body.density-comfortable.density-silver-disk .form-body .form-row-names input.input-locked,
body.density-comfortable.density-silver-disk .form-body .form-row input.input-locked {
  background: transparent;
  border-color: transparent;
  box-shadow: none;
  padding-left: 0;
  cursor: default;
}
.form-row-names input.input-locked:focus,
.form-body input.input-locked:focus {
  border-color: transparent;
  box-shadow: none;
}
.display-derived {
  margin: 0.15rem 0 0.45rem;
  font-size: 0.78rem;
  color: var(--text-secondary);
  letter-spacing: 0.02em;
  font-weight: 450;
  text-transform: none;
}
.display-derived .muted {
  font-weight: 400;
  opacity: 0.85;
}
body.density-tight .form-row-names {
  gap: 0.35rem;
  max-width: 32rem;
}
body.density-tight .display-derived {
  margin: 0.05rem 0 0.3rem;
  font-size: 0.7rem;
}

/* L18 person visibility allowlists (Team edit) */
.visibility-user-list {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem 0.85rem;
  margin-top: 0.35rem;
}
.visibility-user-list label.checkbox-label {
  margin: 0;
}


.form-actions { margin-top: 0.6rem; }

.checkbox-label {
  flex-direction: row !important;
  align-items: center;
  gap: 0.5rem !important;
  text-transform: none !important;
  letter-spacing: normal !important;
  font-size: 0.95rem !important;
  color: var(--text) !important;
}

.view-tabs {
  display: flex;
  gap: 0.4rem;
  margin-bottom: 1.25rem;
}
.view-tabs a {
  padding: 0.5rem 1.1rem;
  border-radius: 999px;
  border: var(--hairline);
  color: var(--text-secondary);
  text-decoration: none;
  font-weight: 600;
  font-size: 0.9rem;
}
.view-tabs a:hover {
  border-color: var(--amber);
  color: var(--amber);
  text-decoration: none;
}
.view-tabs a.active {
  background: var(--amber);
  border-color: var(--amber);
  color: var(--bg-deep);
}

.filter-bar {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: 0.9rem;
  align-items: end;
  border-radius: var(--radius);
  padding: 1.15rem;
  margin-bottom: 1.25rem;
}
.filter-actions {
  display: flex;
  gap: 0.55rem;
  align-items: center;
}

.calendar-panel .panel-body { padding: 1.15rem; }
.calendar-nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 1.15rem;
}
.calendar-nav h2 { font-size: 1.15rem; color: var(--text); font-weight: 600; }
.calendar-grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 1px;
  background: var(--border);
  border: var(--hairline);
  border-radius: var(--radius);
  overflow: hidden;
}
.cal-dow {
  background: rgba(0, 0, 0, 0.4);
  padding: 0.5rem;
  text-align: center;
  font-size: 0.68rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--text-secondary);
  font-weight: 600;
}
.cal-cell {
  background: var(--panel);
  min-height: 92px;
  padding: 0.4rem;
}
.cal-cell.empty { background: rgba(0, 0, 0, 0.22); }
.cal-day {
  font-size: 0.75rem;
  color: var(--text-secondary);
  margin-bottom: 0.3rem;
  font-weight: 500;
}
.cal-jobs { display: flex; flex-direction: column; gap: 0.22rem; }
.cal-job {
  display: block;
  font-size: 0.7rem;
  padding: 0.22rem 0.4rem;
  border-radius: 5px;
  background: rgba(255, 255, 255, 0.06);
  color: var(--text);
  text-decoration: none;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  border: 1px solid transparent;
}
.cal-job:hover {
  background: var(--amber-soft);
  color: var(--amber);
  text-decoration: none;
  border-color: rgba(245, 166, 35, 0.25);
}
.cal-job.status-unassigned {
  background: rgba(245, 166, 35, 0.22);
  color: var(--amber);
  border-color: rgba(245, 166, 35, 0.35);
}
.cal-job.status-scheduled {
  background: rgba(148, 168, 190, 0.16);
  color: #b7c6d8;
  border-color: rgba(148, 168, 190, 0.32);
}
.cal-job.status-in_progress {
  background: rgba(56, 178, 172, 0.18);
  color: #7ed6cf;
  border-color: rgba(56, 178, 172, 0.32);
}
.cal-job.status-complete {
  background: rgba(120, 160, 130, 0.16);
  color: #a8c4ae;
  border-color: rgba(120, 160, 130, 0.28);
}
.cal-job.status-inquiry {
  background: rgba(192, 192, 192, 0.1);
  color: var(--text-secondary);
}
.cal-job.status-cancelled {
  background: rgba(180, 90, 100, 0.16);
  color: #e8a0a8;
  border-color: rgba(180, 90, 100, 0.3);
}

/* Status pills — amber ONLY for Unassigned (needs attention) */
.badge.unassigned {
  background: rgba(245, 166, 35, 0.22);
  color: var(--amber);
  border-color: rgba(245, 166, 35, 0.45);
  font-weight: 650;
}
.badge.scheduled {
  background: rgba(148, 168, 190, 0.16);
  color: #b7c6d8;
  border-color: rgba(148, 168, 190, 0.35);
}
.badge.notscheduled {
  background: rgba(70, 110, 150, 0.35);
  color: #d6e2ee;
  border-color: rgba(160, 196, 228, 0.55);
}
.badge.progress {
  background: rgba(56, 178, 172, 0.18);
  color: #7ed6cf;
  border-color: rgba(56, 178, 172, 0.35);
}
.badge.complete {
  background: rgba(120, 160, 130, 0.16);
  color: #a8c4ae;
  border-color: rgba(120, 160, 130, 0.3);
}
.badge.inquiry {
  background: rgba(192, 192, 192, 0.1);
  color: var(--text-secondary);
  border-color: rgba(192, 192, 192, 0.2);
  font-weight: 500;
}
.badge.cancelled {
  background: rgba(180, 90, 100, 0.16);
  color: #e8a0a8;
  border-color: rgba(180, 90, 100, 0.32);
}

/* Legacy aliases (non-status uses / older markup) */
.badge.bad { background: rgba(180, 90, 100, 0.16); color: #e8a0a8; border-color: rgba(180, 90, 100, 0.32); }
.badge.warn { background: rgba(56, 178, 172, 0.18); color: #7ed6cf; border-color: rgba(56, 178, 172, 0.35); }
.badge.info {
  background: rgba(148, 168, 190, 0.16);
  color: #b7c6d8;
  border-color: rgba(148, 168, 190, 0.35);
}

.board-latches {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  align-items: center;
  margin: -0.35rem 0 1rem;
}

.status-latch {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.32rem 0.75rem;
  border-radius: 999px;
  border: var(--hairline);
  color: var(--text-secondary);
  text-decoration: none;
  font-size: 0.82rem;
  font-weight: 550;
  background: rgba(255, 255, 255, 0.03);
}

.status-latch:hover {
  text-decoration: none;
  border-color: rgba(245, 166, 35, 0.35);
  color: var(--text);
}

.status-latch.active {
  border-color: rgba(245, 166, 35, 0.45);
  color: var(--amber);
  background: var(--amber-soft);
}

.status-latch-unassigned {
  font-weight: 650;
}

.status-latch-unassigned .latch-count,
.board-unassigned-badge {
  font-variant-numeric: tabular-nums;
}

.status-latch-inquiry {
  opacity: 0.72;
  font-weight: 500;
}

.status-latch-inquiry:hover,
.status-latch-inquiry.active {
  opacity: 1;
}

.status-latch-completed {
  font-weight: 550;
}
.status-latch-completed .latch-count {
  background: rgba(120, 160, 130, 0.22);
  color: #a8c4ae;
}
.status-latch-completed.active {
  border-color: rgba(120, 160, 130, 0.45);
  color: #a8c4ae;
  background: rgba(120, 160, 130, 0.12);
}

.status-latch-cancelled {
  font-weight: 550;
}
.status-latch-cancelled .latch-count {
  background: rgba(180, 90, 100, 0.22);
  color: #e8a0a8;
}
.status-latch-cancelled.active {
  border-color: rgba(180, 90, 100, 0.45);
  color: #e8a0a8;
  background: rgba(180, 90, 100, 0.12);
}

.job-board-panel-cancelled > .panel-header h2 {
  color: #e0b4b8;
}

.paid-chip {
  display: inline-block;
  font-size: 0.7rem;
  padding: 0.14rem 0.5rem;
  border-radius: 999px;
  border: var(--hairline);
  font-weight: 550;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.paid-chip-yes {
  background: rgba(120, 160, 130, 0.16);
  color: #a8c4ae;
  border-color: rgba(120, 160, 130, 0.3);
}
.paid-chip-no {
  background: rgba(192, 192, 192, 0.08);
  color: var(--text-secondary);
  border-color: rgba(192, 192, 192, 0.2);
  font-weight: 500;
}

.job-board-panel-completed > .panel-header h2 {
  color: #c5d4c8;
}

.latch-count {
  display: inline-block;
  min-width: 1.1rem;
  padding: 0.05rem 0.4rem;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.08);
  font-size: 0.72rem;
  font-weight: 650;
}

.status-latch-unassigned .latch-count {
  background: rgba(245, 166, 35, 0.28);
  color: var(--amber);
}

.status-latch-board .latch-count {
  background: rgba(122, 155, 184, 0.22);
  color: #9bb4c8;
}

table tbody tr.row-unassigned td {
  background: rgba(245, 166, 35, 0.06);
}

body.density-tight .board-latches {
  margin-bottom: 0.75rem;
}


.invoice-header {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 1.15rem;
  margin-bottom: 0.75rem;
}
.eyebrow {
  font-size: 0.72rem;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--text-secondary);
  margin-bottom: 0.3rem;
  font-weight: 600;
}
.invoice-meta {
  text-align: right;
  font-size: 0.9rem;
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
  color: var(--text-secondary);
}
.invoice-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 1.15rem;
}
.invoice-block {
  border-radius: var(--radius);
  padding: 1.15rem 1.25rem;
}
.invoice-block h3 {
  font-size: 0.72rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--text-secondary);
  margin-bottom: 0.55rem;
  font-weight: 600;
}
.invoice-strong {
  font-weight: 650;
  color: var(--text);
  margin-bottom: 0.3rem;
}

.inline-add {
  display: flex;
  flex-wrap: wrap;
  gap: 0.85rem;
  align-items: end;
}
.inline-form { display: inline; }
tfoot td {
  border-bottom: none;
  background: rgba(0, 0, 0, 0.22);
  font-weight: 600;
}

@media (max-width: 700px) {
  .cal-cell { min-height: 68px; }
  .cal-job { font-size: 0.65rem; }
  .invoice-meta { text-align: left; }
  main { padding: 1.5rem 1.15rem 2.5rem; }
  .site-header { padding: 0.9rem 1.15rem; }
}

/* --- Form sections (logical groups + scanable bands) --- */
.form-body-sections {
  gap: 0.85rem;
}

.form-section {
  border-radius: var(--radius-sm);
  padding: 0.95rem 1.05rem;
  border: 1px solid rgba(255, 255, 255, 0.04);
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

/* display:flex on .form-section would otherwise show a section that has the hidden attribute. */
[hidden] {
  display: none !important;
}

.form-section-title {
  font-size: 0.68rem;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--text-secondary);
  font-weight: 650;
  margin: 0;
}

/* Calm Silver Disk section tints — never amber except primary/active elsewhere */
.form-section--identity {
  background: rgba(210, 210, 215, 0.045);
  border-color: rgba(210, 210, 215, 0.08);
}
.form-section--parties {
  background: rgba(130, 155, 185, 0.07);
  border-color: rgba(130, 155, 185, 0.12);
}
.form-section--assignment {
  background: rgba(180, 165, 130, 0.06);
  border-color: rgba(180, 165, 130, 0.11);
}
.form-section--commercial {
  background: rgba(150, 140, 170, 0.07);
  border-color: rgba(150, 140, 170, 0.12);
}
.form-section--contact {
  background: rgba(140, 170, 155, 0.06);
  border-color: rgba(140, 170, 155, 0.11);
}
.form-section--location {
  background: rgba(160, 160, 150, 0.055);
  border-color: rgba(160, 160, 150, 0.1);
}
.form-section--capabilities {
  background: rgba(130, 155, 185, 0.07);
  border-color: rgba(130, 155, 185, 0.12);
}

/* Panel-level band when classed as a section tint */
.panel.form-section--assignment,
.panel.form-section--parties,
.panel.form-section--commercial,
.panel.form-section--identity,
.panel.form-section--contact,
.panel.form-section--location {
  background: var(--panel-gradient);
}
.panel.form-section--assignment .panel-header { background: rgba(180, 165, 130, 0.1); }
.panel.form-section--parties .panel-header { background: rgba(130, 155, 185, 0.1); }
.panel.form-section--commercial .panel-header { background: rgba(150, 140, 170, 0.1); }

/* Header density toggle */
.header-tools {
  display: flex;
  align-items: center;
  gap: 0.85rem;
  margin-left: auto;
}
.density-toggle {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  margin: 0;
}
.density-toggle .density-label {
  font-size: 0.68rem;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--text-secondary);
  margin-right: 0.3rem;
  font-weight: 550;
}
.density-toggle button {
  background: transparent;
  border: var(--hairline);
  color: var(--text-secondary);
  font-size: 0.74rem;
  padding: 0.25rem 0.55rem;
  border-radius: 6px;
  cursor: pointer;
}
.density-toggle button.active {
  background: var(--amber-soft);
  color: var(--amber);
  border-color: rgba(245, 166, 35, 0.4);
  font-weight: 600;
}
.density-toggle button:hover {
  border-color: var(--amber);
  color: var(--amber);
}

/* ============================================================
   Density: Comfortable (default) stays airy.
   Tight = command-center compact — not Comfortable-minus-padding.
   ============================================================ */

body.density-comfortable {
  line-height: 1.55;
}

/* Comfortable: sections remain readable bands with room to breathe */
body.density-comfortable .form-section {
  padding: 1.05rem 1.15rem;
  gap: 0.85rem;
}
body.density-comfortable .form-body-sections {
  gap: 1rem;
}

/* --- Tight remake --- */
body.density-tight {
  line-height: 1.35;
}

body.density-tight main {
  padding: 0.55rem 0.85rem 1.15rem;
}

body.density-tight .site-header {
  padding: 0.4rem 0.85rem;
  gap: 0.65rem;
}

body.density-tight .admin-banner {
  padding: 0.15rem 0.65rem;
  font-size: 0.64rem;
  letter-spacing: 0.08em;
}

body.density-tight .brand .console {
  font-size: 1.1rem;
}

body.density-tight .brand .product {
  font-size: 0.62rem;
}

body.density-tight nav a {
  padding: 0.28rem 0.55rem;
  font-size: 0.8rem;
}

body.density-tight h1 {
  margin-bottom: 0.1rem;
  font-size: 1.28rem;
  letter-spacing: -0.02em;
}

body.density-tight .subtitle {
  margin-bottom: 0.45rem;
  font-size: 0.84rem;
}

body.density-tight .page-actions {
  margin-bottom: 0.45rem;
  gap: 0.4rem;
}

body.density-tight .btn,
body.density-tight button.btn {
  padding: 0.35rem 0.7rem;
  font-size: 0.8rem;
}

body.density-tight .cards {
  gap: 0.45rem;
  margin-bottom: 0.75rem;
}

body.density-tight .card {
  padding: 0.55rem 0.7rem;
}

body.density-tight .panel {
  margin-bottom: 0.55rem;
  border-radius: var(--radius-sm);
}

body.density-tight .panel-header {
  padding: 0.4rem 0.65rem;
}

body.density-tight .panel-header h2 {
  font-size: 0.88rem;
}

body.density-tight .panel-body,
body.density-tight .form-body {
  padding: 0.45rem 0.55rem;
  gap: 0.45rem;
}

body.density-tight .form-body-sections {
  gap: 0.4rem;
  padding: 0.4rem 0.45rem;
}

body.density-tight .form-section {
  padding: 0.45rem 0.55rem;
  gap: 0.4rem;
  border-radius: 6px;
}

body.density-tight .form-section-title {
  font-size: 0.62rem;
  letter-spacing: 0.1em;
  margin-bottom: -0.1rem;
}

body.density-tight .form-grid {
  gap: 0.5rem;
}

body.density-tight .form-row {
  gap: 0.4rem;
}

body.density-tight .form-body label,
body.density-tight .filter-bar label,
body.density-tight .inline-add label {
  gap: 0.18rem;
  font-size: 0.66rem;
  margin-bottom: 0;
}

body.density-tight .form-body input,
body.density-tight .form-body select,
body.density-tight .form-body textarea,
body.density-tight .filter-bar select,
body.density-tight .inline-add select,
body.density-tight .inline-add input {
  padding: 0.28rem 0.45rem;
  font-size: 0.84rem;
  border-radius: 6px;
}

body.density-tight .checkbox-label {
  font-size: 0.84rem !important;
  gap: 0.35rem !important;
}

body.density-tight .specialty-fieldset {
  padding: 0.45rem 0.55rem;
  margin: 0;
}

body.density-tight .specialty-fieldset legend {
  font-size: 0.66rem;
  padding: 0 0.25rem;
}

body.density-tight .checkbox-group {
  gap: 0.25rem 0.65rem;
}

body.density-tight .form-actions {
  margin-top: 0.25rem;
}

/* Dense tables — command-center ready */
body.density-tight table th,
body.density-tight table td {
  padding: 0.28rem 0.5rem;
}

body.density-tight table td {
  font-size: 0.82rem;
}

body.density-tight table th {
  font-size: 0.62rem;
  letter-spacing: 0.08em;
  padding: 0.32rem 0.5rem;
  border-top-width: 1px;
}

body.density-tight .job-board-table th,
body.density-tight .job-board-table td,
body.density-tight .density-table th,
body.density-tight .density-table td {
  padding: 0.2rem 0.4rem;
}

body.density-tight .job-board-table td,
body.density-tight .density-table td {
  font-size: 0.78rem;
  line-height: 1.25;
}

body.density-tight .job-board-table th,
body.density-tight .density-table th {
  font-size: 0.58rem;
  padding: 0.25rem 0.4rem;
}

body.density-tight .assign-link {
  font-size: 0.7rem;
  margin-left: 0.25rem;
  opacity: 0.75;
}

body.density-tight .badge {
  font-size: 0.62rem;
  padding: 0.1rem 0.4rem;
}

body.density-tight .filter-bar {
  gap: 0.35rem;
  padding: 0.4rem 0.55rem;
  margin-bottom: 0.5rem;
}

body.density-tight .view-tabs {
  margin-bottom: 0.45rem;
  gap: 0.25rem;
}

body.density-tight .board-latches {
  margin: -0.15rem 0 0.5rem;
  gap: 0.3rem;
}

body.density-tight .status-latch {
  padding: 0.2rem 0.55rem;
  font-size: 0.74rem;
}

body.density-tight .latch-count {
  font-size: 0.64rem;
  padding: 0.02rem 0.3rem;
  min-width: 0.95rem;
}

body.density-tight .cal-cell {
  min-height: 3.6rem;
  padding: 0.18rem;
}

body.density-tight .cal-job {
  padding: 0.05rem 0.2rem;
  font-size: 0.64rem;
}

body.density-tight .invoice-header {
  margin-bottom: 0.45rem;
  gap: 0.65rem;
}

body.density-tight .invoice-grid {
  gap: 0.5rem;
}

body.density-tight .invoice-block {
  padding: 0.5rem 0.65rem;
}

body.density-tight .invoice-block h3 {
  margin-bottom: 0.35rem;
  font-size: 0.64rem;
}

body.density-tight .eyebrow {
  margin-bottom: 0.15rem;
  font-size: 0.64rem;
}

body.density-tight .tech-assign-row {
  gap: 0.45rem;
}

body.density-tight .tech-assign-hint {
  margin-top: 0.25rem;
  font-size: 0.78rem;
}

body.density-tight .notes-panel {
  margin-top: 0.65rem !important;
}

body.density-tight .note-entry {
  padding: 0.45rem 0.55rem;
  margin-bottom: 0.35rem;
}

body.density-tight .flash.ok,
body.density-tight .error {
  padding: 0.5rem 0.7rem;
  margin-bottom: 0.55rem;
  font-size: 0.84rem;
}

body.density-tight .density-toggle button {
  padding: 0.18rem 0.45rem;
  font-size: 0.68rem;
}

body.density-tight footer {
  padding: 0.65rem 0.85rem;
  font-size: 0.72rem;
}

/* --- landing / desire page --- */
.landing-body {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  background: var(--bg-deep);
}

.landing-top {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1.25rem 1.75rem;
  background: var(--bg);
  border-bottom: var(--hairline);
}

.landing-nav a {
  display: inline-block;
  padding: 0.55rem 1.15rem;
  border-radius: 999px;
  border: var(--hairline);
  color: var(--text);
  text-decoration: none;
  font-weight: 600;
  font-size: 0.9rem;
}
.landing-nav a:hover {
  border-color: var(--amber);
  color: var(--amber);
  text-decoration: none;
}

.landing-hero {
  max-width: 820px;
  margin: 0 auto;
  padding: 3.75rem 1.75rem 2.5rem;
  text-align: left;
}
.landing-hero h1 {
  font-size: clamp(1.85rem, 4.2vw, 2.5rem);
  line-height: 1.18;
  margin: 0.55rem 0 1.15rem;
  letter-spacing: -0.03em;
}
.landing-hero .lead {
  color: var(--text-secondary);
  font-size: 1.08rem;
  max-width: 40rem;
  margin-bottom: 1.75rem;
  line-height: 1.6;
}
.landing-cta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 1.15rem;
}
.landing-cta-note {
  font-size: 0.9rem;
}

.landing-features,
.landing-roadmap {
  max-width: 1100px;
  margin: 0 auto;
  padding: 1.25rem 1.75rem 2.25rem;
}
.landing-features h2,
.landing-roadmap h2 {
  font-size: 1.25rem;
  margin-bottom: 0.9rem;
  color: var(--text);
  font-weight: 600;
  letter-spacing: -0.015em;
}
.landing-cards .card p {
  color: var(--text-secondary);
  font-size: 0.92rem;
  margin-top: 0.4rem;
  line-height: 1.5;
}

.roadmap-list {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 0.95rem;
  border-radius: var(--radius);
  padding: 1.35rem 1.4rem;
}
.roadmap-list li {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.5rem 0.7rem;
  line-height: 1.5;
}

.landing-footer {
  max-width: 1100px;
  margin: auto auto 0;
  padding: 1.75rem 1.75rem 2.75rem;
  color: var(--text-secondary);
  font-size: 0.8rem;
}
.landing-footer a {
  color: var(--text-secondary);
}
.landing-footer a:hover {
  color: var(--amber);
  text-decoration: none;
}

/* --- changelog --- */
.changelog-body {
  padding: 1.4rem 1.5rem 2rem;
}
.changelog-body h1 {
  font-size: 1.4rem;
  margin-bottom: 0.9rem;
}
.changelog-body h2 {
  font-size: 1.12rem;
  color: var(--text);
  margin: 1.65rem 0 0.7rem;
  padding-top: 0.9rem;
  border-top: var(--hairline);
  font-weight: 650;
  letter-spacing: -0.015em;
}
.changelog-body h2:first-of-type {
  border-top: none;
  padding-top: 0;
}
.changelog-body h3 {
  font-size: 0.88rem;
  color: var(--text-secondary);
  margin: 0.95rem 0 0.45rem;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  font-weight: 600;
}
.changelog-body p {
  color: var(--text-secondary);
  margin-bottom: 0.7rem;
  font-size: 0.95rem;
}
.changelog-body ul {
  margin: 0.4rem 0 0.95rem 1.2rem;
  color: var(--text);
}
.changelog-body li {
  margin-bottom: 0.4rem;
  font-size: 0.95rem;
}
.changelog-body a { color: var(--amber); }

/* --- team filters / specialty chips --- */
.filter-bar input[type="search"],
.filter-bar input[type="text"] {
  background: var(--bg-deep);
  border: var(--hairline);
  border-radius: var(--radius-sm);
  color: var(--text);
  padding: 0.6rem 0.75rem;
  font: inherit;
  text-transform: none;
  letter-spacing: normal;
  font-size: 0.95rem;
}
.filter-bar .filter-check {
  flex-direction: row;
  align-items: center;
  text-transform: none;
  letter-spacing: normal;
  font-size: 0.9rem;
  gap: 0.45rem;
  padding-bottom: 0.35rem;
}
.chip {
  display: inline-block;
  padding: 0.18rem 0.55rem;
  margin: 0.1rem 0.15rem 0.1rem 0;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.06);
  color: var(--text-secondary);
  border: var(--hairline);
  font-size: 0.74rem;
  letter-spacing: 0.02em;
  white-space: nowrap;
}
.chips-cell { line-height: 1.65; }
.specialty-fieldset {
  border-radius: var(--radius);
  padding: 0.85rem 1.1rem 0.6rem;
  margin: 0.55rem 0 0.85rem;
}
.specialty-fieldset legend {
  padding: 0 0.4rem;
  color: var(--text-secondary);
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  font-weight: 550;
}
.checkbox-group {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem 1.1rem;
  margin-top: 0.4rem;
}

/* --- append-only notes timeline --- */
.notes-panel .notes-rule {
  margin: 0 0 0.85rem;
  font-size: 0.85rem;
}
.note-add-form {
  margin-bottom: 1.35rem;
  padding-bottom: 1.15rem;
  border-bottom: var(--hairline);
}
.notes-timeline {
  display: flex;
  flex-direction: column;
  gap: 0.9rem;
}
.note-entry {
  border-radius: var(--radius);
  padding: 0.85rem 1.1rem;
}
.note-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1rem;
  margin-bottom: 0.45rem;
  font-size: 0.8rem;
  color: var(--text-secondary);
}
.note-meta time { color: var(--text-secondary); }
.note-author {
  color: var(--text);
  font-weight: 600;
}
.note-body {
  color: var(--text);
  white-space: pre-wrap;
  word-break: break-word;
  font-size: 0.95rem;
}
.note-empty { margin: 0.25rem 0 0; }

/* Legacy alias tokens for any residual references */
:root {
  --charcoal: var(--bg);
  --charcoal-mid: var(--panel);
  --charcoal-light: var(--border);
  --silver: var(--text-secondary);
  --silver-light: var(--text);
}


/* Job board assign affordance */
td.tech-col .assign-link {
  margin-left: 0.35rem;
  font-size: 0.8em;
  white-space: nowrap;
  opacity: 0.75;
  background: none;
  border: none;
  padding: 0;
  font: inherit;
  color: inherit;
  cursor: pointer;
  text-decoration: underline;
  text-underline-offset: 2px;
}
td.tech-col .assign-link:hover,
td.tech-col .assign-link[aria-expanded="true"] {
  opacity: 1;
}


/* --- 2h: prominent tech assign on job detail --- */
.tech-assign-panel {
  margin-top: 1.1rem;
  border: 1px solid rgba(192, 192, 192, 0.22);
  box-shadow: 0 0 0 1px rgba(245, 166, 35, 0.08);
}
.tech-assign-panel .panel-header h2 {
  letter-spacing: 0.04em;
}
.tech-assign-form {
  padding-top: 0.35rem;
}
.tech-assign-row {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 0.85rem 1rem;
}
.tech-assign-label {
  flex: 1 1 16rem;
  min-width: 12rem;
}
.tech-assign-select {
  font-size: 1.05rem;
  min-height: 2.6rem;
}
.tech-assign-hint {
  margin: 0.65rem 0 0;
  font-size: 0.85rem;
}


/* --- 2h-i: Assign popover (Silver Disk + Tight-friendly) --- */
button.assign-link.assign-trigger {
  background: none;
  border: none;
  padding: 0;
  margin-left: 0.35rem;
  font: inherit;
  font-size: 0.8em;
  color: inherit;
  cursor: pointer;
  white-space: nowrap;
  opacity: 0.75;
  text-decoration: underline;
  text-underline-offset: 2px;
}
button.assign-link.assign-trigger:hover,
button.assign-link.assign-trigger[aria-expanded="true"] {
  opacity: 1;
}

.assign-popover {
  position: fixed;
  z-index: 1200;
  max-height: min(22rem, 70vh);
  display: flex;
  flex-direction: column;
  background: var(--panel, #2a2a2e);
  color: var(--text, #e8e8ea);
  border: 1px solid rgba(192, 192, 192, 0.28);
  border-radius: 6px;
  box-shadow:
    0 0 0 1px rgba(0, 0, 0, 0.35),
    0 12px 28px rgba(0, 0, 0, 0.45);
  overflow: hidden;
}
.assign-popover[hidden] {
  display: none !important;
}
.assign-popover-chrome {
  display: flex;
  flex-direction: column;
  min-height: 0;
  max-height: inherit;
}
.assign-popover-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  padding: 0.45rem 0.55rem;
  background: rgba(180, 165, 130, 0.1);
  border-bottom: 1px solid rgba(192, 192, 192, 0.18);
}
.assign-popover-title {
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--text-secondary, #b8b8bc);
}
.assign-popover-close {
  background: transparent;
  border: none;
  color: var(--text-secondary, #b8b8bc);
  font-size: 1.15rem;
  line-height: 1;
  cursor: pointer;
  padding: 0 0.2rem;
}
.assign-popover-close:hover {
  color: var(--amber, #f5a623);
}
.assign-popover-search {
  margin: 0.4rem 0.5rem 0;
  padding: 0.35rem 0.45rem;
  font-size: 0.85rem;
  border-radius: 4px;
  border: 1px solid rgba(192, 192, 192, 0.25);
  background: rgba(0, 0, 0, 0.25);
  color: var(--text, #e8e8ea);
  min-height: 1.85rem;
}
.assign-popover-search:focus {
  outline: none;
  border-color: rgba(245, 166, 35, 0.55);
  box-shadow: 0 0 0 1px rgba(245, 166, 35, 0.25);
}
.assign-popover-hint {
  margin: 0.3rem 0.55rem 0.15rem;
  font-size: 0.72rem;
  line-height: 1.3;
}
.assign-popover-list {
  list-style: none;
  margin: 0;
  padding: 0.25rem 0 0.4rem;
  overflow-y: auto;
  min-height: 0;
  flex: 1 1 auto;
}
.assign-popover-list li[role="option"] {
  display: block;
  width: 100%;
  padding: 0.4rem 0.65rem;
  cursor: pointer;
  font-size: 0.86rem;
  line-height: 1.35;
  border-left: 2px solid transparent;
}
.assign-popover-list li[role="option"]:hover {
  background: rgba(245, 166, 35, 0.1);
}
.assign-popover-list li[role="option"].is-selected {
  border-left-color: var(--amber, #f5a623);
  background: rgba(245, 166, 35, 0.12);
}
.assign-popover-list.is-busy {
  opacity: 0.55;
  pointer-events: none;
}
.assign-row-main {
  display: block;
}
.assign-empty {
  padding: 0.55rem 0.65rem;
  font-size: 0.85rem;
}

.tech-assign-current {
  flex: 1 1 12rem;
  min-width: 8rem;
}
.tech-assign-label-text {
  display: block;
  font-size: 0.78rem;
  margin-bottom: 0.15rem;
}
.tech-assign-name {
  font-size: 1.05rem;
  font-weight: 600;
}

body.density-tight .assign-popover-head {
  padding: 0.3rem 0.45rem;
}
body.density-tight .assign-popover-search {
  margin: 0.3rem 0.4rem 0;
  padding: 0.25rem 0.35rem;
  font-size: 0.8rem;
  min-height: 1.55rem;
}
body.density-tight .assign-popover-list li[role="option"] {
  padding: 0.28rem 0.5rem;
  font-size: 0.8rem;
}
body.density-tight .assign-popover-hint {
  margin: 0.2rem 0.45rem 0.1rem;
  font-size: 0.68rem;
}
body.density-tight .tech-assign-name {
  font-size: 0.95rem;
}
body.density-tight button.assign-link.assign-trigger {
  font-size: 0.75em;
}

/* --- 2i Nested job board (command center) --- */
.filter-bar .group-by-label,
.filter-bar .nest-by-label {
  min-width: 9.5rem;
}
.filter-bar .group-by-label select,
.filter-bar .nest-by-label select {
  font-weight: 600;
  border-color: rgba(245, 166, 35, 0.28);
  background: rgba(245, 166, 35, 0.06);
}
.filter-bar .nest-by-label select:disabled {
  opacity: 0.45;
  font-weight: 500;
  border-color: var(--border);
  background: rgba(255, 255, 255, 0.02);
}

.job-board-panel-nested .panel-header,
.job-board-panel.job-board-panel-nested .panel-header {
  border-bottom: 1px solid rgba(245, 166, 35, 0.22);
}

.job-board-body {
  padding: 0.65rem 0.75rem 0.85rem;
}
.job-board-panel-nested .job-board-body {
  padding: 0.55rem 0.65rem 0.75rem;
}

.board-nest {
  display: flex;
  flex-direction: column;
  gap: 0.85rem;
}

.board-section {
  border-radius: var(--radius);
  border: var(--hairline);
  background: rgba(255, 255, 255, 0.015);
  overflow: hidden;
  box-shadow: var(--panel-inset);
}

.board-section-l1 {
  border-color: rgba(192, 192, 192, 0.32);
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.055) 0%, transparent 42%),
    rgba(36, 38, 42, 0.72);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04);
}

.board-section-l2 {
  margin: 0.45rem 0.55rem 0.55rem;
  border-radius: var(--radius-sm);
  border-color: rgba(130, 155, 185, 0.22);
  background: rgba(12, 14, 18, 0.72);
  box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.25);
}

.board-section-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  padding: 0.7rem 0.95rem;
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
  background: linear-gradient(
    100deg,
    rgba(210, 210, 215, 0.08) 0%,
    rgba(36, 36, 36, 0.92) 55%,
    rgba(26, 26, 26, 0.98) 100%
  );
}

.board-section-l1 > .board-section-header {
  padding: 0.85rem 1.05rem;
  border-left: 3px solid rgba(192, 192, 192, 0.45);
}

.board-section-l2 > .board-section-header {
  padding: 0.5rem 0.75rem;
  border-left: 2px solid rgba(130, 155, 185, 0.4);
  background: linear-gradient(
    100deg,
    rgba(130, 155, 185, 0.1) 0%,
    rgba(28, 28, 28, 0.9) 60%
  );
}

.board-section-title-block {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  min-width: 0;
}

.board-section-eyebrow {
  font-size: 0.62rem;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--text-secondary);
  font-weight: 650;
}

.board-section-eyebrow-nest {
  letter-spacing: 0.12em;
  opacity: 0.9;
}

.board-section-title {
  margin: 0;
  font-size: 1.12rem;
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--text);
  line-height: 1.2;
}

.board-section-l2 .board-section-title {
  font-size: 0.95rem;
  font-weight: 650;
}

.board-section-meta {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  flex-shrink: 0;
}

.board-section-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 1.85rem;
  padding: 0.18rem 0.55rem;
  border-radius: 999px;
  font-size: 0.78rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  color: var(--text);
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.08);
}

.board-section-count-loud {
  background: rgba(245, 166, 35, 0.28);
  color: var(--amber);
  border-color: rgba(245, 166, 35, 0.4);
}

.board-section-un-chip {
  font-size: 0.7rem;
  font-weight: 650;
  color: var(--amber);
  background: rgba(245, 166, 35, 0.14);
  border: 1px solid rgba(245, 166, 35, 0.28);
  border-radius: 999px;
  padding: 0.12rem 0.5rem;
  font-variant-numeric: tabular-nums;
}

.board-section-body {
  padding: 0;
}

.board-section-body .job-board-table {
  margin: 0;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  background: transparent;
}

.board-section-l1 > .board-section-body > .job-board-table thead th {
  background: rgba(0, 0, 0, 0.25);
}

/* Kind accents */
.board-section-kind-state > .board-section-header {
  border-left-color: rgba(160, 160, 150, 0.65);
}
.board-section-kind-tech > .board-section-header {
  border-left-color: rgba(130, 155, 185, 0.7);
}
.board-section-kind-status > .board-section-header {
  border-left-color: rgba(150, 140, 170, 0.7);
}
.board-section-kind-line > .board-section-header {
  border-left-color: rgba(140, 170, 155, 0.7);
}
.board-section-kind-empty > .board-section-header {
  border-left-color: rgba(120, 120, 120, 0.45);
}
.board-section-kind-empty .board-section-title {
  color: var(--text-secondary);
  font-weight: 600;
}

/* Unassigned sections stay LOUD */
.board-section-loud > .board-section-header,
.board-section-kind-unassigned > .board-section-header {
  border-left-color: var(--amber);
  background: linear-gradient(
    100deg,
    rgba(245, 166, 35, 0.18) 0%,
    rgba(40, 32, 18, 0.95) 48%,
    rgba(26, 26, 26, 0.98) 100%
  );
  box-shadow: inset 0 1px 0 rgba(245, 166, 35, 0.12);
}
.board-section-loud .board-section-title,
.board-section-kind-unassigned .board-section-title {
  color: var(--amber);
}
.board-section-loud .board-section-eyebrow,
.board-section-kind-unassigned .board-section-eyebrow {
  color: rgba(245, 166, 35, 0.85);
}

/* Payables unpaid buckets — attention without stealing Unassigned amber monopoly */
.board-section-kind-unpaid > .board-section-header {
  border-left-color: rgba(232, 168, 96, 0.85);
  background: linear-gradient(
    100deg,
    rgba(232, 168, 96, 0.12) 0%,
    rgba(36, 28, 20, 0.95) 48%,
    rgba(26, 26, 26, 0.98) 100%
  );
}
.board-section-kind-unpaid .board-section-title {
  color: rgba(232, 168, 96, 0.95);
}
.board-section-kind-unpaid .board-section-eyebrow {
  color: rgba(232, 168, 96, 0.8);
}

body.density-comfortable .board-nest {
  gap: 1.05rem;
}
body.density-comfortable .board-section-l1 > .board-section-header {
  padding: 0.95rem 1.15rem;
}
body.density-comfortable .board-section-title {
  font-size: 1.2rem;
}
body.density-comfortable .board-section-l2 {
  margin: 0.55rem 0.7rem 0.7rem;
}
body.density-comfortable .job-board-body {
  padding: 0.85rem 1rem 1.05rem;
}

body.density-tight .board-nest {
  gap: 0.45rem;
}
body.density-tight .board-section-l1 > .board-section-header {
  padding: 0.45rem 0.65rem;
  border-left-width: 2px;
}
body.density-tight .board-section-l2 {
  margin: 0.25rem 0.35rem 0.35rem;
}
body.density-tight .board-section-l2 > .board-section-header {
  padding: 0.32rem 0.5rem;
}
body.density-tight .board-section-title {
  font-size: 0.92rem;
}
body.density-tight .board-section-l2 .board-section-title {
  font-size: 0.82rem;
}
body.density-tight .board-section-eyebrow {
  font-size: 0.55rem;
  letter-spacing: 0.1em;
}
body.density-tight .board-section-count {
  min-width: 1.45rem;
  padding: 0.08rem 0.4rem;
  font-size: 0.68rem;
}
body.density-tight .board-section-un-chip {
  font-size: 0.62rem;
  padding: 0.06rem 0.35rem;
}
body.density-tight .job-board-body {
  padding: 0.35rem 0.4rem 0.45rem;
}
body.density-tight .filter-bar .group-by-label,
body.density-tight .filter-bar .nest-by-label {
  min-width: 8rem;
}

/* --- 2i-i / 2i-ii Command bar: nest chips + Narrow latch --- */
.board-command {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
  margin: -0.25rem 0 1rem;
  padding: 0.65rem 0.75rem 0.7rem;
  border-radius: var(--radius);
  border: var(--hairline);
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.04) 0%, transparent 55%),
    rgba(28, 28, 28, 0.72);
  box-shadow: var(--panel-inset);
  border-color: rgba(192, 192, 192, 0.18);
}
.board-command-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.45rem 0.65rem;
}
.board-command-label {
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(192, 192, 192, 0.75);
  margin-right: 0.15rem;
}
.board-command-nest {
  padding-bottom: 0.45rem;
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}
.board-command-lenses {
  gap: 0.4rem;
}
.board-latches-inline {
  margin: 0;
  display: inline-flex;
  flex-wrap: wrap;
  gap: 0.4rem;
}

.nest-path {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.3rem;
  flex: 1 1 auto;
  min-width: 12rem;
}
.nest-path-empty {
  font-size: 0.8rem;
  margin-right: 0.25rem;
}
.nest-path-sep {
  color: rgba(245, 166, 35, 0.55);
  font-weight: 700;
  font-size: 0.85rem;
  padding: 0 0.1rem;
}
.nest-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.15rem;
  padding: 0.22rem 0.35rem 0.22rem 0.28rem;
  border-radius: 999px;
  border: 1px solid rgba(245, 166, 35, 0.32);
  background: rgba(245, 166, 35, 0.1);
  font-size: 0.8rem;
  font-weight: 650;
  color: var(--text);
}
.nest-chip-label {
  padding: 0 0.2rem;
  white-space: nowrap;
}
.nest-chip-x,
.nest-chip-move {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.15rem;
  height: 1.15rem;
  border-radius: 999px;
  text-decoration: none;
  color: rgba(220, 220, 220, 0.75);
  font-size: 0.85rem;
  line-height: 1;
}
.nest-chip-x:hover,
.nest-chip-move:hover {
  background: rgba(255, 255, 255, 0.1);
  color: var(--amber);
  text-decoration: none;
}
.nest-chip-move-disabled {
  opacity: 0.25;
  pointer-events: none;
}
.nest-add {
  position: relative;
  display: inline-block;
}
.nest-add-btn {
  list-style: none;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.7rem;
  height: 1.7rem;
  border-radius: 999px;
  border: 1px dashed rgba(245, 166, 35, 0.45);
  background: rgba(245, 166, 35, 0.06);
  color: var(--amber);
  font-size: 1.05rem;
  font-weight: 700;
  line-height: 1;
}
.nest-add-btn::-webkit-details-marker { display: none; }
.nest-add-btn::marker { content: ''; }
.nest-add[open] .nest-add-btn {
  border-style: solid;
  background: rgba(245, 166, 35, 0.16);
}
.nest-add-menu {
  position: absolute;
  z-index: 40;
  top: calc(100% + 0.3rem);
  left: 0;
  min-width: 9.5rem;
  padding: 0.35rem;
  border-radius: var(--radius-sm);
  border: var(--hairline);
  background: rgba(22, 22, 22, 0.98);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.45);
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
}
.nest-add-option {
  padding: 0.35rem 0.55rem;
  border-radius: 6px;
  color: var(--text);
  text-decoration: none;
  font-size: 0.82rem;
  font-weight: 550;
}
.nest-add-option:hover {
  background: rgba(245, 166, 35, 0.12);
  color: var(--amber);
  text-decoration: none;
}

.nest-presets {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 0.3rem;
  margin-left: auto;
}
.nest-preset {
  font-size: 0.72rem;
  font-weight: 600;
  padding: 0.22rem 0.55rem;
  border-radius: 999px;
  border: 1px solid rgba(160, 175, 195, 0.28);
  color: rgba(180, 190, 205, 0.9);
  text-decoration: none;
  background: rgba(255, 255, 255, 0.03);
  white-space: nowrap;
}
.nest-preset:hover {
  border-color: rgba(245, 166, 35, 0.4);
  color: var(--text);
  text-decoration: none;
}
.nest-preset.active {
  border-color: rgba(245, 166, 35, 0.5);
  color: var(--amber);
  background: rgba(245, 166, 35, 0.1);
}

.narrow-latch {
  position: relative;
  margin-left: auto;
}
.narrow-latch-summary {
  list-style: none;
  cursor: pointer;
  user-select: none;
}
.narrow-latch-summary::-webkit-details-marker { display: none; }
.narrow-latch-summary::marker { content: ''; }
.narrow-latch[open] > .narrow-latch-summary {
  border-color: rgba(148, 168, 190, 0.45);
  color: #b7c6d8;
  background: rgba(148, 168, 190, 0.12);
}
.narrow-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 1.15rem;
  padding: 0 0.28rem;
  border-radius: 999px;
  font-size: 0.68rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  background: rgba(148, 168, 190, 0.28);
  color: #c5d2e2;
}
.narrow-panel {
  position: absolute;
  z-index: 35;
  right: 0;
  top: calc(100% + 0.4rem);
  width: min(52rem, calc(100vw - 2.5rem));
  padding: 0.65rem 0.75rem 0.75rem;
  border-radius: var(--radius);
  border: var(--hairline);
  background: rgba(20, 20, 20, 0.98);
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.5);
}
.narrow-hint {
  margin: 0 0 0.45rem;
  font-size: 0.75rem;
}
.narrow-hint-dedupe {
  margin-top: 0.5rem;
}
.filter-bar-narrow {
  margin: 0;
  padding: 0;
  border: none;
  background: transparent;
  box-shadow: none;
}

.board-section-twist {
  flex: 0 0 auto;
  width: 1.4rem;
  height: 1.4rem;
  border: none;
  border-radius: 6px;
  background: rgba(255, 255, 255, 0.04);
  color: rgba(200, 200, 205, 0.7);
  font-size: 0.75rem;
  line-height: 1;
  cursor: pointer;
  transition: transform 0.15s ease;
}
.board-section-header {
  cursor: pointer;
}
.board-section.is-collapsed > .board-section-header .board-section-twist {
  transform: rotate(-90deg);
}
.board-section.is-collapsed > .board-section-body {
  display: none;
}

/* First-nest: collapse FAR LEFT, drag immediately to its right (compact pair) */
.board-section-controls {
  display: inline-flex;
  align-items: center;
  gap: 0.12rem;
  flex: 0 0 auto;
  margin-right: 0.2rem;
}
.board-section-controls .board-section-twist {
  margin: 0;
  width: 1.35rem;
  height: 1.5rem;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.board-section-drag {
  flex: 0 0 auto;
  width: 1.35rem;
  height: 1.5rem;
  margin: 0;
  padding: 0;
  border: 1px solid rgba(192, 192, 192, 0.22);
  border-radius: 6px;
  background: linear-gradient(
    180deg,
    rgba(70, 72, 76, 0.95) 0%,
    rgba(36, 36, 38, 0.98) 100%
  );
  color: rgba(180, 182, 188, 0.85);
  font-size: 0.62rem;
  letter-spacing: -0.08em;
  line-height: 1.45rem;
  cursor: grab;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.06);
  user-select: none;
  -webkit-user-select: none;
}
.board-section-drag:hover {
  border-color: rgba(245, 166, 35, 0.45);
  color: rgba(245, 166, 35, 0.9);
}
.board-section-drag:active {
  cursor: grabbing;
}
.board-section-l1 > .board-section-header {
  gap: 0.55rem;
}
.board-section.is-dragging {
  opacity: 0.45;
  border-color: rgba(245, 166, 35, 0.35);
  box-shadow: 0 0 0 1px rgba(245, 166, 35, 0.2);
}
.board-section.is-drag-over {
  border-color: rgba(192, 192, 192, 0.55);
  box-shadow:
    0 -2px 0 0 rgba(245, 166, 35, 0.65),
    var(--panel-inset);
}
.board-nest[data-section-reorder] > .board-section[data-section-key] {
  transition: box-shadow 0.12s ease, opacity 0.12s ease, border-color 0.12s ease;
}
body.density-tight .board-section-controls {
  gap: 0.08rem;
  margin-right: 0.1rem;
}
body.density-tight .board-section-controls .board-section-twist {
  width: 1.15rem;
  height: 1.25rem;
}
body.density-tight .board-section-drag {
  width: 1.15rem;
  height: 1.25rem;
  font-size: 0.55rem;
  line-height: 1.2rem;
  margin-right: 0;
}

.board-section-l3 {
  margin: 0.35rem 0.45rem 0.45rem;
  border-radius: var(--radius-sm);
  border-color: rgba(192, 192, 192, 0.1);
  background: rgba(12, 12, 12, 0.4);
}
.board-section-l3 > .board-section-header {
  padding: 0.4rem 0.65rem;
  border-left: 2px solid rgba(160, 140, 100, 0.35);
  background: linear-gradient(
    100deg,
    rgba(180, 170, 150, 0.06) 0%,
    rgba(28, 28, 28, 0.92) 60%,
    rgba(22, 22, 22, 0.98) 100%
  );
}
.board-section-l3 .board-section-title {
  font-size: 0.88rem;
}

body.density-tight .board-command {
  padding: 0.4rem 0.5rem 0.45rem;
  gap: 0.35rem;
  margin-bottom: 0.75rem;
}
body.density-tight .board-command-nest {
  padding-bottom: 0.3rem;
}
body.density-tight .nest-chip {
  font-size: 0.72rem;
  padding: 0.14rem 0.28rem 0.14rem 0.2rem;
}
body.density-tight .nest-preset {
  font-size: 0.66rem;
  padding: 0.14rem 0.42rem;
}
body.density-tight .nest-add-btn {
  width: 1.45rem;
  height: 1.45rem;
  font-size: 0.95rem;
}
body.density-tight .narrow-panel {
  padding: 0.45rem 0.55rem 0.55rem;
}
body.density-tight .board-section-twist {
  width: 1.15rem;
  height: 1.15rem;
  font-size: 0.65rem;
}
body.density-tight .board-section-l3 > .board-section-header {
  padding: 0.28rem 0.45rem;
}
body.density-tight .board-section-l3 .board-section-title {
  font-size: 0.8rem;
}


/* --- v1.1.14 Jobs board-only chrome + payables --- */
.page-title-row {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 0.75rem;
}
.page-title-row h1 {
  margin: 0 0 0.25rem;
}
.page-title-row .subtitle {
  margin: 0;
}
.page-title-actions {
  flex-shrink: 0;
  padding-top: 0.15rem;
}
.paid-inline-form,
.paid-inline-form {
  display: inline;
}
.btn-link.paid-mark,
.btn-link.paid-clear,
button.btn-link {
  background: none;
  border: none;
  color: var(--accent, #c9a227);
  cursor: pointer;
  font: inherit;
  font-size: 0.8rem;
  padding: 0;
  text-decoration: underline;
}
.invoice-email-note {
  margin: 0.35rem 0 1rem;
  font-size: 0.85rem;
}
body.density-tight .page-title-row {
  margin-bottom: 0.45rem;
}


/* —— Ops pulse (Home dashboard) —— */
.ops-pulse {
  margin: 1.25rem 0 1.5rem;
}
.ops-pulse-header {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 0.65rem;
}
.ops-pulse-header h2 {
  margin: 0;
  font-size: 1.05rem;
  font-weight: 600;
  color: var(--text-secondary);
  letter-spacing: 0.02em;
}
.ops-pulse-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1rem;
}
@media (max-width: 960px) {
  .ops-pulse-grid { grid-template-columns: 1fr; }
}
.ops-pulse-card .ops-pulse-body {
  padding: 1rem 1.15rem 1.15rem;
}
.pulse-donut-wrap {
  display: flex;
  align-items: center;
  gap: 1rem;
  flex-wrap: wrap;
}
.pulse-donut-total {
  fill: var(--text);
  font-size: 1.15rem;
  font-weight: 600;
  font-family: var(--font);
}
.pulse-ring { transition: stroke 0.2s ease; }
.pulse-legend {
  display: flex;
  flex-direction: column;
  gap: 0.28rem;
  flex: 1;
  min-width: 120px;
}
.pulse-legend-item {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.82rem;
  color: var(--text-secondary);
  text-decoration: none;
}
.pulse-legend-item:hover { color: var(--text); text-decoration: underline; }
.pulse-legend-item strong {
  margin-left: auto;
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.pulse-swatch {
  width: 0.55rem;
  height: 0.55rem;
  border-radius: 2px;
  flex-shrink: 0;
}
.pulse-hbar-wrap { margin-top: 0.85rem; }
.pulse-hbar {
  display: flex;
  height: 8px;
  border-radius: 4px;
  overflow: hidden;
  background: var(--panel-mid);
  border: 1px solid var(--border);
}
.pulse-hbar-seg { display: block; height: 100%; min-width: 2px; }
.pulse-hbar-empty { flex: 1; background: var(--border); }
.pulse-note { margin: 0 0 0.75rem; font-size: 0.8rem; }
.pulse-footer { margin: 0.85rem 0 0; font-size: 0.82rem; }
.pulse-dual { display: flex; flex-direction: column; gap: 0.85rem; }
.pulse-dual-row { display: flex; flex-direction: column; gap: 0.28rem; }
.pulse-dual-label {
  font-size: 0.78rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--text-secondary);
}
.pulse-dual-tracks { display: flex; flex-direction: column; gap: 0.22rem; }
.pulse-dual-track {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  height: 1.15rem;
  background: rgba(255,255,255,0.03);
  border-radius: 4px;
  overflow: hidden;
  border: 1px solid var(--border-soft);
}
.pulse-dual-fill {
  display: block;
  height: 100%;
  min-width: 2px;
  border-radius: 3px 0 0 3px;
}
.pulse-dual-fill.is-steel { background: #7a9bb8; }
.pulse-dual-fill.is-attention { background: var(--amber); }
.pulse-dual-n {
  font-size: 0.75rem;
  font-variant-numeric: tabular-nums;
  color: var(--text-secondary);
  padding-right: 0.4rem;
}
.pulse-dual-legend {
  display: flex;
  justify-content: space-between;
  font-size: 0.72rem;
  color: var(--text-secondary);
}
.pulse-dual-legend .is-attention-text { color: var(--amber); }
.pulse-aging-total {
  margin: 0 0 0.65rem;
  font-size: 0.95rem;
}
.pulse-aging {
  display: flex;
  align-items: flex-end;
  justify-content: space-around;
  gap: 0.75rem;
  min-height: 100px;
  padding: 0.25rem 0 0;
}
.pulse-aging-col {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.3rem;
  flex: 1;
}
.pulse-aging-bar {
  width: 100%;
  max-width: 48px;
  border-radius: 4px 4px 0 0;
  background: #7a9bb8;
  border: 1px solid var(--border);
  border-bottom: none;
}
.pulse-aging-bar.is-attention {
  background: var(--amber);
  border-color: var(--amber-dark);
}
.pulse-aging-n {
  font-size: 0.9rem;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}
.pulse-aging-label {
  font-size: 0.72rem;
  color: var(--text-secondary);
}
body.density-tight .ops-pulse { margin: 0.75rem 0 1rem; }
body.density-tight .ops-pulse-card .ops-pulse-body { padding: 0.65rem 0.85rem 0.85rem; }


/* Company profile + Users + 2FA */
.company-logo-preview {
  max-width: 180px;
  max-height: 80px;
  object-fit: contain;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(192,192,192,0.18);
  border-radius: 8px;
  padding: 0.5rem;
  margin: 0.5rem 0 1rem;
}
.invoice-from-brand {
  display: flex;
  gap: 1rem;
  align-items: flex-start;
  margin-bottom: 1rem;
  padding: 0.85rem 1rem;
  border: 1px solid rgba(192,192,192,0.16);
  border-radius: var(--radius-sm);
  background: rgba(28,28,28,0.55);
}
.invoice-from-brand img {
  max-height: 56px;
  max-width: 140px;
  object-fit: contain;
}
.invoice-from-brand .from-name {
  font-weight: 650;
  font-size: 1.05rem;
}
.invoice-from-brand .from-lines {
  font-size: 0.88rem;
  color: rgba(220,220,220,0.78);
  line-height: 1.35;
}
.btn-invoice {
  border-color: rgba(245, 166, 35, 0.55) !important;
  color: rgba(245, 166, 35, 0.95) !important;
}
.totp-qr {
  background: #fff;
  padding: 12px;
  display: inline-block;
  border-radius: 8px;
  margin: 0.75rem 0;
}
.totp-secret {
  font-family: ui-monospace, monospace;
  letter-spacing: 0.06em;
  word-break: break-all;
}
.backup-codes {
  font-family: ui-monospace, monospace;
  columns: 2;
  gap: 1rem;
  margin: 0.75rem 0;
}
.backup-codes li { margin: 0.2rem 0; }
.users-table td, .users-table th { vertical-align: middle; }
.priv-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(11rem, 1fr));
  gap: 0.35rem 0.75rem;
  margin: 0.5rem 0 1rem;
}
.priv-grid label {
  display: flex;
  gap: 0.4rem;
  align-items: center;
  font-size: 0.88rem;
  font-weight: 400;
}
.section-divider {
  margin: 2rem 0 1rem;
  border-top: 1px solid rgba(192,192,192,0.14);
  padding-top: 1.25rem;
}
.login-totp-hint { font-size: 0.85rem; color: rgba(200,200,200,0.7); margin-top: 0.35rem; }

.stack-form .form-grid { margin-bottom: 1rem; }
.stack-form button[type="submit"] { margin-top: 0.35rem; }


/* === v1.1.21 Silver Disk chrome + Style C invoice === */
.brand-link, a.brand.brand-link { display:flex; align-items:center; gap:0.65rem; text-decoration:none; color:inherit; }
.brand-logo { width:36px; height:36px; object-fit:contain; border-radius:0; background:transparent; }
.login-logo { width:72px; height:72px; display:block; margin:0 auto 0.75rem; }
.maps-dialog { border:1px solid var(--line,#ccc); border-radius:8px; padding:1rem; max-width:24rem; width:calc(100vw - 2rem); margin:auto; }
.maps-dialog::backdrop { background:rgba(20,24,28,.55); }
.maps-dialog-addr { margin:0 0 0.75rem; font-weight:600; }
.maps-preview { min-height:2rem; margin-bottom:0.75rem; }
.maps-osm { width:100%; height:160px; border:0; border-radius:6px; }
.maps-actions { display:flex; flex-direction:column; gap:0.4rem; }
.maps-dialog-close { float:right; }
.badge.past-due, .badge.late { background:#fde8e8; color:#9b1c1c; }
.brand-text { line-height:1.15; }
.density-toggle { display:none !important; }
body.density-silver-disk { /* fixed Silver Disk spacing */ }

.invoice-style-c { gap:1rem; }
.invoice-card {
  background: #f4f6f8;
  border: 1px solid #c5ced6;
  border-radius: 10px;
  padding: 0.85rem 1rem;
  box-shadow: 0 1px 0 rgba(24, 48, 72, 0.04);
}
.invoice-card h3 {
  margin: 0 0 0.4rem;
  font-size: 0.75rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: #2f5f86;
}
.invoice-card-from { border-color: #2f5f86; }
.invoice-from-brand.invoice-card { display:flex; gap:0.75rem; align-items:flex-start; }
.invoice-notes-callout {
  margin-top: 1rem;
  padding: 0.85rem 1rem;
  background: #eef3f7;
  border-left: 3px solid #2f5f86;
  border-radius: 0 8px 8px 0;
}
.invoice-notes-callout h3 { margin:0 0 0.35rem; font-size:0.85rem; color:#2f5f86; }
.invoice-notes-callout p { margin:0; white-space:pre-wrap; }
.filter-bar { display:flex; flex-wrap:wrap; gap:0.75rem; align-items:end; margin:0.75rem 0 1rem; }
.filter-bar label { display:flex; flex-direction:column; gap:0.25rem; font-size:0.85rem; }
.board-latches-inline { display:flex; gap:0.5rem; }
.board-latches-inline .status-latch {
  padding: 0.35rem 0.75rem;
  border-radius: 999px;
  border: 1px solid rgba(192, 192, 192, 0.28);
  text-decoration:none;
  color: var(--text-secondary);
  background: rgba(255, 255, 255, 0.04);
}
.board-latches-inline .status-latch.active {
  background: rgba(245, 166, 35, 0.22);
  color: var(--amber);
  border-color: rgba(245, 166, 35, 0.5);
  font-weight: 650;
}

/* === v1.1.22 UI pack — Look A board + Silver Disk compact === */

.header-user {
  display: flex;
  align-items: center;
  gap: 0.65rem;
}
.header-role {
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--text-secondary);
  letter-spacing: 0.01em;
  white-space: nowrap;
}

/* Logo: transparent on dark chrome — no white plate */
.brand-logo,
.invoice-from-brand img,
.company-logo-preview,
img.brand-logo {
  background: transparent !important;
  box-shadow: none !important;
}
.company-logo-preview {
  border: none !important;
  padding: 0 !important;
  border-radius: 0 !important;
}

/* One compact Silver Disk — override airy comfortable defaults */
body.density-silver-disk {
  line-height: 1.4;
}
body.density-silver-disk main {
  padding: 1.15rem 1.35rem 2.25rem;
}
body.density-silver-disk .site-header {
  padding: 0.65rem 1.25rem;
  gap: 0.75rem;
}
body.density-silver-disk nav a {
  padding: 0.35rem 0.7rem;
  font-size: 0.86rem;
}
body.density-silver-disk h1,
body.density-silver-disk .page-title-row h1 {
  font-size: 1.45rem;
  margin-bottom: 0.2rem;
}
body.density-silver-disk .subtitle,
body.density-silver-disk .page-title-row .subtitle {
  margin-bottom: 0.75rem;
  font-size: 0.9rem;
}
body.density-silver-disk .page-actions {
  margin-bottom: 0.65rem;
  gap: 0.45rem;
}
body.density-silver-disk .page-title-row {
  margin-bottom: 0.5rem;
}
body.density-silver-disk .btn,
body.density-silver-disk button.btn,
body.density-silver-disk a.btn {
  padding: 0.4rem 0.85rem;
  font-size: 0.84rem;
}

/* Tables: tighter rows + real horizontal gutters */
body.density-silver-disk th,
body.density-silver-disk td {
  padding: 0.42rem 0.85rem;
}
body.density-silver-disk td {
  font-size: 0.88rem;
}
body.density-silver-disk th {
  font-size: 0.66rem;
  padding: 0.4rem 0.85rem;
}
body.density-silver-disk .job-board-table th,
body.density-silver-disk .job-board-table td,
body.density-silver-disk .density-table th,
body.density-silver-disk .density-table td,
body.density-silver-disk .customers-table th,
body.density-silver-disk .customers-table td {
  padding: 0.32rem 0.75rem;
}
body.density-silver-disk .job-board-table td,
body.density-silver-disk .density-table td,
body.density-silver-disk .customers-table td {
  font-size: 0.84rem;
  line-height: 1.3;
}

.allowed-lines-cell {
  max-width: 14rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  line-height: 1.35;
}
@media (min-width: 1100px) {
  .allowed-lines-cell {
    max-width: 18rem;
    white-space: normal;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
  }
}

/* Look A — board density + L1/L2 differentiation */
body.density-silver-disk .board-nest {
  gap: 0.55rem;
}
body.density-silver-disk .board-section-l1 {
  border-color: rgba(160, 175, 195, 0.32);
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.04) 0%, transparent 40%),
    rgba(28, 30, 34, 0.72);
  box-shadow: 0 1px 0 rgba(255,255,255,0.04), inset 0 0 0 1px rgba(0,0,0,0.2);
}
body.density-silver-disk .board-section-l1 > .board-section-header {
  padding: 0.55rem 0.8rem;
  border-left: 4px solid rgba(150, 165, 185, 0.85); /* steel */
  background: linear-gradient(
    100deg,
    rgba(150, 165, 185, 0.16) 0%,
    rgba(32, 34, 38, 0.96) 52%,
    rgba(24, 24, 26, 0.98) 100%
  );
}
body.density-silver-disk .board-section-l1 .board-section-title {
  font-size: 1.15rem;
  font-weight: 750;
  letter-spacing: -0.025em;
  color: rgba(230, 235, 242, 0.98);
}
body.density-silver-disk .board-section-l1 .board-section-eyebrow {
  font-size: 0.6rem;
  color: rgba(170, 185, 205, 0.9);
}

body.density-silver-disk .board-section-l2 {
  margin: 0.28rem 0.45rem 0.4rem 0.7rem; /* indented under L1 */
  border-color: rgba(120, 140, 165, 0.18);
  background: rgba(16, 17, 19, 0.5);
  box-shadow: none;
}
body.density-silver-disk .board-section-l2 > .board-section-header {
  padding: 0.32rem 0.6rem;
  border-left: 2px solid rgba(120, 145, 175, 0.45);
  background: linear-gradient(
    100deg,
    rgba(110, 130, 155, 0.08) 0%,
    rgba(24, 24, 26, 0.92) 65%
  );
}
body.density-silver-disk .board-section-l2 .board-section-title {
  font-size: 0.88rem;
  font-weight: 600;
  color: rgba(200, 208, 218, 0.92);
}
body.density-silver-disk .board-section-l2 .board-section-eyebrow {
  font-size: 0.55rem;
  opacity: 0.75;
}

/* Unassigned stays amber (loud) at any level */
body.density-silver-disk .board-section-loud > .board-section-header,
body.density-silver-disk .board-section-kind-unassigned > .board-section-header {
  border-left-color: var(--amber) !important;
  border-left-width: 4px;
  background: linear-gradient(
    100deg,
    rgba(245, 166, 35, 0.2) 0%,
    rgba(40, 32, 18, 0.95) 48%,
    rgba(26, 26, 26, 0.98) 100%
  ) !important;
}
body.density-silver-disk .board-section-loud .board-section-title,
body.density-silver-disk .board-section-kind-unassigned .board-section-title {
  color: var(--amber) !important;
}

body.density-silver-disk .job-board-body {
  padding: 0.4rem 0.5rem 0.55rem;
}
body.density-silver-disk .board-command {
  margin: 0 0 0.75rem;
  padding: 0.5rem 0.65rem 0.55rem;
  gap: 0.4rem;
}

/* Override comfortable board airiness when silver-disk is on */
body.density-comfortable.density-silver-disk .board-nest { gap: 0.55rem; }
body.density-comfortable.density-silver-disk .board-section-l1 > .board-section-header {
  padding: 0.55rem 0.8rem;
}
body.density-comfortable.density-silver-disk .board-section-title {
  font-size: 1.15rem;
}
body.density-comfortable.density-silver-disk .board-section-l2 {
  margin: 0.28rem 0.45rem 0.4rem 0.7rem;
}
body.density-comfortable.density-silver-disk .job-board-body {
  padding: 0.4rem 0.5rem 0.55rem;
}
body.density-comfortable.density-silver-disk .form-section {
  padding: 0.75rem 0.9rem;
  gap: 0.65rem;
}
body.density-comfortable.density-silver-disk .form-body-sections {
  gap: 0.75rem;
}
body.density-comfortable.density-silver-disk .form-body {
  padding: 1rem;
  gap: 0.75rem;
}

.specialty-fieldset.is-muted,
.specialty-fieldset[hidden] {
  display: none !important;
}
.capability-hint {
  margin: 0 0 0.35rem;
  font-size: 0.82rem;
}

/* Invoice Style C on dark app: logo sits cleanly in card, no extra plate */
.invoice-from-brand.invoice-card img {
  background: transparent !important;
  padding: 0;
  border: none;
  border-radius: 0;
  max-height: 48px;
}


/* Phone numbers stay one line (Customers, Team, etc.) */
.phone-cell,
td.phone-cell {
  white-space: nowrap;
  min-width: 8.5rem;
  font-variant-numeric: tabular-nums;
}
.board-job-num {
  font-size: 0.72rem;
  margin-top: 0.1rem;
  letter-spacing: 0.02em;
}

/* === v1.1.27 Email invoice === */
.invoice-email-panel .invoice-email-form .form-row {
  margin-bottom: 0.65rem;
}
.invoice-email-panel .invoice-email-form input[type="email"],
.invoice-email-panel .invoice-email-form textarea {
  width: 100%;
  max-width: 28rem;
}
.invoice-email-panel .form-actions {
  margin-top: 0.35rem;
}


/* === v1.1.31 NEXT PACK — ops job detail + Ledgers chrome === */
.header-role {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  font-weight: 500;
  color: rgba(210, 210, 215, 0.88);
}
.header-role-tag {
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: rgba(160, 175, 195, 0.85);
  border: 1px solid rgba(130, 155, 185, 0.35);
  background: rgba(130, 155, 185, 0.1);
  border-radius: 999px;
  padding: 0.12rem 0.45rem;
}

/* Logo: no PNG frame / plate on dark chrome */
.brand-logo,
img.brand-logo,
a.brand .brand-logo {
  background: transparent !important;
  box-shadow: none !important;
  border: none !important;
  border-radius: 0 !important;
  padding: 0 !important;
  outline: none;
}

.board-inv-num {
  font-size: 0.78rem;
  margin-top: 0.1rem;
  color: rgba(170, 190, 210, 0.78);
}
.board-job-num {
  font-size: 0.8rem;
}

.job-ops-header {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 1rem 1.5rem;
  margin-bottom: 0.85rem;
  align-items: flex-start;
}
.job-ids-eyebrow {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  margin: 0 0 0.35rem;
}
.job-id-chip {
  display: inline-block;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 0.78rem;
  font-weight: 650;
  letter-spacing: 0.02em;
  color: rgba(220, 225, 230, 0.95);
  background: rgba(130, 155, 185, 0.14);
  border: 1px solid rgba(130, 155, 185, 0.4);
  border-radius: 6px;
  padding: 0.18rem 0.5rem;
}
.job-id-chip.job-id-inv {
  color: rgba(245, 200, 120, 0.95);
  background: rgba(245, 166, 35, 0.1);
  border-color: rgba(245, 166, 35, 0.4);
}
.job-ops-meta {
  display: grid;
  gap: 0.35rem 1rem;
  min-width: 12rem;
  font-size: 0.88rem;
}
.job-ops-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
  gap: 0.85rem;
  margin: 0.85rem 0 1rem;
}
.job-ops-card .job-ops-card-body {
  padding: 0.75rem 1rem 0.9rem;
  font-size: 0.9rem;
  line-height: 1.4;
}
.job-ops-card .invoice-strong {
  font-weight: 650;
  margin-bottom: 0.25rem;
}
.job-ops-notes {
  margin: 0.5rem 0 1rem;
}
.job-ops-notes-body {
  margin: 0;
  white-space: pre-wrap;
  color: rgba(220, 220, 220, 0.88);
}

/* Secondary actions stay Silver Disk steel — never paper-white */
a.btn.btn-secondary,
button.btn.btn-secondary,
.btn.btn-secondary,
button.btn-secondary {
  background: rgba(130, 155, 185, 0.14) !important;
  color: rgba(200, 214, 230, 0.95) !important;
  border-color: rgba(130, 155, 185, 0.55) !important;
}

/* =========================================================================
   v1.1.35 — L22 form density + type (NOT job board)
   Sitewide form controls ~15–20% denser; calmer labels; readable help.
   Board nest / chrome / job-board tables intentionally untouched.
   ========================================================================= */

/* Calmer labels — drop aggressive all-caps tracking */
.form-body label,
.inline-add label,
.login-card label {
  gap: 0.28rem;
  font-size: 0.72rem;
  color: var(--text-secondary);
  text-transform: none;
  letter-spacing: 0.01em;
  font-weight: 550;
}

/* Keep filter-bar labels as-is (board chrome) — do not restyle here */

.form-body input,
.form-body select,
.form-body textarea,
.inline-add select,
.inline-add input,
.login-card input,
.login-card select {
  padding: 0.48rem 0.65rem;
  font-size: 0.9rem;
  min-height: 2.15rem;
  line-height: 1.25;
}

.form-body textarea,
.inline-add textarea {
  min-height: 4.25rem;
  line-height: 1.4;
}

.form-body {
  padding: 1.05rem 1.1rem;
  gap: 0.72rem;
}

.form-row {
  gap: 0.7rem;
}

.form-help,
.form-body > .muted,
.form-body p.muted {
  font-size: 0.82rem;
  line-height: 1.45;
  color: rgba(192, 192, 192, 0.92);
  letter-spacing: 0.005em;
  text-transform: none;
  font-weight: 400;
}

.form-help .sd-icon,
.invoice-send-preview .sd-icon,
.panel-header h2 .sd-icon {
  vertical-align: -0.15em;
  margin-right: 0.28rem;
  opacity: 0.9;
}

body.density-comfortable.density-silver-disk .form-body {
  padding: 0.85rem 0.95rem;
  gap: 0.62rem;
}

body.density-comfortable.density-silver-disk .form-body input,
body.density-comfortable.density-silver-disk .form-body select,
body.density-comfortable.density-silver-disk .form-body textarea,
body.density-comfortable.density-silver-disk .inline-add select,
body.density-comfortable.density-silver-disk .inline-add input {
  padding: 0.42rem 0.58rem;
  font-size: 0.88rem;
  min-height: 2rem;
}

body.density-comfortable.density-silver-disk .form-body label,
body.density-comfortable.density-silver-disk .inline-add label {
  gap: 0.22rem;
  font-size: 0.7rem;
}

/* =========================================================================
   v1.1.35 — L23 schedule choice cards + chips · L24 email icons
   ========================================================================= */

.sd-icon {
  display: inline-block;
  flex-shrink: 0;
  color: rgba(180, 195, 215, 0.92);
}

.sd-schedule {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

.sd-choice-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.55rem;
}

@media (max-width: 720px) {
  .sd-choice-grid {
    grid-template-columns: 1fr;
  }
}

.sd-choice-card {
  position: relative;
  display: flex;
  align-items: flex-start;
  gap: 0.55rem;
  padding: 0.7rem 0.75rem;
  border-radius: var(--radius-sm);
  border: 1px solid rgba(130, 155, 185, 0.28);
  background:
    linear-gradient(165deg, rgba(255, 255, 255, 0.04) 0%, transparent 42%),
    rgba(28, 30, 34, 0.85);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04);
  cursor: pointer;
  text-transform: none !important;
  letter-spacing: normal !important;
  font-size: inherit !important;
  color: var(--text) !important;
  font-weight: 450 !important;
  gap: 0.55rem !important;
  flex-direction: row !important;
  transition: border-color 0.15s ease, box-shadow 0.15s ease, background 0.15s ease;
}

.sd-choice-card:hover {
  border-color: rgba(150, 175, 205, 0.5);
}

.sd-choice-card.is-active {
  border-color: rgba(245, 166, 35, 0.72);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.06),
    0 0 0 1px rgba(245, 166, 35, 0.28);
  background:
    linear-gradient(165deg, rgba(245, 166, 35, 0.12) 0%, transparent 48%),
    rgba(32, 30, 26, 0.92);
}

.sd-choice-input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
  width: 0;
  height: 0;
  min-height: 0 !important;
  padding: 0 !important;
}

.sd-choice-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 1.7rem;
  height: 1.7rem;
  border-radius: 7px;
  background: rgba(130, 155, 185, 0.14);
  border: 1px solid rgba(130, 155, 185, 0.35);
  color: rgba(200, 214, 230, 0.95);
  flex-shrink: 0;
}

.sd-choice-card.is-active .sd-choice-icon {
  background: rgba(245, 166, 35, 0.18);
  border-color: rgba(245, 166, 35, 0.55);
  color: var(--amber);
}

.sd-choice-text {
  display: flex;
  flex-direction: column;
  gap: 0.18rem;
  min-width: 0;
}

.sd-choice-title {
  font-size: 0.88rem;
  font-weight: 650;
  letter-spacing: -0.01em;
  color: var(--text);
}

.sd-choice-blurb {
  font-size: 0.72rem;
  line-height: 1.35;
  color: rgba(180, 180, 185, 0.9);
  font-weight: 400;
}

.sd-day-strip {
  padding: 0.55rem 0.65rem 0.65rem;
  border-radius: var(--radius-sm);
  border: 1px solid rgba(100, 120, 145, 0.28);
  background: rgba(20, 22, 26, 0.55);
}

.sd-day-strip-label {
  display: flex;
  align-items: center;
  gap: 0.35rem;
  font-size: 0.72rem;
  font-weight: 550;
  color: var(--text-secondary);
  margin-bottom: 0.45rem;
  text-transform: none;
  letter-spacing: 0.01em;
}

.sd-day-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
}

.sd-day-chip {
  display: inline-flex !important;
  flex-direction: row !important;
  align-items: center;
  justify-content: center;
  gap: 0 !important;
  min-width: 2.4rem;
  padding: 0.32rem 0.55rem !important;
  border-radius: 999px;
  border: 1px solid rgba(130, 155, 185, 0.35);
  background: rgba(40, 44, 52, 0.7);
  color: rgba(210, 220, 230, 0.92) !important;
  font-size: 0.78rem !important;
  font-weight: 550 !important;
  text-transform: none !important;
  letter-spacing: 0.02em !important;
  cursor: pointer;
  user-select: none;
}

.sd-day-chip input {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
  min-height: 0 !important;
  padding: 0 !important;
}

.sd-day-chip.is-on {
  border-color: rgba(245, 166, 35, 0.7);
  background: rgba(245, 166, 35, 0.16);
  color: #ffe2a8 !important;
  box-shadow: 0 0 0 1px rgba(245, 166, 35, 0.2);
}

.sd-day-strip .form-help {
  margin: 0.45rem 0 0;
}

.sd-field-label {
  /* inherits calmer form label */
}

.sd-tz-row {
  margin-top: 0.15rem;
}

.invoice-schedule-panel .panel-header h2,
.invoice-email-panel .panel-header h2 {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
}

.invoice-send-preview {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.25rem 0.35rem;
  margin: 0 0 0.55rem;
  font-size: 0.9rem;
  line-height: 1.4;
}

.invoice-send-preview .sd-icon {
  color: rgba(180, 195, 215, 0.95);
}


/* Ledgers All invoices cancelled (L28/L29) */
.money-not-recognized {
  font-size: 0.78em;
  margin-top: 0.15rem;
  line-height: 1.2;
}
.money-row-cancelled td.price {
  opacity: 0.92;
}

/* Ledgers click-sort (L26) */
.money-table th.th-sort {
  padding: 0;
}
.money-table th.th-sort a {
  display: block;
  padding: 0.45rem 0.65rem;
  color: inherit;
  text-decoration: none;
  white-space: nowrap;
}
.money-table th.th-sort a:hover {
  color: var(--amber);
  text-decoration: none;
}
.money-table th.th-sort-active a {
  color: var(--amber);
  font-weight: 650;
}

/* =========================================================================
   v1.1.39 — L30 form chrome tighten + section icons + level rows
   Forms / settings / Ledgers filters only. Job board nest/chrome LOCKED.
   ========================================================================= */

/* Section titles carry small Silver Disk marks */
.form-section-title {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.7rem;
  letter-spacing: 0.08em;
}
.form-section-title .sd-icon {
  color: rgba(180, 195, 215, 0.88);
  opacity: 0.95;
}
.form-section-title span {
  line-height: 1.2;
}

.panel-header h2 {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
}
.panel-header h2 .sd-icon {
  color: rgba(190, 205, 225, 0.92);
  vertical-align: -0.12em;
}

/* Missing Team section tints (pay / sign-in / visibility / status / schedule) */
.form-section--pay {
  background: rgba(170, 155, 120, 0.06);
  border-color: rgba(170, 155, 120, 0.12);
}
.form-section--signin {
  background: rgba(140, 150, 175, 0.07);
  border-color: rgba(140, 150, 175, 0.12);
}
.form-section--visibility {
  background: rgba(130, 165, 160, 0.06);
  border-color: rgba(130, 165, 160, 0.11);
}
.form-section--status {
  background: rgba(150, 150, 155, 0.05);
  border-color: rgba(150, 150, 155, 0.1);
}
.form-section--schedule {
  background: rgba(130, 155, 185, 0.06);
  border-color: rgba(130, 155, 185, 0.12);
}

/* Tighter form shell — less empty air, keep readable */
.form-grid {
  gap: 0.7rem;
}
.form-body {
  padding: 0.8rem 0.9rem;
  gap: 0.55rem;
}
.form-body-sections {
  gap: 0.55rem;
}
.form-section {
  padding: 0.65rem 0.75rem;
  gap: 0.5rem;
}
.form-section .muted,
.form-section .form-help,
.form-section .capability-hint,
.form-section .display-derived {
  margin-top: 0;
  margin-bottom: 0;
}
.form-actions {
  margin-top: 0.35rem;
}

/* Level rows — equal control heights; no dropped sibling fields */
.form-row,
.form-row-level {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 0.55rem;
  align-items: end;
}
.form-row > label,
.form-row-level > label {
  min-width: 0;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  gap: 0.22rem;
}
.form-body .form-row input,
.form-body .form-row select,
.form-body .form-row-level input,
.form-body .form-row-level select,
.stack-form .form-row input,
.stack-form .form-row select {
  width: 100%;
  box-sizing: border-box;
  min-height: 2.15rem;
  height: 2.15rem;
}
.form-body .form-row textarea,
.form-body .form-row-level textarea {
  height: auto;
  min-height: 4rem;
}

/* Explicit grids — stop auto-fit from shoving one field under siblings */
.form-row-2 {
  grid-template-columns: 1fr 1fr;
}
.form-row-3 {
  grid-template-columns: 1fr 1fr 1fr;
}
.form-row-csz {
  grid-template-columns: minmax(0, 2.2fr) minmax(4.5rem, 0.7fr) minmax(5.5rem, 1fr);
  max-width: 34rem;
}
.form-row-names {
  grid-template-columns: 1fr 1fr 1fr;
  max-width: 34rem;
  gap: 0.45rem;
}

@media (max-width: 560px) {
  .form-row-2,
  .form-row-3 {
    grid-template-columns: 1fr;
  }
  .form-row-csz {
    grid-template-columns: 1fr 1fr;
    max-width: none;
  }
  .form-row-csz > label:first-child {
    grid-column: 1 / -1;
  }
  .form-row-names {
    grid-template-columns: 1fr;
    max-width: none;
  }
}

/* Silver Disk comfortable: still tighter than pre-L30 */
body.density-comfortable.density-silver-disk .form-section {
  padding: 0.55rem 0.7rem;
  gap: 0.42rem;
}
body.density-comfortable.density-silver-disk .form-body-sections {
  gap: 0.5rem;
}
body.density-comfortable.density-silver-disk .form-body {
  padding: 0.7rem 0.8rem;
  gap: 0.5rem;
}
body.density-comfortable.density-silver-disk .form-grid {
  gap: 0.55rem;
}
body.density-comfortable.density-silver-disk .form-body .form-row input,
body.density-comfortable.density-silver-disk .form-body .form-row select,
body.density-comfortable.density-silver-disk .form-body .form-row-level input,
body.density-comfortable.density-silver-disk .form-body .form-row-level select,
body.density-comfortable.density-silver-disk .stack-form .form-row input,
body.density-comfortable.density-silver-disk .stack-form .form-row select {
  min-height: 2rem;
  height: 2rem;
  padding: 0.38rem 0.55rem;
}

body.density-tight .form-section {
  padding: 0.4rem 0.5rem;
  gap: 0.35rem;
}
body.density-tight .form-body-sections {
  gap: 0.35rem;
}
body.density-tight .form-row-csz {
  max-width: 30rem;
  gap: 0.35rem;
}
body.density-tight .form-body .form-row input,
body.density-tight .form-body .form-row select,
body.density-tight .form-body .form-row-level input,
body.density-tight .form-body .form-row-level select {
  min-height: 1.85rem;
  height: 1.85rem;
}

/* Ledgers filters — tighter chrome (not job-board filter-bar-narrow) */
.filter-bar-ledgers {
  gap: 0.5rem 0.65rem;
  margin: 0.45rem 0 0.75rem;
  align-items: end;
  padding: 0.55rem 0.7rem;
  border-radius: var(--radius-sm);
  border: 1px solid rgba(130, 155, 185, 0.18);
  background: rgba(28, 30, 34, 0.55);
}
.filter-bar-ledgers label {
  gap: 0.2rem;
  font-size: 0.7rem;
}
.filter-bar-ledgers select,
.filter-bar-ledgers input[type="date"] {
  min-height: 2rem;
  height: 2rem;
  padding: 0.32rem 0.5rem;
  font-size: 0.86rem;
  box-sizing: border-box;
}
.filter-bar-ledgers .filter-actions {
  display: inline-flex;
  align-items: end;
  gap: 0.4rem;
  padding-bottom: 0;
}

/* Schedule cards slightly less air inside customer section */
.form-section--schedule .sd-schedule {
  gap: 0.55rem;
}
.form-section--schedule .sd-choice-card {
  padding: 0.55rem 0.65rem;
}
.form-section--schedule .sd-choice-grid {
  gap: 0.45rem;
}

/* stack-form (Company) inherits section density */
.stack-form .form-body-sections {
  margin-bottom: 0.65rem;
}
.stack-form > .btn {
  margin-top: 0.15rem;
}

/* =========================================================================
   v1.1.40 — L31 Home dashboard: stat card icons + Team ZIP mini-map
   Job board nest/chrome LOCKED (unchanged).
   ========================================================================= */

.card--metric {
  display: block;
  color: inherit;
  text-decoration: none;
  transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.12s ease;
}
.card--metric:hover {
  color: inherit;
  text-decoration: none;
  border-color: rgba(180, 195, 215, 0.35);
  box-shadow: var(--panel-inset), 0 0 0 1px rgba(245, 166, 35, 0.12);
}
.card--metric:hover .hint {
  color: var(--amber);
}
.card--metric .hint {
  color: var(--text-secondary);
}

.card-label-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.55rem;
  margin-bottom: 0.2rem;
}
.card-label-row .label {
  margin-bottom: 0;
}
.card--metric > .sd-icon,
.card-label-row > .sd-icon {
  color: rgba(175, 192, 214, 0.88);
  opacity: 0.92;
  flex-shrink: 0;
}

.card--team {
  display: flex;
  flex-direction: column;
}

.team-mini-map {
  margin-top: 0.65rem;
  margin-bottom: 0.15rem;
}
.team-mini-map--empty {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 4.5rem;
  border-radius: 8px;
  border: 1px solid rgba(58, 58, 58, 0.9);
  background: rgba(0, 0, 0, 0.28);
  font-size: 0.72rem;
}
.team-mini-map-svg {
  display: block;
  border-radius: 8px;
  overflow: visible;
}
.team-mini-map-bg {
  fill: #14181e;
  stroke: rgba(90, 105, 125, 0.45);
  stroke-width: 1;
}
.team-mini-map-grid line {
  stroke: rgba(120, 140, 165, 0.14);
  stroke-width: 1;
}
.team-pin-halo {
  fill: rgba(245, 166, 35, 0.22);
}
.team-pin-dot {
  fill: #f5a623;
  stroke: rgba(20, 24, 30, 0.85);
  stroke-width: 1;
}
.team-mini-map-caption {
  margin-top: 0.3rem;
  font-size: 0.7rem;
  letter-spacing: 0.02em;
}

body.density-tight .team-mini-map-svg {
  height: 80px;
}


/* =========================================================================
   v1.1.43 — L33 Home: tighter orbit + wide Ops pulse flanks hub
   Ops pulse below unchanged. Job board nest LOCKED.
   ========================================================================= */

.home-title {
  margin-bottom: 0.15rem;
}
.home-org {
  margin-bottom: 1.1rem;
  font-size: 0.82rem;
  letter-spacing: 0.02em;
}

.home-hub {
  --hub-size: min(520px, 92vw);
  --core-size: 48%;
  --sat-size: 100px;
  /* Length must be hub-based — % in translate() is relative to the sat itself */
  --orbit-r: calc(var(--hub-size) * 0.345);
  position: relative;
  width: var(--hub-size);
  height: var(--hub-size);
  max-width: 100%;
  margin: 0.25rem auto 0;
}

.home-hub-orbit {
  position: absolute;
  inset: 15.5%;
  border-radius: 50%;
  border: 1px solid rgba(160, 175, 195, 0.22);
  box-shadow:
    inset 0 0 0 1px rgba(255, 255, 255, 0.03),
    0 0 0 1px rgba(0, 0, 0, 0.35);
  pointer-events: none;
  z-index: 0;
}

.home-hub-core {
  position: absolute;
  top: 50%;
  left: 50%;
  width: var(--core-size);
  height: var(--core-size);
  transform: translate(-50%, -50%);
  border-radius: 50%;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  text-decoration: none;
  color: inherit;
  z-index: 2;
  background:
    linear-gradient(160deg, #2e3238 0%, #1a1e24 42%, #15181d 100%);
  border: 1px solid rgba(175, 190, 210, 0.38);
  box-shadow:
    var(--panel-inset),
    0 8px 28px rgba(0, 0, 0, 0.45),
    inset 0 -18px 36px rgba(0, 0, 0, 0.35);
  transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.12s ease;
}
.home-hub-core:hover {
  color: inherit;
  text-decoration: none;
  border-color: rgba(245, 166, 35, 0.45);
  box-shadow:
    var(--panel-inset),
    0 10px 32px rgba(0, 0, 0, 0.5),
    0 0 0 1px rgba(245, 166, 35, 0.18);
  transform: translate(-50%, -50%) scale(1.015);
}
.home-hub-core:hover .hint {
  color: var(--amber);
}

.home-hub-map {
  flex: 1 1 75%;
  min-height: 0;
  overflow: hidden;
  border-bottom: 1px solid rgba(90, 105, 125, 0.35);
  background: #10141a;
}
.home-hub-map .team-mini-map {
  margin: 0;
  height: 100%;
}
.home-hub-map .team-mini-map-svg {
  width: 100%;
  height: 100%;
  border-radius: 0;
}
.home-hub-map .team-mini-map-bg {
  fill: #10141a;
  stroke: transparent;
}
.home-hub-map .team-mini-map--empty {
  min-height: 100%;
  height: 100%;
  border-radius: 0;
  border: none;
  background: #10141a;
  font-size: 0.68rem;
}

.home-hub-team {
  flex: 0 0 25%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.06rem;
  padding: 0.28rem 0.5rem 0.38rem;
  text-align: center;
  background: linear-gradient(180deg, rgba(36, 40, 46, 0.55) 0%, rgba(22, 24, 28, 0.9) 100%);
}
.home-hub-team-label {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.35rem;
}
.home-hub-team-label .label {
  margin: 0;
  font-size: 0.55rem;
  letter-spacing: 0.12em;
  color: var(--text-secondary);
}
.home-hub-team-label .sd-icon {
  color: rgba(175, 192, 214, 0.9);
}
.home-hub-team .value {
  font-size: 1.15rem;
  font-weight: 650;
  line-height: 1.05;
  letter-spacing: -0.02em;
}

.home-hub-sat {
  --sat-angle: 0deg;
  position: absolute;
  top: 50%;
  left: 50%;
  width: var(--sat-size);
  height: var(--sat-size);
  margin: calc(var(--sat-size) / -2) 0 0 calc(var(--sat-size) / -2);
  transform-origin: center center;
  transform: rotate(var(--sat-angle)) translateX(var(--orbit-r)) rotate(calc(-1 * var(--sat-angle)));
  border-radius: 50%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.12rem;
  padding: 0.45rem;
  text-align: center;
  text-decoration: none;
  color: inherit;
  z-index: 3;
  background:
    linear-gradient(155deg, #2c2c2c 0%, #1f1f1f 45%, #181818 100%);
  border: 1px solid rgba(170, 185, 205, 0.32);
  box-shadow:
    var(--panel-inset),
    0 4px 16px rgba(0, 0, 0, 0.4);
  transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.12s ease;
}
.home-hub-sat:hover {
  color: inherit;
  text-decoration: none;
  border-color: rgba(245, 166, 35, 0.5);
  box-shadow:
    var(--panel-inset),
    0 6px 18px rgba(0, 0, 0, 0.45),
    0 0 0 1px rgba(245, 166, 35, 0.2);
  transform: rotate(var(--sat-angle)) translateX(var(--orbit-r)) rotate(calc(-1 * var(--sat-angle))) scale(1.05);
}
.home-hub-sat .sd-icon {
  color: rgba(175, 192, 214, 0.92);
  flex-shrink: 0;
}
.home-hub-sat .label {
  margin: 0;
  font-size: 0.62rem;
  letter-spacing: 0.04em;
  color: var(--text-secondary);
  line-height: 1.15;
  max-width: 5.6rem;
}
.home-hub-sat .value {
  font-size: 1.35rem;
  font-weight: 650;
  line-height: 1;
  letter-spacing: -0.02em;
}

@media (max-width: 640px) {
  .home-hub {
    --hub-size: min(420px, 96vw);
    --sat-size: 86px;
    --orbit-r: calc(var(--hub-size) * 0.34);
    --core-size: 48%;
    margin-bottom: 1.25rem;
  }
  .home-hub-team .value {
    font-size: 1.05rem;
  }
  .home-hub-sat .value {
    font-size: 1.1rem;
  }
  .home-hub-sat .label {
    font-size: 0.55rem;
  }
}

@media (max-width: 420px) {
  .home-hub {
    height: auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.85rem;
  }
  .home-hub-orbit {
    display: none;
  }
  .home-hub-core {
    position: relative;
    top: auto;
    left: auto;
    transform: none;
    width: min(220px, 70vw);
    height: min(220px, 70vw);
  }
  .home-hub-core:hover {
    transform: scale(1.015);
  }
  .home-hub-sat {
    position: relative;
    top: auto;
    left: auto;
    margin: 0;
    transform: none;
    width: min(100%, 280px);
    height: auto;
    min-height: 4.25rem;
    border-radius: 999px;
    flex-direction: row;
    justify-content: flex-start;
    gap: 0.65rem;
    padding: 0.65rem 1rem;
  }
  .home-hub-sat:hover {
    transform: scale(1.02);
  }
  .home-hub-sat .label {
    flex: 1;
    text-align: left;
    font-size: 0.78rem;
  }
  .home-hub-sat .value {
    font-size: 1.25rem;
  }
}


/* —— Home stage: hub unit + Ops pulse flanks (wide) —— */
.home-stage {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.15rem 1.35rem;
  align-items: start;
  margin-bottom: 1.75rem;
}
.home-pulse-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.75rem;
  margin: 0;
}
.home-pulse-head h2 {
  margin: 0;
  font-size: 1.05rem;
  font-weight: 600;
  letter-spacing: 0.02em;
}
.home-pulse-left,
.home-pulse-right {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  min-width: 0;
}
/* Narrow / default: hub first, then pulse head, then all cards stacked */
.home-stage .home-hub { order: 1; }
.home-stage .home-pulse-head { order: 2; }
.home-stage .home-pulse-left { order: 3; }
.home-stage .home-pulse-right { order: 4; }

@media (min-width: 1280px) {
  .home-stage {
    grid-template-columns: minmax(260px, 1fr) auto minmax(260px, 1fr);
    justify-content: center;
    align-items: center;
  }
  .home-stage .home-pulse-head {
    grid-column: 1 / -1;
    order: 0;
  }
  .home-stage .home-pulse-left {
    grid-column: 1;
    order: 0;
  }
  .home-stage .home-hub {
    grid-column: 2;
    order: 0;
    margin: 0;
    --hub-size: min(480px, 36vw);
  }
  .home-stage .home-pulse-right {
    grid-column: 3;
    order: 0;
  }
}

@media (min-width: 1600px) {
  .home-stage .home-hub {
    --hub-size: min(520px, 32vw);
  }
  .home-stage {
    grid-template-columns: minmax(300px, 380px) auto minmax(300px, 380px);
  }
}


/* === v1.1.46 L36 Job Invoice block + Settlement === */
.job-invoice-block,
.job-settlement-block {
  margin: 0.75rem 0 1rem;
}
.job-invoice-block-body {
  display: flex;
  flex-direction: column;
  gap: 0.85rem;
}
.job-invoice-meta .job-invoice-num {
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  letter-spacing: 0.02em;
}
.job-invoice-dates {
  margin-top: 0.25rem;
  font-size: 0.85rem;
}
.job-invoice-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.55rem 0.75rem;
}
.job-invoice-subhead {
  margin: 0 0 0.45rem;
  font-size: 0.95rem;
  font-weight: 650;
  color: rgba(210, 220, 230, 0.95);
}
.job-invoice-email {
  padding-top: 0.35rem;
  border-top: 1px solid rgba(130, 155, 185, 0.22);
}
.job-settlement-body .job-settlement-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem 1.25rem;
}

/* === v1.1.46 L43 Customer hub columns + filters === */
.customer-hub-columns {
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr);
  gap: 1rem 1.15rem;
  margin: 1rem 0 0.5rem;
  align-items: start;
}
@media (max-width: 800px) {
  .customer-hub-columns {
    grid-template-columns: 1fr;
  }
}
.customer-hub-jobs-header {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem 0.85rem;
}
.customer-hub-jobs-header h2 {
  margin: 0;
  flex: 1 1 auto;
}
.customer-hub-status-latch {
  margin-left: 0;
  flex: 0 0 auto;
}
.customer-hub-status-panel {
  width: min(22rem, calc(100vw - 2.5rem));
}
.customer-hub-status-checks {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.25rem 0.75rem;
}
.customer-hub-range {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  padding: 0.55rem 1rem 0.15rem;
}
.hub-range-chip {
  display: inline-flex;
  align-items: center;
  padding: 0.22rem 0.55rem;
  border-radius: 999px;
  font-size: 0.78rem;
  font-weight: 600;
  text-decoration: none;
  color: rgba(190, 205, 220, 0.9);
  border: 1px solid rgba(130, 155, 185, 0.35);
  background: rgba(130, 155, 185, 0.08);
}
.hub-range-chip:hover {
  border-color: rgba(148, 168, 190, 0.55);
  color: #d5e0ec;
}
.hub-range-chip.active {
  border-color: rgba(245, 166, 35, 0.5);
  color: var(--amber);
  background: rgba(245, 166, 35, 0.1);
}
.customer-hub-range-hint {
  margin: 0.25rem 1rem 0.65rem;
  font-size: 0.78rem;
}
.customer-hub-jobs .customer-hub-jobs-table {
  margin: 0;
}
.customer-hub-notes .notes-panel {
  margin-top: 0;
  height: 100%;
}

/* Compact notes (hub): 1–2 line preview; expand on hover/focus */
.notes-panel--compact .note-entry--compact .note-body {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  overflow: hidden;
  max-height: 2.8em;
  transition: max-height 0.15s ease;
}
.notes-panel--compact .note-entry--compact:hover .note-body,
.notes-panel--compact .note-entry--compact:focus .note-body,
.notes-panel--compact .note-entry--compact:focus-within .note-body {
  display: block;
  -webkit-line-clamp: unset;
  line-clamp: unset;
  max-height: none;
  overflow: visible;
  white-space: pre-wrap;
}
.notes-panel--compact .note-add-form textarea {
  min-height: 3.2rem;
}
.notes-panel--compact .notes-rule {
  font-size: 0.78rem;
}


.visibility-bulk {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  margin: 0.25rem 0 0.45rem;
}
.btn-tiny {
  font-size: 0.72rem;
  padding: 0.18rem 0.55rem;
  line-height: 1.2;
  border-radius: 6px;
  cursor: pointer;
}


.team-mini-map-basemap {
  /* Darken OSM raster so it sits in Silver Disk hub */
  filter: brightness(0.72) contrast(1.05) saturate(0.8);
}
.team-mini-map-basemap-fallback {
  opacity: 0.9;
}

/* ---- v1.2.0 (L85) field lifecycle ---- */
/* Board: Active and no service_date = tinted; dated rows stay calm. */
/* v120c: specificity (0,1,4)/(0,2,4) so the zebra rule `tbody tr:nth-child(even) td` (0,1,3)
   no longer wins on even rows. */
/* Hot build (item 4): stronger blank-date wash, ~60% strength. A darker steel-blue base keeps
   body text (#f5f5f7) at ~8:1 and muted text at ~4.8:1 on the #1e1e1e panel, in flat, nest and
   narrow views alike (same row class everywhere). */
table tbody tr.row-nodate td {
  background: rgba(70, 110, 150, 0.6);
}
table tbody tr.row-nodate td:first-child {
  box-shadow: inset 4px 0 0 rgba(160, 196, 228, 0.95);
}
table tbody tr.row-nodate td .muted {
  color: #d6dde6;
}
table tbody tr.row-unassigned.row-nodate td {
  background: rgba(150, 95, 20, 0.6);
}

/* Job page: field status block inside the Assign panel */
.field-lifecycle-status {
  margin-top: 0.6rem;
  padding-top: 0.5rem;
  border-top: 1px solid var(--border, rgba(255, 255, 255, 0.08));
  font-size: 0.85rem;
  display: grid;
  gap: 0.2rem;
}
.field-lifecycle-status .muted {
  display: inline-block;
  min-width: 7.5rem;
}
.field-lifecycle-status form {
  margin-top: 0.35rem;
}

/* Company: field mail mode radios */
.field-mail-modes {
  border: 0;
  padding: 0;
  margin: 0 0 0.5rem;
  display: grid;
  gap: 0.35rem;
}

/* Public secure-link page (/f/:token) */
.field-link-card {
  max-width: 440px;
}
.field-link-job {
  display: grid;
  grid-template-columns: max-content 1fr;
  gap: 0.3rem 0.85rem;
  margin: 0.75rem 0 1.1rem;
  font-size: 0.92rem;
}
.field-link-job dt {
  opacity: 0.7;
}
.field-link-job dd {
  margin: 0;
}

/* ---- v1.2.0 same-day (v120c): time picker, assign date, toast ---- */
.time-picker {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  flex-wrap: nowrap;
}
.time-picker select,
.assign-sched-time select {
  width: auto;
  min-width: 3.4rem;
  padding-right: 1.4rem;
}
.tp-colon { color: var(--text-secondary, #b8b8bc); }
.board-svc-time { font-size: 0.8rem; white-space: nowrap; }
.cal-time { font-weight: 600; }
fieldset.quick-schedule {
  border: 1px solid rgba(122, 155, 184, 0.35);
  border-radius: 6px;
  padding: 0.5rem 0.75rem 0.25rem;
  margin: 0 0 0.9rem;
}
fieldset.quick-schedule legend { padding: 0 0.35rem; font-weight: 600; }
.quick-schedule-tech { margin: 0.25rem 0 0.35rem; }
.assign-popover { max-height: min(34rem, 85vh); }
.assign-popover-sched {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem 0.6rem;
  padding: 0.45rem 0.55rem 0.2rem;
  border-bottom: 1px solid rgba(192, 192, 192, 0.14);
  font-size: 0.82rem;
}
.assign-sched-date { display: inline-flex; align-items: center; gap: 0.35rem; margin: 0; }
.assign-sched-date input { width: auto; padding: 0.2rem 0.35rem; font-size: 0.82rem; }
.assign-sched-time { display: inline-flex; align-items: center; gap: 0.2rem; }
.assign-sched-time select { font-size: 0.82rem; padding: 0.15rem 1.2rem 0.15rem 0.3rem; min-width: 3rem; }
.assign-sched-label { margin-right: 0.2rem; }
.assign-sched-help { flex-basis: 100%; margin: 0; font-size: 0.75rem; }
.assign-popover-confirm {
  margin: 0.45rem 0.5rem 0;
  padding: 0.45rem 0.55rem;
  border: 1px solid rgba(245, 166, 35, 0.45);
  border-radius: 5px;
  background: rgba(245, 166, 35, 0.08);
  font-size: 0.84rem;
}
.assign-popover-confirm[hidden] { display: none !important; }
.assign-popover-confirm p { margin: 0 0 0.35rem; }
.assign-popover-confirm .assign-error { margin: 0; color: #f0a0a0; }
.assign-toast {
  position: fixed;
  right: 1rem;
  bottom: 1rem;
  z-index: 1300;
  max-width: min(28rem, calc(100vw - 2rem));
  padding: 0.7rem 2rem 0.7rem 0.9rem;
  background: var(--panel, #2a2a2e);
  color: var(--text, #e8e8ea);
  border: 1px solid rgba(122, 155, 184, 0.55);
  border-left: 4px solid var(--amber, #f5a623);
  border-radius: 6px;
  box-shadow: 0 12px 28px rgba(0, 0, 0, 0.45);
  font-size: 0.88rem;
}
.assign-toast-main { font-weight: 600; }
.assign-toast-sub { color: var(--text-secondary, #b8b8bc); margin-top: 0.2rem; }
.assign-toast-close {
  position: absolute; top: 0.3rem; right: 0.4rem;
  background: transparent; border: none; color: inherit; font-size: 1.1rem; cursor: pointer;
}

/* ===== Tech field surface (tech landing; phone-first, Silver Disk) ===== */
.tech-body main.tech-main { max-width: 760px; margin: 0 auto; padding: 1rem 1rem 2.5rem; }
.tech-header { flex-wrap: nowrap; }
.tech-header .brand-text .product { letter-spacing: 0.08em; text-transform: uppercase; }
.tech-tabs {
  position: sticky; top: 0; z-index: 20;
  display: flex; gap: 0.35rem; justify-content: center;
  padding: 0.5rem 0.75rem;
  background: rgba(18, 18, 18, 0.94);
  border-bottom: var(--hairline);
  backdrop-filter: blur(6px);
}
.tech-tab {
  flex: 1 1 0; max-width: 200px; text-align: center;
  padding: 0.55rem 0.5rem; border-radius: 999px;
  border: 1px solid var(--border); background: var(--panel-gradient);
  color: var(--text-secondary); font-weight: 600; font-size: 0.95rem;
}
.tech-tab:hover { text-decoration: none; color: var(--text); }
.tech-tab.active { color: #1a1a1a; background: var(--amber); border-color: var(--amber-dark); }
.tech-h1 { font-size: 1.45rem; margin: 0.4rem 0 0.2rem; display: flex; gap: 0.6rem; align-items: center; flex-wrap: wrap; }
.tech-sub { margin-bottom: 0.9rem; }
.tech-back { margin: 0.2rem 0 0.4rem; }
.tech-back a { color: var(--text-secondary); }
.tech-panel { margin: 0 0 1rem; }
.tech-panel-body { padding: 0.9rem 1.1rem 1.05rem; }
.tech-count { color: var(--text-secondary); font-weight: 500; font-size: 0.85em; margin-left: 0.3rem; }
.tech-list { display: flex; flex-direction: column; }
.tech-job {
  display: block; padding: 0.8rem 1.1rem; border-top: 1px solid var(--border-soft);
  min-height: 56px;
}
.tech-job:first-child { border-top: 0; }
.tech-job:hover { text-decoration: none; background: rgba(255, 255, 255, 0.03); }
.tech-job-top { display: flex; gap: 0.5rem; align-items: center; flex-wrap: wrap; }
.tech-job-no { font-weight: 700; letter-spacing: 0.02em; }
.tech-job-title { margin-top: 0.15rem; color: var(--text); }
.tech-job-meta { display: flex; justify-content: space-between; gap: 0.75rem; flex-wrap: wrap; color: var(--text-secondary); font-size: 0.9rem; margin-top: 0.15rem; }
.tech-nodate { color: var(--amber); font-weight: 600; }
.tech-empty { padding: 0.9rem 1.1rem; }
.tech-big { font-size: 1.12rem; margin-bottom: 0.6rem; }
.tech-dl { display: grid; grid-template-columns: max-content 1fr; gap: 0.35rem 1rem; }
.tech-dl dt { color: var(--text-secondary); }
.tech-dl dd a { color: var(--amber); }
.tech-items { list-style: none; }
.tech-items li { padding: 0.35rem 0; border-top: 1px solid var(--border-soft); }
.tech-items li:first-child { border-top: 0; }
.tech-qty { color: var(--text-secondary); display: inline-block; min-width: 2.5rem; }
.tech-form { display: flex; flex-direction: column; gap: 0.75rem; max-width: 420px; }
.tech-form label { display: flex; flex-direction: column; gap: 0.3rem; color: var(--text-secondary); }
.tech-form input, .tech-form select { font-size: 1rem; min-height: 44px; }
.tech-form .btn { min-height: 44px; align-self: flex-start; }
.tech-fine { font-size: 0.85rem; margin-top: 0.5rem; }
.tech-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.6rem; margin-bottom: 0.6rem; }
.tech-stat { border: var(--hairline); border-radius: var(--radius); background: var(--panel-gradient); padding: 0.7rem 0.8rem; display: flex; flex-direction: column; }
.tech-stat-n { font-size: 1.5rem; font-weight: 700; }
.tech-stat-s { font-size: 1rem; }
.tech-scroll { overflow-x: auto; }
.tech-table { width: 100%; border-collapse: collapse; font-size: 0.95rem; }
.tech-table th, .tech-table td { text-align: left; padding: 0.45rem 0.5rem; border-bottom: 1px solid var(--border-soft); white-space: nowrap; }
.tech-table th { color: var(--text-secondary); font-weight: 600; font-size: 0.85rem; }
.tech-table a { color: var(--amber); }
@media (max-width: 560px) {
  .tech-header { padding: 0.6rem 0.75rem; }
  .tech-header .brand-logo { width: 30px; height: 30px; }
  .tech-header .header-role-tag { display: none; }
  .tech-body main.tech-main { padding: 0.75rem 0.6rem 2rem; }
  .tech-tab { font-size: 0.9rem; padding: 0.55rem 0.3rem; }
  .tech-dl { grid-template-columns: 1fr; gap: 0.1rem; }
  .tech-dl dd { margin-bottom: 0.45rem; }
  .tech-table th:nth-child(3), .tech-table td:nth-child(3) { display: none; }
}

/* Hot build (item 3): board inline service date/time */
.board-sched { margin-top: 0.25rem; }
.board-sched > summary { cursor: pointer; font-size: 0.85em; list-style: none; }
.board-sched > summary::-webkit-details-marker { display: none; }
.board-sched-form { display: flex; flex-wrap: wrap; gap: 0.4rem; align-items: flex-end; margin-top: 0.35rem; }
.board-sched-form label { font-size: 0.8em; }
.board-sched-hint { font-size: 0.8em; margin-top: 0.2rem; }
