:root {
  --ink: #173f35;
  --ink-2: #28594c;
  --paper: #f5f2ea;
  --panel: #fffefa;
  --line: #dedbd1;
  --muted: #6d7772;
  --mint: #dcece3;
  --mint-strong: #2e705d;
  --amber: #f4dfae;
  --coral: #eb765d;
  --blue: #dce7ec;
  --red: #b94b3f;
  --shadow: 0 12px 40px rgba(23, 63, 53, 0.08);
  --radius: 18px;
}

* {
  box-sizing: border-box;
}

/* ER-style technician service workflow */
.detail-record-bar {
  grid-template-columns: minmax(220px, .8fr) minmax(0, 1.2fr);
}

.detail-service-tags {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 7px;
}

.detail-service-tags span {
  max-width: 100%;
  padding: 8px 10px;
  overflow: hidden;
  border: 1px solid #cfe1da;
  border-radius: 999px;
  color: #174f40;
  background: #edf6f2;
  font-size: 10px;
  font-weight: 850;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.detail-customer-card {
  display: grid;
  gap: 4px;
  margin-top: 12px;
  padding: 11px 12px;
  border-left: 4px solid var(--mint-strong);
  border-radius: 10px;
  background: rgba(255,255,255,.82);
}

.detail-customer-card > strong {
  font-size: 15px;
}

.detail-customer-card > span,
.detail-customer-card > div span {
  color: var(--muted);
  font-size: 11px;
  line-height: 1.4;
}

.detail-customer-card > div {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 14px;
}

.detail-issue-summary {
  display: grid;
  grid-template-columns: auto auto minmax(0, 1fr);
  align-items: baseline;
  gap: 7px 10px;
  margin-top: 10px;
  color: var(--ink);
}

.detail-issue-summary small {
  color: var(--muted);
  font-size: 9px;
  font-weight: 850;
  letter-spacing: .05em;
  text-transform: uppercase;
}

.detail-issue-summary strong,
.detail-issue-summary span {
  font-size: 11px;
  line-height: 1.45;
}

.compact-address-tools {
  margin-top: 8px;
}

#detail-visits-panel:not(.hidden) {
  display: grid;
  gap: 14px;
}

#detail-visits-panel .visit-form {
  margin-top: 0;
  border-color: #b9d7cb;
  background: linear-gradient(135deg, #f8fbf9, #eef6f2);
}

.service-core-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 11px;
}

.service-core-grid label,
.service-advanced-fields label {
  min-width: 0;
}

.service-core-grid input,
.service-core-grid select,
.service-core-grid textarea {
  width: 100%;
  min-width: 0;
  max-width: 100%;
}

.service-span-2 {
  grid-column: 1 / -1;
}

.service-save-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(360px, 410px);
  align-items: center;
  gap: 12px;
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid #cfe1da;
}

.service-save-row #service-save-context {
  color: var(--muted);
  font-size: 10px;
  line-height: 1.45;
}

.service-visit-guidance {
  display: grid;
  gap: 4px;
}

.service-visit-guidance strong {
  color: #0b554d;
  font-size: 13px;
  font-weight: 900;
  letter-spacing: .035em;
}

.service-visit-guidance span {
  color: #3f625c;
  font-size: 11px;
}

.service-save-actions {
  --service-action-height: 56px;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  align-items: stretch;
}

.service-save-actions > * {
  box-sizing: border-box;
  width: 100%;
  min-width: 0;
  height: var(--service-action-height);
  min-height: var(--service-action-height);
  margin: 0;
}

.service-save-actions button {
  white-space: normal;
}

.service-save-actions .visited-action-button {
  display: flex !important;
  box-sizing: border-box;
  flex-flow: row nowrap;
  align-items: center;
  justify-content: center;
  gap: 8px;
  margin: 0;
  padding: 0 12px;
  border: 1px solid #087d71;
  border-radius: 10px;
  background: #fff;
  color: #075f57;
  font-size: 12px;
  font-weight: 800;
  line-height: 1.2;
  text-align: center;
  white-space: normal;
  overflow: hidden;
  cursor: pointer;
  transition: background-color .15s ease, border-color .15s ease, color .15s ease, box-shadow .15s ease;
}

.visited-action-button:hover {
  background: #eff9f6;
}

.visited-action-button:focus-within {
  outline: 3px solid rgba(8, 125, 113, .2);
  outline-offset: 2px;
}

.visited-action-button:has(input:checked) {
  border-color: #087d71;
  background: #087d71;
  color: #fff;
  box-shadow: 0 6px 14px rgba(8, 125, 113, .18);
}

.visited-action-button input {
  width: 18px;
  min-width: 18px;
  height: 18px;
  min-height: 18px;
  margin: 0;
  accent-color: #087d71;
}

.service-advanced-fields,
.service-history-details {
  border: 1px solid var(--line);
  border-radius: 12px;
  background: rgba(255,255,255,.75);
}

.service-advanced-fields {
  margin-top: 12px;
}

.service-advanced-fields > summary,
.service-history-details > summary {
  min-height: 44px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 10px 12px;
  font-size: 11px;
  font-weight: 850;
  cursor: pointer;
}

.service-advanced-fields > .visit-er-grid,
.service-history-details > .visit-timeline,
.service-history-details > .detail-related-list {
  margin: 0;
  padding: 0 12px 12px;
}

.service-photo-workspace {
  padding: 14px;
  border: 1px solid #b9d7cb;
  border-radius: 14px;
  background: #f8fbf9;
}

.service-photo-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 10px;
}

.service-photo-heading span,
.service-photo-heading strong {
  display: block;
}

.service-photo-heading span {
  color: var(--mint-strong);
  font-size: 9px;
  font-weight: 900;
  letter-spacing: .11em;
}

.service-photo-heading strong {
  margin-top: 2px;
  font-size: 13px;
}

.service-photo-heading small,
.service-history-details summary strong {
  color: var(--muted);
  font-size: 10px;
}

.service-photo-workspace .attachment-form {
  margin-bottom: 11px;
  padding: 12px;
}

.service-secondary-workspace > summary {
  list-style: none;
  cursor: pointer;
}

.service-secondary-workspace > summary::-webkit-details-marker {
  display: none;
}

.service-secondary-workspace > summary::after {
  content: "+";
  color: var(--mint-strong);
  font-size: 18px;
  font-weight: 900;
}

.service-secondary-workspace[open] > summary::after {
  content: "−";
}

@media screen and (max-width: 820px) {
  .service-save-row {
    grid-template-columns: 1fr;
  }

  .service-save-actions {
    width: 100%;
  }

  .ticket-detail-modal.technician-detail {
    width: calc(100vw - 10px);
    max-width: none;
    max-height: calc(100dvh - 10px);
    padding: 10px;
    border-radius: 14px;
  }

  .technician-detail .related-ticket-alert,
  .technician-detail .location-privacy-note {
    display: none !important;
  }

  .technician-detail .detail-ticket-head {
    padding: 10px 42px 10px 10px;
    border-radius: 12px;
  }

  .technician-detail .detail-record-bar {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 8px;
  }

  .technician-detail .detail-ticket-identity h2 {
    margin: 2px 0;
    font-size: 18px;
  }

  .technician-detail .detail-ticket-identity small {
    font-size: 9px;
  }

  .technician-detail .detail-service-tags {
    max-width: 46%;
    justify-content: flex-end;
  }

  .technician-detail .detail-service-tags span {
    padding: 5px 7px;
    font-size: 8px;
  }

  .technician-detail .detail-customer-card {
    margin-top: 8px;
    padding: 8px 9px;
  }

  .technician-detail .detail-customer-card > strong {
    font-size: 14px;
  }

  .technician-detail .detail-customer-card > span,
  .technician-detail .detail-customer-card > div span {
    font-size: 10px;
  }

  .technician-detail .detail-issue-summary {
    grid-template-columns: 1fr;
    gap: 2px;
    margin-top: 8px;
  }

  .technician-detail .ticket-detail-contact-actions {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 6px;
    margin-top: 8px;
  }

  .technician-detail .ticket-detail-contact-actions a {
    min-height: 38px;
    display: grid;
    padding: 6px;
    place-items: center;
    text-align: center;
  }

  .technician-detail .ticket-address-tools {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .technician-detail .ticket-detail-modal .detail-tabs,
  .technician-detail.detail-tabs {
    margin: 8px 0;
  }

  .technician-detail .detail-tabs {
    gap: 4px;
    padding-bottom: 6px;
  }

  .technician-detail .detail-tab {
    min-height: 40px;
    padding: 7px 9px;
    font-size: 10px;
  }

  .technician-detail .visit-form,
  .technician-detail .service-photo-workspace {
    padding: 11px;
    border-radius: 12px;
  }

  .technician-detail .visit-form-heading {
    display: block;
    margin-bottom: 10px;
  }

  .technician-detail .visit-form-heading h3 {
    font-size: 15px;
  }

  .technician-detail .visit-form-heading small {
    display: block;
    margin-top: 3px;
    font-size: 9px;
  }

  .technician-detail .service-core-grid {
    gap: 8px;
  }

  .technician-detail .service-core-grid label:has([name="repairStatus"]),
  .technician-detail .service-core-grid label:has([name="result"]) {
    grid-column: 1 / -1;
  }

  .technician-detail .service-core-grid textarea {
    min-height: 74px;
  }

  .technician-detail .service-save-row {
    position: static;
    bottom: auto;
    z-index: auto;
    grid-template-columns: 1fr;
    gap: 6px;
    margin: 10px -11px 0;
    padding: 9px 11px 11px;
    border-color: #b9d7cb;
    background: rgba(238,247,243,.98);
    box-shadow: none;
  }

  .technician-detail .service-save-row #service-save-context {
    font-size: 9px;
    text-align: center;
  }

  .technician-detail .service-save-actions {
    width: 100%;
  }

  .technician-detail .service-save-row .primary-button,
  .technician-detail .visited-action-button {
    width: 100%;
    min-height: 48px;
  }

  .technician-detail .service-advanced-fields > .visit-er-grid {
    grid-template-columns: 1fr;
  }

  .technician-detail .service-advanced-fields .visit-span-2 {
    grid-column: 1;
  }

  .technician-detail .service-photo-heading {
    align-items: flex-start;
    flex-direction: column;
  }

  .technician-detail .attachment-form {
    grid-template-columns: 1fr;
    gap: 8px;
    padding: 9px;
  }

  .technician-detail .attachment-form .primary-button {
    width: 100%;
    min-height: 44px;
  }

  .technician-detail .attachment-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 7px;
  }

  .technician-detail .attachment-card {
    border-radius: 10px;
  }

  .technician-detail .attachment-preview img {
    height: 84px;
  }

  .technician-detail .attachment-type-field {
    padding: 7px;
    font-size: 9px;
  }

  .technician-detail .attachment-type-field select {
    min-height: 36px;
    font-size: 9px;
  }

  .technician-detail .service-parts-workspace,
  .technician-detail .claim-transaction-workspace {
    margin-top: 0;
  }
}

@media screen and (max-width: 440px) {
  .technician-detail .detail-service-tags span:nth-child(2) {
    display: none;
  }

  .technician-detail .attachment-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

[hidden] {
  display: none !important;
}

html {
  background: var(--paper);
}

body {
  margin: 0;
  overflow-x: hidden;
  color: var(--ink);
  background:
    radial-gradient(circle at 90% 8%, rgba(220, 236, 227, 0.7), transparent 25rem),
    var(--paper);
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  -webkit-font-smoothing: antialiased;
}

button,
input,
select,
textarea {
  font: inherit;
}

button {
  color: inherit;
}

.auth-gate {
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: 22px;
  background:
    radial-gradient(circle at 20% 10%, rgba(220,236,227,.9), transparent 30rem),
    linear-gradient(145deg, #f8f6ef, #e8efe9);
}

.auth-card {
  width: min(440px, 100%);
  padding: 34px;
  border: 1px solid rgba(23,63,53,.14);
  border-radius: 24px;
  background: rgba(255,254,250,.96);
  box-shadow: 0 28px 90px rgba(23,63,53,.16);
}

.auth-card .brand-mark,
.auth-brand-logo-frame {
  margin-bottom: 25px;
}

.auth-brand-logo-frame {
  position: relative;
  width: 190px;
  height: 54px;
  overflow: hidden;
  border: 1px solid rgba(23,63,53,.14);
  border-radius: 13px;
  background: #fff;
  box-shadow: 0 8px 24px rgba(23,63,53,.08);
}

.auth-brand-logo {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
  object-position: center 52%;
}

.auth-card h1 {
  margin: 8px 0 9px;
  font-size: 30px;
}

.auth-card > p {
  margin: 0 0 22px;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.65;
}

.auth-card form {
  display: grid;
  gap: 12px;
}

.auth-mode-switch {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 4px;
  margin-bottom: 16px;
  padding: 4px;
  border-radius: 12px;
  background: #efede6;
}

.auth-mode-switch button {
  min-height: 36px;
  border: 0;
  border-radius: 9px;
  color: var(--muted);
  background: transparent;
  font-size: 10px;
  font-weight: 850;
  cursor: pointer;
}

.auth-mode-switch button.active {
  color: white;
  background: var(--ink);
}

.auth-help-button {
  justify-self: center;
  padding: 4px 0;
  font-size: 9px;
}

.auth-card label {
  display: grid;
  gap: 7px;
  color: var(--muted);
  font-size: 10px;
  font-weight: 800;
}

.auth-card input {
  width: 100%;
  min-height: 45px;
  padding: 0 12px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: white;
}

.auth-card .verification-code-input {
  min-height: 56px;
  text-align: center;
  font-size: 25px;
  font-weight: 850;
  letter-spacing: .32em;
}

.code-sent-to {
  padding: 10px 12px;
  color: var(--ink-2);
  border-radius: 10px;
  background: var(--mint);
  font-size: 10px;
}

.code-sent-to strong {
  display: block;
  margin-top: 3px;
  overflow-wrap: anywhere;
}

.auth-secondary-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 8px;
}

.auth-secondary-actions .text-button {
  padding: 6px 0;
}

.auth-message {
  margin-top: 14px;
  padding: 11px;
  color: var(--muted);
  border-radius: 10px;
  background: #f4f2ec;
  font-size: 9px;
  line-height: 1.5;
}

.auth-message.success {
  color: #235f4d;
  background: var(--mint);
}

.auth-message.error {
  color: #923f37;
  background: #f9dfdc;
}

.app-shell {
  min-height: 100vh;
}

body[data-app-surface="app"] .auth-gate,
body[data-app-surface="auth"] .app-shell,
body[data-app-surface="pending"] .auth-gate,
body[data-app-surface="pending"] .app-shell {
  display: none !important;
  visibility: hidden !important;
  pointer-events: none !important;
}

.sidebar {
  position: fixed;
  inset: 0 auto 0 0;
  z-index: 30;
  width: 248px;
  display: flex;
  flex-direction: column;
  padding: 28px 20px 22px;
  color: #f8f6ef;
  background:
    linear-gradient(160deg, rgba(255,255,255,.04), transparent 40%),
    var(--ink);
}

.brand {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 0 9px 30px;
}

.brand-identity {
  display: grid;
  min-width: 0;
  gap: 6px;
}

.apex-home-link {
  color: inherit;
  text-decoration: none;
  border-radius: 10px;
}

.apex-home-link:focus-visible {
  outline: 3px solid #218978;
  outline-offset: 5px;
}

.brand-logo-frame {
  position: relative;
  width: 142px;
  height: 40px;
  overflow: hidden;
  border: 1px solid rgba(255,255,255,.24);
  border-radius: 10px;
  background: #fff;
  box-shadow: 0 8px 24px rgba(0,0,0,.14);
}

.brand-logo-image {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
  object-position: center 52%;
}

.brand .brand-environment {
  margin: 0;
  justify-self: end;
  padding-right: 2px;
  color: #c9d9d4;
  font-size: 1.125rem;
  font-weight: 850;
  letter-spacing: .12em;
  line-height: 1;
  text-transform: uppercase;
}

.sidebar-close,
.sidebar-backdrop {
  display: none;
}

.brand-mark {
  width: 42px;
  height: 42px;
  display: grid;
  place-items: center;
  color: var(--ink);
  background: #f7c46d;
  border-radius: 13px 13px 13px 4px;
  font-size: 22px;
  font-weight: 900;
}

.brand strong,
.brand span {
  display: block;
}

.brand strong {
  letter-spacing: .08em;
}

.brand span {
  margin-top: 3px;
  color: #a9c2ba;
  font-size: 12px;
}

.nav-list {
  display: grid;
  gap: 5px;
}

.nav-item {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 12px;
  min-height: 45px;
  padding: 0 13px;
  color: #bfd0ca;
  border: 0;
  border-radius: 12px;
  background: transparent;
  text-align: left;
  cursor: pointer;
  transition: .18s ease;
}

.nav-icon,
.nav-rail {
  width: 20px;
  text-align: center;
  flex: 0 0 20px;
}

.nav-icon {
  height: 20px;
  display: grid;
  place-items: center;
  border: 1px solid rgba(255,255,255,.2);
  border-radius: 6px;
  font-size: 8px;
  font-weight: 900;
  letter-spacing: .04em;
}

.nav-label {
  min-width: 0;
  flex: 1;
}

.nav-primary {
  margin-top: 3px;
  font-weight: 800;
}

.nav-subitem {
  min-height: 35px;
  padding-left: 22px;
  font-size: 11px;
}

.nav-rail {
  width: 1px;
  height: 16px;
  margin-left: 10px;
  border-radius: 999px;
  background: rgba(255,255,255,.22);
  flex-basis: 1px;
}

.nav-subitem:hover .nav-rail,
.nav-subitem.active .nav-rail {
  background: #f7c46d;
}

.nav-item:hover,
.nav-item.active {
  color: white;
  background: rgba(255,255,255,.11);
}

.nav-count {
  margin-left: auto;
  min-width: 23px;
  padding: 3px 6px;
  color: var(--ink);
  background: #f7c46d;
  border-radius: 999px;
  text-align: center;
  font-size: 11px;
}

.sidebar-foot {
  margin-top: auto;
  padding: 16px 10px 0;
  border-top: 1px solid rgba(255,255,255,.12);
}

.privacy-chip {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 12px;
  font-weight: 750;
}

.privacy-chip i,
.sync-status i {
  width: 8px;
  height: 8px;
  background: #70d29f;
  border-radius: 999px;
  box-shadow: 0 0 0 4px rgba(112,210,159,.12);
}

.sidebar-foot p {
  margin: 8px 0 0;
  color: #9db4ad;
  font-size: 11px;
  line-height: 1.5;
}

.main {
  margin-left: 248px;
  min-width: 0;
}

.topbar {
  min-height: 90px;
  display: flex;
  align-items: center;
  gap: 22px;
  padding: 19px 34px;
  border-bottom: 1px solid rgba(23,63,53,.12);
  background: var(--paper);
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
  position: sticky;
  top: 0;
  z-index: 20;
}

.eyebrow,
.section-kicker {
  margin: 0;
  color: var(--muted);
  font-size: 10px;
  font-weight: 850;
  letter-spacing: .13em;
}

.topbar h1 {
  margin: 4px 0 0;
  font-size: 20px;
  letter-spacing: -.02em;
}

.top-actions {
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: 11px;
}

.workspace-mode-switch {
  display: flex;
  gap: 3px;
  padding: 3px;
  border: 1px solid var(--line);
  border-radius: 11px;
  background: rgba(255,255,255,.65);
}

.workspace-mode-switch button {
  min-height: 30px;
  padding: 0 10px;
  border: 0;
  border-radius: 8px;
  color: var(--muted);
  background: transparent;
  font-size: 10px;
  font-weight: 850;
  cursor: pointer;
}

.workspace-mode-switch button.active {
  color: white;
  background: var(--ink);
}

.test-workspace-banner {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 34px;
  color: #4f390a;
  border-bottom: 1px solid #dfb64e;
  background: #fff0b8;
  font-size: 11px;
}

.test-workspace-banner strong {
  padding: 4px 7px;
  border-radius: 6px;
  color: white;
  background: #9b6500;
  font-size: 9px;
  letter-spacing: .08em;
}

.test-workspace-banner b {
  margin-left: auto;
  white-space: nowrap;
}

.account-access-banner {
  display: flex;
  min-height: 56px;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 10px 34px;
  color: #3f2c06;
  border-bottom: 1px solid #d6a842;
  background: linear-gradient(100deg, #fff0bc, #fff9e8);
}

.account-access-banner > div {
  display: grid;
  gap: 2px;
}

.account-access-banner strong {
  font-size: 11px;
  letter-spacing: .08em;
}

.account-access-banner span {
  font-size: 12px;
}

.account-access-banner .soft-button {
  flex: 0 0 auto;
  border-color: #c5942d;
  background: #fff;
}

body.test-workspace .sidebar {
  box-shadow: inset -4px 0 #efbd45;
}

body.test-workspace .privacy-chip i {
  background: #efbd45;
  box-shadow: 0 0 0 4px rgba(239,189,69,.16);
}

body.test-workspace a[target="_blank"],
body.test-workspace a[href^="tel:"],
body.test-workspace a[href^="sms:"],
body.test-workspace a[href^="mailto:"] {
  cursor: not-allowed;
}

.portal-card.portal-disabled {
  border-color: #dfb64e;
  opacity: .62;
}

.portal-card.portal-disabled b::before {
  content: "Test-safe · ";
}

.sync-status {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 12px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: rgba(255,255,255,.55);
  color: var(--muted);
  font-size: 12px;
}

.role-picker {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.role-picker span {
  color: var(--muted);
  font-size: 9px;
}

.role-picker select,
#mobile-tech-select {
  border: 0;
  background: transparent;
  color: var(--ink);
  font-weight: 750;
}

.primary-button,
.soft-button,
.text-button,
.date-button,
.date-display,
.filter-chip {
  border: 0;
  cursor: pointer;
}

.primary-button {
  padding: 11px 16px;
  color: white;
  background: var(--ink);
  border-radius: 11px;
  box-shadow: 0 6px 18px rgba(23,63,53,.16);
  font-size: 12px;
  font-weight: 750;
}

.primary-button:hover {
  background: var(--ink-2);
}

.soft-button {
  padding: 9px 12px;
  color: var(--ink);
  background: var(--mint);
  border-radius: 10px;
  font-size: 12px;
  font-weight: 750;
}

.text-button {
  padding: 8px 0;
  color: var(--ink-2);
  background: transparent;
  font-size: 12px;
  font-weight: 800;
}

.mobile-menu {
  display: none;
  border: 0;
  background: transparent;
  font-size: 23px;
}

.view {
  display: none;
  padding: 32px 34px 48px;
  animation: none;
}

.view.active {
  display: block;
  opacity: 1;
  transform: none;
  isolation: isolate;
}

body.same-tab-navigation-pending {
  overflow: hidden !important;
  background: #e7eee9 !important;
}

body.same-tab-navigation-pending > * {
  visibility: hidden !important;
}

.hero-card {
  min-height: 212px;
  display: flex;
  align-items: flex-end;
  gap: 30px;
  overflow: hidden;
  padding: 34px;
  position: relative;
  color: #f9f8f2;
  border-radius: 24px;
  background:
    radial-gradient(circle at 86% 20%, rgba(247,196,109,.28), transparent 13rem),
    linear-gradient(132deg, #173f35 10%, #2e6657 100%);
  box-shadow: var(--shadow);
}

.hero-card::after {
  content: "";
  position: absolute;
  width: 260px;
  height: 260px;
  right: -70px;
  top: -110px;
  border: 1px solid rgba(255,255,255,.15);
  border-radius: 50%;
  box-shadow: 0 0 0 32px rgba(255,255,255,.04), 0 0 0 64px rgba(255,255,255,.025);
}

.hero-copy {
  max-width: 560px;
  min-width: 0;
  position: relative;
  z-index: 1;
}

.hero-copy .section-kicker {
  color: #b9d2c9;
}

.hero-copy h2 {
  max-width: 520px;
  margin: 12px 0 10px;
  font-size: clamp(29px, 4vw, 46px);
  line-height: 1.04;
  letter-spacing: -.045em;
}

.hero-copy p {
  max-width: 520px;
  margin: 0;
  color: #c8dbd5;
  font-size: 14px;
  line-height: 1.6;
}

.hero-stat {
  margin-left: auto;
  position: relative;
  z-index: 2;
  min-width: 150px;
  padding: 20px;
  border: 1px solid rgba(255,255,255,.16);
  border-radius: 18px;
  background: rgba(255,255,255,.08);
  backdrop-filter: blur(8px);
}

.hero-stat span,
.hero-stat small,
.hero-stat strong {
  display: block;
}

.hero-stat span,
.hero-stat small {
  color: #c6d7d2;
  font-size: 11px;
}

.hero-stat strong {
  margin: 4px 0;
  font-size: 42px;
}

.metric-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
  margin: 16px 0;
}

.work-queue {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin: 16px 0 0;
}

.work-queue-card {
  min-height: 112px;
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: start;
  gap: 6px 12px;
  padding: 16px;
  color: var(--ink);
  border: 1px solid rgba(23,63,53,.12);
  border-radius: 15px;
  background: rgba(255,254,250,.92);
  text-align: left;
  cursor: pointer;
  transition: transform .16s ease, border-color .16s ease, box-shadow .16s ease;
}

.work-queue-card:hover,
.work-queue-card:focus-visible {
  transform: translateY(-2px);
  border-color: var(--mint-strong);
  box-shadow: 0 10px 26px rgba(23,63,53,.08);
  outline: none;
}

.work-queue-card span {
  color: var(--muted);
  font-size: 9px;
  font-weight: 900;
  letter-spacing: .08em;
}

.work-queue-card strong {
  grid-row: 1 / 3;
  grid-column: 2;
  font-size: 28px;
  line-height: 1;
}

.work-queue-card small {
  color: var(--muted);
  font-size: 10px;
  line-height: 1.45;
}

.metric-card {
  min-height: 138px;
  padding: 18px;
  border: 1px solid rgba(23,63,53,.1);
  border-radius: var(--radius);
  background: rgba(255,254,250,.88);
}

.metric-card span,
.metric-card small,
.metric-card strong {
  display: block;
}

.metric-card span {
  margin-top: 12px;
  color: var(--muted);
  font-size: 11px;
}

.metric-card strong {
  margin-top: 2px;
  font-size: 27px;
}

.metric-card small {
  margin-top: 3px;
  color: #8b918e;
  font-size: 10px;
}

.metric-icon {
  width: 31px;
  height: 31px;
  display: grid;
  place-items: center;
  border-radius: 9px;
  font-weight: 900;
}

.metric-icon.mint { background: var(--mint); }
.metric-icon.amber { background: var(--amber); }
.metric-icon.blue { background: var(--blue); }
.metric-icon.coral { background: #f4d7d1; }

.dashboard-grid {
  display: grid;
  grid-template-columns: 1.15fr .85fr;
  gap: 16px;
}

.panel {
  border: 1px solid rgba(23,63,53,.1);
  border-radius: var(--radius);
  background: rgba(255,254,250,.9);
  box-shadow: 0 4px 22px rgba(23,63,53,.035);
}

.panel-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 18px;
  padding: 20px 22px 16px;
}

.panel h3,
.page-intro h2 {
  margin: 5px 0 0;
  letter-spacing: -.025em;
}

.brief-list,
.priority-list {
  padding: 0 22px 8px;
}

.brief-item {
  display: grid;
  grid-template-columns: 29px 1fr auto;
  gap: 12px;
  align-items: flex-start;
  padding: 15px 0;
  border-top: 1px solid var(--line);
}

.brief-rank {
  width: 26px;
  height: 26px;
  display: grid;
  place-items: center;
  border-radius: 8px;
  background: var(--mint);
  font-size: 11px;
  font-weight: 850;
}

.brief-item strong,
.brief-item small {
  display: block;
}

.brief-item strong {
  font-size: 13px;
}

.brief-item small {
  margin-top: 4px;
  color: var(--muted);
  line-height: 1.45;
}

.impact {
  padding: 5px 8px;
  border-radius: 999px;
  background: #eef3ef;
  color: var(--ink-2);
  font-size: 9px;
  font-weight: 800;
  white-space: nowrap;
}

.ai-brief .text-button {
  margin: 0 22px 14px;
}

.recommend-chip,
.safety-badge {
  padding: 7px 10px;
  border-radius: 999px;
  background: var(--mint);
  color: var(--ink-2);
  font-size: 10px;
  font-weight: 800;
  white-space: nowrap;
}

.priority-item {
  display: flex;
  gap: 12px;
  padding: 14px 0;
  border-top: 1px solid var(--line);
}

.priority-dot {
  flex: 0 0 auto;
  width: 9px;
  height: 9px;
  margin-top: 4px;
  border-radius: 50%;
  background: var(--amber);
}

.priority-dot.critical { background: var(--coral); }
.priority-item strong,
.priority-item small { display: block; }
.priority-item strong { font-size: 12px; }
.priority-item small { margin-top: 4px; color: var(--muted); font-size: 10px; line-height: 1.45; }

.technician-load {
  margin-top: 16px;
}

.subtle {
  color: var(--muted);
  font-size: 10px;
}

.tech-load-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0,1fr));
  gap: 12px;
  padding: 0 20px 20px;
}

.tech-load-card {
  padding: 15px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: #fbfaf5;
}

.tech-load-card header {
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.avatar {
  width: 31px;
  height: 31px;
  display: grid;
  place-items: center;
  color: white;
  background: var(--ink-2);
  border-radius: 50%;
  font-size: 11px;
  font-weight: 850;
}

.tech-load-card h4 {
  margin: 11px 0 2px;
}

.tech-load-card p {
  margin: 0;
  min-height: 30px;
  color: var(--muted);
  font-size: 10px;
  line-height: 1.4;
}

.load-bar {
  height: 5px;
  margin: 12px 0 8px;
  overflow: hidden;
  border-radius: 999px;
  background: #e5e5df;
}

.load-bar i {
  display: block;
  height: 100%;
  background: var(--mint-strong);
  border-radius: inherit;
}

.load-meta {
  display: flex;
  justify-content: space-between;
  color: var(--muted);
  font-size: 9px;
}

.page-intro {
  display: flex;
  align-items: flex-end;
  gap: 30px;
  justify-content: space-between;
  margin-bottom: 24px;
}

.page-intro h2 {
  font-size: 34px;
}

.page-intro p {
  max-width: 720px;
  margin: 8px 0 0;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.55;
}

.page-action-group {
  display: flex;
  align-items: center;
  gap: 9px;
}

.portal-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
}

.portal-card {
  min-height: 250px;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  padding: 24px;
  color: var(--ink);
  border: 1px solid var(--line);
  border-radius: 18px;
  background: var(--panel);
  box-shadow: 0 8px 30px rgba(23, 63, 53, .05);
  text-decoration: none;
  transition: .18s ease;
}

.portal-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow);
}

.portal-icon {
  width: 56px;
  height: 56px;
  display: grid;
  place-items: center;
  margin-bottom: 22px;
  border-radius: 14px;
  color: white;
  background: var(--ink);
  font-weight: 900;
  font-size: 16px;
}

.portal-card.servicebench .portal-icon { background: #273d72; }
.portal-card.cinch .portal-icon { background: #4cae57; }
.portal-card.maps .portal-icon { background: #d45d4f; }

.portal-card h3 {
  margin: 7px 0 9px;
  font-size: 25px;
  line-height: 1.12;
  letter-spacing: -.025em;
}

.portal-card p {
  margin: 0;
  color: #4d5b56;
  font-size: 14px;
  line-height: 1.48;
  font-weight: 550;
}

.portal-card b {
  margin-top: auto;
  padding-top: 24px;
  color: var(--mint-strong);
  font-size: 14px;
  font-weight: 850;
}

.portal-card .section-kicker {
  font-size: 11px;
  line-height: 1.25;
  letter-spacing: .09em;
  font-weight: 850;
}

.portal-note {
  margin-top: 15px;
}

.dispatch-toolbar {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 13px;
}

.planner-status-legend {
  display: flex;
  justify-content: flex-end;
  gap: 14px;
  margin: -2px 3px 12px;
  color: var(--muted);
  font-size: 9px;
}

.planner-status-legend span {
  display: flex;
  align-items: center;
  gap: 5px;
}

.planner-status-legend i {
  width: 9px;
  height: 9px;
  border-radius: 3px;
}

.planner-status-legend .pending { background: #ad7544; }
.planner-status-legend .complete { background: #4e7a62; }

.route-planner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 22px;
  margin-bottom: 14px;
  padding: 17px 19px;
  border: 1px solid rgba(23, 63, 53, .12);
  border-radius: 15px;
  background:
    linear-gradient(100deg, rgba(220,236,227,.82), rgba(255,254,250,.9));
}

.route-planner h3 {
  margin: 5px 0 3px;
  font-size: 14px;
}

.route-planner p {
  margin: 0;
  color: var(--muted);
  font-size: 10px;
}

.route-plan-actions {
  display: flex;
  align-items: center;
  gap: 8px;
}

.route-plan-actions select {
  min-height: 38px;
  padding: 0 11px;
  border: 1px solid var(--line);
  border-radius: 9px;
  color: var(--ink);
  background: var(--panel);
}

.route-plan-actions .primary-button {
  text-decoration: none;
}

.route-plan-actions .primary-button[aria-disabled="true"] {
  pointer-events: none;
  opacity: .64;
  box-shadow: none;
}

.date-button,
.date-display {
  min-height: 38px;
  padding: 0 13px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--panel);
}

.date-display {
  min-width: 150px;
  font-size: 11px;
  font-weight: 800;
}

.toolbar-spacer {
  flex: 1;
}

.dispatch-board { overflow-x: auto; }

.route-overview {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 270px;
  gap: 13px;
  margin-top: 3px;
}

.route-map-panel,
.route-roster {
  border: 1px solid var(--line);
  border-radius: 16px;
  background: var(--panel);
}

.route-map-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 15px;
  padding: 16px 18px 12px;
}

.route-map-head h3,
.route-roster h3 {
  margin: 4px 0 0;
  font-size: 14px;
}

.route-map-canvas {
  padding: 0 12px 12px;
}

.route-map-canvas svg {
  width: 100%;
  min-height: 300px;
  display: block;
  border-radius: 13px;
}

.map-road {
  fill: none;
  stroke: white;
  stroke-width: 15;
  stroke-linecap: round;
  opacity: .8;
}

.map-road.minor {
  stroke-width: 9;
  opacity: .58;
}

.map-grid-line {
  fill: none;
  stroke: #b9cabf;
  stroke-width: 1;
  stroke-dasharray: 4 7;
  opacity: .45;
}

.route-point text,
.home-base text {
  fill: white;
  font-size: 9px;
  font-weight: 900;
  pointer-events: none;
}

.route-point .city-label,
.home-base .base-label {
  fill: var(--ink);
  font-size: 10px;
  paint-order: stroke;
  stroke: #e8efe9;
  stroke-width: 4px;
  stroke-linejoin: round;
}

.home-base circle {
  fill: var(--ink);
  stroke: white;
  stroke-width: 4;
}

.route-roster {
  padding: 17px;
}

.route-roster header {
  padding-bottom: 10px;
}

.route-roster-row {
  display: grid;
  grid-template-columns: 11px 1fr auto;
  gap: 9px;
  align-items: center;
  padding: 12px 0;
  border-top: 1px solid var(--line);
}

.route-roster-row > i {
  width: 10px;
  height: 10px;
  border-radius: 50%;
}

.route-roster-row strong,
.route-roster-row small {
  display: block;
}

.route-roster-row strong {
  font-size: 11px;
}

.route-roster-row small {
  margin-top: 3px;
  color: var(--muted);
  font-size: 8px;
}

.route-roster-row a {
  color: var(--ink-2);
  font-size: 9px;
  font-weight: 800;
  text-decoration: none;
}

.route-roster-total {
  display: flex;
  align-items: center;
  gap: 9px;
  margin-top: 10px;
  padding: 13px;
  border-radius: 11px;
  background: var(--mint);
}

.route-roster-total strong {
  font-size: 24px;
}

.route-roster-total span {
  color: var(--muted);
  font-size: 9px;
}

.dispatch-column {
  min-width: 230px;
  padding: 12px;
  border: 1px solid rgba(23,63,53,.11);
  border-radius: 16px;
  background: rgba(255,254,250,.64);
}

.dispatch-column-head {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 2px 2px 12px;
}

.dispatch-column-head > div:nth-child(2) {
  min-width: 0;
}

.dispatch-column-head strong,
.dispatch-column-head small {
  display: block;
}

.dispatch-column-head strong {
  font-size: 12px;
}

.dispatch-column-head small {
  margin-top: 2px;
  overflow: hidden;
  color: var(--muted);
  font-size: 9px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.job-count {
  margin-left: auto;
  color: var(--muted);
  font-size: 10px;
  white-space: nowrap;
}

.dispatch-card {
  margin-bottom: 9px;
  padding: 13px;
  border: 1px solid var(--line);
  border-left: 4px solid var(--mint-strong);
  border-radius: 12px;
  background: var(--panel);
  cursor: pointer;
  transition: .15s ease;
}

.dispatch-card.nps {
  border-left-color: #5682a2;
}

.dispatch-card.planner-work-pending {
  border-left-color: #ad7544;
  background: linear-gradient(90deg, #fbf4ea, var(--panel) 44%);
}

.dispatch-card.planner-work-complete {
  border-left-color: #4e7a62;
  background: linear-gradient(90deg, #eef5f0, var(--panel) 44%);
}

.dispatch-card:hover {
  transform: translateY(-1px);
  box-shadow: 0 8px 20px rgba(23,63,53,.08);
}

.dispatch-card.open-dispatch-ticket:focus-visible {
  outline: 3px solid rgba(29,118,255,.35);
  outline-offset: 3px;
  transform: translateY(-1px);
}

.dispatch-card-head {
  display: flex;
  justify-content: space-between;
  gap: 8px;
}

.planner-card-statuses {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 5px;
}

.planner-work-status {
  display: inline-flex;
  align-items: center;
  padding: 4px 7px;
  border-radius: 999px;
  font-size: 8px;
  font-weight: 850;
  letter-spacing: .04em;
  text-transform: uppercase;
}

.planner-work-status.pending {
  color: #704723;
  background: #f4dfc4;
}

.planner-work-status.complete {
  color: #315744;
  background: #dcecdf;
}

.source-tag,
.status-tag,
.tiny-tag {
  display: inline-flex;
  align-items: center;
  padding: 4px 7px;
  border-radius: 999px;
  font-size: 8px;
  font-weight: 850;
  letter-spacing: .04em;
  text-transform: uppercase;
}

.source-tag.nps { color: #345a73; background: #e2edf3; }
.source-tag.apex { color: var(--ink-2); background: var(--mint); }
.warranty-tag {
  display: inline-flex;
  min-width: 34px;
  min-height: 26px;
  align-items: center;
  justify-content: center;
  padding: 4px 8px;
  border: 1px solid transparent;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .06em;
  line-height: 1;
}

.warranty-iw { color: #174b73; background: #dcecf8; border-color: #9cc6e5; }
.warranty-xw { color: #195846; background: #dcefe7; border-color: #a8d4c3; }
.warranty-ow { color: #76510b; background: #fff0c8; border-color: #e8c873; }
.warranty-cp { color: #5a3f78; background: #eee4f8; border-color: #cbb3e2; }

.warranty-account {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  min-width: 0;
}

.warranty-account > span:last-child {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.redo-check {
  display: inline-flex;
  width: 28px;
  height: 28px;
  align-items: center;
  justify-content: center;
  border-radius: 8px;
  font-size: 17px;
  font-weight: 900;
}

.redo-check.yes { color: #8d231d; background: #f8ded9; border: 1px solid #e7aaa2; }
.redo-check.no { color: #87938e; background: #edf1ef; border: 1px solid #d6dfdb; }
.ticket-redo-column { text-align: center; }
.redo-check.manual { box-shadow: 0 0 0 2px rgba(20, 72, 60, 0.18); }
.status-tag { color: #685724; background: #f5e8bf; }
.status-tag.confirmed { color: var(--ink-2); background: var(--mint); }
.tiny-tag { color: var(--red); background: #f6ded9; }

.dispatch-card h4 {
  margin: 10px 0 4px;
  font-size: 13px;
}

.dispatch-card p {
  margin: 0;
  color: var(--muted);
  font-size: 10px;
  line-height: 1.45;
}

.dispatch-card-foot {
  display: flex;
  align-items: center;
  gap: 5px;
  margin-top: 10px;
}

.dispatch-card-foot small {
  color: #87908c;
  font-size: 8px;
}

.dispatch-card-foot select {
  margin-left: auto;
  max-width: 80px;
  border: 0;
  background: transparent;
  color: var(--muted);
  font-size: 9px;
}

.filter-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 15px;
}

.filter-chip {
  padding: 9px 13px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: rgba(255,255,255,.6);
  color: var(--muted);
  font-size: 10px;
}

.filter-chip.active {
  color: white;
  border-color: var(--ink);
  background: var(--ink);
}

.intake-layout {
  display: grid;
  grid-template-columns: 1fr 270px;
  gap: 16px;
}

.email-list {
  display: grid;
  gap: 9px;
}

.email-event {
  display: grid;
  grid-template-columns: 44px 1fr auto;
  gap: 13px;
  align-items: center;
  padding: 15px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: rgba(255,254,250,.9);
}

.email-account {
  width: 42px;
  height: 42px;
  display: grid;
  place-items: center;
  border-radius: 12px;
  background: var(--mint);
  font-size: 10px;
  font-weight: 900;
}

.email-event h4 {
  margin: 0;
  font-size: 12px;
}

.email-event p {
  margin: 5px 0 0;
  color: var(--muted);
  font-size: 10px;
  line-height: 1.45;
}

.email-meta {
  margin-top: 7px;
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
}

.email-actions {
  display: flex;
  flex-direction: column;
  gap: 6px;
  align-items: flex-end;
}

.email-actions small {
  color: #929795;
  font-size: 8px;
}

.intake-rules {
  align-self: start;
  padding: 21px;
  position: sticky;
  top: 112px;
  border-radius: 16px;
  color: #e9f1ed;
  background: var(--ink);
}

.intake-rules .section-kicker {
  color: #9eb8af;
}

.intake-rules h3 {
  margin: 7px 0 14px;
}

.intake-rules ul {
  display: grid;
  gap: 10px;
  margin: 0;
  padding-left: 18px;
  color: #bfd0ca;
  font-size: 11px;
  line-height: 1.4;
}

.rule-stat {
  margin-top: 22px;
  padding-top: 18px;
  border-top: 1px solid rgba(255,255,255,.14);
}

.rule-stat strong,
.rule-stat span {
  display: block;
}

.rule-stat strong {
  color: #f7c46d;
  font-size: 30px;
}

.rule-stat span {
  color: #9eb8af;
  font-size: 9px;
}

.table-tools {
  display: flex;
  gap: 9px;
  margin-bottom: 12px;
}

.workspace-tabs {
  display: flex;
  gap: 5px;
  margin-bottom: 14px;
  padding: 4px;
  width: fit-content;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: rgba(255,254,250,.82);
}

.workspace-tab {
  min-height: 36px;
  padding: 0 14px;
  color: var(--muted);
  border: 0;
  border-radius: 9px;
  background: transparent;
  font-size: 10px;
  font-weight: 850;
  cursor: pointer;
}

.workspace-tab.active {
  color: white;
  background: var(--ink);
}

.dense-filters {
  display: grid;
  grid-template-columns: minmax(210px, 1.8fr) repeat(6, minmax(120px, 1fr)) auto;
  gap: 8px;
  margin-bottom: 11px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 15px;
  background: rgba(255,254,250,.9);
}

.dense-filters label {
  display: flex;
  flex-direction: column;
  gap: 5px;
}

.dense-filters label span {
  color: var(--muted);
  font-size: 8px;
  font-weight: 850;
  letter-spacing: .05em;
  text-transform: uppercase;
}

.ticket-search-field small {
  color: var(--muted);
  font-size: 8px;
  line-height: 1.3;
}

.dense-filters input,
.dense-filters select {
  min-height: 37px;
  min-width: 0;
  padding: 0 9px;
  border: 1px solid var(--line);
  border-radius: 8px;
  color: var(--ink);
  background: var(--panel);
  font-size: 10px;
}

.filter-reset,
.print-action {
  align-self: end;
  min-height: 37px;
}

.parts-filters {
  grid-template-columns: minmax(190px, 1.5fr) repeat(4, minmax(120px, 1fr)) repeat(2, minmax(112px, .7fr));
}

.dense-filters .filter-search-button,
.dense-filters .filter-reset {
  display: inline-flex;
  width: 100%;
  height: 46px;
  min-height: 46px;
  align-self: end;
  align-items: center;
  justify-content: center;
  padding: 0 14px;
  border-radius: 10px;
  font-size: 13px;
  font-weight: 850;
  line-height: 1;
  white-space: nowrap;
}

.dense-filters .filter-search-button {
  background: var(--ink);
  color: #fff;
}

.result-bar {
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: 42px;
  padding: 0 12px;
  border: 1px solid var(--line);
  border-bottom: 0;
  border-radius: 12px 12px 0 0;
  background: #f4f2ec;
}

.result-bar strong {
  font-size: 11px;
}

.result-bar span {
  color: var(--muted);
  font-size: 9px;
}

#ticket-columns-toggle {
  margin-left: auto;
}

#ticket-print {
  margin-left: 0;
}

.schedule-navigator {
  margin-bottom: 15px;
  padding: 19px;
  border: 1px solid var(--line);
  border-radius: 17px;
  background: rgba(255,254,250,.9);
}

.planner-calendar-panel {
  margin-bottom: 14px;
  border-color: rgba(23, 63, 53, .18);
  box-shadow: 0 10px 28px rgba(25, 57, 49, .07);
}

.planner-calendar-panel .calendar-head h3 {
  font-size: 19px;
  line-height: 1.25;
}

.planner-calendar-panel .calendar-actions strong {
  min-width: 140px;
  color: var(--ink);
  font-size: 16px;
  font-weight: 800;
}

.planner-calendar-panel .calendar-weekdays {
  margin-bottom: 8px;
  font-size: 13px;
  font-weight: 800;
  letter-spacing: .04em;
}

.planner-calendar-panel .calendar-day {
  min-height: 90px;
  padding: 11px;
  font-family: Inter, "Segoe UI Variable Text", "Segoe UI", ui-sans-serif, system-ui, sans-serif;
  font-variant-numeric: tabular-nums;
}

.planner-calendar-panel .calendar-day strong {
  font-size: 19px;
  font-weight: 820;
  line-height: 1;
}

.planner-calendar-panel .calendar-day small {
  margin-top: 12px;
  color: #4b5a54;
  font-size: 13px;
  font-weight: 720;
  line-height: 1.25;
}

.planner-calendar-panel .calendar-day.outside {
  opacity: .5;
}

.planner-calendar-panel .calendar-selection {
  font-size: 13px;
  font-weight: 650;
  line-height: 1.45;
}

.planner-selected-date {
  display: grid;
  gap: 3px;
  min-width: 230px;
  padding: 10px 14px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--panel);
}

.planner-selected-date strong {
  font-size: 16px;
  line-height: 1.2;
}

.calendar-head,
.calendar-actions {
  display: flex;
  align-items: center;
  gap: 9px;
}

.calendar-head {
  justify-content: space-between;
  margin-bottom: 15px;
}

.calendar-head h3 {
  margin: 4px 0 0;
  font-size: 15px;
}

.calendar-actions strong {
  min-width: 100px;
  text-align: center;
  font-size: 11px;
}

.calendar-weekdays,
.ticket-calendar {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 6px;
}

.calendar-weekdays {
  margin-bottom: 6px;
  color: var(--muted);
  font-size: 8px;
  font-weight: 850;
  text-align: center;
  text-transform: uppercase;
}

.calendar-day {
  min-height: 72px;
  padding: 8px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: #fbfaf5;
  text-align: left;
  cursor: pointer;
}

.calendar-day:hover,
.calendar-day.selected {
  border-color: var(--mint-strong);
  background: var(--mint);
}

.calendar-day.selected {
  box-shadow: inset 0 0 0 2px var(--mint-strong);
}

.calendar-day.outside {
  opacity: .35;
}

.calendar-day strong,
.calendar-day small {
  display: block;
}

.calendar-day strong {
  font-size: 10px;
}

.calendar-day small {
  margin-top: 10px;
  color: var(--muted);
  font-size: 8px;
}

.calendar-selection {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 15px;
  margin-top: 12px;
  padding-top: 11px;
  border-top: 1px solid var(--line);
  color: var(--muted);
  font-size: 10px;
}

.calendar-selection .primary-button {
  flex: 0 0 auto;
}

.table-tools input,
.table-tools select,
.form-grid input,
.form-grid select,
.modal textarea,
.modal > form > label select {
  min-height: 42px;
  padding: 0 12px;
  border: 1px solid var(--line);
  border-radius: 10px;
  color: var(--ink);
  background: var(--panel);
  outline: none;
}

.table-tools input {
  flex: 1;
}

.table-wrap {
  overflow-x: auto;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: rgba(255,254,250,.9);
}

.result-bar + .table-wrap,
.result-bar + .dense-table,
.print-area .result-bar + .table-wrap {
  border-radius: 0 0 12px 12px;
}

.dense-table th,
.dense-table td {
  padding: 10px 11px;
}

.dense-table tbody tr:nth-child(even) {
  background: rgba(23,63,53,.025);
}

.dense-table tbody tr:hover {
  background: var(--mint);
}

.ticket-extra-column {
  display: none;
}

#ticket-list-panel.show-extra-columns .ticket-extra-column {
  display: table-cell;
}

.address-warning {
  display: block;
  margin-top: 4px;
  color: #9b4d24 !important;
  font-weight: 800;
}

.ticket-list-address {
  display: grid;
  min-width: 0;
  gap: 2px;
  line-height: 1.32;
}

.ticket-address-street,
.ticket-address-locality {
  display: block;
  min-width: 0;
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: normal;
}

.ticket-address-street {
  font-size: 12.5px;
  font-weight: 850;
}

.ticket-address-locality {
  color: var(--muted);
  font-size: 11.5px;
  font-weight: 650;
}

.part-status-select {
  min-height: 31px;
  padding: 0 7px;
  border: 1px solid var(--line);
  border-radius: 7px;
  background: white;
  font-size: 9px;
}

.pickup-check {
  width: 18px;
  height: 18px;
  accent-color: var(--mint-strong);
}

.part-status {
  display: inline-flex;
  padding: 4px 7px;
  border-radius: 999px;
  background: #eef0eb;
  font-size: 8px;
  font-weight: 850;
}

.part-status.ready,
.part-status.used,
.part-status.completed { color: #1f654d; background: #dff0e7; }
.part-status.back-order,
.part-status.defective { color: #9a3d36; background: #f9dfdc; }
.part-status.waiting-for-part,
.part-status.po-made { color: #8a5c17; background: #f8ebcf; }

.print-heading {
  display: none;
}

table {
  width: 100%;
  border-collapse: collapse;
}

th,
td {
  padding: 13px 15px;
  border-bottom: 1px solid var(--line);
  text-align: left;
  white-space: nowrap;
}

th {
  color: var(--muted);
  background: #f4f2ec;
  font-size: 9px;
  letter-spacing: .06em;
  text-transform: uppercase;
}

td {
  font-size: 11px;
}

td strong,
td small {
  display: block;
}

td small {
  margin-top: 3px;
  color: var(--muted);
  font-size: 9px;
}

.parts-summary {
  display: grid;
  grid-template-columns: repeat(4, minmax(0,1fr));
  gap: 12px;
  margin-bottom: 14px;
}

.parts-stat {
  padding: 18px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--panel);
}

.parts-stat span,
.parts-stat strong {
  display: block;
}

.parts-stat span {
  color: var(--muted);
  font-size: 10px;
}

.parts-stat strong {
  margin-top: 4px;
  font-size: 25px;
}

.parts-board {
  display: grid;
  grid-template-columns: repeat(3,minmax(0,1fr));
  gap: 12px;
}

.parts-column {
  padding: 13px;
  border: 1px solid var(--line);
  border-radius: 15px;
  background: rgba(255,254,250,.62);
}

.parts-column h3 {
  margin: 3px 2px 14px;
  font-size: 13px;
}

.part-card {
  margin-top: 9px;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--panel);
}

.part-card strong,
.part-card small,
.part-card span {
  display: block;
}

.part-card strong {
  font-size: 11px;
}

.part-card span {
  margin-top: 5px;
  color: var(--muted);
  font-size: 9px;
}

.part-card small {
  margin-top: 9px;
  padding-top: 9px;
  border-top: 1px solid var(--line);
  color: #8a918e;
  line-height: 1.45;
}

.part-card button {
  width: 100%;
  margin-top: 10px;
}

.part-card .part-card-actions {
  display: flex;
  align-items: center;
  gap: 7px;
  margin-top: 10px;
}

.part-card .part-card-actions select {
  flex: 1;
}

.overall-status-panel {
  margin-bottom: 18px;
  padding: 22px;
  border: 1px solid #cbd9d4;
  border-radius: 20px;
  background: linear-gradient(180deg, #f7faf8 0, #eef5f1 100%);
  box-shadow: 0 12px 34px rgba(23, 63, 53, .07);
}

.overall-status-head,
.overall-status-toolbar,
.report-card-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}

.overall-status-head h3 {
  margin: 4px 0 5px;
  color: var(--ink);
  font-size: 28px;
  letter-spacing: -.025em;
}

.overall-status-head p {
  max-width: 740px;
  margin: 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.55;
}

.report-private-badge {
  flex: 0 0 auto;
  padding: 8px 11px;
  color: #744a08;
  border: 1px solid #e8ca91;
  border-radius: 999px;
  background: #fff4d9;
  font-size: 9px;
  font-weight: 900;
  letter-spacing: .04em;
  text-transform: uppercase;
}

.overall-status-toolbar {
  flex-wrap: wrap;
  justify-content: flex-start;
  margin-top: 18px;
  padding: 13px;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: rgba(255, 255, 255, .8);
}

.overall-status-toolbar label {
  min-width: 170px;
}

.overall-status-toolbar label span {
  display: block;
  margin-bottom: 5px;
  color: #566762;
  font-size: 9px;
  font-weight: 850;
  letter-spacing: .04em;
  text-transform: uppercase;
}

.overall-status-toolbar select,
.overall-status-toolbar input {
  width: 100%;
  min-height: 39px;
}

.overall-status-toolbar .primary-button {
  align-self: flex-end;
  min-height: 39px;
}

.report-updated {
  margin-left: auto;
  color: var(--muted);
  font-size: 10px;
}

.report-category-tabs {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 9px;
  margin-top: 18px;
}

.report-category-tab {
  min-height: 64px;
  padding: 13px 16px;
  color: #34534a;
  border: 1px solid #c8d7d2;
  border-radius: 14px;
  background: rgba(255, 255, 255, .82);
  font: inherit;
  font-size: 16px;
  font-weight: 900;
  line-height: 1.25;
  text-align: left;
  cursor: pointer;
  transition: border-color .16s ease, background .16s ease, color .16s ease, transform .16s ease;
}

.report-category-tab:hover,
.report-category-tab:focus-visible {
  border-color: #75998f;
  background: #f8fbf9;
  outline: none;
  transform: translateY(-1px);
}

.report-category-tab.active {
  color: #fff;
  border-color: #174c40;
  background: #174c40;
  box-shadow: 0 8px 20px rgba(23, 76, 64, .16);
}

.report-category-panel {
  display: grid;
  gap: 13px;
  min-width: 0;
}

.report-category-panel.hidden {
  display: none;
}

.overall-kpi-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin: 13px 0;
}

.overall-kpi-grid article {
  min-height: 105px;
  padding: 16px;
  border: 1px solid var(--line);
  border-top: 4px solid #769b91;
  border-radius: 14px;
  background: var(--panel);
}

.overall-kpi-grid article.pending { border-top-color: #d29a45; }
.overall-kpi-grid article.complete { border-top-color: #4c8c6c; }

.overall-kpi-grid span,
.overall-kpi-grid strong,
.overall-kpi-grid small {
  display: block;
}

.overall-kpi-grid span {
  color: #677873;
  font-size: 9px;
  font-weight: 900;
  letter-spacing: .07em;
}

.overall-kpi-grid strong {
  margin: 6px 0 2px;
  color: var(--ink);
  font-size: 28px;
}

.overall-kpi-grid small {
  color: var(--muted);
  font-size: 9px;
}

.overall-status-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.45fr) minmax(300px, .85fr);
  gap: 13px;
}

.report-card {
  min-width: 0;
  padding: 17px;
  border: 1px solid var(--line);
  border-radius: 15px;
  background: var(--panel);
}

.report-card-head {
  align-items: flex-end;
  margin-bottom: 12px;
}

.report-card-head h4 {
  margin: 3px 0 0;
  color: var(--ink);
  font-size: 16px;
}

.report-card-head > span {
  color: var(--muted);
  font-size: 9px;
  font-weight: 800;
}

.report-table-wrap {
  border: 1px solid #dbe3e0;
  border-radius: 11px;
}

.overall-status-table,
.technician-ranking-table {
  min-width: 680px;
}

.overall-status-table th,
.overall-status-table td,
.technician-ranking-table th,
.technician-ranking-table td {
  padding: 10px 9px;
  font-size: 10px;
  white-space: nowrap;
}

.overall-status-table th,
.technician-ranking-table th {
  color: #40564f;
  background: #e9f0ed;
  font-size: 9px;
}

.status-count {
  display: inline-flex;
  min-width: 28px;
  justify-content: center;
  padding: 4px 7px;
  border-radius: 999px;
  background: #eef2f0;
  font-weight: 900;
}

.status-count.pending { color: #7c4e10; background: #fff0d2; }
.status-count.complete { color: #276248; background: #dcefe4; }
.status-count.cancelled { color: #775f5a; background: #eee8e6; }

.completion-meter {
  min-width: 105px;
}

.completion-meter > span {
  display: block;
  height: 6px;
  overflow: hidden;
  border-radius: 999px;
  background: #e2e9e6;
}

.completion-meter i {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: #4c8c6c;
}

.completion-meter small {
  display: block;
  margin-top: 4px;
  color: var(--muted);
  font-size: 9px;
  font-style: normal;
}

.pending-status-list {
  display: grid;
  gap: 9px;
}

.pending-status-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 6px 10px;
  align-items: center;
}

.pending-status-row strong {
  min-width: 0;
  overflow: hidden;
  color: #384c46;
  font-size: 10px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.pending-status-row b {
  color: var(--ink);
  font-size: 11px;
}

.pending-status-bar {
  grid-column: 1 / -1;
  height: 7px;
  overflow: hidden;
  border-radius: 999px;
  background: #e8eeeb;
}

.pending-status-bar i {
  display: block;
  height: 100%;
  min-width: 4px;
  border-radius: inherit;
  background: #c78b39;
}

.report-empty {
  padding: 18px;
  color: var(--muted);
  border: 1px dashed var(--line);
  border-radius: 10px;
  background: #fbfcfb;
  font-size: 10px;
  text-align: center;
}

.technician-ranking-card {
  margin-top: 0;
}

.report-company-status-card,
.technician-daily-card,
.technician-work-card,
.technician-efficiency-card {
  overflow: hidden;
}

.technician-daily-kpis {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 9px;
  margin-bottom: 13px;
}

.technician-daily-kpis article {
  min-width: 0;
  padding: 12px 13px;
  border: 1px solid #d6e1dd;
  border-radius: 11px;
  background: #f3f7f5;
}

.technician-daily-kpis span,
.technician-daily-kpis strong {
  display: block;
}

.technician-daily-kpis span {
  color: #5b7069;
  font-size: 10px;
  font-weight: 900;
  letter-spacing: .04em;
  text-transform: uppercase;
}

.technician-daily-kpis strong {
  margin-top: 4px;
  color: var(--ink);
  font-size: 22px;
  line-height: 1.2;
}

.technician-daily-table {
  min-width: 780px;
}

.technician-daily-table th,
.technician-daily-table td,
.technician-efficiency-table th,
.technician-efficiency-table td {
  padding: 11px 10px;
  font-size: 12px;
  line-height: 1.45;
  vertical-align: top;
}

.technician-daily-table th,
.technician-efficiency-table th {
  color: #40564f;
  background: #e9f0ed;
  font-size: 11px;
  white-space: nowrap;
}

.report-method-note {
  display: block;
  margin-top: 11px;
  color: #64746e;
  font-size: 11px !important;
  line-height: 1.55;
}

.technician-work-overview {
  display: grid;
  gap: 11px;
}

.technician-work-row {
  display: grid;
  grid-template-columns: minmax(105px, .7fr) repeat(4, minmax(160px, 1fr));
  gap: 8px;
  padding: 10px;
  border: 1px solid #d9e3df;
  border-radius: 12px;
  background: #fbfcfb;
}

.technician-work-name {
  display: grid;
  align-content: center;
  padding: 10px;
  color: #fff;
  border-radius: 9px;
  background: #24594d;
  font-size: 15px;
  font-weight: 900;
}

.technician-work-period {
  min-width: 0;
  padding: 9px 10px;
  border-radius: 9px;
  background: #edf4f1;
}

.technician-work-period > strong {
  display: block;
  margin-bottom: 6px;
  color: #315148;
  font-size: 11px;
  letter-spacing: .04em;
  text-transform: uppercase;
}

.technician-work-metrics {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
}

.technician-work-metrics span {
  display: inline-flex;
  gap: 4px;
  align-items: center;
  padding: 4px 6px;
  color: #52665f;
  border: 1px solid #d8e2de;
  border-radius: 999px;
  background: #fff;
  font-size: 10px;
  white-space: nowrap;
}

.technician-work-metrics b {
  color: var(--ink);
  font-size: 11px;
}

.technician-efficiency-table {
  min-width: 1040px;
  table-layout: fixed;
}

.technician-efficiency-table th:nth-child(1) { width: 130px; }
.technician-efficiency-table th:nth-child(2) { width: 135px; }
.technician-efficiency-table th:nth-child(3) { width: 145px; }
.technician-efficiency-table th:nth-child(4) { width: 64px; }
.technician-efficiency-table th:nth-child(5) { width: 250px; }
.technician-efficiency-table th:nth-child(6) { width: 150px; }
.technician-efficiency-table th:nth-child(7) { width: 150px; }

.technician-efficiency-table td small,
.technician-efficiency-table td strong {
  display: block;
}

.technician-efficiency-table td small {
  margin-top: 4px;
  color: #64756f;
  font-size: 10px !important;
  line-height: 1.45;
}

.technician-efficiency-table details {
  margin-top: 7px;
}

.technician-efficiency-table summary {
  color: #315d51;
  cursor: pointer;
  font-size: 10px;
  font-weight: 900;
}

.efficiency-note-stack {
  display: grid;
  gap: 6px;
  margin-top: 7px;
  padding: 8px;
  border-left: 3px solid #91aea5;
  border-radius: 6px;
  background: #f2f6f4;
}

.efficiency-note-stack span {
  color: #42574f;
  font-size: 10px;
  line-height: 1.45;
  overflow-wrap: anywhere;
}

.redo-report-badge,
.clear-report-badge {
  display: inline-flex;
  justify-content: center;
  min-width: 42px;
  padding: 4px 7px;
  border-radius: 999px;
  font-size: 9px;
  font-weight: 900;
}

.redo-report-badge {
  color: #873c34;
  background: #f8ded9;
}

.clear-report-badge {
  color: #52665f;
  background: #e8eeeb;
}

.ranking-boundary {
  margin: -2px 0 12px;
  padding: 10px 12px;
  color: #6f4d17;
  border-left: 4px solid #e0aa54;
  border-radius: 7px;
  background: #fff7e7;
  font-size: 10px;
  line-height: 1.5;
}

.technician-ranking-table {
  min-width: 930px;
}

.technician-ranking-table td:first-child {
  color: #805b16;
  font-size: 14px;
  font-weight: 950;
}

.technician-ranking-table .score-value {
  color: var(--ink);
  font-size: 15px;
  font-weight: 950;
}

.technician-ranking-table .provisional {
  display: inline-block;
  padding: 4px 7px;
  color: #6c625b;
  border-radius: 999px;
  background: #eeeae7;
  font-size: 8px;
  font-weight: 900;
}

.component-score {
  font-weight: 850;
}

.component-score.high { color: #24704e; }
.component-score.mid { color: #8a641b; }
.component-score.low { color: #a34b3c; }

.score-method {
  margin-top: 12px;
  border: 1px solid var(--line);
  border-radius: 11px;
  background: #f8faf9;
}

.score-method summary {
  padding: 12px 14px;
  color: var(--ink);
  cursor: pointer;
  font-size: 11px;
  font-weight: 900;
}

.score-method-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
  padding: 0 14px 10px;
}

.score-method-grid > div {
  padding: 11px;
  border: 1px solid #dce5e1;
  border-radius: 9px;
  background: white;
}

.score-method-grid strong,
.score-method-grid span {
  display: block;
}

.score-method-grid strong {
  color: #304b42;
  font-size: 10px;
}

.score-method-grid span {
  margin-top: 5px;
  color: var(--muted);
  font-size: 9px;
  line-height: 1.45;
}

.score-method > p {
  margin: 0;
  padding: 0 14px 14px;
  color: var(--muted);
  font-size: 9px;
  line-height: 1.55;
}

.ai-hero {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 30px;
  padding: 29px;
  border-radius: 20px;
  color: white;
  background:
    radial-gradient(circle at 70% 30%, rgba(247,196,109,.22), transparent 20rem),
    var(--ink);
}

.ai-orb {
  width: 38px;
  height: 38px;
  display: grid;
  place-items: center;
  color: var(--ink);
  background: #f7c46d;
  border-radius: 12px;
  font-size: 18px;
}

.ai-hero h3 {
  margin: 14px 0 7px;
  font-size: 25px;
}

.ai-hero p {
  max-width: 660px;
  margin: 0;
  color: #c5d6d1;
  font-size: 12px;
  line-height: 1.6;
}

.confidence {
  min-width: 170px;
  padding-left: 24px;
  border-left: 1px solid rgba(255,255,255,.16);
}

.confidence span,
.confidence strong,
.confidence small {
  display: block;
}

.confidence span,
.confidence small {
  color: #adc4bc;
  font-size: 9px;
}

.confidence strong {
  margin: 3px 0;
  color: #f7c46d;
  font-size: 35px;
}

.insight-grid {
  display: grid;
  grid-template-columns: repeat(3,minmax(0,1fr));
  gap: 13px;
  margin: 15px 0;
}

.insight-card {
  padding: 20px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: var(--panel);
}

.insight-card .tiny-tag {
  margin-bottom: 12px;
}

.insight-card h4 {
  margin: 0;
  font-size: 14px;
}

.insight-card p {
  min-height: 58px;
  margin: 8px 0 14px;
  color: var(--muted);
  font-size: 10px;
  line-height: 1.55;
}

.evidence {
  padding-top: 11px;
  border-top: 1px solid var(--line);
  color: #8b9290;
  font-size: 9px;
}

.roadmap-row {
  display: grid;
  grid-template-columns: repeat(3,minmax(0,1fr));
  gap: 0;
  padding: 0 22px 22px;
}

.roadmap-row > div {
  padding: 16px;
  border-left: 1px solid var(--line);
}

.roadmap-row > div:first-child {
  border-left: 0;
}

.roadmap-row span,
.roadmap-row strong,
.roadmap-row small {
  display: block;
}

.roadmap-row span {
  color: var(--coral);
  font-size: 8px;
  font-weight: 900;
  letter-spacing: .1em;
}

.roadmap-row strong {
  margin-top: 7px;
  font-size: 12px;
}

.roadmap-row small {
  margin-top: 5px;
  color: var(--muted);
  font-size: 9px;
}

.phone-wrap {
  min-height: 680px;
  display: grid;
  place-items: center;
  padding: 28px;
  border-radius: 20px;
  background:
    linear-gradient(135deg, rgba(220,236,227,.9), rgba(255,254,250,.5)),
    repeating-linear-gradient(45deg, transparent 0 20px, rgba(23,63,53,.03) 20px 21px);
}

.phone {
  width: min(100%, 390px);
  min-height: 660px;
  padding: 10px;
  border: 8px solid #1d2925;
  border-radius: 36px;
  background: #f6f4ee;
  box-shadow: 0 25px 65px rgba(23,63,53,.25);
}

.phone-top {
  display: flex;
  justify-content: space-between;
  padding: 7px 13px 10px;
  font-size: 9px;
  font-weight: 800;
}

.phone-head {
  padding: 19px;
  color: white;
  border-radius: 22px;
  background: var(--ink);
}

.phone-head .section-kicker {
  color: #a9c1b9;
}

.phone-head h3 {
  margin: 7px 0 3px;
  font-size: 22px;
}

.phone-head p {
  margin: 0;
  color: #b7cdc5;
  font-size: 10px;
}

.phone-jobs {
  padding: 8px 3px;
}

.phone-job {
  margin-top: 8px;
  padding: 13px;
  border: 1px solid var(--line);
  border-radius: 15px;
  background: var(--panel);
}

.phone-job header {
  display: flex;
  justify-content: space-between;
}

.phone-job h4 {
  margin: 8px 0 3px;
  font-size: 12px;
}

.phone-job p {
  margin: 0;
  color: var(--muted);
  font-size: 9px;
}

.phone-actions {
  display: grid;
  grid-template-columns: repeat(3,1fr);
  gap: 5px;
  margin-top: 10px;
}

.phone-actions button,
.phone-actions a {
  padding: 8px 4px;
  border: 0;
  border-radius: 8px;
  color: var(--ink);
  background: var(--mint);
  font-size: 8px;
  font-weight: 800;
  text-align: center;
  text-decoration: none;
  cursor: pointer;
}

.phone-actions button:disabled {
  cursor: not-allowed;
  opacity: .45;
}

.phone-end {
  width: calc(100% - 6px);
  margin: 7px 3px 3px;
  padding: 12px;
  border: 1px solid var(--ink);
  border-radius: 12px;
  background: transparent;
  font-weight: 800;
}

.tech-mobile-shell {
  padding: 18px;
  border: 1px solid #c9d1d5;
  border-radius: 20px;
  background: #edf1f3;
}

.mobile-page-actions {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px;
}

.mobile-tech-picker {
  display: grid;
  gap: 3px;
}

.mobile-tech-picker span {
  color: var(--muted);
  font-size: 8px;
  font-weight: 900;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.mobile-tech-locked {
  min-height: 39px;
  display: inline-flex;
  align-items: center;
  padding: 0 13px;
  border: 1px solid var(--line);
  border-radius: 9px;
  color: var(--ink);
  background: var(--panel);
  font-size: 10px;
}

.tech-view-switch {
  background: rgba(255,254,250,.9);
}

.field-team-panel {
  margin: -8px 0 14px;
  padding: 15px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: rgba(255,254,250,.84);
}

.field-team-heading {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 18px;
  margin-bottom: 12px;
}

.field-team-heading h3 {
  margin: 4px 0 0;
  font-size: 18px;
}

.field-team-heading p {
  max-width: 570px;
  margin: 0;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.45;
}

.field-team-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 9px;
}

.field-team-card {
  min-height: 96px;
  display: grid;
  grid-template-columns: 42px minmax(0, 1fr);
  align-items: center;
  gap: 10px;
  padding: 11px;
  color: var(--ink);
  border: 1px solid var(--line);
  border-radius: 13px;
  background: var(--panel);
  text-align: left;
  cursor: pointer;
}

.field-team-card:hover,
.field-team-card:focus-visible {
  border-color: var(--accent);
  outline: 3px solid rgba(36,116,91,.15);
}

.field-team-card.selected {
  color: white;
  border-color: var(--ink);
  background: var(--ink);
}

.field-team-avatar {
  width: 42px;
  height: 42px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  color: white;
  background: var(--accent);
  font-size: 15px;
  font-weight: 900;
}

.field-team-card.selected .field-team-avatar {
  color: var(--ink);
  background: white;
}

.field-team-card strong,
.field-team-card small,
.field-team-metrics {
  display: block;
}

.field-team-card strong {
  overflow: hidden;
  font-size: 14px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.field-team-card small {
  margin-top: 2px;
  color: var(--muted);
  font-size: 9px;
}

.field-team-card.selected small {
  color: #bad1c9;
}

.field-team-metrics {
  grid-column: 1 / -1;
  color: var(--muted);
  font-size: 9px;
  font-weight: 800;
}

.field-team-card.selected .field-team-metrics {
  color: #d4e5df;
}

.mobile-kpi-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 9px;
  margin-bottom: 12px;
}

.mobile-kpi-grid article {
  min-height: 92px;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: var(--panel);
}

.mobile-kpi-grid span,
.mobile-kpi-grid strong,
.mobile-kpi-grid small {
  display: block;
}

.mobile-kpi-grid span {
  color: var(--muted);
  font-size: 8px;
  font-weight: 900;
  letter-spacing: .08em;
}

.mobile-kpi-grid strong {
  margin: 5px 0 1px;
  font-size: 25px;
}

.mobile-kpi-grid small {
  color: var(--muted);
  font-size: 9px;
}

.mobile-command-bar {
  display: grid;
  grid-template-columns: 1fr auto auto;
  align-items: center;
  gap: 9px;
  margin-bottom: 10px;
  padding: 11px 13px;
  color: white;
  border-radius: 14px;
  background: var(--ink);
}

.mobile-command-bar div span,
.mobile-command-bar div strong {
  display: block;
}

.mobile-command-bar div span {
  color: #bad1c9;
  font-size: 8px;
  font-weight: 900;
  letter-spacing: .08em;
}

.mobile-command-bar div strong {
  margin-top: 2px;
  font-size: 15px;
}

.mobile-command-date,
.mobile-route-link {
  min-height: 35px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0 12px;
  color: var(--ink);
  border: 0;
  border-radius: 999px;
  background: white;
  font-size: 9px;
  font-weight: 900;
  text-decoration: none;
  cursor: pointer;
}

.mobile-route-link {
  color: white;
  background: var(--accent);
}

.mobile-calendar-panel {
  padding: 17px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: var(--panel);
}

.mobile-calendar-panel.mobile-calendar-collapsed {
  display: none;
}

.mobile-history-range {
  margin-top: 10px;
  padding: 9px 12px;
  color: var(--muted);
  border: 1px solid var(--line);
  border-radius: 11px;
  background: rgba(255,255,255,.58);
  font-size: 9px;
  font-weight: 750;
  line-height: 1.45;
}

.mobile-calendar-toolbar,
.mobile-calendar-actions,
.mobile-route-summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}

.mobile-calendar-toolbar h3,
.mobile-route-summary h3 {
  margin: 5px 0 0;
  font-size: 17px;
}

.mode-switch {
  display: flex;
  padding: 3px;
  border: 1px solid var(--line);
  border-radius: 9px;
  background: #f4f2ec;
}

.mode-switch button {
  min-height: 30px;
  padding: 0 10px;
  color: var(--muted);
  border: 0;
  border-radius: 7px;
  background: transparent;
  font-size: 9px;
  font-weight: 850;
  cursor: pointer;
}

.mode-switch button.active {
  color: white;
  background: var(--ink);
}

.mobile-week-strip {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 7px;
  margin-top: 15px;
}

.mobile-day,
.mobile-month-day {
  min-height: 72px;
  padding: 9px 7px;
  border: 1px solid var(--line);
  border-radius: 11px;
  color: var(--ink);
  background: #faf9f4;
  text-align: center;
  cursor: pointer;
}

.mobile-day.selected,
.mobile-month-day.selected {
  color: white;
  border-color: var(--ink);
  background: var(--ink);
}

.mobile-month-day.has-tickets:not(.selected) {
  border-color: #75ad99;
  box-shadow: inset 0 -4px 0 var(--mint-strong);
}

.mobile-day span,
.mobile-day strong,
.mobile-day small,
.mobile-month-day span,
.mobile-month-day strong,
.mobile-month-day small {
  display: block;
}

.mobile-day span,
.mobile-month-day span {
  color: var(--muted);
  font-size: 8px;
  font-weight: 850;
  text-transform: uppercase;
}

.mobile-day.selected span,
.mobile-day.selected small,
.mobile-month-day.selected span,
.mobile-month-day.selected small {
  color: #bad1c9;
}

.mobile-day strong,
.mobile-month-day strong {
  margin: 5px 0;
  font-size: 16px;
}

.mobile-day small,
.mobile-month-day small {
  color: var(--muted);
  font-size: 8px;
}

.mobile-month-calendar {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 6px;
  margin-top: 15px;
}

.mobile-month-day {
  min-height: 62px;
}

.mobile-month-day.outside {
  opacity: .3;
}

.mobile-ticket-filter {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 7px;
  margin: 14px 0;
}

.mobile-ticket-filter button {
  min-height: 36px;
  min-width: 0;
  padding: 0 10px;
  color: var(--muted);
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--panel);
  font-size: 9px;
  font-weight: 850;
  cursor: pointer;
}

.mobile-ticket-filter button.active {
  color: white;
  border-color: var(--ink);
  background: var(--ink);
}

.mobile-search-panel {
  display: grid;
  grid-template-columns: minmax(180px, 1fr) auto;
  align-items: center;
  gap: 6px 10px;
  margin: -4px 0 14px;
  padding: 13px;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: var(--panel);
}

.mobile-search-panel label,
.mobile-search-panel small {
  grid-column: 1 / -1;
}

.mobile-search-panel label {
  color: var(--ink);
  font-size: 11px;
  font-weight: 850;
}

.mobile-search-panel input {
  min-height: 44px;
  width: 100%;
  padding: 0 12px;
  border: 1px solid var(--line);
  border-radius: 9px;
  background: white;
  font-size: 14px;
}

.mobile-search-panel small {
  color: var(--muted);
  font-size: 10px;
}

.mobile-route-summary {
  padding: 17px;
  border-radius: 15px;
  color: white;
  background: var(--ink);
}

.mobile-route-summary p {
  margin: 5px 0 0;
  color: #b7cdc5;
  font-size: 10px;
}

.mobile-job-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin-top: 10px;
}

.mobile-job-list .phone-job {
  margin: 0;
}

.mobile-job-shell {
  --work-color: #246b9a;
  --work-ink: #154e73;
  --work-soft: #eaf4fb;
  display: grid;
  grid-template-columns: 86px minmax(0, 1fr);
  overflow: hidden;
  padding: 0;
  border: 2px solid var(--work-color);
  background: linear-gradient(90deg, var(--work-soft) 0 9px, #fff 36px);
  box-shadow: 0 5px 14px rgba(20, 45, 56, .08);
  content-visibility: auto;
  contain-intrinsic-size: 230px;
}

.mobile-job-shell.mobile-work-todo {
  --work-color: #246b9a;
  --work-ink: #154e73;
  --work-soft: #eaf4fb;
}

.mobile-job-shell.mobile-work-pending {
  --work-color: #9a5b00;
  --work-ink: #5b3700;
  --work-soft: #fff4d6;
}

.mobile-job-shell.mobile-work-urgent {
  --work-color: #a13a32;
  --work-ink: #70241f;
  --work-soft: #fff0ee;
}

.mobile-job-shell.mobile-work-done {
  --work-color: #2f6b4f;
  --work-ink: #1e513b;
  --work-soft: #eaf5ee;
}

.mobile-job-shell.ticket-unread {
  border-color: var(--work-color);
  box-shadow: inset 5px 0 0 var(--work-color), 0 7px 17px rgba(20, 45, 56, .13);
}

.mobile-job-shell :is(a, button):focus-visible {
  outline: 3px solid var(--work-color);
  outline-offset: 3px;
}

@media (forced-colors: active) {
  .mobile-job-shell,
  .mobile-job-shell.ticket-unread {
    border: 2px solid CanvasText;
    box-shadow: none;
  }
}

.mobile-job-shell.ticket-read .mobile-ticket-open strong,
.mobile-job-shell.ticket-read .mobile-job-customer strong {
  font-weight: 650;
}

.mobile-job-shell.ticket-unread .mobile-ticket-open strong,
.mobile-job-shell.ticket-unread .mobile-job-customer strong {
  font-weight: 900;
}

.mobile-ticket-open .ticket-unread-badge {
  display: inline-flex;
  vertical-align: 2px;
}

.mobile-load-more {
  width: 100%;
  margin-top: 12px;
}

.mobile-job-rail {
  display: flex;
  min-width: 0;
  padding: 12px 8px;
  align-items: center;
  flex-direction: column;
  gap: 6px;
  color: white;
  background: var(--work-color);
  text-align: center;
}

.mobile-job-rail .mobile-stop-number {
  min-width: 32px;
  height: 32px;
  border-radius: 50%;
  background: white;
  color: var(--work-ink);
  font-size: 13px;
}

.mobile-job-rail strong {
  margin-top: auto;
  font-size: 11px;
}

.mobile-job-rail small {
  font-size: 9px;
}

.mobile-job-rail > span:last-child {
  width: 100%;
  padding: 3px 5px;
  border-radius: 999px;
  color: white;
  background: var(--work-ink);
  font-size: 7px;
  font-weight: 900;
}

.mobile-job-body {
  min-width: 0;
  padding: 11px 12px;
}

.mobile-job-customer strong {
  color: var(--ink);
  font-size: 13px;
}

.mobile-job-product {
  overflow: hidden;
  margin-top: 3px !important;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.mobile-job-list .phone-job header {
  align-items: center;
  justify-content: flex-start;
  gap: 6px;
}

.mobile-ticket-open {
  width: 100%;
  min-height: 42px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 4px 0;
  color: var(--ink);
  border: 0;
  background: transparent;
  text-align: left;
  cursor: pointer;
  text-decoration: none;
}

.mobile-ticket-open span,
.mobile-ticket-open strong,
.mobile-ticket-open small {
  display: block;
}

.mobile-ticket-open strong {
  overflow-wrap: anywhere;
  color: var(--work-ink);
  font-size: 15px;
}

.mobile-ticket-open small {
  margin-top: 2px;
  color: var(--work-ink);
  font-size: 9px;
  font-weight: 850;
}

.mobile-ticket-open b {
  color: var(--work-color);
  font-size: 34px;
  font-weight: 400;
  line-height: 1;
}

.mobile-service-line b {
  color: var(--ink);
}

.mobile-job-list .phone-job header .status-tag {
  margin-left: auto;
}

.mobile-job-actions {
  margin-top: 8px;
}

.mobile-job-actions a,
.mobile-job-actions button {
  min-height: 38px;
  display: grid;
  place-items: center;
  color: var(--work-ink);
  background: color-mix(in srgb, var(--work-color) 14%, white);
}

.mobile-empty-jobs {
  grid-column: 1 / -1;
  text-align: center;
}

.mobile-stop-number {
  min-width: 26px;
  height: 26px;
  display: grid;
  place-items: center;
  color: white;
  border-radius: 8px;
  background: var(--ink);
  font-size: 9px;
  font-weight: 900;
}

.tech-mobile-shell.field-mobile-mode {
  width: min(430px, 100%);
  margin: 0 auto;
  padding: 10px;
  border: 8px solid #1d2925;
  border-radius: 30px;
  background: #f6f4ee;
  box-shadow: 0 24px 64px rgba(23,63,53,.2);
}

.field-mobile-mode .mobile-kpi-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.field-mobile-mode .mobile-calendar-panel {
  padding: 11px;
}

.field-mobile-mode .mobile-calendar-toolbar,
.field-mobile-mode .mobile-route-summary {
  align-items: flex-start;
  flex-direction: column;
}

.field-mobile-mode .mobile-calendar-actions {
  width: 100%;
  flex-wrap: wrap;
}

.field-mobile-mode .mobile-week-strip {
  gap: 4px;
}

.field-mobile-mode .mobile-day {
  min-height: 58px;
  padding: 6px 2px;
}

.field-mobile-mode .mobile-day small {
  font-size: 7px;
}

.field-mobile-mode .mobile-job-list {
  grid-template-columns: 1fr;
}

.field-mobile-mode .mobile-job-list .phone-actions {
  grid-template-columns: repeat(3, 1fr);
}

.mobile-job-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  margin-top: 9px;
}

.mobile-job-list .phone-actions {
  grid-template-columns: repeat(3, 1fr);
}

.mobile-job-list .phone-actions .history-button {
  color: white;
  background: var(--ink);
}

.detail-operating-row {
  display: grid;
  grid-template-columns: minmax(230px, .8fr) auto minmax(300px, 1.4fr);
  align-items: end;
  gap: 10px;
  margin: 17px 0 8px;
  padding: 13px;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: #f4f2ec;
}

.detail-operating-row label {
  margin: 0;
}

.detail-operating-row select {
  min-height: 39px;
  padding: 0 9px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: white;
}

.repair-memory {
  padding: 10px 12px;
  color: #31584e;
  border-radius: 10px;
  background: var(--mint);
  font-size: 9px;
  line-height: 1.5;
}

.settings-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 15px;
}

.wide-panel {
  grid-column: 1 / -1;
}

.panel-copy {
  margin: -4px 22px 18px;
  color: var(--muted);
  font-size: 10px;
  line-height: 1.55;
}

.approved-user-form {
  display: grid;
  grid-template-columns: 1fr 1.5fr 1fr auto;
  gap: 10px;
  align-items: end;
  padding: 0 22px 20px;
}

.approved-user-form label,
.portal-id-fields label {
  display: grid;
  gap: 6px;
  color: var(--muted);
  font-size: 9px;
  font-weight: 800;
}

.approved-user-form input,
.approved-user-form select,
.portal-id-fields input,
.user-role-select {
  min-height: 38px;
  padding: 0 10px;
  border: 1px solid var(--line);
  border-radius: 9px;
  background: white;
}

.credential-note {
  display: flex;
  gap: 14px;
  margin: 0 22px 10px;
  padding: 12px;
  color: var(--muted);
  border-radius: 10px;
  background: #f4f2ec;
  font-size: 9px;
}

.credential-note strong {
  color: var(--ink);
}

.approved-user-list {
  padding: 0 22px 22px;
}

.user-access-row {
  display: grid;
  grid-template-columns: minmax(190px, 1.4fr) 150px 90px auto auto auto;
  gap: 10px;
  align-items: center;
  padding: 14px 0;
  border-top: 1px solid var(--line);
}

.user-identity {
  display: grid;
  gap: 3px;
}

.user-identity span,
.user-access-empty {
  color: var(--muted);
  font-size: 9px;
}

.access-status {
  justify-self: start;
  padding: 5px 8px;
  border-radius: 999px;
  font-size: 8px;
  font-weight: 900;
  text-transform: uppercase;
}

.access-status.approved { color: var(--ink-2); background: var(--mint); }
.access-status.inactive { color: var(--red); background: #f7dfdc; }

.access-status.security-warning {
  color: #76500c;
  background: var(--amber);
}

.my-account-summary {
  display: grid;
  gap: 12px;
  padding: 0 22px 18px;
}

.my-account-summary > div {
  display: grid;
  gap: 3px;
}

.my-account-summary span,
.user-security-summary > span:not(.access-status) {
  color: var(--muted);
  font-size: 9px;
}

.my-account-summary strong {
  overflow-wrap: anywhere;
  font-size: 11px;
}

.account-actions {
  padding: 0 22px 22px;
}

.user-security-summary {
  grid-column: 1 / -1;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 12px;
  padding: 10px 12px;
  border-radius: 10px;
  background: #f4f2ec;
}

.portal-id-fields {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
}

.permission-list,
.guardrail-list {
  padding: 0 22px 22px;
}

.permission-list > div,
.guardrail-list > div {
  display: flex;
  gap: 15px;
  padding: 14px 0;
  border-top: 1px solid var(--line);
}

.permission-list strong {
  min-width: 90px;
  font-size: 11px;
}

.permission-list span,
.guardrail-list span {
  color: var(--muted);
  font-size: 10px;
}

.guardrail-list i {
  width: 20px;
  height: 20px;
  display: grid;
  place-items: center;
  border-radius: 6px;
  font-style: normal;
  font-size: 10px;
}

.guardrail-list i.ok { background: var(--mint); color: var(--ink-2); }
.guardrail-list i.wait { background: var(--amber); color: #6d581d; }

.portal-login-strip {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  align-items: center;
  margin: 10px 0 0;
  padding: 9px;
  border-radius: 10px;
  background: #f4f2ec;
  font-size: 8px;
}

.portal-login-strip strong {
  margin-right: 3px;
}

.portal-login-strip span {
  color: var(--muted);
}

.portal-login-strip button {
  padding: 5px 8px;
  border: 1px solid var(--line);
  border-radius: 7px;
  background: white;
  cursor: pointer;
  font-size: 8px;
  font-weight: 800;
}

.phone-actions .portal-open-button {
  color: white;
  border-color: var(--ink);
  background: var(--ink);
}

.modal-backdrop {
  position: fixed;
  inset: 0;
  z-index: 100;
  display: none;
  place-items: center;
  padding: 20px;
  background: rgba(15,39,33,.64);
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
}

.modal-backdrop.open {
  display: grid;
}

.modal {
  width: min(680px, 100%);
  max-height: calc(100vh - 40px);
  overflow-y: auto;
  padding: 28px;
  position: relative;
  border-radius: 20px;
  background: var(--paper);
  box-shadow: 0 30px 90px rgba(0,0,0,.25);
}

.modal-close {
  position: absolute;
  right: 18px;
  top: 16px;
  border: 0;
  background: transparent;
  font-size: 25px;
  cursor: pointer;
}

.modal h2 {
  margin: 7px 0 5px;
}

.modal > p {
  margin: 0 0 20px;
  color: var(--muted);
  font-size: 11px;
}

.form-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 13px;
}

.form-span-2 {
  grid-column: 1 / -1;
}

.modal label {
  display: grid;
  gap: 6px;
  margin-bottom: 13px;
  color: var(--muted);
  font-size: 10px;
  font-weight: 750;
}

.modal textarea {
  padding: 11px 12px;
  resize: vertical;
}

.check-label {
  display: flex !important;
  align-items: center;
}

.job-type-fieldset {
  min-width: 0;
  margin: 2px 0 12px;
  padding: 0;
  border: 0;
  border-radius: 0;
}

.job-type-fieldset legend {
  margin: 0 0 9px;
  padding: 0;
  color: var(--muted);
  font-size: 10px;
  font-weight: 800;
}

.job-type-options {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 8px 16px;
}

.job-type-options label {
  display: flex;
  grid-template-columns: none;
  align-items: center;
  min-width: 0;
  min-height: 32px;
  gap: 8px;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  color: var(--ink);
  background: transparent;
  font-size: 12px;
  font-weight: 750;
  line-height: 1.25;
  cursor: pointer;
}

.job-type-options label span {
  min-width: 0;
  overflow-wrap: anywhere;
}

.job-type-options input[type="checkbox"] {
  flex: 0 0 18px;
  inline-size: 18px;
  block-size: 18px;
  min-block-size: 0;
  margin: 0;
  accent-color: var(--mint-strong);
}

@media screen and (max-width: 820px) {
  .job-type-options {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 6px 14px;
  }
}

@media screen and (max-width: 520px) {
  .job-type-options {
    grid-template-columns: 1fr;
  }
}

.modal-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  padding-top: 10px;
}

body.ticket-create-page {
  overflow: auto;
  background: #e7eee9;
}

body.ticket-create-page #app-shell {
  display: none !important;
}

body.ticket-create-page #ticket-modal {
  position: static;
  display: block;
  min-height: 100dvh;
  padding: 32px clamp(16px, 4vw, 56px);
  background: linear-gradient(145deg, #e5eee9 0%, #f5f2ea 58%, #e9f0ec 100%);
  backdrop-filter: none;
}

body.ticket-create-page #ticket-modal .modal {
  width: min(1040px, 100%);
  max-height: none;
  margin: 0 auto;
  overflow: visible;
  border: 1px solid #cddbd5;
  border-radius: 22px;
  box-shadow: 0 22px 60px rgba(23, 63, 53, .14);
}

body.ticket-create-page #ticket-form .form-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

body.ticket-detail-page {
  overflow: auto;
  background: #e7eee9;
}

body.ticket-detail-page #app-shell {
  display: none !important;
}

body.ticket-detail-page #ticket-detail-modal {
  position: static;
  display: block;
  min-height: 100dvh;
  padding: 24px clamp(10px, 2vw, 36px);
  background: linear-gradient(145deg, #e5eee9 0%, #f5f2ea 58%, #e9f0ec 100%);
}

body.ticket-detail-page #ticket-detail-modal .ticket-detail-modal {
  width: min(1440px, 100%);
  max-height: none;
  margin: 0 auto;
  overflow: visible;
  border: 1px solid #cddbd5;
  border-radius: 22px;
  box-shadow: 0 22px 60px rgba(23, 63, 53, .14);
}

#ticket-list-print-area th.ticket-technician-column {
  overflow-wrap: normal;
  word-break: keep-all;
  white-space: nowrap;
}

.account-modal {
  width: min(510px, 100%);
}

.account-modal form {
  display: grid;
  gap: 3px;
}

.account-modal input {
  width: 100%;
  min-height: 44px;
  padding: 0 12px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: white;
}

.password-input-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 7px;
}

.password-input-row input {
  min-width: 0;
}

.password-visibility-button {
  min-width: 58px;
  min-height: 42px;
  padding: 0 10px;
  border: 1px solid var(--line);
  border-radius: 10px;
  color: var(--ink-2);
  background: #f5f3ed;
  font-size: 9px;
  font-weight: 850;
  cursor: pointer;
}

.password-visibility-button:hover,
.password-visibility-button:focus-visible {
  border-color: var(--ink-2);
  background: var(--mint);
}

.account-form-message {
  margin: 2px 0 5px;
  padding: 10px 12px;
  border-radius: 10px;
  color: #8a2d26;
  background: #fbe9e6;
  font-size: 9px;
  line-height: 1.5;
}

.password-rules {
  margin: 2px 0 8px;
  padding: 10px 12px;
  color: var(--muted);
  border-radius: 10px;
  background: var(--mint);
  font-size: 9px;
  line-height: 1.5;
}

.ticket-detail-modal {
  width: min(980px, 100%);
}

.detail-ticket-head {
  padding-right: 35px;
}

.detail-ticket-head h2 {
  margin: 7px 0 5px;
}

.detail-ticket-head p {
  margin: 0;
  color: var(--muted);
  font-size: 10px;
}

.detail-ticket-head .ticket-detail-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  margin-top: 12px;
}

.ticket-detail-contact-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  margin-top: 11px;
}

.ticket-detail-contact-actions a {
  padding: 7px 10px;
  color: var(--ink);
  border: 1px solid var(--line);
  border-radius: 9px;
  background: var(--mint);
  font-size: 9px;
  font-weight: 800;
  text-decoration: none;
}

.detail-tabs {
  display: flex;
  gap: 18px;
  margin: 21px 0 15px;
  border-bottom: 1px solid var(--line);
}

.detail-tab {
  padding: 0 0 10px;
  color: var(--muted);
  border: 0;
  border-bottom: 2px solid transparent;
  background: transparent;
  font-size: 10px;
  font-weight: 850;
  cursor: pointer;
}

.detail-tab.active {
  color: var(--ink);
  border-color: var(--mint-strong);
}

.attachment-download {
  width: fit-content;
  padding: 7px 10px;
  color: var(--ink);
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--mint);
  font-size: 9px;
  font-weight: 850;
  text-decoration: none;
}

.repair-workspace {
  display: grid;
  gap: 12px;
  margin-bottom: 12px;
}

.repair-section-bar {
  min-height: 54px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 13px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: linear-gradient(135deg, #e9eee9, #f7f5ef);
}

.repair-section-bar div span,
.repair-section-bar div strong {
  display: block;
}

.repair-section-bar div span {
  color: var(--muted);
  font-size: 8px;
  font-weight: 900;
  letter-spacing: .08em;
}

.repair-section-bar div strong {
  margin-top: 3px;
  font-size: 12px;
}

.repair-section-status,
.repair-section-note {
  color: var(--muted);
  font-size: 9px;
  font-weight: 800;
  text-align: right;
}

.repair-section-status {
  max-width: 310px;
  padding: 7px 10px;
  color: #0b6047;
  border-radius: 999px;
  background: #dcefe7;
}

.repair-info-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}

.repair-info-grid > div {
  min-width: 0;
  padding: 11px 12px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--panel);
}

.repair-info-grid span,
.repair-info-grid strong {
  display: block;
}

.repair-info-grid span {
  color: var(--muted);
  font-size: 8px;
  font-weight: 850;
  text-transform: uppercase;
}

.repair-info-grid strong {
  margin-top: 5px;
  overflow-wrap: anywhere;
  font-size: 11px;
}

.repair-photo-strip {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
}

.repair-photo-strip a {
  overflow: hidden;
  color: var(--ink);
  border: 1px solid var(--line);
  border-radius: 11px;
  background: var(--panel);
  font-size: 8px;
  font-weight: 800;
  text-decoration: none;
}

.repair-photo-strip img {
  width: 100%;
  height: 118px;
  display: block;
  object-fit: cover;
  background: var(--surface);
}

.repair-photo-strip a span {
  display: block;
  padding: 8px;
}

.repair-part-list {
  display: grid;
  gap: 7px;
}

.repair-part-list article {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
  padding: 11px 12px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--panel);
}

.repair-part-list article span,
.repair-part-list article strong,
.repair-part-list article small {
  display: block;
}

.repair-part-list article div > span,
.repair-part-list article small {
  color: var(--muted);
  font-size: 8px;
}

.repair-part-list article strong {
  margin-top: 3px;
  font-size: 10px;
}

.repair-empty-state {
  grid-column: 1 / -1;
  padding: 18px;
  color: var(--muted);
  border: 1px dashed var(--line);
  border-radius: 10px;
  background: #faf9f4;
  font-size: 9px;
}

.repair-empty-state strong,
.repair-empty-state span {
  display: block;
}

.repair-empty-state strong {
  margin-bottom: 4px;
  color: var(--ink);
}

.visit-timeline,
.audit-timeline {
  display: grid;
  gap: 10px;
}

.visit-entry,
.audit-entry {
  display: grid;
  grid-template-columns: 75px 1fr;
  gap: 14px;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: var(--panel);
}

.visit-number {
  width: 55px;
  height: 55px;
  display: grid;
  place-items: center;
  color: white;
  border-radius: 14px;
  background: var(--ink);
  font-size: 11px;
  font-weight: 900;
}

.visit-entry h4,
.audit-entry h4 {
  margin: 0 0 5px;
}

.visit-entry p,
.audit-entry p {
  margin: 0;
  color: var(--muted);
  font-size: 10px;
  line-height: 1.55;
}

.visit-entry small,
.audit-entry small {
  display: block;
  margin-top: 8px;
  color: #89928e;
  font-size: 9px;
}

.visit-form {
  margin-top: 16px;
  padding: 17px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: #f4f2ec;
}

.visit-form h3 {
  margin: 0 0 12px;
  font-size: 12px;
}

.claim-handoff-note {
  display: flex;
  gap: 8px;
  margin-top: 12px;
  padding: 12px 14px;
  color: #67542d;
  border: 1px solid #ead9ad;
  border-radius: 11px;
  background: #fff8df;
  font-size: 9px;
  line-height: 1.45;
}

.claim-summary-grid,
.ticket-claim-summary {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin-bottom: 14px;
}

.ticket-claim-summary {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.claim-summary-grid article,
.ticket-claim-summary article {
  min-width: 0;
  padding: 15px 16px;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: var(--panel);
}

.claim-summary-grid span,
.claim-summary-grid strong,
.claim-summary-grid small,
.ticket-claim-summary span,
.ticket-claim-summary strong {
  display: block;
}

.claim-summary-grid span,
.ticket-claim-summary span {
  color: var(--muted);
  font-size: 8px;
  font-weight: 900;
  letter-spacing: .07em;
  text-transform: uppercase;
}

.claim-summary-grid strong,
.ticket-claim-summary strong {
  margin-top: 5px;
  font-size: 18px;
}

.claim-summary-grid small {
  margin-top: 3px;
  color: var(--muted);
  font-size: 8px;
}

.claim-filters {
  grid-template-columns:
    minmax(130px, .75fr)
    repeat(2, minmax(145px, .85fr))
    minmax(230px, 1.45fr)
    repeat(3, minmax(135px, .8fr));
  gap: 12px;
  align-items: end;
  padding: 16px;
}

.claim-search-field {
  min-width: 0;
}

.claim-filter-actions {
  display: flex;
  grid-column: 6 / -1;
  justify-content: flex-end;
  gap: 10px;
}

.dense-filters .claim-filter-actions .filter-search-button,
.dense-filters .claim-filter-actions .filter-reset {
  width: auto;
  min-width: 132px;
  height: 42px;
  min-height: 42px;
  padding: 0 20px;
}

.claim-status-tag {
  display: inline-flex;
  align-items: center;
  min-height: 25px;
  padding: 5px 8px;
  color: #22594b;
  border-radius: 999px;
  background: var(--mint);
  font-size: 9px;
  font-weight: 850;
  white-space: nowrap;
}

.claim-outstanding { color: #a04337; }
.claim-settled { color: #1c6b50; }

.claim-entry-form {
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: #f7f5ef;
}

.claim-core-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}

.claim-amount-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
  margin: 3px 0 12px;
}

.claim-amount-grid fieldset {
  min-width: 0;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 7px;
  margin: 0;
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--panel);
}

.claim-amount-grid legend {
  padding: 0 4px;
  color: var(--ink);
  font-size: 9px;
  font-weight: 850;
}

.claim-amount-grid label {
  min-width: 0;
  margin-bottom: 0;
  font-size: 8px;
}

.claim-amount-grid input {
  width: 100%;
  min-width: 0;
}

.claim-form-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
}

.ticket-claim-list {
  display: grid;
  gap: 9px;
}

.ticket-claim-card {
  padding: 13px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--panel);
}

.ticket-claim-card > header,
.ticket-claim-card > footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}

.ticket-claim-card header span,
.ticket-claim-card header strong {
  display: block;
}

.ticket-claim-card header > div > span,
.ticket-claim-card footer small,
.ticket-claim-card-grid span,
.ticket-claim-card-grid small {
  color: var(--muted);
  font-size: 8px;
}

.ticket-claim-card-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
  margin: 11px 0;
}

.ticket-claim-card-grid > div {
  min-width: 0;
  padding: 9px;
  border-radius: 9px;
  background: #edf1f3;
}

.ticket-claim-card-grid strong,
.ticket-claim-card-grid small {
  display: block;
  margin-top: 3px;
  overflow-wrap: anywhere;
}

.ticket-claim-card > p {
  margin: 0 0 10px;
  color: var(--muted);
  font-size: 9px;
}

.customer-chat-workspace {
  display: grid;
  gap: 13px;
}

.customer-chat-boundary {
  margin: 0;
  padding: 12px 14px;
  color: var(--muted);
  border: 1px solid var(--line);
  border-radius: 11px;
  background: #f7f5ef;
  font-size: 10px;
  line-height: 1.55;
}

.customer-chat-compose {
  display: grid;
  gap: 11px;
  padding: 15px;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: var(--panel);
}

.customer-chat-compose textarea {
  width: 100%;
  resize: vertical;
}

.customer-chat-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.customer-chat-actions a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-decoration: none;
}

.customer-request-history {
  display: grid;
  gap: 7px;
}

.customer-request-history article {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 10px;
  align-items: center;
  padding: 11px 12px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--panel);
}

.customer-request-history strong,
.customer-request-history span {
  display: block;
}

.customer-request-history span,
.customer-request-history small {
  margin-top: 3px;
  color: var(--muted);
  font-size: 8px;
}

.audit-entry {
  grid-template-columns: 120px 1fr;
}

.audit-who {
  font-size: 10px;
  font-weight: 850;
}

.clickable-ticket {
  color: #185c50;
  border: 0;
  background: transparent;
  padding: 0;
  font: inherit;
  text-align: left;
  cursor: pointer;
  text-decoration: underline;
  text-decoration-color: rgba(24,92,80,.25);
  text-underline-offset: 3px;
}

.ticket-primary-id,
.ticket-customer-name,
.ticket-appliance-cell > span {
  font-weight: 620;
}

.ticket-unread > td {
  font-weight: 760;
  background: #f1f8f5;
}

.ticket-unread .ticket-primary-id,
.ticket-unread .ticket-customer-name,
.ticket-unread .ticket-appliance-cell > span {
  font-weight: 900;
}

.ticket-unread-badge {
  display: inline-flex;
  min-height: 18px;
  margin-left: 7px;
  padding: 2px 7px;
  align-items: center;
  justify-content: center;
  color: #fff;
  border-radius: 999px;
  background: #28745f;
  font-size: 9px;
  font-style: normal;
  font-weight: 900;
  letter-spacing: .04em;
  line-height: 1;
  text-decoration: none;
  text-transform: uppercase;
}

.table-ticket-link {
  color: #185c50;
  text-decoration-color: rgba(24,92,80,.28);
  text-underline-offset: 3px;
}

body.test-workspace a.clickable-ticket[target="_blank"],
body.test-workspace a.mobile-ticket-open[target="_blank"],
body.test-workspace a.table-ticket-link[target="_blank"] {
  cursor: pointer;
}

.clickable-ticket .ticket-search-match {
  margin-top: 4px;
  color: #8a5a12;
  font-size: 8px;
  font-weight: 800;
  text-decoration: none;
}

.toast {
  position: fixed;
  left: 50%;
  right: auto;
  bottom: max(22px, env(safe-area-inset-bottom));
  z-index: 230;
  width: max-content;
  max-width: min(480px, calc(100vw - 32px));
  padding: 13px 16px;
  color: white;
  border-radius: 11px;
  background: var(--ink);
  box-shadow: var(--shadow);
  font-size: 14px;
  line-height: 1.45;
  text-align: center;
  overflow-wrap: anywhere;
  opacity: 0;
  pointer-events: none;
  transform: translate(-50%, 8px);
  transition: .2s ease;
}

.toast.show {
  opacity: 1;
  transform: translate(-50%, 0);
}

.hidden {
  display: none !important;
}

@media (max-width: 1120px) {
  .portal-grid { grid-template-columns: repeat(2,1fr); }
  .metric-grid { grid-template-columns: repeat(2,1fr); }
  .work-queue { grid-template-columns: repeat(2,1fr); }
  .dispatch-board { grid-template-columns: repeat(4, 260px); }
  .route-overview { grid-template-columns: 1fr; }
  .tech-load-grid { grid-template-columns: repeat(2,1fr); }
  .parts-board { grid-template-columns: 1fr 1fr; }
  .insight-grid { grid-template-columns: 1fr 1fr; }
  .sync-status { display: none; }
  .top-actions { flex-wrap: wrap; justify-content: flex-end; }
  .dense-filters { grid-template-columns: repeat(4, minmax(130px, 1fr)); }
  .parts-filters { grid-template-columns: repeat(3, minmax(140px, 1fr)); }
  .overall-status-grid { grid-template-columns: 1fr; }
  .score-method-grid { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 820px) {
  .view {
    animation: none;
  }

  .view.active {
    opacity: 1;
    transform: none;
    isolation: isolate;
  }

  .topbar {
    background: var(--paper);
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
  }

  .sidebar {
    width: min(86vw, 310px);
    transform: translateX(-100%);
    transition: transform .2s ease;
    overflow-y: auto;
  }
  .sidebar.open { transform: none; }
  .sidebar-close {
    width: 44px;
    height: 44px;
    display: grid;
    place-items: center;
    margin-left: auto;
    color: white;
    border: 1px solid rgba(255,255,255,.2);
    border-radius: 12px;
    background: rgba(255,255,255,.08);
    font-size: 27px;
    cursor: pointer;
  }
  .sidebar-backdrop {
    position: fixed;
    inset: 0;
    z-index: 29;
    display: block;
    padding: 0;
    border: 0;
    background: rgba(8,27,22,.54);
    opacity: 0;
    pointer-events: none;
    transition: opacity .2s ease;
  }
  .sidebar.open + .sidebar-backdrop {
    opacity: 1;
    pointer-events: auto;
  }
  body.mobile-menu-open {
    overflow: hidden;
  }
  .main { margin-left: 0; }
  .mobile-menu { display: block; }
  .topbar { padding: 14px 18px; }
  .test-workspace-banner { align-items: flex-start; flex-direction: column; gap: 5px; padding: 9px 18px; }
  .test-workspace-banner b { margin-left: 0; }
  .account-access-banner { align-items: stretch; flex-direction: column; gap: 9px; padding: 11px 18px; }
  .account-access-banner .soft-button { width: 100%; }
  .topbar .primary-button,
  .role-picker span { display: none; }
  .view { padding: 24px 18px 40px; }
  .hero-card { align-items: flex-start; flex-direction: column; padding: 25px; }
  .hero-stat { margin: 0; }
  .dashboard-grid,
  .intake-layout,
  .settings-grid { grid-template-columns: 1fr; }
  .intake-rules { position: static; }
  .page-intro { align-items: flex-start; flex-direction: column; gap: 12px; }
  .route-planner { align-items: flex-start; flex-direction: column; }
  .route-plan-actions { width: 100%; flex-wrap: wrap; }
  .calendar-head { align-items: flex-start; flex-direction: column; }
  .planner-status-legend { justify-content: flex-start; flex-wrap: wrap; }
  .route-map-head,
  .calendar-selection { align-items: flex-start; flex-direction: column; }
  .parts-summary { grid-template-columns: repeat(2,1fr); }
  .parts-board,
  .insight-grid { grid-template-columns: 1fr; }
  .overall-status-head,
  .overall-status-toolbar,
  .report-card-head { align-items: flex-start; flex-direction: column; }
  .report-updated { margin-left: 0; }
  .overall-kpi-grid { grid-template-columns: 1fr 1fr; }
  .ai-hero { align-items: flex-start; flex-direction: column; }
  .confidence { width: 100%; padding: 18px 0 0; border-left: 0; border-top: 1px solid rgba(255,255,255,.16); }
  .roadmap-row { grid-template-columns: 1fr; }
  .roadmap-row > div { border-left: 0; border-top: 1px solid var(--line); }
  .roadmap-row > div:first-child { border-top: 0; }
  .dense-filters,
  .parts-filters { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .mobile-calendar-toolbar,
  .mobile-route-summary { align-items: flex-start; flex-direction: column; }
  .mobile-page-actions { width: 100%; justify-content: flex-start; }
  .field-team-heading { align-items: flex-start; flex-direction: column; }
  .field-team-grid {
    display: flex;
    padding-bottom: 5px;
    overflow-x: auto;
    scroll-snap-type: x proximity;
  }
  .field-team-card { min-width: min(240px, 78vw); scroll-snap-align: start; }
  .mobile-kpi-grid { grid-template-columns: repeat(2,1fr); }
  .mobile-calendar-actions { width: 100%; flex-wrap: wrap; }
  .mobile-job-list { grid-template-columns: 1fr; }
  .detail-operating-row { grid-template-columns: 1fr; align-items: stretch; }
  .approved-user-form { grid-template-columns: 1fr 1fr; }
  .user-access-row { grid-template-columns: 1fr 130px auto auto auto; }
  .user-identity { grid-column: 1 / -1; }
  .portal-id-fields { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 540px) {
  .hero-card,
  .hero-copy {
    width: 100%;
    min-width: 0;
  }
  .hero-copy h2 {
    max-width: none;
    font-size: 30px;
    overflow-wrap: break-word;
  }
  .role-picker { display: none; }
  .workspace-mode-switch button { padding: 0 8px; }
  .portal-launch { display: none; }
  .portal-grid { grid-template-columns: 1fr; }
  .planner-calendar-panel { padding: 13px; }
  .planner-calendar-panel .calendar-weekdays { font-size: 11px; }
  .planner-calendar-panel .calendar-day { min-height: 70px; padding: 7px; }
  .planner-calendar-panel .calendar-day strong { font-size: 16px; }
  .planner-calendar-panel .calendar-day small { margin-top: 7px; font-size: 11px; }
  .metric-grid,
  .work-queue,
  .tech-load-grid,
  .parts-summary,
  .form-grid { grid-template-columns: 1fr; }
  .topbar h1 { font-size: 16px; }
  .role-picker select { max-width: 120px; font-size: 11px; }
  .email-event { grid-template-columns: 40px 1fr; }
  .email-actions { grid-column: 2; align-items: flex-start; }
  .table-tools { flex-direction: column; }
  .dispatch-toolbar { flex-wrap: wrap; }
  .toolbar-spacer { display: none; }
  .workspace-tabs { width: 100%; overflow-x: auto; }
  .workspace-tab { flex: 1 0 auto; }
  .dense-filters,
  .parts-filters { grid-template-columns: 1fr; }
  .overall-status-panel { padding: 15px; }
  .overall-kpi-grid,
  .score-method-grid { grid-template-columns: 1fr; }
  .result-bar { align-items: flex-start; flex-direction: column; padding: 10px 12px; }
  .result-bar button { margin-left: 0; }
  .page-action-group { width: 100%; flex-wrap: wrap; }
  .mobile-page-actions > button,
  .mobile-page-actions > label { flex: 1 1 145px; }
  .mobile-page-actions > button,
  .mobile-page-actions select,
  .mobile-page-actions .tech-view-switch button { min-height: 44px; }
  .mobile-page-actions .tech-view-switch { width: 100%; }
  .mobile-page-actions .tech-view-switch button { flex: 1; }
  .mobile-command-bar { grid-template-columns: 1fr auto; }
  .mobile-command-bar > div { grid-column: 1 / -1; }
  .mobile-search-panel { grid-template-columns: 1fr; }
  .tech-mobile-shell { padding: 10px; }
  .tech-mobile-shell.field-mobile-mode { width: 100%; border-width: 0; border-radius: 18px; box-shadow: none; }
  .mobile-calendar-panel { padding: 11px; }
  .mobile-week-strip { gap: 4px; }
  .mobile-day { min-height: 59px; padding: 7px 3px; }
  .mobile-day strong { font-size: 13px; }
  .mobile-month-day { min-height: 48px; padding: 5px 2px; }
  .mobile-month-day strong { font-size: 11px; }
  .mobile-route-summary .recommend-chip { white-space: normal; }
  .approved-user-form,
  .user-access-row,
  .portal-id-fields { grid-template-columns: 1fr; }
  .portal-id-fields { grid-column: 1; }
}

/* Readability and field-work refinements */
body {
  font-size: 15px;
  line-height: 1.55;
}

.sidebar-nav button,
.workspace-tab,
.primary-button,
.soft-button,
.date-button {
  font-size: 13px;
}

.page-intro p,
.hero-copy p,
.email-event p,
.priority-item small,
.phone-job p,
.modal p,
.ticket-detail-meta,
.repair-status-line {
  font-size: 12px;
  line-height: 1.55;
}

.dense-table th,
.dense-table td,
.part-table th,
.part-table td {
  padding: 11px 10px;
  font-size: 12px;
  line-height: 1.4;
}

.dense-table td small,
.part-table td small,
.clickable-ticket small {
  font-size: 10.5px;
}

.dense-filters label,
.parts-filters label,
.modal label,
.form-grid label {
  font-size: 12px;
}

.dense-filters input,
.dense-filters select,
.parts-filters input,
.parts-filters select,
.form-grid input,
.form-grid select,
.modal input,
.modal select,
.modal textarea {
  min-height: 42px;
  font-size: 14px;
}

.ticket-detail-modal {
  width: min(1440px, calc(100vw - 24px));
  max-height: calc(100dvh - 24px);
  padding: 18px;
}

.ticket-detail-modal .modal-close {
  position: sticky;
  top: 0;
  z-index: 7;
  display: grid;
  width: 38px;
  height: 38px;
  float: right;
  place-items: center;
  border-radius: 50%;
  color: var(--ink);
  background: #fff;
  box-shadow: 0 5px 18px rgba(20, 54, 46, .12);
}

.detail-ticket-head {
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: 15px;
  background: linear-gradient(135deg, #fff 0%, #f1f5f0 100%);
}

.detail-record-bar {
  display: grid;
  grid-template-columns: minmax(240px, .75fr) minmax(560px, 1.75fr);
  align-items: stretch;
  gap: 14px;
}

.detail-ticket-identity {
  min-width: 0;
  padding: 2px 4px;
}

.detail-ticket-identity h2 {
  margin: 4px 0;
  overflow-wrap: anywhere;
  font-size: 24px;
}

.detail-ticket-identity small {
  color: var(--muted);
  font-size: 11px;
  font-weight: 750;
}

.detail-fact-grid,
.detail-lifecycle {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 7px;
}

.detail-fact-grid > span,
.detail-lifecycle > span {
  min-width: 0;
  padding: 9px 10px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: rgba(255,255,255,.88);
}

.detail-fact-grid small,
.detail-fact-grid strong,
.detail-lifecycle small,
.detail-lifecycle strong {
  display: block;
}

.detail-fact-grid small,
.detail-lifecycle small {
  color: var(--muted);
  font-size: 9px;
  font-weight: 850;
  letter-spacing: .04em;
  text-transform: uppercase;
}

.detail-fact-grid strong,
.detail-lifecycle strong {
  margin-top: 3px;
  overflow-wrap: anywhere;
  font-size: 12px;
}

.detail-customer-line {
  margin-top: 12px !important;
  color: var(--ink) !important;
}

.ticket-address-row {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 9px 12px;
  margin-top: 12px;
}

.ticket-address-row .detail-customer-line {
  flex: 0 1 auto;
  margin: 0 !important;
  font-size: 14px;
}

.ticket-address-tools {
  display: inline-flex;
  align-items: stretch;
  flex-wrap: wrap;
  gap: 6px;
}

.address-tool-button,
.ticket-distance-badge {
  min-height: 30px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  padding: 6px 9px;
  border: 1px solid #bad6cc;
  border-radius: 8px;
  color: #0d4e3d;
  background: #edf7f2;
  font: inherit;
  font-size: 10px;
  font-weight: 850;
  line-height: 1;
  text-decoration: none;
  white-space: nowrap;
  cursor: pointer;
}

.address-tool-button:hover,
.address-tool-button:focus-visible {
  border-color: #5d9d88;
  background: #dff0e9;
  outline: none;
}

.address-tool-button span {
  font-size: 13px;
  line-height: 1;
}

.ticket-distance-badge {
  min-width: 94px;
  align-items: flex-start;
  flex-direction: column;
  gap: 2px;
  border-color: #177a58;
  color: #fff;
  background: #177a58;
}

.ticket-distance-badge:hover,
.ticket-distance-badge:focus-visible {
  color: #fff;
  background: #0e5f44;
  outline: 3px solid rgba(23, 122, 88, .2);
  outline-offset: 1px;
}

.address-tool-button:disabled,
.address-tool-button:disabled:hover,
.ticket-distance-badge:disabled,
.ticket-distance-badge:disabled:hover {
  border-color: #d7ddd9;
  color: #7a847f;
  background: #eef0ee;
  box-shadow: none;
  outline: none;
  opacity: .72;
  cursor: not-allowed;
}

.ticket-distance-badge strong {
  font-size: 11px;
}

.ticket-distance-badge span {
  font-size: 8px;
  font-weight: 750;
  opacity: .88;
}

.location-privacy-note {
  display: block;
  margin-top: 5px;
  color: var(--muted);
  font-size: 9px;
  line-height: 1.45;
}

.detail-lifecycle {
  grid-template-columns: repeat(5, minmax(0, 1fr));
  margin-top: 12px;
}

.detail-lifecycle > span {
  border-color: #cfe4dc;
  background: #edf7f2;
}

.ticket-detail-modal .detail-tabs {
  position: sticky;
  top: -18px;
  z-index: 6;
  gap: 5px;
  margin: 14px 0 12px;
  padding: 9px 42px 9px 0;
  border-bottom: 1px solid var(--line);
  background: var(--paper);
}

.ticket-detail-modal .detail-tab {
  padding: 9px 13px;
  border: 1px solid var(--line);
  border-radius: 9px 9px 0 0;
  background: #f3f1eb;
  font-size: 12px;
}

.ticket-detail-modal .detail-tab.active {
  color: white;
  border-color: var(--ink);
  background: var(--ink);
}

.input-with-action {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 8px;
  align-items: center;
}

.field-icon-button {
  min-height: 42px;
  padding: 0 13px;
  border: 1px solid var(--line);
  border-radius: 11px;
  color: var(--ink);
  background: var(--mint);
  font-size: 12px;
  font-weight: 800;
  white-space: nowrap;
  cursor: pointer;
}

.internal-note-cell {
  display: -webkit-box;
  overflow: hidden;
  max-width: 100%;
  padding: 5px 7px;
  color: #5f4200;
  border-left: 4px solid #d99a24;
  border-radius: 5px;
  background: #fff5d8;
  font-weight: 750;
  white-space: normal;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
}

.ticket-internal-warning {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: start;
  gap: 10px 14px;
  margin: -2px -2px 13px;
  padding: 13px 15px;
  color: #7b1717;
  border: 2px solid #cf3e3e;
  border-left-width: 8px;
  border-radius: 10px;
  background: #fff0f0;
  box-shadow: 0 4px 12px rgba(166, 31, 31, .09);
}

.ticket-internal-warning strong {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-size: 13px;
  font-weight: 950;
  letter-spacing: .045em;
  white-space: nowrap;
}

.ticket-internal-warning strong span {
  width: 22px;
  height: 22px;
  display: inline-grid;
  flex: 0 0 22px;
  place-items: center;
  color: #fff;
  border-radius: 50%;
  background: #b91f2d;
  font-size: 15px;
  line-height: 1;
}

.ticket-internal-warning p {
  margin: 0;
  color: #641414;
  font-size: 14px;
  font-weight: 750;
  line-height: 1.48;
  overflow-wrap: anywhere;
  white-space: pre-wrap;
}

.diag-flag {
  display: inline-grid;
  width: 28px;
  height: 28px;
  place-items: center;
  border-radius: 50%;
  font-size: 12px;
  font-weight: 800;
}

.diag-flag.yes { color: #0b6047; background: #dcefe7; }
.diag-flag.no { color: #8b4c18; background: #fae8cf; }

.ticket-edit-form {
  display: grid;
  gap: 10px;
  padding: 2px 0 0;
}

.detail-field-section {
  padding: 13px;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: rgba(255,255,255,.72);
}

.detail-field-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px 12px;
}

.ticket-edit-form .detail-field-grid label,
.ticket-edit-form .detail-field-section > label {
  min-width: 0;
  margin: 0;
}

.detail-span-2 {
  grid-column: span 2;
}

.detail-span-4 {
  grid-column: 1 / -1;
}

.detail-section-title {
  margin: -13px -13px 12px;
  padding: 10px 13px;
  border-radius: 9px;
  color: var(--ink);
  background: #e8ece8;
  font-size: 13px;
}

.ticket-detail-savebar {
  position: sticky;
  bottom: -18px;
  z-index: 5;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 14px;
  margin-top: 4px;
  padding: 11px 12px;
  border: 1px solid #bfd7ce;
  border-radius: 12px 12px 0 0;
  background: rgba(238,247,243,.97);
  box-shadow: 0 -8px 24px rgba(20,54,46,.1);
}

.ticket-detail-savebar span {
  color: var(--muted);
  font-size: 11px;
  font-weight: 750;
}

.ticket-detail-savebar.has-unsaved-changes {
  border-color: #d69a2d;
  background: #fff9e8;
}

.ticket-detail-savebar.has-unsaved-changes span {
  color: #8a5a00;
}

.ticket-readiness {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 12px;
  align-items: center;
  margin-top: 12px;
  padding: 12px;
  border: 1px solid #cfe4dc;
  border-radius: 12px;
  background: linear-gradient(135deg, #f1faf6, #f8fbfa);
}

.ticket-readiness .readiness-score {
  min-width: 80px;
  padding: 10px;
  border-radius: 10px;
  background: #173f36;
  color: white;
  text-align: center;
}

.ticket-readiness strong,
.ticket-readiness span,
.ticket-readiness small {
  display: block;
}

.ticket-readiness .readiness-score strong {
  font-size: 21px;
}

.ticket-readiness .readiness-score span,
.ticket-readiness small,
.ticket-readiness > div:last-child span {
  font-size: 10px;
}

.ticket-readiness > div:last-child strong {
  margin: 3px 0;
  font-size: 13px;
}

.ticket-readiness > div:last-child span,
.ticket-readiness small {
  color: var(--muted);
}

.next-action {
  display: inline-block;
  max-width: 165px;
  padding: 5px 8px;
  border-radius: 8px;
  background: #edf7f2;
  color: #175a49;
  font-size: 10px;
  font-weight: 850;
  line-height: 1.25;
}

.next-action-urgent {
  background: #fff0ed;
  color: #a33b2f;
}

.next-action-attention {
  background: #fff8df;
  color: #8a5a00;
}

.next-action-done {
  background: #eef1f3;
  color: #59666f;
}

.related-ticket-alert {
  display: grid;
  gap: 8px;
  margin: 0 48px 10px 0;
  padding: 10px 12px;
  border: 1px solid #e8a5de;
  border-radius: 12px;
  color: #8f185f;
  background: #fde7f8;
}

.related-ticket-alert-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.related-ticket-alert-heading strong {
  font-size: 14px;
}

.related-ticket-alert-records {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 7px;
}

.related-ticket-alert-records button {
  display: grid;
  gap: 2px;
  min-width: 0;
  padding: 8px 10px;
  border: 1px solid rgba(143, 24, 95, .22);
  border-radius: 9px;
  color: var(--ink);
  background: rgba(255, 255, 255, .82);
  text-align: left;
  cursor: pointer;
}

.related-ticket-alert-records button:hover,
.related-ticket-alert-records button:focus-visible {
  border-color: #b32682;
  background: #fff;
}

.related-ticket-alert-records strong,
.related-ticket-alert-records span,
.related-ticket-alert-records small {
  min-width: 0;
  overflow-wrap: anywhere;
}

.related-ticket-alert-records span,
.related-ticket-alert-records small {
  font-size: 10px;
}

.detail-related-list {
  display: grid;
  gap: 7px;
}

.detail-related-ticket {
  display: grid;
  grid-template-columns: minmax(150px, 1.05fr) minmax(160px, 1.15fr) minmax(140px, .9fr) minmax(170px, 1.15fr) minmax(130px, .85fr) auto;
  align-items: center;
  gap: 12px;
  width: 100%;
  padding: 11px 12px;
  border: 1px solid var(--line);
  border-radius: 11px;
  color: var(--ink);
  background: #fff;
  text-align: left;
  cursor: pointer;
}

.detail-related-ticket:hover,
.detail-related-ticket:focus-visible {
  border-color: var(--mint-strong);
  background: #eff8f4;
}

.detail-related-ticket span,
.detail-related-ticket strong,
.detail-related-ticket small {
  min-width: 0;
}

.detail-related-ticket strong,
.detail-related-ticket small {
  display: block;
}

.detail-related-ticket strong {
  overflow-wrap: anywhere;
  font-size: 12px;
}

.detail-related-ticket small {
  margin-top: 3px;
  color: var(--muted);
  font-size: 10px;
}

.detail-related-ticket > span:last-child {
  color: var(--mint-strong);
  font-size: 24px;
}

.repair-section-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
}

.service-parts-workspace {
  margin-top: 14px;
}

.visit-form-heading,
.visit-record-heading,
.service-part-transaction > header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.visit-form-heading {
  margin-bottom: 14px;
}

.visit-form-heading span {
  color: var(--mint-strong);
  font-size: 10px;
  font-weight: 900;
  letter-spacing: .12em;
}

.visit-form-heading h3 {
  margin: 2px 0 0;
  font-size: 16px;
}

.visit-form-heading small,
.visit-record-heading small {
  color: var(--muted);
  font-size: 11px;
}

.visit-record-heading {
  padding-bottom: 10px;
  border-bottom: 1px solid var(--line);
}

.visit-record-heading div {
  display: flex;
  align-items: center;
  gap: 9px;
}

.visit-record-heading span {
  padding: 5px 8px;
  border-radius: 999px;
  color: var(--ink);
  background: var(--mint);
  font-size: 10px;
  font-weight: 800;
}

.visit-er-grid,
.field-part-grid {
  display: grid;
  gap: 11px;
}

.related-ticket-record { display: grid; align-content: start; gap: 5px; min-width: 0; }
.related-ticket-alert-records .duplicate-remove-button { font-size: 10px; color: #993b32; background: #fff9f7; }
.technician-detail .related-ticket-alert.office-related-tickets:not(.hidden) { display: block !important; }

.visit-er-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.field-part-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.visit-er-grid label,
.field-part-grid label {
  min-width: 0;
}

.visit-er-grid input,
.visit-er-grid select,
.visit-er-grid textarea,
.field-part-grid input,
.field-part-grid select,
.field-part-grid textarea {
  width: 100%;
  min-width: 0;
  max-width: 100%;
}

.visit-span-2,
.field-part-note {
  grid-column: span 2;
}

.visit-span-all {
  grid-column: 1 / -1;
}

.visit-check {
  display: flex !important;
  min-height: 44px;
  align-items: center;
  gap: 8px;
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: #fff;
}

.visit-check input {
  width: 18px;
  min-height: 18px !important;
  margin: 0;
}

.field-part-form {
  display: grid;
  gap: 12px;
  margin: 12px 0;
  padding: 14px;
  border: 1px dashed #9fc8b7;
  border-radius: 13px;
  background: #f3faf7;
}

.field-part-form > .primary-button {
  justify-self: end;
}

.repair-part-list .service-part-transaction {
  display: grid;
  grid-template-columns: 1fr;
  align-items: stretch;
  gap: 10px;
  padding: 14px;
}

.service-part-transaction > header > div span {
  color: var(--muted);
  font-size: 10px;
}

.service-part-transaction > header strong {
  margin-top: 2px;
  font-size: 13px;
}

.service-part-office-meta {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  padding: 8px 10px;
  border-radius: 9px;
  background: #f4f2ec;
}

.service-part-edit-form {
  display: grid;
  gap: 10px;
}

.service-part-edit-form > .soft-button {
  justify-self: end;
}

.visit-history-card {
  display: grid;
  min-width: 0;
  gap: 10px;
}

.visit-history-facts {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
}

.visit-history-facts > div,
.visit-history-note {
  min-width: 0;
  padding: 9px 10px;
  border: 1px solid #c8dbd3;
  border-radius: 10px;
  background: #fff;
}

.visit-history-facts span,
.visit-history-note > span {
  display: block;
  margin-bottom: 3px;
  color: #61726b;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .045em;
  text-transform: uppercase;
}

.visit-history-facts strong {
  display: block;
  color: #173f35;
  font-size: 12px;
  line-height: 1.4;
  overflow-wrap: anywhere;
}

.visit-history-note p {
  margin: 0;
  color: #274a40;
  font-size: 12px;
  line-height: 1.5;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

.visit-history-alert {
  border-color: #e4c784;
  background: #fff8e6;
}

.visit-history-footer {
  margin: 0 !important;
  color: #687971 !important;
  font-size: 10px !important;
}

.visit-history-empty {
  padding: 18px;
  border: 1px dashed #b8cbc3;
  border-radius: 11px;
  background: rgba(255, 255, 255, .72);
  text-align: center;
}

.visit-history-empty strong {
  color: #20493e;
  font-size: 13px;
}

.visit-history-empty p {
  margin: 4px 0 0;
  color: #62736c;
  font-size: 11px;
}

.attachment-form {
  display: grid;
  grid-template-columns: minmax(170px, .75fr) minmax(260px, 1.5fr) minmax(170px, .7fr) auto;
  gap: 12px;
  align-items: end;
  margin-bottom: 14px;
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: #f9fbf8;
}

.attachment-selection-status {
  min-height: 42px;
  display: flex;
  align-items: center;
  padding: 9px 11px;
  border: 1px solid #cfe1da;
  border-radius: 10px;
  color: var(--muted);
  background: #edf6f2;
  font-size: 11px;
  font-weight: 750;
}

.attachment-selection-status.selection-error {
  border-color: #e6b8ae;
  color: #8f3025;
  background: #fff0ed;
}

.attachment-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(145px, 1fr));
  gap: 11px;
}

.attachment-card,
.empty-attachments {
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: #fff;
}

.attachment-card img {
  display: block;
  width: 100%;
  height: 122px;
  object-fit: cover;
  background: var(--surface);
}

.attachment-preview {
  position: relative;
  display: block;
  overflow: hidden;
  color: #fff;
  text-decoration: none;
}

.attachment-preview > span {
  position: absolute;
  right: 7px;
  bottom: 7px;
  padding: 4px 7px;
  border-radius: 999px;
  background: rgba(11, 54, 43, .82);
  font-size: 9px;
  font-weight: 850;
  opacity: 0;
  transform: translateY(3px);
  transition: opacity .16s ease, transform .16s ease;
}

.attachment-preview:hover > span,
.attachment-preview:focus-visible > span {
  opacity: 1;
  transform: translateY(0);
}

.attachment-preview:focus-visible {
  outline: 3px solid rgba(46, 112, 93, .28);
  outline-offset: -3px;
}

.attachment-type-field {
  display: grid !important;
  gap: 5px !important;
  margin: 0 !important;
  padding: 9px !important;
  color: var(--ink) !important;
  font-size: 10px !important;
}

.attachment-type-field select {
  width: 100%;
  min-width: 0;
  min-height: 36px !important;
  padding: 7px 8px !important;
  font-size: 11px !important;
}

.attachment-card-actions {
  display: flex;
  padding: 0 9px 9px;
}

.attachment-delete-button {
  width: 100%;
  min-height: 36px;
  border: 1px solid #e6b8ae;
  border-radius: 9px;
  color: #8f3025;
  background: #fff0ed;
  font: inherit;
  font-size: 10px;
  font-weight: 850;
  cursor: pointer;
}

.attachment-delete-button:hover,
.attachment-delete-button:focus-visible {
  border-color: #c97060;
  background: #ffe5df;
  outline: none;
}

.attachment-delete-button:focus-visible {
  box-shadow: 0 0 0 3px rgba(143, 48, 37, .16);
}

.attachment-delete-button:disabled {
  cursor: wait;
  opacity: .65;
}

.empty-attachments {
  grid-column: 1 / -1;
  padding: 28px;
  text-align: center;
}

@media (max-width: 900px) {
  .attachment-form {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

.phone-job h4 {
  font-size: 15px;
}

.phone-job p {
  font-size: 12px;
}

.brief-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 14px;
}

.intake-boundary-summary {
  margin: 0 0 16px;
  padding: 11px 14px;
  border: 1px solid #bfdbfe;
  border-radius: 12px;
  color: #1e3a5f;
  background: #eff6ff;
  font-size: 13px;
  font-weight: 800;
}

.advisor-boundary-grid,
.advisor-kpi-grid,
.advisor-route-grid {
  display: grid;
  gap: 14px;
}

.advisor-boundary-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin-bottom: 18px;
}

.advisor-boundary-grid article,
.advisor-kpi-grid article {
  display: grid;
  gap: 5px;
  padding: 17px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: #fff;
}

.advisor-boundary-grid span,
.advisor-kpi-grid span {
  color: var(--mint-strong);
  font-size: 10px;
  font-weight: 900;
  letter-spacing: .1em;
}

.advisor-boundary-grid strong,
.advisor-kpi-grid strong {
  color: var(--ink);
  font-size: 21px;
}

.advisor-boundary-grid small,
.advisor-kpi-grid small {
  color: var(--muted);
  line-height: 1.45;
}

.advisor-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: end;
  gap: 12px;
  margin-bottom: 18px;
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: var(--surface);
}

.advisor-toolbar label {
  display: grid;
  min-width: 180px;
  gap: 6px;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}

.advisor-toolbar .subtle {
  align-self: center;
  margin-left: auto;
}

.advisor-kpi-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin-bottom: 18px;
}

.advisor-kpi-card {
  border-left: 5px solid #78958a !important;
  transition: border-color .18s ease, background-color .18s ease;
}

.advisor-kpi-card.insight-tone-attention {
  border-left-color: #b7791f !important;
  background: #fffaf0;
}

.advisor-kpi-card.insight-tone-positive {
  border-left-color: #2f7d62 !important;
  background: #f2faf6;
}

.advisor-kpi-card.insight-tone-ready {
  border-left-color: #497f98 !important;
  background: #f3f8fa;
}

.advisor-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) minmax(280px, .65fr);
  gap: 18px;
  margin-bottom: 18px;
}

.advisor-feedback-list,
.advisor-growth-list {
  display: grid;
  gap: 11px;
}

.advisor-feedback,
.advisor-growth-list > div {
  display: grid;
  gap: 5px;
  padding: 14px;
  border: 1px solid var(--line);
  border-left: 4px solid #60a5fa;
  border-radius: 12px;
  background: #fff;
}

.advisor-feedback.attention {
  border-left-color: #f59e0b;
  background: #fffbeb;
}

.advisor-feedback.positive {
  border-left-color: #10b981;
  background: #ecfdf5;
}

.advisor-feedback span,
.advisor-growth-list span {
  color: var(--mint-strong);
  font-size: 10px;
  font-weight: 900;
  letter-spacing: .08em;
}

.advisor-feedback p,
.advisor-growth-list small,
.advisor-route-card p {
  margin: 0;
  color: var(--muted);
  line-height: 1.5;
}

.advisor-office-panel {
  margin-bottom: 18px;
}

.advisor-routing-status {
  margin-bottom: 14px;
  padding: 11px 13px;
  border: 1px solid var(--line);
  border-radius: 12px;
  color: var(--muted);
  background: var(--surface);
  font-size: 12px;
  font-weight: 800;
}

.advisor-routing-status.ready {
  border-color: #86efac;
  color: #166534;
  background: #f0fdf4;
}

.advisor-routing-status.warning {
  border-color: #fcd34d;
  color: #92400e;
  background: #fffbeb;
}

.advisor-routing-status.working {
  border-color: #93c5fd;
  color: #1d4ed8;
  background: #eff6ff;
}

.advisor-manual-steps {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  margin: 0 0 14px;
}

.advisor-manual-steps span {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 48px;
  padding: 10px 12px;
  border: 1px solid #d8e1ec;
  border-radius: 12px;
  background: #f8fafc;
  color: #405166;
  font-size: 12px;
  line-height: 1.35;
}

.advisor-manual-steps strong {
  display: grid;
  place-items: center;
  flex: 0 0 24px;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: #0f5d9c;
  color: white;
  font-size: 12px;
}

.advisor-routing-privacy {
  display: flex;
  flex-wrap: wrap;
  gap: 7px 12px;
  align-items: center;
  margin-top: 14px;
  padding-top: 13px;
  border-top: 1px solid var(--line);
  color: var(--muted);
  font-size: 11px;
}

.advisor-routing-privacy span {
  flex: 1 1 420px;
}

.advisor-routing-privacy a,
.google-maps-attribution,
.advisor-route-card a,
.advisor-maps-button {
  color: var(--mint-strong);
  font-weight: 800;
}

.advisor-maps-button {
  appearance: none;
  padding: 0;
  border: 0;
  background: transparent;
  font: inherit;
  text-align: right;
  text-decoration: underline;
  cursor: pointer;
}

.advisor-maps-button:hover,
.advisor-maps-button:focus-visible {
  color: var(--ink-2);
}

.google-maps-attribution {
  display: inline-block;
  margin-top: 10px;
  font-size: 11px;
}

.advisor-route-grid {
  grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
}

.advisor-route-card {
  display: grid;
  gap: 10px;
  padding: 15px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: #fff;
}

.advisor-route-card.needs-review {
  border-color: #f59e0b;
  background: #fffbeb;
}

.advisor-route-card header,
.advisor-route-card footer {
  display: flex;
  justify-content: space-between;
  gap: 10px;
}

.advisor-route-card ol {
  display: grid;
  gap: 7px;
  margin: 0;
  padding-left: 20px;
  color: var(--ink);
}

.advisor-route-card footer {
  padding-top: 9px;
  border-top: 1px solid var(--line);
  color: var(--muted);
  font-size: 11px;
}

@media (max-width: 1100px) {
  .detail-record-bar {
    grid-template-columns: 1fr;
  }

  .detail-field-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .detail-span-4 {
    grid-column: 1 / -1;
  }

  .detail-related-ticket {
    grid-template-columns: repeat(2, minmax(0, 1fr)) auto;
  }

  .detail-related-ticket > span:last-child {
    grid-column: 3;
    grid-row: 1 / 4;
  }

  .visit-er-grid,
  .field-part-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 720px) {
  .advisor-boundary-grid,
  .advisor-kpi-grid,
  .advisor-grid,
  .advisor-manual-steps {
    grid-template-columns: 1fr;
  }

  .advisor-toolbar {
    align-items: stretch;
    flex-direction: column;
  }

  .advisor-toolbar label,
  .advisor-toolbar .subtle {
    width: 100%;
    margin-left: 0;
  }

  .attachment-form {
    grid-template-columns: 1fr;
  }

  .attachment-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 9px;
  }

  .attachment-card img {
    height: 112px;
  }

  .attachment-delete-button {
    min-height: 44px;
    font-size: 11px;
  }

  .attachment-form .primary-button {
    width: 100%;
  }

  .visit-er-grid,
  .field-part-grid {
    grid-template-columns: 1fr;
  }

  .visit-span-2,
  .field-part-note {
    grid-column: 1;
  }

  .visit-form-heading,
  .visit-record-heading,
  .service-part-transaction > header,
  .service-part-office-meta {
    align-items: flex-start;
    flex-direction: column;
  }

  .field-part-form > .primary-button,
  .service-part-edit-form > .soft-button {
    width: 100%;
  }

  .visit-history-entry {
    grid-template-columns: 46px minmax(0, 1fr);
    gap: 9px;
    padding: 10px;
  }

  .visit-history-entry .visit-number {
    width: 42px;
    height: 42px;
  }

  .visit-history-facts {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .ticket-detail-modal {
    width: calc(100vw - 14px);
    max-height: calc(100dvh - 14px);
    padding: 14px;
    border-radius: 16px;
  }

  .ticket-detail-modal .modal-close {
    width: 36px;
    height: 36px;
  }

  .detail-ticket-head {
    padding: 12px;
  }

  .detail-ticket-identity h2 {
    font-size: 20px;
  }

  .ticket-address-row {
    align-items: stretch;
    flex-direction: column;
  }

  .ticket-address-tools {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    width: 100%;
  }

  .address-tool-button,
  .ticket-distance-badge {
    width: 100%;
    min-height: 38px;
  }

  .ticket-distance-badge {
    align-items: center;
  }

  .detail-fact-grid,
  .detail-lifecycle {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .detail-lifecycle > span:last-child {
    grid-column: 1 / -1;
  }

  .ticket-detail-modal .detail-tabs {
    position: sticky;
    top: -14px;
    z-index: 3;
    overflow-x: auto;
    flex-wrap: nowrap;
    padding: 8px 40px 8px 0;
    background: var(--panel);
  }

  .ticket-detail-modal .detail-tab {
    flex: 0 0 auto;
  }

  .ticket-detail-modal .detail-operating-row {
    grid-template-columns: 1fr;
  }

  .ticket-detail-modal .detail-operating-row > *,
  .ticket-detail-modal .detail-operating-row select,
  .ticket-detail-modal .repair-memory {
    min-width: 0;
    width: 100%;
  }

  .detail-field-grid {
    grid-template-columns: 1fr;
  }

  .detail-span-2,
  .detail-span-4 {
    grid-column: 1 / -1;
  }

  .ticket-detail-savebar {
    bottom: -14px;
    align-items: stretch;
    flex-direction: column;
  }

  .ticket-detail-savebar span {
    text-align: center;
  }

  .ticket-detail-savebar .primary-button {
    width: 100%;
  }

  .detail-related-ticket {
    grid-template-columns: minmax(0, 1fr) auto;
  }

  .detail-related-ticket > span:not(:last-child) {
    grid-column: 1 / -1;
  }

  .detail-related-ticket > span:last-child {
    grid-column: 2;
    grid-row: 1 / 6;
  }

  .related-ticket-alert {
    margin-right: 42px;
  }

  .related-ticket-alert-heading {
    align-items: stretch;
    flex-direction: column;
  }

  .related-ticket-alert-records {
    grid-template-columns: 1fr;
  }

  .mobile-command-bar {
    grid-template-columns: 1fr auto auto;
    border-radius: 10px;
  }

  .mobile-job-shell {
    grid-template-columns: 78px minmax(0, 1fr);
  }

  .repair-section-bar {
    align-items: flex-start;
  }

  .repair-section-actions {
    align-items: flex-end;
    flex-direction: column;
  }

  .repair-section-note {
    max-width: 130px;
  }

  .repair-info-grid {
    grid-template-columns: 1fr;
  }

  .repair-photo-strip {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .repair-photo-strip img {
    height: 145px;
  }

  .repair-part-list article {
    grid-template-columns: 1fr;
  }

  .claim-handoff-note {
    flex-direction: column;
  }
}

@media (max-width: 1320px) {
  .claim-filters { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .claim-search-field { grid-column: span 2; }
  .claim-date-range-help { grid-column: 1 / 3; }
  .claim-filter-actions { grid-column: 3 / -1; }
}

@media (max-width: 820px) {
  .claim-summary-grid,
  .ticket-claim-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .claim-core-grid,
  .claim-amount-grid,
  .ticket-claim-card-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .claim-filters { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .claim-search-field,
  .claim-date-range-help,
  .claim-filter-actions { grid-column: 1 / -1; }
}

@media (max-width: 540px) {
  .claim-summary-grid,
  .ticket-claim-summary,
  .claim-core-grid,
  .claim-amount-grid,
  .ticket-claim-card-grid,
  .claim-filters { grid-template-columns: 1fr; }
  .claim-search-field,
  .claim-date-range-help,
  .claim-filter-actions { grid-column: 1; }
  .claim-filter-actions { flex-direction: column; }
  .dense-filters .claim-filter-actions .filter-search-button,
  .dense-filters .claim-filter-actions .filter-reset { width: 100%; }
}

.parts-operations-panel {
  display: grid;
  gap: 16px;
  min-width: 0;
}

.parts-operations-panel.hidden {
  display: none;
}

.operations-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 18px 20px;
  border: 1px solid var(--line);
  border-left: 5px solid #2c78a8;
  border-radius: 14px;
  background: linear-gradient(125deg, #f7fbfd, #eef5f2);
}

.operations-heading h3 {
  margin: 3px 0 4px;
  color: var(--ink);
  font-size: clamp(21px, 2vw, 29px);
  letter-spacing: -.025em;
}

.operations-heading p {
  max-width: 760px;
  margin: 0;
  color: var(--muted);
}

.parts-operations-filters {
  grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
  align-items: end;
}

.parts-operations-filters .filter-search-field {
  grid-column: span 2;
}

.checkbox-filter {
  display: flex !important;
  flex-direction: row !important;
  align-items: center;
  min-height: 44px;
  gap: 9px;
  padding: 0 12px;
  border: 1px solid var(--line);
  border-radius: 9px;
  background: #fff;
  color: var(--ink);
  font-weight: 750;
}

.parts-operations-filters .checkbox-filter {
  height: 46px;
  min-height: 46px;
  align-self: end;
  box-sizing: border-box;
}

.checkbox-filter input {
  width: 18px;
  height: 18px;
  margin: 0;
}

.operations-table-wrap {
  max-width: 100%;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: #fff;
  overflow: auto;
  overscroll-behavior-inline: contain;
}

.parts-operations-table {
  width: 100%;
  min-width: 1180px;
  font-size: 12px;
}

.sync-status i {
  background: #c48a2c;
  box-shadow: 0 0 0 4px rgba(196, 138, 44, .12);
}

.sync-status.active i {
  background: #48b982;
  box-shadow: 0 0 0 4px rgba(72, 185, 130, .14);
}

.sync-status.warning i {
  background: #c55f50;
  box-shadow: 0 0 0 4px rgba(197, 95, 80, .12);
}

.parts-operations-table th {
  position: sticky;
  top: 0;
  z-index: 1;
  padding: 11px 9px;
  background: #dce9e4;
  color: #183f36;
  font-size: 11px;
  letter-spacing: .04em;
  white-space: nowrap;
}

.parts-operations-table td {
  max-width: 210px;
  padding: 10px 9px;
  vertical-align: top;
  line-height: 1.35;
}

.parts-operations-table tbody tr:nth-child(even) {
  background: #f8faf8;
}

.parts-operations-table td small {
  display: block;
  margin-top: 3px;
  color: var(--muted);
  line-height: 1.3;
}

.parts-operations-table td small.inventory-source-note {
  color: #8a3f37;
  font-weight: 750;
}

.operations-editor {
  border: 1px solid #b9ccc5;
  border-radius: 13px;
  background: #f7faf8;
  overflow: hidden;
}

.operations-editor > summary {
  cursor: pointer;
  padding: 14px 18px;
  background: #dcebe5;
  color: #163f35;
  font-weight: 850;
}

.operations-form {
  display: grid;
  grid-template-columns: repeat(4, minmax(150px, 1fr));
  gap: 12px;
  padding: 16px;
}

.operations-form label {
  display: grid;
  gap: 6px;
  color: var(--ink);
  font-size: 12px;
  font-weight: 800;
}

.operations-form input,
.operations-form select,
.operations-form textarea {
  min-width: 0;
  width: 100%;
}

.operations-form textarea {
  resize: vertical;
}

.operations-form-actions {
  display: flex;
  align-items: end;
  gap: 8px;
  grid-column: 1 / -1;
}

.inventory-quantity-editor {
  display: grid;
  grid-template-columns: repeat(4, minmax(140px, 1fr));
  align-items: end;
  gap: 12px;
  grid-column: 1 / -1;
  margin: 4px 0;
  padding: 16px;
  border: 2px solid #9fc6b7;
  border-radius: 13px;
  background: #edf6f1;
}

.inventory-quantity-editor.hidden {
  display: none;
}

.inventory-quantity-editor legend {
  padding: 0 8px;
  color: #123f34;
  font-size: 15px;
  font-weight: 900;
}

.inventory-quantity-current {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  grid-column: 1 / -1;
}

.inventory-quantity-current span {
  padding: 10px 12px;
  border: 1px solid #bfd5cc;
  border-radius: 10px;
  background: #fff;
}

.inventory-quantity-current small,
.inventory-quantity-current strong,
.inventory-quantity-preview span,
.inventory-quantity-preview strong,
.inventory-quantity-preview small {
  display: block;
}

.inventory-quantity-current small,
.inventory-quantity-preview span {
  color: var(--muted);
  font-size: 11.5px;
  font-weight: 850;
  letter-spacing: .035em;
  text-transform: uppercase;
}

.inventory-quantity-current strong {
  margin-top: 2px;
  color: #123f34;
  font-size: 22px;
}

.inventory-quantity-reason {
  grid-column: span 2;
}

.inventory-quantity-preview {
  grid-column: span 3;
  min-height: 66px;
  padding: 10px 12px;
  border: 1px solid #aacbbe;
  border-radius: 10px;
  background: #fff;
}

.inventory-quantity-preview strong {
  margin-top: 3px;
  color: #125542;
}

.inventory-quantity-preview small {
  margin-top: 2px;
  color: var(--muted);
}

.inventory-quantity-preview.invalid {
  border-color: #d99a92;
  background: #fff2f0;
}

.inventory-quantity-preview.invalid strong {
  color: #8f3028;
}

.inventory-editor-help {
  grid-column: 1 / -1;
  margin: 0;
  color: var(--muted);
  font-size: 14px;
  line-height: 1.5;
}

#inventory-save-feedback { align-self: center; font-size: 14px; }

#inventory-editor-form .checkbox-filter { display: flex; align-items: center; justify-content: flex-start; gap: 10px; }
#inventory-editor-form .checkbox-filter input[type="checkbox"] { width: 18px; height: 18px; min-height: 18px; flex: 0 0 18px; }

.inventory-quantity-help {
  grid-column: 1 / -1;
  color: var(--muted);
  line-height: 1.45;
}

.movement-form {
  align-items: end;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: #f5f8f6;
}

.movement-comment {
  grid-column: span 2;
}

.inventory-ledger-summary,
.inventory-summary-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
}

.inventory-ledger-summary article,
.inventory-summary-grid article {
  min-width: 0;
  padding: 14px 16px;
  border: 1px solid #bed0ca;
  border-radius: 12px;
  background: #edf5f1;
}

.inventory-ledger-summary span,
.inventory-summary-grid span {
  display: block;
  margin-bottom: 4px;
  color: #4d6b62;
  font-size: 10px;
  font-weight: 850;
  letter-spacing: .08em;
}

.inventory-ledger-summary strong,
.inventory-summary-grid strong {
  display: block;
  color: #123f34;
  font-size: 24px;
}

.inventory-ledger-summary small {
  display: block;
  margin-top: 4px;
  color: var(--muted);
}

.inventory-empty-card {
  grid-column: 1 / -1;
}

.quantity-change.positive {
  color: #126644;
  font-weight: 850;
}

.quantity-change.negative {
  color: #9b342d;
  font-weight: 850;
}

.operation-posted {
  display: inline-flex;
  padding: 5px 8px;
  border-radius: 999px;
  background: #dcefe5;
  color: #176342;
  font-size: 11px;
  font-weight: 850;
}

.read-only-cell {
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  white-space: nowrap;
}

.parts-read-only #view-parts .pickup-check:disabled {
  cursor: not-allowed;
  opacity: .62;
}

@media (max-width: 1120px) {
  .parts-operations-filters,
  .operations-form {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .operations-form-actions {
    grid-column: 1 / -1;
  }

  .inventory-quantity-editor {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .inventory-quantity-preview {
    grid-column: span 1;
  }
}

@media (max-width: 720px) {
  .operations-heading {
    align-items: stretch;
    flex-direction: column;
  }

  .parts-operations-filters,
  .operations-form,
  .inventory-ledger-summary,
  .inventory-summary-grid {
    grid-template-columns: 1fr;
  }

  .parts-operations-filters .filter-search-field {
    grid-column: 1;
  }

  .movement-comment,
  .operations-form-actions {
    grid-column: 1;
  }

  .operations-form-actions {
    align-items: stretch;
    flex-direction: column;
  }

  .inventory-quantity-editor,
  .inventory-quantity-current {
    grid-template-columns: 1fr;
  }

  .inventory-quantity-reason,
  .inventory-quantity-preview,
  .inventory-quantity-editor > button {
    grid-column: 1;
  }
}

@media print {
  body.print-pickup *,
  body.print-transactions *,
  body.print-tickets *,
  body.print-claims * {
    visibility: hidden !important;
  }

  body.print-pickup #part-pickup-print-area,
  body.print-pickup #part-pickup-print-area *,
  body.print-transactions #part-transaction-print-area,
  body.print-transactions #part-transaction-print-area *,
  body.print-tickets #ticket-list-print-area,
  body.print-tickets #ticket-list-print-area *,
  body.print-claims #claim-settlement-print-area,
  body.print-claims #claim-settlement-print-area * {
    visibility: visible !important;
  }

  body.print-pickup #part-pickup-print-area,
  body.print-transactions #part-transaction-print-area,
  body.print-tickets #ticket-list-print-area,
  body.print-claims #claim-settlement-print-area {
    position: absolute;
    inset: 0;
    width: 100%;
    overflow: visible;
    color: #000;
    background: #fff;
  }

  body.print-pickup .print-heading {
    display: flex;
    justify-content: space-between;
    padding: 0 0 14px;
    font-size: 13px;
  }

  body.print-pickup .pickup-check {
    appearance: none;
    width: 14px;
    height: 14px;
    border: 1px solid #000;
  }

  @page { margin: .45in; size: landscape; }
}

/* High-readability visual hierarchy */
@media screen and (max-width: 820px) {
  :root {
    --muted: #53615b;
    --line: #cbc9c0;
  }

  body {
    font-family: Inter, "Segoe UI Variable Text", "Segoe UI", ui-sans-serif, system-ui, sans-serif;
    font-size: 16px;
    line-height: 1.58;
    font-weight: 480;
  }

  .brand strong {
    font-size: 17px;
  }

  .brand span,
  .privacy-chip,
  .sidebar-foot p {
    font-size: 13px;
  }

  .nav-list {
    gap: 7px;
  }

  .nav-item {
    min-height: 50px;
    padding: 0 14px;
    font-size: 15px;
    font-weight: 720;
  }

  .nav-subitem {
    min-height: 43px;
    padding-left: 24px;
    font-size: 14px;
  }

  .nav-icon {
    width: 24px;
    height: 24px;
    flex-basis: 24px;
    font-size: 10px;
  }

  .nav-count {
    font-size: 12px;
  }

  .topbar {
    min-height: 104px;
  }

  .topbar h1 {
    margin-top: 5px;
    font-size: 28px;
    line-height: 1.16;
  }

  .eyebrow,
  .section-kicker {
    font-size: 12px;
    line-height: 1.35;
  }

  .workspace-mode-switch button,
  .role-picker span,
  .role-picker select,
  .sync-status {
    font-size: 13px;
  }

  .workspace-mode-switch button {
    min-height: 38px;
    padding: 0 14px;
  }

  .test-workspace-banner {
    min-height: 48px;
    font-size: 13px;
  }

  .test-workspace-banner strong {
    font-size: 11px;
  }

  .view {
    padding-top: 38px;
  }

  .page-intro {
    align-items: center;
    margin-bottom: 28px;
  }

  .page-intro h2 {
    font-size: 40px;
    line-height: 1.08;
  }

  .page-intro p,
  .hero-copy p,
  .ai-hero p,
  .modal > p,
  .modal p {
    font-size: 16px;
    line-height: 1.65;
  }

  .panel-head {
    padding: 24px 26px 19px;
  }

  .panel h3,
  .panel-head h3 {
    font-size: 21px;
    line-height: 1.25;
  }

  .hero-copy h2 {
    font-size: clamp(34px, 4vw, 50px);
  }

  .work-queue-card span,
  .metric-card span,
  .metric-card small,
  .hero-stat span,
  .hero-stat small {
    font-size: 13px;
  }

  .work-queue-card small,
  .brief-item small,
  .priority-item small,
  .tech-load-card p,
  .subtle {
    font-size: 13px;
    line-height: 1.55;
  }

  .brief-item strong,
  .priority-item strong,
  .tech-load-card h4 {
    font-size: 15px;
  }

  .recommend-chip,
  .safety-badge,
  .impact {
    font-size: 12px;
  }

  .primary-button,
  .soft-button,
  .text-button,
  .date-button,
  .date-display,
  .filter-chip,
  .workspace-tab {
    min-height: 42px;
    font-size: 14px;
    line-height: 1.2;
  }

  .dense-filters {
    gap: 11px;
    padding: 16px;
  }

  .dense-filters label,
  .parts-filters label,
  .modal label,
  .form-grid label,
  .advisor-toolbar label {
    gap: 7px;
    color: #48554f;
    font-size: 14px;
    font-weight: 760;
  }

  .dense-filters label span {
    font-size: 11px;
  }

  .dense-filters input,
  .dense-filters select,
  .parts-filters input,
  .parts-filters select,
  .form-grid input,
  .form-grid select,
  .modal input,
  .modal select,
  .modal textarea {
    min-height: 46px;
    font-size: 15px;
  }

  .result-bar {
    min-height: 50px;
  }

  .result-bar strong,
  .result-bar span {
    font-size: 13px;
  }

  th,
  .dense-table th,
  .part-table th {
    padding: 13px 14px;
    font-size: 12px;
    line-height: 1.3;
  }

  td,
  .dense-table td,
  .part-table td {
    padding: 14px;
    font-size: 14px;
    line-height: 1.45;
  }

  td small,
  .dense-table td small,
  .part-table td small,
  .clickable-ticket small {
    margin-top: 5px;
    font-size: 12px;
  }

  .source-tag,
  .status-tag,
  .tiny-tag,
  .part-status {
    min-height: 25px;
    padding: 5px 8px;
    font-size: 11px;
  }

  .dispatch-column-head strong,
  .dispatch-card h4,
  .email-event h4,
  .part-card strong,
  .parts-column h3,
  .insight-card h4 {
    font-size: 15px;
  }

  .dispatch-column-head small,
  .dispatch-card p,
  .dispatch-card-foot small,
  .email-event p,
  .email-actions small,
  .part-card span,
  .part-card small,
  .insight-card p,
  .evidence {
    font-size: 13px;
    line-height: 1.55;
  }

  .route-roster-row strong,
  .route-roster-row small,
  .route-roster-row a,
  .calendar-selection,
  .calendar-actions strong,
  .calendar-weekdays,
  .calendar-day strong,
  .calendar-day small {
    font-size: 12px;
  }

  .calendar-day {
    min-height: 84px;
  }

  .modal {
    width: min(760px, calc(100vw - 28px));
    padding: 30px;
  }

  .ticket-detail-modal {
    width: min(1440px, 100%);
    max-height: calc(100dvh - 24px);
    padding: 18px;
  }

  .modal h2 {
    font-size: 30px;
    line-height: 1.15;
  }

  .detail-section-title {
    padding: 13px 14px;
    font-size: 14px;
  }

  .ticket-detail-meta,
  .repair-status-line,
  .advisor-routing-status,
  .advisor-manual-steps span,
  .advisor-route-card p,
  .advisor-route-card footer,
  .advisor-routing-privacy,
  .google-maps-attribution {
    font-size: 13px;
  }
}

@media screen and (min-width: 821px) {
  .sidebar {
    width: 216px;
    padding: 22px 14px 18px;
  }

  .main {
    margin-left: 216px;
  }

  .brand {
    padding: 0 7px 20px;
  }

  .nav-item {
    min-height: 40px;
    padding: 0 10px;
  }

  .topbar {
    min-height: 72px;
    padding: 13px 22px;
  }

  .view {
    max-width: 1920px;
    padding: 22px 22px 38px;
  }

  .page-intro {
    margin-bottom: 18px;
  }

  .page-intro h2 {
    font-size: 28px;
  }

  #ticket-list-print-area table,
  .claim-settlement-table {
    table-layout: fixed;
  }

  #ticket-list-print-area th,
  #ticket-list-print-area td {
    padding: 9px 7px;
    white-space: normal;
    overflow-wrap: anywhere;
  }

  #ticket-list-print-area th {
    color: #173f35;
    background: #e5ede9;
    font-size: 12px;
    font-weight: 900;
    line-height: 1.25;
  }

  #ticket-list-print-area td {
    font-size: 12px;
    line-height: 1.38;
  }

  #ticket-list-print-area td small,
  #ticket-list-print-area .clickable-ticket small {
    font-size: 10px;
  }

  #ticket-list-print-area td > strong,
  #ticket-list-print-area .clickable-ticket > strong,
  #ticket-list-print-area .ticket-appliance-cell strong {
    font-size: 13px;
    line-height: 1.3;
  }

  .claim-settlement-table th,
  .claim-settlement-table td {
    padding: 7px 6px;
    white-space: normal;
    overflow-wrap: anywhere;
  }

  .claim-settlement-table th {
    font-size: 8px;
  }

  .claim-settlement-table td {
    font-size: 9px;
    line-height: 1.32;
  }

  #ticket-list-panel:not(.show-extra-columns) #ticket-list-print-area th:nth-child(1) { width: 8%; }
  #ticket-list-panel:not(.show-extra-columns) #ticket-list-print-area th:nth-child(2) { width: 6%; }
  #ticket-list-panel:not(.show-extra-columns) #ticket-list-print-area th:nth-child(3) { width: 7%; }
  #ticket-list-panel:not(.show-extra-columns) #ticket-list-print-area th:nth-child(4) { width: 8%; }
  #ticket-list-panel:not(.show-extra-columns) #ticket-list-print-area th:nth-child(5) { width: 12%; }
  #ticket-list-panel:not(.show-extra-columns) #ticket-list-print-area th:nth-child(6) { width: 6%; }
  #ticket-list-panel:not(.show-extra-columns) #ticket-list-print-area th:nth-child(8) { width: 6%; }
  #ticket-list-panel:not(.show-extra-columns) #ticket-list-print-area th:nth-child(9) { width: 6%; }
  #ticket-list-panel:not(.show-extra-columns) #ticket-list-print-area th:nth-child(10) { width: 8%; }
  #ticket-list-panel:not(.show-extra-columns) #ticket-list-print-area th:nth-child(11) { width: 12%; }
  #ticket-list-panel:not(.show-extra-columns) #ticket-list-print-area th:nth-child(12) { width: 7%; }
  #ticket-list-panel:not(.show-extra-columns) #ticket-list-print-area th:nth-child(13) { width: 4%; }
  #ticket-list-panel:not(.show-extra-columns) #ticket-list-print-area th:nth-child(15) { width: 6%; }
  #ticket-list-panel:not(.show-extra-columns) #ticket-list-print-area th:nth-child(16) { width: 4%; }

  #ticket-list-print-area .internal-note-cell {
    font-size: 11px;
    line-height: 1.35;
  }
}

@media screen and (max-width: 720px) {
  body {
    font-size: 15px;
  }

  .modal-backdrop {
    padding: 7px;
  }

  body.ticket-create-page #ticket-modal {
    padding: 0;
  }

  body.ticket-create-page #ticket-modal .modal {
    width: 100%;
    min-height: 100dvh;
    border: 0;
    border-radius: 0;
  }

  body.ticket-create-page #ticket-form .form-grid {
    grid-template-columns: 1fr;
  }

  body.ticket-create-page #ticket-form .form-span-2 {
    grid-column: 1;
  }

  .ticket-detail-modal {
    width: 100%;
    max-width: none;
    max-height: calc(100dvh - 14px);
    padding: 14px;
    border-radius: 16px;
  }

  .topbar h1 {
    font-size: 23px;
  }

  .topbar {
    min-height: auto;
    align-items: flex-start;
    flex-wrap: wrap;
    gap: 10px 12px;
    padding: 14px 16px;
  }

  .mobile-menu {
    width: 44px;
    height: 44px;
    padding: 0;
  }

  .topbar > div:nth-child(2) {
    min-width: 0;
    flex: 1;
  }

  .top-actions {
    width: 100%;
    margin-left: 56px;
    justify-content: flex-start;
  }

  .page-intro h2 {
    font-size: 32px;
  }

  .view {
    padding: 24px 16px 40px;
  }

  .page-intro p,
  .hero-copy p,
  .ai-hero p,
  .modal > p,
  .modal p {
    font-size: 15px;
  }

  .portal-card {
    min-height: 220px;
  }

  .portal-card h3 {
    font-size: 27px;
  }

  .portal-card p {
    font-size: 15px;
  }

  .mobile-kpi-grid span,
  .mobile-command-bar div span,
  .mobile-day span,
  .mobile-month-day span {
    font-size: 11px;
  }

  .mobile-kpi-grid small,
  .mobile-day small,
  .mobile-month-day small {
    font-size: 10px;
  }

  .mobile-command-bar {
    gap: 8px;
    padding: 13px;
  }

  .mobile-command-bar div strong {
    font-size: 18px;
  }

  .mobile-command-date,
  .mobile-route-link,
  .mode-switch button,
  .mobile-ticket-filter button {
    min-height: 44px;
    font-size: 13px;
  }

  .mobile-day,
  .mobile-month-day {
    min-height: 68px;
  }

  .mobile-day strong,
  .mobile-month-day strong {
    font-size: 17px;
  }

  .mobile-route-summary p {
    font-size: 13px;
  }

  .mobile-job-shell {
    grid-template-columns: 94px minmax(0, 1fr);
  }

  .mobile-job-rail {
    padding: 14px 9px;
  }

  .mobile-job-rail strong {
    font-size: 13px;
  }

  .mobile-job-rail small {
    font-size: 11px;
  }

  .mobile-job-rail > span:last-child {
    font-size: 10px;
  }

  .mobile-job-body {
    padding: 14px;
  }

  .mobile-ticket-open {
    min-height: 50px;
  }

  .mobile-ticket-open strong {
    font-size: 18px;
  }

  .mobile-ticket-open small,
  .phone-job p {
    font-size: 13px;
    line-height: 1.5;
  }

  .phone-job h4 {
    font-size: 16px;
  }

  .toast {
    right: auto;
    bottom: calc(76px + env(safe-area-inset-bottom));
    left: 50%;
    max-width: calc(100vw - 24px);
    font-size: 14px;
  }
}

/* Keep the compact ER service header ahead of the legacy detail grid rules. */
.ticket-detail-modal .detail-record-bar {
  grid-template-columns: minmax(220px, .8fr) minmax(0, 1.2fr);
}

@media screen and (max-width: 820px) {
  .ticket-detail-modal.technician-detail .detail-record-bar {
    display: flex;
  }

  .ticket-detail-modal.technician-detail .detail-tabs {
    gap: 4px;
    margin: 8px 0;
    padding-bottom: 6px;
  }
}

/* ER-inspired visual hierarchy: color carries meaning so the repair record scans quickly. */
:root {
  --er-blue: #1677d2;
  --er-blue-soft: #e7f2ff;
  --er-teal: #0d8f82;
  --er-teal-soft: #e2f5f1;
  --er-amber: #d99214;
  --er-amber-soft: #fff3cf;
  --er-purple: #7055b5;
  --er-purple-soft: #f0ebff;
  --er-coral: #c95645;
  --er-coral-soft: #fff0ec;
}

.ticket-detail-modal .detail-tab {
  min-width: 92px;
  color: #334c61;
  border-top: 4px solid #91a4b5;
  background: #f7f9fb;
  font-weight: 900;
}

.ticket-detail-modal .detail-tab:nth-child(1).active {
  border-color: var(--er-blue);
  background: var(--er-blue);
}

.ticket-detail-modal .detail-tab:nth-child(2).active {
  border-color: var(--er-teal);
  background: var(--er-teal);
}

.ticket-detail-modal .detail-tab:nth-child(3).active {
  border-color: var(--er-purple);
  background: var(--er-purple);
}

.detail-field-section {
  overflow: hidden;
  border-color: #cad7e2;
  box-shadow: 0 2px 0 rgba(31, 72, 105, .04);
}

.detail-section-account .detail-section-title {
  color: #0c4c84;
  border-left: 6px solid var(--er-blue);
  background: var(--er-blue-soft);
}

.detail-section-customer .detail-section-title {
  color: #096358;
  border-left: 6px solid var(--er-teal);
  background: var(--er-teal-soft);
}

.detail-section-original-note .detail-section-title {
  color: #6d4700;
  border-left: 6px solid var(--er-amber);
  background: var(--er-amber-soft);
}

.original-ticket-note {
  padding: 13px 15px;
  border: 1px solid #d8d7d0;
  border-left: 6px solid #a7aaa5;
  border-radius: 10px;
  background: #f7f7f4;
}

.original-ticket-note.has-note {
  border-color: #e3bd67;
  border-left-color: var(--er-amber);
  background: #fff9e8;
}

.original-ticket-note-heading {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 9px;
}

.original-ticket-note-heading strong {
  color: #463a23;
  font-size: 14px;
  font-weight: 900;
}

.original-ticket-note-heading span {
  color: #6e6759;
  font-size: 11px;
  font-weight: 750;
}

.original-ticket-note pre {
  margin: 0;
  color: #514b40;
  font: inherit;
  font-size: 14px;
  font-weight: 700;
  line-height: 1.55;
  overflow-wrap: anywhere;
  white-space: pre-wrap;
}

.original-ticket-note.has-note pre {
  color: #49330b;
}

#detail-visits-panel .visit-form {
  overflow: hidden;
  border: 2px solid #8fcfc6;
  background: #fff;
}

#detail-visits-panel .visit-form-heading {
  margin: -18px -18px 14px;
  padding: 13px 18px;
  color: white;
  background: linear-gradient(115deg, #087d71, #135f96);
}

#detail-visits-panel .visit-form-heading span,
#detail-visits-panel .visit-form-heading small {
  color: rgba(255, 255, 255, .9);
}

.service-core-grid > label {
  padding: 9px;
  border: 1px solid #cfe1ed;
  border-top: 4px solid var(--er-blue);
  border-radius: 9px;
  color: #284659;
  background: #f8fbfe;
}

.service-core-grid > .service-symptom-field {
  border-top-color: var(--er-amber);
  background: var(--er-amber-soft);
}

.service-core-grid > .service-observation-field {
  border-top-color: var(--er-purple);
  background: var(--er-purple-soft);
}

.service-core-grid > .service-diagnosis-field {
  border-top-color: var(--er-coral);
  background: var(--er-coral-soft);
}

.service-core-grid > .service-work-performed-field {
  border-top-color: #347fa8;
  background: #eaf5fb;
}

.service-core-grid > .service-resolution-field {
  border-top-color: var(--er-teal);
  background: var(--er-teal-soft);
}

.service-core-grid > label:has([name="repairStatus"]) {
  border-top-color: var(--er-purple);
  background: var(--er-purple-soft);
}

.service-save-row {
  border-color: #8fcfc6;
  background: #e8f7f4;
}

.service-save-row .primary-button {
  color: #fff;
  border: 1px solid #24764b;
  background: #24764b;
  box-shadow: 0 6px 14px rgba(36, 118, 75, .22);
}

.service-save-row {
  grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
}

.service-save-actions {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.service-save-row[data-visit-stage="new"] .service-save-actions {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.service-save-row[data-visit-stage="complete"] .service-save-actions {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.service-save-row[data-visit-stage="complete"][data-next-visit-allowed="false"] .service-save-actions {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.service-save-actions [hidden] {
  display: none !important;
}

.service-save-actions .visited-action-button[hidden] {
  display: none !important;
}

.service-save-actions .complete-visit-button,
.service-save-actions .next-visit-button {
  display: grid;
  padding: 0 12px;
  place-items: center;
  border-radius: 10px;
  font-size: 12px;
  font-weight: 850;
  line-height: 1.15;
  text-align: center;
  cursor: pointer;
}

.service-save-actions .complete-visit-button {
  color: #fff;
  border: 1px solid #a8453d;
  background: #b74f46;
  box-shadow: 0 7px 16px rgba(183, 79, 70, .24);
}

.service-save-row .primary-button:hover,
.service-save-row .primary-button:focus-visible {
  border-color: #1b603c;
  background: #1b603c;
}

.service-save-actions .complete-visit-button:hover,
.service-save-actions .complete-visit-button:focus-visible {
  border-color: #8f352f;
  background: #963b34;
}

.service-save-actions .next-visit-button {
  color: #fff;
  border: 1px solid #276985;
  background: #276985;
  box-shadow: 0 7px 16px rgba(39, 105, 133, .2);
}

.service-save-row[data-visit-stage="active"] .primary-button {
  color: #fff;
  border-color: #24764b;
  background: #24764b;
  box-shadow: 0 6px 14px rgba(36, 118, 75, .22);
}

.service-save-row[data-visit-stage="active"] .primary-button:hover,
.service-save-row[data-visit-stage="active"] .primary-button:focus-visible {
  border-color: #1b603c;
  background: #1b603c;
}

.service-save-row[data-visit-stage="complete"] {
  border-color: #91bcd2;
  background: #edf7fb;
}

.service-save-row[data-visit-stage="complete"] .service-visit-guidance strong {
  color: #174f69;
}

.service-save-actions button:disabled,
.service-save-actions .visited-action-button:has(input:disabled) {
  cursor: not-allowed;
  box-shadow: none;
  opacity: .5;
}

.visit-history-note.visit-history-customer { border-left: 4px solid var(--er-amber); background: var(--er-amber-soft); }
.visit-history-note.visit-history-observation { border-left: 4px solid var(--er-purple); background: var(--er-purple-soft); }
.visit-history-note.visit-history-diagnosis { border-left: 4px solid var(--er-coral); background: var(--er-coral-soft); }
.visit-history-note.visit-history-work { border-left: 4px solid #347fa8; background: #eaf5fb; }
.visit-history-note.visit-history-resolution { border-left: 4px solid var(--er-teal); background: var(--er-teal-soft); }

.visit-history-note.visit-history-missing {
  color: #775114;
  border-color: #d4a23c;
  background: #fff7df;
}

.visit-history-entry.visit-history-readonly .visit-record-heading small {
  color: #62746f;
  font-weight: 750;
}

@media screen and (max-width: 1050px) {
  .service-save-row {
    grid-template-columns: 1fr;
  }
}

@media screen and (max-width: 820px) {
  .service-save-actions {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .service-save-row[data-visit-stage="active"] .service-save-actions {
    grid-template-columns: 1fr 1fr;
  }

  .service-save-row[data-visit-stage="active"] .visited-action-button {
    grid-column: 1 / -1;
  }

  .service-save-row[data-visit-stage="complete"] .service-save-actions {
    grid-template-columns: 1fr;
  }
}

.service-photo-workspace {
  border: 2px solid #78bde5;
  border-top: 8px solid var(--er-blue);
  background: var(--er-blue-soft);
}

.service-photo-heading span {
  color: #0c65aa;
}

.service-history-details {
  border-left: 7px solid var(--er-purple);
  background: var(--er-purple-soft);
}

.service-related-history {
  border-left-color: var(--er-blue);
  background: var(--er-blue-soft);
}

.service-parts-workspace > .repair-section-bar {
  border-left: 8px solid var(--er-amber);
  background: var(--er-amber-soft);
}

.claim-transaction-workspace > .repair-section-bar {
  border-left: 8px solid var(--er-purple);
  background: var(--er-purple-soft);
}

.service-office-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid #d2dce5;
}

.repair-status-tone {
  border-width: 2px !important;
}

.status-tone-complete { color: #075b39 !important; border-color: #68bb8e !important; background: #dcf5e6 !important; }
.status-tone-cancel { color: #8b251d !important; border-color: #df8277 !important; background: #ffe6e1 !important; }
.status-tone-parts { color: #704300 !important; border-color: #e6ae38 !important; background: #fff0b8 !important; }
.status-tone-ready { color: #075887 !important; border-color: #6ebae8 !important; background: #e1f3ff !important; }
.status-tone-waiting { color: #5e3c8e !important; border-color: #aa8bd7 !important; background: #f0e7ff !important; }

.historical-readonly-banner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin: -4px -4px 10px;
  padding: 9px 11px;
  color: #5b3a00;
  border: 1px solid #e1b63f;
  border-radius: 8px;
  background: #fff1b9;
  font-size: 10px;
}

.historical-control-hidden {
  display: none !important;
}

.related-history-detail input:disabled,
.related-history-detail select:disabled,
.related-history-detail textarea:disabled {
  color: #30434f;
  opacity: 1;
  background: #eef2f4;
}

@media screen and (max-width: 820px) {
  .technician-detail .service-core-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .technician-detail .service-core-grid > label {
    padding: 7px;
  }

  .technician-detail .service-core-grid > label:has(textarea),
  .technician-detail .service-core-grid > label:has([name="repairStatus"]),
  .technician-detail .service-core-grid > label:has([name="result"]) {
    grid-column: 1 / -1;
  }

  .technician-detail .service-core-grid textarea {
    min-height: 64px;
  }

  .service-office-grid {
    grid-template-columns: 1fr;
  }

  .ticket-detail-modal .detail-tab {
    min-width: 76px;
    font-size: 11px;
  }

  .ticket-detail-modal.technician-detail .detail-tabs {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    overflow-x: visible;
    padding-right: 0;
  }

  .ticket-detail-modal.technician-detail .detail-tab {
    min-width: 0;
    padding-right: 5px;
    padding-left: 5px;
  }

  .historical-readonly-banner {
    align-items: flex-start;
    flex-direction: column;
  }
}

/* Site-wide legibility: larger type and stronger contrast without widening layouts. */
:root {
  --muted: #52625b;
}

body {
  color: #123a31;
  font-size: 16px;
  line-height: 1.58;
  letter-spacing: .004em;
  text-rendering: optimizeLegibility;
}

p,
li,
.panel-copy,
.subtle,
.evidence {
  line-height: 1.6;
}

button,
.primary-button,
.soft-button,
.text-button,
.date-button,
.workspace-tab,
.nav-item,
.nav-subitem {
  font-size: 14px;
  font-weight: 760;
}

input,
select,
textarea {
  color: #123a31;
  font-size: 15px;
  line-height: 1.4;
}

input::placeholder,
textarea::placeholder {
  color: #68766f;
  opacity: 1;
}

label,
.dense-filters label,
.parts-filters label,
.form-grid label,
.modal label {
  color: #354b44;
  font-size: 13px;
  font-weight: 760;
}

.page-intro p,
.hero-copy p,
.panel-copy,
.ticket-detail-meta,
.repair-status-line,
.detail-customer-card > span,
.detail-customer-card > div span {
  color: #4f6059;
  font-size: 13px;
}

.panel h3,
.panel-head h3,
.detail-section-title,
.repair-section-bar strong {
  font-weight: 900;
}

.section-kicker,
.eyebrow,
.detail-issue-summary small,
.detail-fact-grid small,
.detail-lifecycle small {
  font-size: 11px;
  font-weight: 900;
}

.detail-issue-summary strong,
.detail-issue-summary span,
.detail-fact-grid strong,
.detail-lifecycle strong {
  font-size: 13px;
}

.work-queue-card span,
.metric-card span,
.metric-card small,
.hero-stat span,
.hero-stat small,
.source-tag,
.status-tag,
.tiny-tag,
.part-status,
.recommend-chip,
.safety-badge,
.impact,
.privacy-chip,
.sync-status,
.nav-count {
  font-size: 11px;
}

@media screen {
  body small {
    font-size: 11px !important;
    line-height: 1.5;
  }
}

@media screen and (min-width: 821px) {
  #ticket-list-print-area th {
    font-size: 13px;
  }

  #ticket-list-print-area td {
    font-size: 13px;
  }

  #ticket-list-print-area td small,
  #ticket-list-print-area .clickable-ticket small,
  #ticket-list-print-area .internal-note-cell {
    font-size: 11.5px;
  }

  #ticket-list-print-area td > strong,
  #ticket-list-print-area .clickable-ticket > strong,
  #ticket-list-print-area .ticket-appliance-cell strong {
    font-size: 14px;
  }

  .claim-settlement-table th {
    font-size: 10px;
  }

  .claim-settlement-table td {
    font-size: 11px;
  }
}

@media screen and (max-width: 820px) {
  .ticket-internal-warning {
    grid-template-columns: 1fr;
    gap: 7px;
    margin-bottom: 11px;
    padding: 12px;
  }

  .ticket-internal-warning strong {
    font-size: 14px;
  }

  .ticket-internal-warning p {
    font-size: 15px;
    line-height: 1.55;
  }

  .ticket-detail-modal .detail-tab {
    font-size: 12px;
  }
}

/* Daily pickup actions: consistent sizing, order, and purpose-specific tones. */
#parts-pickup-panel .parts-filters {
  grid-template-columns: minmax(190px, 1.5fr) repeat(2, minmax(140px, 1fr)) repeat(3, minmax(128px, .72fr));
}

#parts-pickup-panel .pickup-action-button {
  display: inline-flex;
  width: 100%;
  height: 46px;
  min-height: 46px;
  align-self: end;
  align-items: center;
  justify-content: center;
  padding: 0 16px;
  border: 1px solid transparent;
  border-radius: 11px;
  font-size: 14px;
  font-weight: 850;
  line-height: 1;
  white-space: nowrap;
}

#parts-pickup-panel .pickup-search {
  color: var(--ink);
  border-color: #bfd8cc;
  background: var(--mint);
  box-shadow: none;
}

#parts-pickup-panel .pickup-search:hover,
#parts-pickup-panel .pickup-search:focus-visible {
  color: #103b30;
  border-color: #94bca9;
  background: #cfe4d9;
}

#parts-pickup-panel .pickup-reset-warning {
  color: #8a332b;
  border-color: #e6b4ad;
  background: #f9dfdc;
  box-shadow: none;
}

#parts-pickup-panel .pickup-reset-warning:hover,
#parts-pickup-panel .pickup-reset-warning:focus-visible {
  color: #74271f;
  border-color: #d88e84;
  background: #f3ccc7;
}

/* Reports: readable information density without widening the layout. */
#view-ai .overall-status-panel,
#view-ai .ai-hero,
#view-ai .insight-grid,
#view-ai .ai-roadmap {
  font-family: Inter, "Segoe UI Variable Text", "Segoe UI", ui-sans-serif, system-ui, sans-serif;
}

#view-ai .overall-status-head h3 {
  font-size: 32px;
  line-height: 1.15;
}

#view-ai .overall-status-head p {
  font-size: 14px;
  line-height: 1.6;
}

#view-ai .report-private-badge {
  font-size: 11px;
}

#view-ai .overall-status-toolbar label span {
  font-size: 11px;
}

#view-ai .overall-status-toolbar select,
#view-ai .overall-status-toolbar input,
#view-ai .overall-status-toolbar .primary-button {
  min-height: 44px;
  font-size: 14px;
}

#view-ai .report-updated {
  font-size: 12px;
}

#view-ai .overall-kpi-grid article {
  min-height: 116px;
}

#view-ai .overall-kpi-grid span {
  font-size: 11px;
}

#view-ai .overall-kpi-grid strong {
  font-size: 32px;
  line-height: 1.15;
}

#view-ai .overall-kpi-grid small,
#view-ai .completion-meter small {
  font-size: 12px !important;
}

#view-ai .report-card-head h4 {
  font-size: 19px;
  line-height: 1.3;
}

#view-ai .report-card-head > span {
  font-size: 12px;
  line-height: 1.45;
}

#view-ai .overall-status-table th,
#view-ai .technician-ranking-table th {
  padding: 12px 10px;
  font-size: 12px;
  line-height: 1.35;
}

#view-ai .overall-status-table td,
#view-ai .technician-ranking-table td {
  padding: 12px 10px;
  font-size: 13px;
  line-height: 1.4;
}

#view-ai .status-count {
  min-width: 34px;
  padding: 5px 8px;
  font-size: 12px;
}

#view-ai .pending-status-row strong {
  font-size: 13px;
}

#view-ai .pending-status-row b {
  font-size: 14px;
}

#view-ai .report-empty,
#view-ai .ranking-boundary {
  font-size: 12px;
  line-height: 1.6;
}

#view-ai .technician-ranking-table td:first-child {
  font-size: 16px;
}

#view-ai .technician-ranking-table .score-value {
  font-size: 18px;
}

#view-ai .technician-ranking-table .provisional {
  font-size: 10px;
}

#view-ai .score-method summary {
  font-size: 14px;
}

#view-ai .score-method-grid strong {
  font-size: 13px;
}

#view-ai .score-method-grid span,
#view-ai .score-method > p {
  font-size: 12px;
  line-height: 1.6;
}

#view-ai .ai-hero h3 {
  font-size: 29px;
}

#view-ai .ai-hero p {
  font-size: 15px;
}

#view-ai .confidence span,
#view-ai .confidence small {
  font-size: 11px !important;
}

#view-ai .insight-card h4 {
  font-size: 17px;
  line-height: 1.35;
}

#view-ai .insight-card p {
  font-size: 13px;
  line-height: 1.6;
}

#view-ai .insight-card .evidence {
  font-size: 11px;
}

#view-ai .roadmap-row span {
  font-size: 10px;
}

#view-ai .roadmap-row strong {
  font-size: 15px;
  line-height: 1.35;
}

#view-ai .roadmap-row small {
  font-size: 12px !important;
  line-height: 1.5;
}

@media (max-width: 1120px) {
  #parts-pickup-panel .parts-filters {
    grid-template-columns: repeat(3, minmax(140px, 1fr));
  }

  .technician-work-row {
    grid-template-columns: minmax(110px, .7fr) repeat(2, minmax(190px, 1fr));
  }

  .technician-work-name {
    grid-row: span 2;
  }
}

@media (max-width: 820px) {
  #parts-pickup-panel .parts-filters {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  #view-ai .overall-status-head h3 {
    font-size: 29px;
  }

  .report-category-tabs {
    grid-template-columns: 1fr;
  }

  .report-category-tab {
    min-height: 50px;
    text-align: center;
  }

  .technician-daily-kpis {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .technician-work-row {
    grid-template-columns: 1fr 1fr;
  }

  .technician-work-name {
    grid-column: 1 / -1;
    grid-row: auto;
  }
}

@media (max-width: 540px) {
  #parts-pickup-panel .parts-filters {
    grid-template-columns: 1fr;
  }

  #view-ai .overall-status-head h3 {
    font-size: 27px;
  }

  .technician-daily-kpis,
  .technician-work-row {
    grid-template-columns: 1fr;
  }

  .technician-work-name {
    grid-column: auto;
  }
}

/* Overall Status chart system. */
#view-ai .report-trend-card {
  margin-bottom: 13px;
  overflow: hidden;
}

#view-ai .report-chart-legend {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 9px 18px;
  margin: 0 0 8px;
  color: #42564f;
  font-size: 12px;
  font-weight: 800;
}

#view-ai .report-chart-legend.compact {
  gap: 7px 13px;
  margin-bottom: 13px;
  font-size: 11px;
}

#view-ai .report-chart-legend span {
  display: inline-flex;
  align-items: center;
  gap: 7px;
}

#view-ai .report-line-key {
  width: 26px;
  height: 0;
  display: inline-block;
  border-top: 3px solid #244f45;
}

#view-ai .report-line-key.pending {
  border-top-color: #c58a35;
  border-top-style: dashed;
}

#view-ai .report-line-key.completed {
  border-top-color: #4f8068;
  border-top-style: dotted;
}

#view-ai .report-block-key,
#view-ai .pending-donut-legend i {
  width: 11px;
  height: 11px;
  display: inline-block;
  flex: 0 0 11px;
  border-radius: 3px;
  background: #7a8a85;
}

#view-ai .report-block-key.pending { background: #c58a35; }
#view-ai .report-block-key.completed { background: #4f8068; }
#view-ai .report-block-key.cancelled { background: #9b8b86; }

#view-ai .report-trend-svg {
  width: 100%;
  height: auto;
  min-height: 245px;
  overflow: visible;
}

#view-ai .report-chart-gridline {
  stroke: #d9e2df;
  stroke-width: 1;
}

#view-ai .report-chart-axis-label {
  fill: #5a6b65;
  font-family: Inter, "Segoe UI", sans-serif;
  font-size: 11px;
  font-weight: 750;
}

#view-ai .report-trend-line {
  fill: none;
  stroke: #244f45;
  stroke-width: 3.5;
  stroke-linecap: round;
  stroke-linejoin: round;
  vector-effect: non-scaling-stroke;
}

#view-ai .report-trend-line.pending {
  stroke: #c58a35;
  stroke-width: 3;
  stroke-dasharray: 8 6;
}

#view-ai .report-trend-line.completed {
  stroke: #4f8068;
  stroke-width: 3;
  stroke-dasharray: 2 6;
}

#view-ai .report-trend-marker {
  fill: #fffefa;
  stroke: #244f45;
  stroke-width: 2;
  vector-effect: non-scaling-stroke;
}

#view-ai .report-trend-marker.pending { stroke: #c58a35; }
#view-ai .report-trend-marker.completed { stroke: #4f8068; }

#view-ai .report-company-chart,
#view-ai .report-pending-chart,
#view-ai .technician-score-chart {
  margin-bottom: 16px;
  padding-bottom: 16px;
  border-bottom: 1px solid #e0e7e4;
}

#view-ai .report-company-bars {
  display: grid;
  gap: 10px;
}

#view-ai .report-company-bar-row {
  display: grid;
  grid-template-columns: minmax(88px, 118px) minmax(120px, 1fr) 30px;
  align-items: center;
  gap: 10px;
}

#view-ai .report-company-bar-row > strong {
  overflow: hidden;
  color: #344a43;
  font-size: 12px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

#view-ai .report-company-bar-row > b {
  color: var(--ink);
  font-size: 13px;
  text-align: right;
}

#view-ai .report-company-bar-track {
  height: 15px;
  display: flex;
  overflow: hidden;
  border-radius: 999px;
  background: #edf1ef;
  box-shadow: inset 0 0 0 1px #dce4e1;
}

#view-ai .report-company-bar-track i {
  display: block;
  height: 100%;
  min-width: 0;
}

#view-ai .report-company-bar-track .pending { background: #c58a35; }
#view-ai .report-company-bar-track .completed { background: #4f8068; }
#view-ai .report-company-bar-track .cancelled { background: #9b8b86; }

#view-ai .report-chart-note {
  display: block;
  margin-top: 10px;
  color: #68766f;
  font-size: 11px !important;
}

#view-ai .report-pending-chart {
  display: grid;
  grid-template-columns: 138px minmax(0, 1fr);
  align-items: center;
  gap: 16px;
}

#view-ai .pending-donut {
  width: 132px;
  height: 132px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  box-shadow: inset 0 0 0 1px rgba(23, 63, 53, .08);
}

#view-ai .pending-donut > div {
  width: 76px;
  height: 76px;
  display: grid;
  align-content: center;
  place-items: center;
  border: 1px solid #dfe6e3;
  border-radius: 50%;
  background: #fffefa;
}

#view-ai .pending-donut strong {
  color: var(--ink);
  font-size: 25px;
  line-height: 1;
}

#view-ai .pending-donut span {
  margin-top: 4px;
  color: #62736d;
  font-size: 10px;
  font-weight: 850;
  text-transform: uppercase;
}

#view-ai .pending-donut-legend {
  display: grid;
  gap: 7px;
}

#view-ai .pending-donut-legend > span {
  display: grid;
  grid-template-columns: 11px minmax(0, 1fr) auto;
  align-items: center;
  gap: 7px;
  min-width: 0;
}

#view-ai .pending-donut-legend b {
  overflow: hidden;
  color: #465a53;
  font-size: 11px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

#view-ai .pending-donut-legend strong {
  color: var(--ink);
  font-size: 12px;
}

#view-ai .technician-score-bars {
  display: grid;
  gap: 9px;
}

#view-ai .technician-score-row {
  display: grid;
  grid-template-columns: 30px minmax(90px, 130px) minmax(160px, 1fr) 42px 42px;
  align-items: center;
  gap: 9px;
}

#view-ai .technician-score-row > span {
  color: #8a641b;
  font-size: 13px;
  font-weight: 950;
}

#view-ai .technician-score-row > strong {
  overflow: hidden;
  color: #344a43;
  font-size: 13px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

#view-ai .technician-score-row > div {
  height: 13px;
  overflow: hidden;
  border-radius: 999px;
  background: #e7edea;
  box-shadow: inset 0 0 0 1px #d9e2de;
}

#view-ai .technician-score-row > div i {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: #356b5b;
}

#view-ai .technician-score-row > b {
  color: var(--ink);
  font-size: 15px;
  text-align: right;
}

#view-ai .technician-score-row > small {
  color: #66766f;
  font-size: 11px !important;
}

@media (max-width: 820px) {
  #view-ai .report-trend-svg {
    min-height: 210px;
  }

  #view-ai .technician-score-row {
    grid-template-columns: 28px minmax(80px, 110px) minmax(100px, 1fr) 38px;
  }

  #view-ai .technician-score-row > small {
    display: none;
  }
}

@media (max-width: 540px) {
  #view-ai .report-pending-chart {
    grid-template-columns: 1fr;
    justify-items: center;
  }

  #view-ai .pending-donut-legend {
    width: 100%;
  }

  #view-ai .report-company-bar-row {
    grid-template-columns: minmax(72px, 94px) minmax(90px, 1fr) 26px;
    gap: 7px;
  }

  #view-ai .technician-score-row {
    grid-template-columns: 26px minmax(72px, 92px) minmax(80px, 1fr) 36px;
    gap: 6px;
  }
}

/* Modern readable type system — final screen cascade. */
:root {
  --font-text: "Segoe UI Variable Text", "Aptos", Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --font-display: "Segoe UI Variable Display", "Aptos Display", "Segoe UI Variable Text", Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --type-xs: 12px;
  --type-sm: 13px;
  --type-md: 15px;
  --type-lg: 18px;
  --type-xl: 24px;
  --paper: #f3f5f2;
  --panel: #fffefa;
  --line: #cfd9d4;
  --muted: #4f6059;
  --shadow: 0 14px 36px rgba(18, 58, 49, .08);
}

@media screen {
  html {
    font-size: 16px;
  }

  body {
    color: #123a31;
    background:
      radial-gradient(circle at 92% 4%, rgba(216, 235, 225, .72), transparent 29rem),
      linear-gradient(180deg, #f7f8f5 0, var(--paper) 34rem);
    font-family: var(--font-text);
    font-size: 16px;
    font-weight: 450;
    line-height: 1.55;
    letter-spacing: 0;
    font-kerning: normal;
    text-rendering: optimizeLegibility;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
  }

  h1,
  h2,
  h3,
  h4,
  h5,
  h6,
  .brand,
  .metric-value,
  .mobile-ticket-open strong {
    font-family: var(--font-display);
    font-weight: 780;
    letter-spacing: -.018em;
  }

  button,
  input,
  select,
  textarea {
    font-family: var(--font-text);
  }

  button,
  .primary-button,
  .soft-button,
  .text-button,
  .date-button,
  .date-display,
  .filter-chip,
  .workspace-tab,
  .detail-tab,
  .nav-item {
    font-size: 14px;
    font-weight: 720;
    line-height: 1.25;
    letter-spacing: 0;
  }

  button:focus-visible,
  a:focus-visible,
  input:focus-visible,
  select:focus-visible,
  textarea:focus-visible,
  [tabindex]:focus-visible {
    outline: 3px solid rgba(46, 112, 93, .28);
    outline-offset: 2px;
  }

  input,
  select,
  textarea,
  .dense-filters input,
  .dense-filters select,
  .parts-filters input,
  .parts-filters select,
  .form-grid input,
  .form-grid select,
  .modal input,
  .modal select,
  .modal textarea {
    min-height: 44px;
    color: #123a31;
    border-color: #bdcec6;
    border-radius: 10px;
    background: #fff;
    font-size: 15px;
    font-weight: 520;
    line-height: 1.4;
  }

  input:hover,
  select:hover,
  textarea:hover {
    border-color: #91afa2;
  }

  input::placeholder,
  textarea::placeholder {
    color: #68766f;
    opacity: 1;
  }

  label,
  .dense-filters label,
  .parts-filters label,
  .form-grid label,
  .modal label,
  .advisor-toolbar label {
    color: #334a42;
    font-size: 13px;
    font-weight: 700;
    line-height: 1.35;
  }

  body small,
  .subtle,
  .evidence,
  .panel-copy,
  .ticket-detail-meta,
  .repair-status-line,
  .google-maps-attribution,
  .report-chart-note {
    color: var(--muted);
    font-size: var(--type-xs) !important;
    line-height: 1.5;
  }

  .eyebrow,
  .section-kicker,
  .dense-filters label span,
  .parts-filters label span,
  .detail-issue-summary small,
  .detail-fact-grid small,
  .detail-lifecycle small,
  .source-tag,
  .status-tag,
  .tiny-tag,
  .part-status,
  .recommend-chip,
  .safety-badge,
  .impact,
  .privacy-chip,
  .sync-status,
  .nav-count {
    font-size: 11.5px;
    font-weight: 760;
    line-height: 1.3;
    letter-spacing: .025em;
  }

  .panel,
  .schedule-navigator,
  .dense-filters,
  .table-wrap,
  .mobile-calendar-panel,
  .mobile-search-panel,
  .modal {
    border-color: rgba(18, 58, 49, .14);
    background: rgba(255, 254, 250, .96);
    box-shadow: 0 8px 24px rgba(18, 58, 49, .055);
  }

  .brand strong {
    font-size: 15px;
    font-weight: 820;
    letter-spacing: .055em;
  }

  .brand span {
    font-size: 13px;
    font-weight: 650;
  }

  .nav-item {
    min-height: 43px;
    font-size: 14px;
  }

  .nav-subitem {
    min-height: 39px;
    font-size: 13px;
  }

  .nav-icon {
    width: 22px;
    height: 22px;
    flex-basis: 22px;
    font-size: 11.5px;
  }

  .topbar h1 {
    font-size: 22px;
    line-height: 1.18;
  }

  .topbar .eyebrow {
    font-size: 11.5px;
  }

  .page-intro h2 {
    font-size: clamp(29px, 2.5vw, 38px);
    line-height: 1.08;
    letter-spacing: -.032em;
  }

  .page-intro p,
  .hero-copy p,
  .ai-hero p,
  .modal > p,
  .modal p {
    color: #465950;
    font-size: 15px;
    line-height: 1.62;
  }

  .panel h3,
  .panel-head h3,
  .calendar-head h3,
  .parts-column h3,
  .detail-section-title,
  .repair-section-bar strong {
    font-size: var(--type-lg);
    font-weight: 800;
    line-height: 1.25;
  }

  .panel h4,
  .brief-item strong,
  .priority-item strong,
  .tech-load-card h4,
  .dispatch-card h4,
  .email-event h4,
  .part-card strong,
  .insight-card h4 {
    font-size: 15px;
    font-weight: 760;
    line-height: 1.35;
  }

  .brief-item small,
  .priority-item small,
  .tech-load-card p,
  .dispatch-card p,
  .dispatch-card-foot small,
  .email-event p,
  .part-card span,
  .part-card small,
  .insight-card p {
    font-size: 13px !important;
    line-height: 1.55;
  }

  .workspace-tabs,
  .detail-tabs {
    gap: 6px;
  }

  .workspace-tab,
  .detail-tab {
    min-height: 42px;
    padding: 0 15px;
    font-size: 14px;
  }

  .detail-tab {
    border: 1px solid transparent;
    border-radius: 9px 9px 0 0;
  }

  .detail-tab.active {
    border-color: #b8d1c6;
    border-bottom-color: var(--mint-strong);
    background: #edf5f1;
  }

  .result-bar {
    min-height: 48px;
    background: #eaf0ed;
  }

  .result-bar strong,
  .result-bar span {
    font-size: 13px;
  }

  table {
    font-variant-numeric: tabular-nums;
  }

  th,
  .dense-table th,
  .part-table th,
  .parts-operations-table th {
    padding: 12px 10px;
    color: #24483e;
    background: #e4ece8;
    font-size: 12px;
    font-weight: 800;
    line-height: 1.3;
    letter-spacing: .025em;
  }

  td,
  .dense-table td,
  .part-table td,
  .parts-operations-table td {
    padding: 12px 10px;
    color: #173f35;
    font-size: 13px;
    font-weight: 500;
    line-height: 1.42;
  }

  td small,
  .dense-table td small,
  .part-table td small,
  .parts-operations-table td small,
  .clickable-ticket small,
  .internal-note-cell {
    font-size: 12px !important;
    line-height: 1.45;
  }

  .clickable-ticket > strong,
  .ticket-appliance-cell strong,
  .internal-note-cell strong {
    font-size: 14px;
    font-weight: 760;
    line-height: 1.35;
  }

  .claim-settlement-table th {
    font-size: 11.5px;
  }

  .claim-settlement-table td {
    font-size: 12px;
    line-height: 1.4;
  }

  .planner-calendar-panel .calendar-head h3 {
    font-size: 21px;
  }

  .planner-calendar-panel .calendar-actions strong,
  .planner-selected-date strong {
    font-size: 16px;
  }

  .planner-calendar-panel .calendar-weekdays,
  .planner-calendar-panel .calendar-day small,
  .planner-calendar-panel .calendar-selection {
    font-size: 13px;
  }

  .planner-calendar-panel .calendar-day strong {
    font-size: 20px;
  }

  .modal h2,
  .detail-ticket-head h2 {
    font-size: clamp(26px, 3vw, 34px);
    line-height: 1.12;
  }

  .detail-customer-card > strong,
  .visit-form-heading h3,
  .service-photo-heading strong {
    font-size: 16px;
  }

  .detail-customer-card > span,
  .detail-customer-card > div span,
  .detail-issue-summary strong,
  .detail-issue-summary span,
  .detail-fact-grid strong,
  .detail-lifecycle strong,
  .service-save-row #service-save-context,
  .service-photo-heading small,
  .service-history-details summary strong {
    font-size: 13px;
    line-height: 1.5;
  }

  .mobile-ticket-filter button,
  .mobile-command-date,
  .mobile-route-link,
  .mode-switch button {
    min-height: 44px;
    font-size: 14px;
  }

  .mobile-job-rail strong,
  .mobile-job-rail small,
  .mobile-job-rail > span:last-child,
  .mobile-ticket-open small,
  .mobile-route-summary p {
    font-size: 12px;
    line-height: 1.4;
  }

  .mobile-job-customer strong,
  .phone-job h4 {
    font-size: 16px;
  }

  .mobile-ticket-open strong {
    font-size: 18px;
    line-height: 1.25;
  }

  .phone-job p,
  .mobile-service-line,
  .mobile-job-product {
    font-size: 13px;
    line-height: 1.5;
  }

  #view-ai .report-chart-axis-label,
  #view-ai .report-chart-legend,
  #view-ai .report-chart-legend.compact,
  #view-ai .report-company-bar-row > strong,
  #view-ai .pending-donut-legend b,
  #view-ai .pending-donut-legend strong,
  #view-ai .technician-score-row > small,
  #view-ai .report-chart-note {
    font-family: var(--font-text);
    font-size: 12px !important;
  }
}

@media screen and (min-width: 821px) {
  #ticket-list-print-area th {
    font-size: 12.5px;
  }

  #ticket-list-print-area td {
    font-size: 13px;
  }

  #ticket-list-print-area td > strong,
  #ticket-list-print-area .clickable-ticket > strong,
  #ticket-list-print-area .ticket-appliance-cell strong {
    font-size: 14px;
  }
}

@media screen and (max-width: 820px) {
  body {
    font-size: 16px;
  }

  .topbar h1 {
    font-size: 20px;
  }

  .page-intro h2 {
    font-size: clamp(28px, 8vw, 34px);
  }

  .panel-head {
    gap: 12px;
  }

  .panel h3,
  .panel-head h3,
  .detail-section-title {
    font-size: 17px;
  }

  .workspace-tab,
  .detail-tab {
    min-height: 44px;
    font-size: 14px;
  }

  .mobile-day strong,
  .mobile-month-day strong {
    font-size: 17px;
  }

  .mobile-day span,
  .mobile-month-day span,
  .mobile-day small,
  .mobile-month-day small,
  .mobile-kpi-grid span,
  .mobile-kpi-grid small {
    font-size: 12px;
  }

  .technician-detail .detail-ticket-identity h2 {
    font-size: 23px;
  }

  .technician-detail .detail-ticket-identity small,
  .technician-detail .detail-service-tags span,
  .technician-detail .attachment-type-field,
  .technician-detail .attachment-type-field select,
  .technician-detail .service-save-row #service-save-context,
  .technician-detail .visit-form-heading small {
    font-size: 12px;
  }
}

@media screen and (max-width: 540px) {
  .view {
    padding-inline: 14px;
  }

  .page-intro p,
  .hero-copy p,
  .modal p {
    font-size: 15px;
  }

  .mobile-job-shell {
    grid-template-columns: 96px minmax(0, 1fr);
  }

  .mobile-job-body {
    padding: 13px;
  }

  .mobile-ticket-open strong {
    font-size: 17px;
  }

  .detail-tab,
  .workspace-tab {
    padding-inline: 13px;
  }
}

/* Shadow inbox: observation-only email intake */
.intake-status-grid {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 10px;
  margin-bottom: 16px;
}

.intake-status-grid article {
  min-width: 0;
  padding: 15px;
  border: 1px solid #bfd4cb;
  border-radius: 14px;
  background: #eef6f2;
}

.intake-status-grid span,
.intake-status-grid strong,
.intake-status-grid small {
  display: block;
}

.intake-status-grid span {
  color: #53665e;
  font-size: 11.5px;
  font-weight: 850;
  letter-spacing: .06em;
  text-transform: uppercase;
}

.intake-status-grid strong {
  margin-top: 7px;
  color: var(--ink);
  font-size: 22px;
  line-height: 1.15;
  overflow-wrap: anywhere;
}

.intake-status-grid small {
  margin-top: 5px;
  color: #5c6d65;
  font-size: 12px;
  line-height: 1.4;
}

.intake-status-grid .intake-live { color: #176b4b; }
.intake-status-grid .intake-paused { color: #9b5d12; }

.intake-admin-controls {
  margin-bottom: 16px;
  padding: 17px;
  border: 1px solid #c9d9d2;
  border-left: 4px solid #d3a238;
  border-radius: 14px;
  background: #fffdf6;
}

.intake-control-head,
.intake-toolbar,
.intake-search-form {
  display: flex;
  align-items: flex-end;
  gap: 10px;
}

.intake-control-head { justify-content: space-between; }
.intake-control-head h3 { margin: 3px 0 0; }

.intake-settings-form {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto;
  align-items: end;
  gap: 12px;
  margin-top: 14px;
}

.intake-settings-form label,
.intake-search-form label {
  display: grid;
  min-width: 0;
  gap: 6px;
  color: #506159;
  font-size: 11.5px;
  font-weight: 850;
  letter-spacing: .025em;
}

.intake-settings-form textarea {
  width: 100%;
  min-height: 88px;
  resize: vertical;
}

.intake-control-status {
  margin: 12px 0 0;
  padding: 10px 12px;
  border: 1px solid #d6e0dc;
  border-radius: 10px;
  background: #f6faf8;
  color: #36564b;
  font-size: 13px;
  font-weight: 750;
  line-height: 1.45;
}

.intake-control-status[data-tone="success"] {
  border-color: #b9d9c8;
  background: #eef8f2;
  color: #176b4b;
}

.intake-control-status[data-tone="warning"] {
  border-color: #e5c98c;
  background: #fff8e8;
  color: #7d5513;
}

.intake-control-status[data-tone="error"] {
  border-color: #e3b0aa;
  background: #fff1ef;
  color: #8d2f26;
}

.intake-control-status[data-tone="pending"] {
  border-color: #b9cddd;
  background: #eff6fb;
  color: #285d78;
}

.intake-toolbar {
  justify-content: space-between;
  margin-bottom: 16px;
}

.intake-toolbar .filter-row { margin: 0; }
.intake-search-form { flex: 1 1 540px; justify-content: flex-end; }
.intake-search-form label { flex: 1 1 330px; max-width: 480px; }

.email-event {
  align-items: start;
  border-left-width: 4px;
}

.email-event.intake-eligible { border-left-color: #438c72; }
.email-event.intake-manual { border-left-color: #c68a2f; }
.email-event.intake-empty { border-left-color: #b8c7c0; }
.email-event-main { min-width: 0; }

.intake-message-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
}

.intake-message-heading h4 {
  overflow-wrap: anywhere;
}

.intake-review-status {
  flex: 0 0 auto;
  padding: 4px 8px;
  border-radius: 999px;
  color: #40564c;
  background: #e4eee9;
  font-size: 11.5px;
  font-weight: 850;
}

.intake-reason { color: #41554c !important; }

.intake-message-details {
  margin-top: 10px;
  padding-top: 9px;
  border-top: 1px solid #d5e0db;
}

.intake-message-details summary {
  color: var(--ink);
  font-size: 12px;
  font-weight: 850;
  cursor: pointer;
}

.intake-message-details dl {
  display: grid;
  gap: 5px;
  margin: 10px 0;
}

.intake-message-details dl div {
  display: grid;
  grid-template-columns: 82px minmax(0, 1fr);
  gap: 8px;
}

.intake-message-details dt { color: #687870; font-weight: 800; }
.intake-message-details dd { min-width: 0; margin: 0; overflow-wrap: anywhere; }
.intake-message-details p { white-space: pre-wrap; overflow-wrap: anywhere; }

.intake-quarantine-action {
  border-color: #e0b4ac !important;
  color: #873b32 !important;
  background: #fff2ef !important;
}

.intake-pagination {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 6px;
  margin-top: 14px;
}

@media (max-width: 1200px) {
  .intake-status-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .intake-toolbar { align-items: stretch; flex-direction: column; }
  .intake-search-form { flex-basis: auto; justify-content: flex-start; }
}

@media (max-width: 760px) {
  .intake-status-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .intake-settings-form { grid-template-columns: 1fr; }
  .intake-search-form { align-items: stretch; flex-wrap: wrap; }
  .intake-search-form label { flex-basis: 100%; max-width: none; }
}

@media (max-width: 540px) {
  .intake-status-grid { grid-template-columns: 1fr 1fr; }
  .intake-status-grid article { padding: 12px; }
  .intake-status-grid strong { font-size: 18px; }
  .intake-control-head { align-items: stretch; flex-direction: column; }
  .email-event { grid-template-columns: 38px minmax(0, 1fr); }
  .intake-message-heading { align-items: stretch; flex-direction: column; }
  .intake-review-status { align-self: flex-start; }
  .intake-message-details dl div { grid-template-columns: 1fr; gap: 2px; }
}

/* Restricted operational activity register */
.activity-page-intro {
  border-left: 5px solid var(--mint-strong);
}

.activity-tabs {
  display: inline-flex;
  max-width: 100%;
  margin-bottom: 14px;
  padding: 5px;
  gap: 5px;
  overflow-x: auto;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: rgba(255, 254, 250, .9);
}

.activity-tab {
  min-height: 44px;
  padding: 10px 18px;
  border: 0;
  border-radius: 10px;
  background: transparent;
  color: var(--muted);
  font: inherit;
  font-size: 14px;
  font-weight: 850;
  white-space: nowrap;
  cursor: pointer;
}

.activity-tab:hover,
.activity-tab:focus-visible {
  color: var(--ink);
  background: #edf4f1;
  outline: 2px solid rgba(46, 112, 93, .18);
}

.activity-tab.active {
  color: #fff;
  background: var(--ink);
}

.activity-summary-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  margin-bottom: 14px;
}

.activity-summary-grid article {
  display: grid;
  gap: 4px;
  min-width: 0;
  padding: 16px 18px;
  border: 1px solid #bfd3cc;
  border-radius: 14px;
  background: linear-gradient(145deg, #f7fbf9, #eaf3ef);
}

.activity-summary-grid span,
.activity-summary-grid small {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .04em;
}

.activity-summary-grid strong {
  overflow: hidden;
  color: var(--ink);
  font-size: clamp(22px, 2vw, 30px);
  line-height: 1.1;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.activity-filters {
  display: grid;
  grid-template-columns: minmax(260px, 1.5fr) minmax(170px, .7fr) minmax(145px, .55fr) minmax(145px, .55fr) auto auto;
  align-items: end;
  gap: 9px;
  margin-bottom: 12px;
  padding: 13px;
  border: 1px solid var(--line);
  border-radius: 15px;
  background: var(--panel);
  box-shadow: var(--shadow);
}

.activity-filters label {
  display: grid;
  min-width: 0;
  gap: 6px;
}

.activity-filters label > span {
  color: #52635d;
  font-size: 12px;
  font-weight: 850;
  letter-spacing: .025em;
  text-transform: uppercase;
}

.activity-filters input,
.activity-filters select {
  width: 100%;
  min-width: 0;
  min-height: 44px;
}

.activity-filters button {
  min-height: 44px;
  white-space: nowrap;
}

.activity-result-bar {
  gap: 10px 16px;
}

.activity-page-size {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-left: auto;
  color: var(--ink);
  font-size: 12px;
  font-weight: 850;
  white-space: nowrap;
}

.activity-page-size select {
  width: 76px;
  min-height: 38px;
  padding: 5px 26px 5px 9px;
  border: 1px solid var(--line);
  border-radius: 9px;
  background: #fff;
  color: var(--ink);
  font-weight: 800;
}

.activity-table-wrap {
  background: var(--panel);
}

.activity-table {
  width: 100%;
  min-width: 980px;
  table-layout: fixed;
}

.activity-table th:nth-child(1) { width: 170px; }
.activity-table th:nth-child(2) { width: 125px; }
.activity-table th:nth-child(3) { width: 210px; }
.activity-table th:nth-child(4) { width: 190px; }

.activity-table th {
  padding: 12px 13px;
  color: var(--ink);
  background: #e5efeb;
  font-size: 12px;
  letter-spacing: .035em;
}

.activity-table td {
  padding: 13px;
  vertical-align: top;
  color: #334d45;
  font-size: 13px;
  line-height: 1.45;
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: break-word;
}

.activity-table tbody tr:hover {
  background: #f4f8f6;
}

.activity-table td > small,
.activity-record-link small {
  display: block;
  margin-top: 3px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}

.activity-actor {
  display: inline-flex;
  padding: 5px 9px;
  border-radius: 999px;
  color: #245344;
  background: #e5f1ec;
  font-weight: 850;
}

.activity-action {
  display: inline-block;
  max-width: 100%;
  padding: 5px 8px;
  border-left: 4px solid #64887c;
  border-radius: 6px;
  color: #315248;
  background: #edf4f1;
  font-weight: 850;
  white-space: normal;
  overflow-wrap: anywhere;
}

.activity-action.created { border-color: #2f8065; background: #e2f2e9; }
.activity-action.updated { border-color: #587b91; background: #e6eef2; }
.activity-action.warning { border-color: #b95a4e; background: #f7e7e3; color: #7f352c; }

.activity-record-link {
  display: grid;
  min-width: 0;
  max-width: 100%;
  color: var(--ink);
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
  white-space: normal;
  overflow-wrap: anywhere;
}

.activity-detail-cell {
  min-width: 0;
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: break-word;
}

.activity-empty,
.activity-loading {
  display: grid;
  gap: 4px;
  padding: 24px 12px;
  color: var(--muted);
  text-align: center;
}

.activity-empty strong { color: var(--ink); }

.activity-pagination {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 6px;
  margin-top: 12px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: #f4f8f6;
}

.activity-page-button {
  min-width: 40px;
  min-height: 40px;
  padding: 7px 11px;
  border: 1px solid #b9ccc5;
  border-radius: 9px;
  background: #fff;
  color: var(--ink);
  font: inherit;
  font-size: 13px;
  font-weight: 850;
  cursor: pointer;
}

.activity-page-button:hover:not(:disabled),
.activity-page-button:focus-visible {
  border-color: var(--ink);
  outline: 2px solid rgba(19, 73, 60, .16);
  outline-offset: 1px;
}

.activity-page-button[aria-current="page"] { border-color: var(--ink); background: var(--ink); color: #fff; }
.activity-page-button:disabled { cursor: not-allowed; opacity: .45; }
.activity-page-nav { min-width: 82px; }
.activity-page-ellipsis { min-width: 24px; color: var(--muted); text-align: center; font-weight: 850; }

@media screen and (max-width: 1100px) {
  .activity-filters {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .activity-search-field { grid-column: 1 / -1; }
}

@media screen and (max-width: 620px) {
  .activity-summary-grid { grid-template-columns: 1fr; }
  .activity-filters { grid-template-columns: 1fr; }
  .activity-search-field { grid-column: auto; }
  .activity-filters button { width: 100%; }
  .activity-page-size { width: 100%; margin-left: 0; justify-content: space-between; }
  .activity-page-nav { min-width: 74px; }
}

/* Inventory ledger readability and inventory paging */
.inventory-history-table {
  min-width: 1600px;
  table-layout: fixed;
}

.inventory-history-table th:nth-child(1) { width: 110px; }
.inventory-history-table th:nth-child(2) { width: 180px; }
.inventory-history-table th:nth-child(3) { width: 110px; }
.inventory-history-table th:nth-child(4),
.inventory-history-table th:nth-child(5) { width: 105px; }
.inventory-history-table th:nth-child(6),
.inventory-history-table th:nth-child(7),
.inventory-history-table th:nth-child(8) { width: 82px; }
.inventory-history-table th:nth-child(9) { width: 140px; }
.inventory-history-table th:nth-child(10) { width: 230px; }
.inventory-history-table th:nth-child(11) { width: 260px; }
.inventory-history-table th:nth-child(12) { width: 120px; }

.inventory-history-table th {
  height: auto;
  white-space: normal;
  overflow-wrap: normal;
  word-break: normal;
  vertical-align: middle;
}

.inventory-history-table td {
  max-width: none;
  overflow: hidden;
}

.inventory-history-table .history-reference-cell,
.inventory-history-table .history-comment-cell,
.inventory-history-table .history-actor-cell {
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: break-word;
}

.inventory-result-bar {
  flex-wrap: wrap;
  gap: 10px 16px;
}

.inventory-result-bar #inventory-data-note {
  flex: 1 1 260px;
}

.inventory-page-size-control {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  gap: 8px;
  margin-left: auto;
  color: var(--ink);
  font-size: 12px;
  font-weight: 800;
  white-space: nowrap;
}

.inventory-page-size-control select {
  width: 76px;
  min-height: 40px;
  padding: 6px 28px 6px 10px;
  border: 1px solid var(--line);
  border-radius: 9px;
  background-color: #fff;
  color: var(--ink);
  font-size: 14px;
  font-weight: 800;
}

.inventory-pagination {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 6px;
  margin-top: 12px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: #f4f8f6;
}

.inventory-page-button {
  min-width: 40px;
  min-height: 40px;
  padding: 7px 11px;
  border: 1px solid #b9ccc5;
  border-radius: 9px;
  background: #fff;
  color: var(--ink);
  font: inherit;
  font-size: 13px;
  font-weight: 850;
  cursor: pointer;
}

.inventory-page-button:hover:not(:disabled),
.inventory-page-button:focus-visible {
  border-color: var(--ink);
  outline: 2px solid rgba(19, 73, 60, .16);
  outline-offset: 1px;
}

.inventory-page-button[aria-current="page"] {
  border-color: var(--ink);
  background: var(--ink);
  color: #fff;
}

.inventory-page-button:disabled {
  cursor: not-allowed;
  opacity: .45;
}

.inventory-page-nav {
  min-width: 82px;
}

.inventory-page-ellipsis {
  min-width: 24px;
  color: var(--muted);
  text-align: center;
  font-weight: 850;
}

@media screen and (max-width: 540px) {
  .inventory-page-size-control {
    width: 100%;
    margin-left: 0;
    justify-content: space-between;
  }

  .inventory-page-nav {
    min-width: 74px;
  }
}

/* Ticket workspace: balanced grids and a restrained, professional information hierarchy. */
.ticket-detail-modal .detail-field-grid,
.ticket-detail-modal .service-core-grid,
.ticket-detail-modal .visit-er-grid,
.ticket-detail-modal .service-office-grid {
  align-items: stretch;
  gap: 12px;
}

.ticket-detail-modal .detail-field-grid > label,
.ticket-detail-modal .service-core-grid > label:not(.visit-check),
.ticket-detail-modal .visit-er-grid > label,
.ticket-detail-modal .service-office-grid > label {
  display: grid;
  min-width: 0;
  margin: 0;
  align-content: start;
  grid-template-rows: auto minmax(44px, auto);
  gap: 6px;
}

.ticket-detail-modal .detail-field-grid input,
.ticket-detail-modal .detail-field-grid select,
.ticket-detail-modal .service-core-grid input,
.ticket-detail-modal .service-core-grid select,
.ticket-detail-modal .service-core-grid textarea,
.ticket-detail-modal .visit-er-grid input,
.ticket-detail-modal .visit-er-grid select,
.ticket-detail-modal .visit-er-grid textarea,
.ticket-detail-modal .service-office-grid input,
.ticket-detail-modal .service-office-grid select,
.ticket-detail-modal .service-office-grid textarea {
  width: 100%;
  min-width: 0;
  margin: 0;
}

.ticket-detail-modal .service-core-grid > label:not(.visit-check) {
  padding: 10px 11px;
}

.ticket-detail-modal .visit-check {
  min-height: 64px;
  margin: 0;
  padding: 10px 12px;
  align-self: stretch;
}

.ticket-detail-modal #detail-visits-panel:not(.hidden) {
  gap: 14px;
}

.service-advanced-fields {
  overflow: hidden;
  border-color: #abc7d6;
  background: #f8fbfc;
  box-shadow: 0 3px 10px rgba(29, 75, 99, .055);
}

.service-advanced-fields > summary {
  position: relative;
  min-height: 60px;
  padding: 11px 52px 11px 15px;
  list-style: none;
  color: #174f69;
  border-left: 6px solid #367fa4;
  background: linear-gradient(100deg, #e3eff5, #f4f9fb);
}

.service-advanced-fields > summary::-webkit-details-marker {
  display: none;
}

.service-advanced-fields > summary::after {
  content: "+";
  position: absolute;
  top: 50%;
  right: 15px;
  display: grid;
  width: 28px;
  height: 28px;
  place-items: center;
  border: 1px solid #9ebfce;
  border-radius: 8px;
  color: #174f69;
  background: rgba(255, 255, 255, .82);
  font-size: 20px;
  font-weight: 700;
  transform: translateY(-50%);
}

.service-advanced-fields[open] > summary {
  border-bottom: 1px solid #bfd3dd;
}

.service-advanced-fields[open] > summary::after {
  content: "−";
}

.service-advanced-title {
  display: grid;
  gap: 2px;
  min-width: 0;
}

.service-advanced-title strong {
  font-size: 17px;
  font-weight: 820;
  line-height: 1.25;
  letter-spacing: -.012em;
}

.service-advanced-title small {
  color: #557483;
  font-size: 11.5px !important;
  font-weight: 650;
  line-height: 1.35;
}

.service-photo-workspace {
  padding: 16px;
  border: 1px solid #a9c8d9;
  border-top: 5px solid #357fa5;
  background: #eef5f8;
  box-shadow: 0 3px 12px rgba(29, 75, 99, .05);
}

.service-photo-heading {
  margin-bottom: 12px;
  padding-bottom: 10px;
  border-bottom: 1px solid #c8dbe5;
}

.service-photo-heading span {
  color: #35718f;
  font-size: 11.5px;
  letter-spacing: .09em;
}

.service-photo-heading strong {
  color: #173f35;
  font-size: 17px;
  font-weight: 820;
  line-height: 1.25;
}

.service-photo-heading small {
  color: #5b707a;
  font-size: 11.5px !important;
  font-weight: 600;
}

.service-photo-workspace .attachment-form {
  grid-template-columns: minmax(180px, .85fr) minmax(280px, 1.65fr) minmax(190px, .9fr) minmax(96px, auto);
  gap: 10px;
  margin-bottom: 12px;
  padding: 12px;
  border-color: #cad9df;
  border-radius: 12px;
  background: rgba(255, 255, 255, .88);
  box-shadow: none;
}

.ticket-detail-modal .attachment-form > label {
  display: grid;
  min-width: 0;
  margin: 0;
  grid-template-rows: auto 44px;
  gap: 5px;
  color: #52665f;
  font-size: 11.5px;
  font-weight: 700;
  line-height: 1.3;
}

.attachment-field-label {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.ticket-detail-modal .attachment-form select,
.ticket-detail-modal .attachment-form input[type="file"] {
  width: 100%;
  min-width: 0;
  min-height: 44px;
  margin: 0;
  color: #314a42;
  font-size: 13px;
  font-weight: 550;
}

.ticket-detail-modal .file-picker input[type="file"] {
  padding: 5px 8px 5px 5px;
}

.ticket-detail-modal .file-picker input[type="file"]::file-selector-button {
  min-height: 32px;
  margin-right: 9px;
  padding: 5px 10px;
  border: 1px solid #c5d3cd;
  border-radius: 7px;
  color: #315248;
  background: #eef3f0;
  font: inherit;
  font-size: 12px;
  font-weight: 700;
  cursor: pointer;
}

.ticket-detail-modal .attachment-selection-status {
  min-height: 44px;
  padding: 8px 11px;
  color: #5b6d65;
  font-size: 12px;
  font-weight: 650;
}

.ticket-detail-modal .attachment-form .primary-button {
  min-width: 96px;
  min-height: 44px;
  padding-inline: 16px;
}

.service-history-details,
.service-secondary-workspace {
  width: 100%;
  margin: 0;
}

.service-history-details > summary,
.service-secondary-workspace > .repair-section-bar {
  min-height: 58px;
  padding: 11px 46px 11px 14px;
}

.service-history-details > summary {
  position: relative;
  list-style: none;
}

.service-history-details > summary::-webkit-details-marker {
  display: none;
}

.service-history-details > summary::after {
  content: "+";
  position: absolute;
  right: 14px;
  color: currentColor;
  font-size: 20px;
  font-weight: 750;
}

.service-history-details[open] > summary::after {
  content: "−";
}

.service-history-details > summary > span,
.repair-section-bar div strong {
  color: #24483e;
  font-size: 14px;
  font-weight: 820;
  line-height: 1.3;
}

.service-history-details > summary > strong,
.repair-section-note {
  color: #5d6d66;
  font-size: 12px;
  font-weight: 650;
  line-height: 1.35;
}

.repair-section-bar div span {
  font-size: 11.5px;
  letter-spacing: .075em;
}

@media screen and (max-width: 1100px) {
  .service-photo-workspace .attachment-form {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media screen and (max-width: 820px) {
  .service-advanced-fields > summary {
    min-height: 56px;
    padding-left: 12px;
  }

  .service-advanced-title strong {
    font-size: 15px;
  }

  .service-advanced-title small {
    font-size: 11.5px !important;
  }

  .technician-detail .service-photo-workspace {
    padding: 12px;
  }

  .technician-detail .attachment-form {
    grid-template-columns: 1fr;
  }

  .service-history-details > summary,
  .service-secondary-workspace > .repair-section-bar {
    min-height: 56px;
    padding: 10px 42px 10px 12px;
  }
}

/* Ticket workspace v2 — ER-inspired density with one consistent visual language. */
:root {
  --apex-font-text: "Segoe UI Variable Text", "Aptos", "Segoe UI", ui-sans-serif, system-ui, sans-serif;
  --apex-font-display: "Segoe UI Variable Display", "Aptos Display", "Segoe UI Variable Text", "Segoe UI", ui-sans-serif, system-ui, sans-serif;
  --ticket-navy: #173f35;
  --ticket-blue: #246f9e;
  --ticket-blue-soft: #eaf3f8;
  --ticket-teal: #218477;
  --ticket-teal-soft: #e8f5f1;
  --ticket-purple: #7357a8;
  --ticket-purple-soft: #f1edfa;
  --ticket-amber: #c47a0a;
  --ticket-amber-soft: #fff4d9;
  --ticket-border: #c9d7d1;
  --ticket-muted: #52665f;
}

body,
button,
input,
select,
textarea {
  font-family: var(--apex-font-text);
}

body {
  color: #173f35;
  font-size: 16px;
  font-weight: 500;
  line-height: 1.5;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
}

h1,
h2,
h3,
h4,
.page-intro h2,
.panel-head h3,
.detail-ticket-identity h2,
.visit-form-heading h3 {
  font-family: var(--apex-font-display);
  font-weight: 760;
  letter-spacing: -.022em;
}

button,
.primary-button,
.soft-button,
.workspace-tab,
.detail-tab {
  font-size: 14px;
  font-weight: 720;
  letter-spacing: -.005em;
}

input,
select,
textarea {
  font-size: 15px;
  font-weight: 520;
  line-height: 1.4;
}

label,
.modal label,
.dense-filters label,
.parts-filters label {
  font-size: 13px;
  font-weight: 700;
  line-height: 1.35;
}

body small,
.section-kicker,
.eyebrow {
  font-size: 12px !important;
  line-height: 1.45;
}

.ticket-detail-modal {
  width: min(1500px, calc(100vw - 28px));
  max-width: none;
  max-height: calc(100dvh - 28px);
  padding: 20px;
  overflow-x: hidden;
  border: 1px solid #bfd0c9;
  border-radius: 18px;
  background: #f7f7f3;
}

.ticket-detail-modal .modal-close {
  top: 0;
  z-index: 12;
  width: 42px;
  height: 42px;
  margin: 0;
  border: 1px solid #d1ddd8;
  font-size: 25px;
}

.detail-ticket-head {
  overflow: hidden;
  padding: 0;
  border: 1px solid var(--ticket-border);
  border-radius: 13px;
  background: #fff;
  box-shadow: 0 5px 18px rgba(23, 63, 53, .055);
}

.detail-ticket-head .historical-readonly-banner,
.detail-ticket-head .ticket-internal-warning {
  margin: 12px 12px 0;
}

.ticket-detail-modal .detail-record-bar.detail-command-strip {
  display: grid;
  grid-template-columns: minmax(220px, 280px) minmax(0, 1fr) !important;
  align-items: stretch;
  gap: 14px;
  padding: 16px;
  border-bottom: 1px solid #d7e0dc;
  background: linear-gradient(105deg, #fff 0%, #f2f7f4 100%);
}

.detail-ticket-identity {
  display: grid;
  min-width: 0;
  align-content: center;
  gap: 3px;
  padding: 0 4px;
}

.detail-ticket-identity .section-kicker {
  color: #355b50;
  font-weight: 800;
  letter-spacing: .035em;
  text-transform: uppercase;
}

.detail-ticket-identity h2 {
  margin: 1px 0;
  color: #073f35;
  font-size: clamp(27px, 2.4vw, 36px);
  line-height: 1.1;
  overflow-wrap: anywhere;
}

.detail-ticket-identity small {
  color: #5a6c65;
  font-size: 12px !important;
  font-weight: 680;
}

.ticket-detail-modal .detail-service-tags.detail-summary-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  align-items: stretch;
  justify-content: stretch;
  gap: 8px;
}

.ticket-detail-modal .detail-summary-card {
  display: grid;
  min-width: 0;
  min-height: 70px;
  align-content: center;
  gap: 5px;
  padding: 10px 12px;
  overflow: hidden;
  border: 1px solid #cbd8d2;
  border-top: 4px solid #77978c;
  border-radius: 9px;
  color: #173f35;
  background: rgba(255, 255, 255, .92);
}

.ticket-detail-modal .detail-summary-card:nth-child(1) { border-top-color: var(--ticket-blue); }
.ticket-detail-modal .detail-summary-card:nth-child(2) { border-top-color: var(--ticket-amber); }
.ticket-detail-modal .detail-summary-card:nth-child(3) { border-top-color: var(--ticket-teal); }
.ticket-detail-modal .detail-summary-card:nth-child(4) { border-top-color: var(--ticket-purple); }
.ticket-detail-modal .detail-summary-card:nth-child(5) { border-top-color: #55736a; }

.ticket-detail-modal .detail-summary-card small,
.ticket-detail-modal .detail-summary-card strong {
  display: block;
  min-width: 0;
}

.ticket-detail-modal .detail-summary-card small {
  color: #5a6e66;
  font-size: 12px !important;
  font-weight: 800;
  letter-spacing: .045em;
  line-height: 1.2;
  text-transform: uppercase;
}

.ticket-detail-modal .detail-summary-card strong {
  display: -webkit-box;
  overflow: hidden;
  color: inherit;
  font-size: 14px;
  font-weight: 760;
  line-height: 1.28;
  overflow-wrap: anywhere;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}

.ticket-detail-modal .detail-summary-status {
  border-width: 1px !important;
  border-top-width: 4px !important;
}

.ticket-detail-modal .detail-summary-status small {
  color: inherit;
  opacity: .78;
}

.detail-customer-card.detail-customer-workspace {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.18fr);
  gap: 0;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: #fff;
}

.detail-customer-primary,
.detail-address-panel {
  display: grid;
  min-width: 0;
  align-content: start;
  gap: 7px;
  padding: 14px 16px;
}

.detail-address-panel {
  border-left: 1px solid #d7e0dc;
  background: #fbfcfa;
}

.detail-block-label {
  color: #4f665e;
  font-size: 12px;
  font-weight: 820;
  letter-spacing: .055em;
  line-height: 1.2;
  text-transform: uppercase;
}

.detail-customer-primary > strong,
.detail-address-panel > strong {
  color: #123f35;
  font-size: 17px;
  font-weight: 780;
  line-height: 1.32;
  overflow-wrap: anywhere;
}

.detail-contact-line {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 16px;
  color: #4e625b;
  font-size: 14px;
  line-height: 1.42;
}

.ticket-detail-modal .ticket-detail-contact-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  margin: 2px 0 0;
}

.ticket-detail-modal .ticket-detail-contact-actions a,
.ticket-detail-modal .address-tool-button,
.ticket-detail-modal .ticket-distance-badge {
  min-height: 36px;
  padding: 7px 11px;
  border-radius: 8px;
  font-size: 12px;
  font-weight: 760;
  line-height: 1.2;
}

.ticket-detail-modal .ticket-address-row {
  margin: 2px 0 0;
}

.ticket-detail-modal .ticket-address-tools {
  display: flex;
  gap: 7px;
}

.ticket-detail-modal .ticket-distance-badge {
  min-width: 112px;
}

.ticket-detail-modal .ticket-distance-badge strong {
  font-size: 12px;
}

.ticket-detail-modal .ticket-distance-badge span {
  font-size: 12px;
}

.detail-issue-summary.detail-request-workspace {
  display: grid;
  grid-template-columns: auto minmax(190px, auto) minmax(0, 1fr);
  align-items: center;
  gap: 8px 13px;
  margin: 0;
  padding: 12px 16px;
  border-top: 1px solid #d7e0dc;
  background: #f4f7f5;
}

.detail-request-workspace small {
  color: #476159;
  font-size: 12px !important;
  font-weight: 820;
  letter-spacing: .055em;
  text-transform: uppercase;
}

.detail-request-workspace strong {
  color: #123f35;
  font-size: 14px;
  font-weight: 780;
}

.detail-request-workspace span {
  display: -webkit-box;
  overflow: hidden;
  color: #415851;
  font-size: 14px;
  line-height: 1.45;
  overflow-wrap: anywhere;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}

.ticket-detail-modal .detail-tabs {
  position: sticky;
  top: -20px;
  z-index: 8;
  display: grid;
  grid-template-columns: repeat(4, minmax(138px, 205px));
  justify-content: start;
  gap: 6px;
  margin: 12px 0;
  padding: 9px 50px 8px 0;
  border-bottom: 2px solid #bccdc6;
  background: #f7f7f3;
}

.ticket-detail-modal .detail-tab {
  min-width: 0;
  min-height: 46px;
  padding: 0 15px;
  border: 1px solid #bdcbc5;
  border-top: 4px solid #82998f;
  border-radius: 8px 8px 0 0;
  color: #294a41;
  background: #fff;
  font-size: 14px;
  font-weight: 760;
  line-height: 1.2;
}

.ticket-detail-modal .detail-tab.active {
  color: #fff;
  border-color: #174f44;
  background: #174f44;
  box-shadow: 0 4px 10px rgba(23, 79, 68, .13);
}

.ticket-detail-modal .detail-tab:focus-visible {
  outline: 3px solid rgba(36, 111, 158, .26);
  outline-offset: 2px;
}

.tab-label-short {
  display: none;
}

.ticket-edit-form,
#detail-visits-panel:not(.hidden) {
  gap: 12px;
}

.ticket-detail-modal .detail-field-section {
  padding: 0 14px 14px;
  overflow: hidden;
  border: 1px solid var(--ticket-border);
  border-radius: 9px;
  background: #fff;
  box-shadow: none;
}

.ticket-detail-modal .detail-section-title {
  min-height: 46px;
  display: flex;
  align-items: center;
  margin: 0 -14px 14px;
  padding: 0 14px;
  border-radius: 0;
  font-family: var(--apex-font-display);
  font-size: 17px;
  font-weight: 760;
  letter-spacing: -.012em;
}

.ticket-detail-modal .detail-field-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}

.ticket-detail-modal .detail-field-grid > label,
.ticket-detail-modal .service-core-grid > label:not(.visit-check),
.ticket-detail-modal .visit-er-grid > label,
.ticket-detail-modal .service-office-grid > label {
  gap: 6px;
  color: #375149;
  font-size: 13px;
  font-weight: 720;
}

.ticket-detail-modal .detail-field-grid input,
.ticket-detail-modal .detail-field-grid select,
.ticket-detail-modal .detail-field-grid textarea,
.ticket-detail-modal .service-core-grid input,
.ticket-detail-modal .service-core-grid select,
.ticket-detail-modal .service-core-grid textarea,
.ticket-detail-modal .visit-er-grid input,
.ticket-detail-modal .visit-er-grid select,
.ticket-detail-modal .visit-er-grid textarea,
.ticket-detail-modal .service-office-grid input,
.ticket-detail-modal .service-office-grid select,
.ticket-detail-modal .service-office-grid textarea {
  min-height: 44px;
  padding: 9px 11px;
  border: 1px solid #b9c9c2;
  border-radius: 7px;
  color: #173f35;
  background: #fff;
  font-size: 14px;
}

.ticket-detail-modal textarea {
  resize: vertical;
}

.ticket-detail-modal .ticket-detail-savebar {
  bottom: -20px;
  min-height: 58px;
  padding: 9px 12px;
  border-radius: 9px 9px 0 0;
}

.ticket-detail-savebar span {
  font-size: 13px;
  line-height: 1.42;
}

.ticket-detail-modal .visit-form {
  overflow: hidden;
  padding: 0 14px 14px;
  border: 1px solid #a9c8bf;
  border-radius: 9px;
  background: #fff;
}

.ticket-detail-modal .visit-form-heading {
  min-height: 62px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin: 0 -14px 14px;
  padding: 10px 14px;
  border-left: 7px solid var(--ticket-teal);
  border-bottom: 1px solid #bdd4cd;
  background: var(--ticket-teal-soft);
}

.ticket-detail-modal .visit-form-heading span {
  color: #287064;
  font-size: 12px;
  font-weight: 820;
  letter-spacing: .065em;
}

.ticket-detail-modal .visit-form-heading h3 {
  margin: 1px 0 0;
  color: #14483d;
  font-size: 21px;
  line-height: 1.2;
}

.ticket-detail-modal .visit-form-heading small {
  max-width: 420px;
  color: #4e665e;
  font-size: 12px !important;
  font-weight: 650;
  text-align: right;
}

.ticket-detail-modal .service-core-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}

.ticket-detail-modal .service-core-grid > label:not(.visit-check) {
  padding: 10px;
  border-top-width: 4px;
  border-radius: 8px;
}

.ticket-detail-modal .service-core-grid > label:has([name="repairStatus"]),
.ticket-detail-modal .service-core-grid > label:has([name="result"]) {
  grid-column: span 2;
}

.ticket-detail-modal .service-core-grid textarea {
  min-height: 86px;
}

.ticket-detail-modal .service-save-row {
  margin: 14px -14px -14px;
  padding: 12px 14px;
}

.ticket-detail-modal .service-save-actions > * {
  min-height: 46px;
  font-size: 13px;
}

.ticket-detail-modal .service-advanced-fields,
.ticket-detail-modal .service-history-details,
.ticket-detail-modal .service-photo-workspace,
.ticket-detail-modal .service-secondary-workspace {
  border-radius: 9px;
  box-shadow: none;
}

.ticket-detail-modal .service-advanced-title strong,
.ticket-detail-modal .service-photo-heading strong,
.ticket-detail-modal .service-history-details > summary > span,
.ticket-detail-modal .repair-section-bar div strong {
  font-family: var(--apex-font-display);
  font-size: 16px;
  font-weight: 760;
}

.ticket-detail-modal .service-photo-workspace {
  padding: 14px;
  border-width: 1px;
  border-top-width: 6px;
}

@media screen and (max-width: 1160px) {
  .ticket-detail-modal .detail-record-bar.detail-command-strip {
    grid-template-columns: 230px minmax(0, 1fr) !important;
  }

  .ticket-detail-modal .detail-service-tags.detail-summary-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .ticket-detail-modal .detail-summary-card {
    min-height: 62px;
  }

  .ticket-detail-modal .detail-field-grid,
  .ticket-detail-modal .service-core-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .ticket-detail-modal .detail-span-2,
  .ticket-detail-modal .service-span-2 {
    grid-column: 1 / -1;
  }
}

@media screen and (max-width: 820px) {
  .ticket-detail-modal,
  .ticket-detail-modal.technician-detail {
    width: 100%;
    max-width: none;
    min-height: 100dvh;
    max-height: none;
    padding: 10px;
    border: 0;
    border-radius: 0;
  }

  .ticket-detail-modal .modal-close {
    width: 42px;
    height: 42px;
  }

  .ticket-detail-modal .detail-record-bar.detail-command-strip,
  .ticket-detail-modal.technician-detail .detail-record-bar.detail-command-strip {
    display: grid;
    grid-template-columns: 1fr !important;
    gap: 12px;
    padding: 14px;
  }

  .detail-ticket-identity {
    padding-right: 44px;
  }

  .detail-ticket-identity h2,
  .technician-detail .detail-ticket-identity h2 {
    font-size: 27px;
  }

  .ticket-detail-modal .detail-service-tags.detail-summary-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 7px;
  }

  .ticket-detail-modal .detail-summary-card {
    min-height: 64px;
    padding: 9px 10px;
  }

  .ticket-detail-modal .detail-summary-card strong {
    font-size: 14px;
  }

  .detail-customer-card.detail-customer-workspace {
    grid-template-columns: 1fr;
  }

  .detail-customer-primary,
  .detail-address-panel {
    padding: 13px 14px;
  }

  .detail-address-panel {
    border-top: 1px solid #d7e0dc;
    border-left: 0;
  }

  .detail-customer-primary > strong,
  .detail-address-panel > strong {
    font-size: 16px;
  }

  .detail-contact-line {
    display: grid;
    gap: 3px;
    font-size: 14px;
  }

  .ticket-detail-modal .ticket-detail-contact-actions,
  .ticket-detail-modal .ticket-address-tools {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    width: 100%;
  }

  .ticket-detail-modal .ticket-detail-contact-actions a,
  .ticket-detail-modal .address-tool-button,
  .ticket-detail-modal .ticket-distance-badge {
    width: 100%;
    min-height: 42px;
  }

  .detail-issue-summary.detail-request-workspace {
    grid-template-columns: 1fr;
    gap: 4px;
    padding: 12px 14px;
  }

  .ticket-detail-modal .detail-tabs,
  .ticket-detail-modal.technician-detail .detail-tabs {
    top: -10px;
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 4px;
    margin: 9px 0;
    padding: 7px 0 6px;
    overflow: visible;
  }

  .ticket-detail-modal .detail-tab,
  .ticket-detail-modal.technician-detail .detail-tab {
    min-width: 0;
    min-height: 44px;
    padding: 0 5px;
    font-size: 13px;
  }

  .tab-label-full {
    display: none;
  }

  .tab-label-short {
    display: inline;
  }

  .ticket-detail-modal .detail-field-section {
    padding: 0 11px 12px;
  }

  .ticket-detail-modal .detail-section-title {
    min-height: 44px;
    margin: 0 -11px 12px;
    padding: 0 12px;
    font-size: 16px;
  }

  .ticket-detail-modal .detail-field-grid,
  .ticket-detail-modal .service-core-grid,
  .ticket-detail-modal.technician-detail .service-core-grid,
  .ticket-detail-modal .visit-er-grid,
  .ticket-detail-modal .service-office-grid {
    grid-template-columns: 1fr;
    gap: 10px;
  }

  .ticket-detail-modal .detail-span-2,
  .ticket-detail-modal .service-span-2,
  .ticket-detail-modal .service-core-grid > label:has([name="repairStatus"]),
  .ticket-detail-modal .service-core-grid > label:has([name="result"]),
  .ticket-detail-modal.technician-detail .service-core-grid > label:has(textarea),
  .ticket-detail-modal.technician-detail .service-core-grid > label:has([name="repairStatus"]),
  .ticket-detail-modal.technician-detail .service-core-grid > label:has([name="result"]) {
    grid-column: 1;
  }

  .ticket-detail-modal .ticket-detail-savebar {
    bottom: -10px;
    align-items: stretch;
    flex-direction: column;
  }

  .ticket-detail-savebar span {
    font-size: 12px;
  }

  .ticket-detail-modal .visit-form {
    padding: 0 11px 12px;
  }

  .ticket-detail-modal .visit-form-heading {
    align-items: flex-start;
    flex-direction: column;
    gap: 3px;
    margin: 0 -11px 12px;
    padding: 10px 12px;
  }

  .ticket-detail-modal .visit-form-heading h3 {
    font-size: 19px;
  }

  .ticket-detail-modal .visit-form-heading small {
    text-align: left;
  }

  .ticket-detail-modal .service-save-row {
    margin: 12px -11px -12px;
    padding: 11px;
  }

  .ticket-detail-modal .service-save-actions,
  .ticket-detail-modal .service-save-row[data-visit-stage="new"] .service-save-actions,
  .ticket-detail-modal .service-save-row[data-visit-stage="active"] .service-save-actions {
    grid-template-columns: 1fr;
  }

  .ticket-detail-modal .service-save-row[data-visit-stage="active"] .visited-action-button {
    grid-column: 1;
  }

  .ticket-detail-modal .service-photo-workspace .attachment-form {
    grid-template-columns: 1fr;
  }
}

@media screen and (max-width: 430px) {
  body {
    font-size: 15px;
  }

  .ticket-detail-modal .detail-summary-card {
    min-height: 60px;
  }

  .ticket-detail-modal .detail-summary-card small {
    font-size: 12px !important;
  }

  .ticket-detail-modal .detail-summary-card strong,
  .detail-request-workspace strong,
  .detail-request-workspace span {
    font-size: 13px;
  }

  .ticket-detail-modal .detail-tab,
  .ticket-detail-modal.technician-detail .detail-tab {
    font-size: 12px;
  }
}

/* Ticket workspace v3 — field-first repair flow and readable mobile summaries. */
.ticket-detail-modal #detail-visits-panel:not(.hidden) {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 12px;
}

.ticket-detail-modal #detail-visits-panel > *,
.ticket-detail-modal #visit-form > * {
  min-width: 0;
  order: 100;
}

.ticket-detail-modal #visit-form {
  display: contents;
}

.ticket-detail-modal #visit-form > input[type="hidden"] {
  display: none;
}

.ticket-detail-modal #visit-form > .visit-form-heading { order: 10; }
.ticket-detail-modal #visit-form > .service-unit-grid { order: 20; }
.ticket-detail-modal #service-photo-section { order: 30; }
.ticket-detail-modal #visit-form > .service-notes-workflow { order: 40; }
.ticket-detail-modal #visit-form > .service-status-grid { order: 50; }
.ticket-detail-modal #visit-form > .service-save-row { order: 60; }
.ticket-detail-modal #visit-form > .service-advanced-fields { order: 70; }
.ticket-detail-modal #visit-history-details { order: 35; }
.ticket-detail-modal #service-related-history { order: 32; }

.ticket-detail-modal #visit-form > .visit-form-heading {
  min-height: 58px;
  margin: 0;
  padding: 10px 14px;
  overflow: hidden;
  border: 1px solid #9fc7bc;
  border-left: 7px solid var(--ticket-teal);
  border-radius: 9px;
  background: var(--ticket-teal-soft);
}

.ticket-detail-modal .service-unit-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 9px;
  padding: 11px;
  border: 1px solid #b9d0dc;
  border-top: 5px solid var(--ticket-blue);
  border-radius: 9px;
  background: #f5f9fb;
}

.ticket-detail-modal .service-unit-grid > label:not(.visit-check) {
  display: grid;
  grid-template-rows: auto 42px;
  gap: 5px;
  min-width: 0;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  color: #36554d;
  background: transparent;
  font-size: 13px;
  font-weight: 760;
}

.ticket-detail-modal .service-unit-grid input {
  min-height: 42px;
  padding: 8px 10px;
  border: 1px solid #b8c8c2;
  border-radius: 7px;
  background: #fff;
  font-size: 14px;
}

.ticket-detail-modal .service-unit-actions {
  grid-column: 1 / -1;
  min-height: 40px;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 9px;
}

.ticket-detail-modal .service-unit-actions small {
  color: var(--muted);
  font-size: 12px;
  text-align: right;
}

.ticket-detail-modal .service-unit-update-button {
  width: auto;
  min-width: 112px;
  min-height: 40px;
  padding: 7px 16px;
  border-color: #24764b;
  color: #174c33;
  background: #e5f3e9;
}

.ticket-detail-modal .service-unit-update-button[aria-busy="true"] {
  cursor: wait;
}

.ticket-detail-modal .service-notes-workflow {
  overflow: hidden;
  border: 1px solid #b6cac3;
  border-top: 5px solid #4d8172;
  border-radius: 9px;
  background: #fff;
}

.ticket-detail-modal .service-notes-heading {
  display: flex;
  min-height: 48px;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 9px 12px;
  border-bottom: 1px solid #cbd8d3;
  background: #edf5f2;
}

.ticket-detail-modal .service-notes-heading span {
  color: #4f6c63;
  font-size: 12px;
  font-weight: 820;
  letter-spacing: .055em;
}

.ticket-detail-modal .service-notes-heading strong {
  color: #164c40;
  font-family: var(--apex-font-display);
  font-size: 16px;
  font-weight: 780;
  text-align: right;
}

.ticket-detail-modal .service-notes-workflow > label {
  display: grid;
  grid-template-columns: minmax(205px, .3fr) minmax(0, 1fr);
  align-items: start;
  gap: 12px;
  min-width: 0;
  margin: 0;
  padding: 8px 11px;
  border: 0;
  border-bottom: 1px solid #d9e2de;
  background: #fff;
}

.ticket-detail-modal .service-notes-workflow > label:last-child {
  border-bottom: 0;
}

.ticket-detail-modal .service-note-label {
  padding: 8px 2px;
  color: #284d43;
  font-size: 13px;
  font-weight: 780;
  line-height: 1.35;
}

.ticket-detail-modal .service-notes-workflow textarea {
  width: 100%;
  min-width: 0;
  min-height: 62px;
  margin: 0;
  padding: 9px 10px;
  border: 1px solid #b9c9c2;
  border-radius: 7px;
  color: #173f35;
  background: #fff;
  font-size: 14px;
  line-height: 1.42;
  resize: vertical;
  overflow-y: auto;
}

.ticket-detail-modal .service-status-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 9px;
}

.ticket-detail-modal .service-status-grid > label {
  display: grid;
  grid-template-columns: minmax(120px, auto) minmax(0, 1fr);
  align-items: center;
  gap: 10px;
  min-width: 0;
  margin: 0;
  padding: 9px 11px;
  border: 1px solid #c0d1ca;
  border-top: 4px solid var(--ticket-purple);
  border-radius: 9px;
  color: #31534a;
  background: #f8faf9;
  font-size: 13px;
  font-weight: 760;
}

.ticket-detail-modal .service-status-grid > label:last-child {
  border-top-color: var(--ticket-blue);
}

.ticket-detail-modal .service-status-grid select {
  width: 100%;
  min-width: 0;
  min-height: 42px;
  margin: 0;
  padding: 8px 10px;
  border: 1px solid #b9c9c2;
  border-radius: 7px;
  background: #fff;
  font-size: 14px;
}

.ticket-detail-modal #visit-form > .service-save-row {
  margin: 0;
  border-radius: 9px;
}

.ticket-detail-modal #visit-form > .service-advanced-fields {
  margin: 0;
}

@media screen and (max-width: 1160px) {
  .ticket-detail-modal .service-unit-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media screen and (max-width: 820px) {
  .ticket-detail-modal .detail-ticket-head,
  .ticket-detail-modal.technician-detail .detail-ticket-head,
  .ticket-detail-modal .detail-record-bar.detail-command-strip,
  .ticket-detail-modal.technician-detail .detail-record-bar.detail-command-strip {
    width: 100%;
    max-width: none;
    min-width: 0;
  }

  .ticket-detail-modal.technician-detail .detail-ticket-head {
    padding: 0;
  }

  .ticket-detail-modal .detail-record-bar.detail-command-strip,
  .ticket-detail-modal.technician-detail .detail-record-bar.detail-command-strip {
    gap: 9px;
    padding: 11px;
  }

  .ticket-detail-modal .detail-ticket-identity,
  .ticket-detail-modal.technician-detail .detail-ticket-identity {
    width: 100%;
    min-width: 0;
    padding: 0 48px 0 2px;
  }

  .ticket-detail-modal .detail-ticket-identity h2,
  .ticket-detail-modal.technician-detail .detail-ticket-identity h2 {
    display: block;
    max-width: 100%;
    margin: 1px 0;
    overflow: hidden;
    font-size: clamp(20px, 6vw, 26px);
    line-height: 1.15;
    overflow-wrap: normal;
    text-overflow: ellipsis;
    white-space: nowrap;
    word-break: normal;
  }

  .ticket-detail-modal .detail-service-tags.detail-summary-grid,
  .ticket-detail-modal.technician-detail .detail-service-tags.detail-summary-grid {
    display: grid;
    width: 100%;
    max-width: none !important;
    grid-template-columns: 1fr;
    gap: 0;
    overflow: hidden;
    border: 1px solid #c8d7d1;
    border-radius: 8px;
    background: #fff;
  }

  .ticket-detail-modal .detail-summary-card,
  .ticket-detail-modal .detail-summary-status {
    display: grid;
    grid-template-columns: 92px minmax(0, 1fr);
    min-height: 42px;
    align-items: center;
    align-content: center;
    gap: 8px;
    padding: 7px 9px;
    overflow: visible;
    border: 0 !important;
    border-bottom: 1px solid #dce4e1 !important;
    border-left: 4px solid #77978c !important;
    border-radius: 0;
  }

  .ticket-detail-modal .detail-summary-card:nth-child(1) { border-left-color: var(--ticket-blue) !important; }
  .ticket-detail-modal .detail-summary-card:nth-child(2) { border-left-color: var(--ticket-amber) !important; }
  .ticket-detail-modal .detail-summary-card:nth-child(3) { border-left-color: var(--ticket-teal) !important; }
  .ticket-detail-modal .detail-summary-card:nth-child(4) { border-left-color: var(--ticket-purple) !important; }
  .ticket-detail-modal .detail-summary-card:nth-child(5) {
    border-bottom: 0 !important;
    border-left-color: #55736a !important;
  }

  .ticket-detail-modal .detail-summary-card small {
    font-size: 12px !important;
    white-space: nowrap;
  }

  .ticket-detail-modal .detail-summary-card strong {
    display: block;
    overflow: visible;
    font-size: 13px;
    line-height: 1.3;
    overflow-wrap: anywhere;
    white-space: normal;
    -webkit-line-clamp: unset;
  }

  .ticket-detail-modal #visit-form > .visit-form-heading {
    min-height: 54px;
    align-items: flex-start;
    flex-direction: column;
    gap: 2px;
    margin: 0;
    padding: 9px 11px;
  }

  .ticket-detail-modal .service-unit-grid,
  .ticket-detail-modal.technician-detail .service-unit-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
    padding: 9px;
  }

  .ticket-detail-modal .service-unit-grid > label:not(.visit-check) {
    grid-template-rows: auto 42px;
  }

  .ticket-detail-modal .service-unit-actions {
    min-height: 44px;
  }

  .ticket-detail-modal .service-unit-update-button {
    min-width: 116px;
    min-height: 44px;
  }

  .ticket-detail-modal .service-notes-heading {
    align-items: flex-start;
    flex-direction: column;
    gap: 2px;
    padding: 8px 10px;
  }

  .ticket-detail-modal .service-notes-heading strong {
    font-size: 15px;
    text-align: left;
  }

  .ticket-detail-modal .service-notes-workflow > label {
    grid-template-columns: 1fr;
    gap: 3px;
    padding: 7px 9px 9px;
  }

  .ticket-detail-modal .service-note-label {
    padding: 2px 1px;
    font-size: 13px;
  }

  .ticket-detail-modal .service-notes-workflow textarea {
    min-height: 60px;
    padding: 8px 9px;
    font-size: 14px;
  }

  .ticket-detail-modal .service-status-grid {
    grid-template-columns: 1fr;
    gap: 8px;
  }

  .ticket-detail-modal .service-status-grid > label {
    grid-template-columns: 1fr;
    gap: 5px;
    padding: 8px 9px;
  }

  .ticket-detail-modal #visit-form > .service-save-row {
    margin: 0;
  }

  .ticket-detail-modal .service-photo-workspace {
    padding: 10px;
  }
}

@media screen and (max-width: 820px), screen and (hover: none) and (pointer: coarse) {
  .ticket-detail-modal .service-diagnosis-field textarea[data-auto-grow="diagnosis"] {
    min-height: 144px;
    max-height: min(48dvh, 384px);
    padding: 11px 12px;
    font-size: 16px;
    line-height: 1.5;
    resize: none;
    overflow-y: hidden;
    overscroll-behavior: contain;
    scroll-margin-bottom: calc(120px + env(safe-area-inset-bottom));
  }
}

@media screen and (max-width: 560px) {
  .ticket-detail-modal .service-unit-grid,
  .ticket-detail-modal.technician-detail .service-unit-grid {
    grid-template-columns: 1fr;
  }
}

/* Invoice workspace ------------------------------------------------------ */
.invoice-page-intro,
.invoice-workspace-heading,
.invoice-editor-heading,
.invoice-line-heading,
.invoice-subhead {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}

.invoice-lock-badge {
  padding: 9px 13px;
  border: 1px solid #c9a65c;
  border-radius: 999px;
  background: #fff7df;
  color: #73581a;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .04em;
  text-transform: uppercase;
}

.invoice-summary-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  margin: 14px 0;
}

.invoice-summary-grid article {
  display: grid;
  gap: 5px;
  min-width: 0;
  padding: 16px;
  border: 1px solid #c8d7d1;
  border-top: 4px solid #287f70;
  border-radius: 12px;
  background: #f9fcfb;
}

.invoice-summary-grid span,
.invoice-summary-grid small {
  color: #5a6d66;
  font-size: 12px;
  font-weight: 750;
}

.invoice-summary-grid strong { color: #133f35; font-size: clamp(22px, 2.2vw, 32px); }
.invoice-filters { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.invoice-date-filter > span:first-child,
.claim-date-filter > span:first-child { display: block; }
.invoice-date-input-shell,
.claim-date-input-shell {
  position: relative;
  display: block;
  min-width: 0;
}
.dense-filters .invoice-date-input-shell > input[id="invoice-date-from"],
.dense-filters .invoice-date-input-shell > input[id="invoice-date-to"],
.dense-filters .claim-date-input-shell > input[id="claim-date-from"],
.dense-filters .claim-date-input-shell > input[id="claim-date-to"] {
  width: 100%;
  padding-right: 50px;
}
.invoice-date-picker-icon,
.claim-date-picker-icon {
  position: absolute;
  z-index: 1;
  top: 50%;
  right: 14px;
  color: #285f53 !important;
  font-size: 18px !important;
  line-height: 1;
  pointer-events: none;
  transform: translateY(-50%);
}
.dense-filters .invoice-date-native-picker,
.dense-filters .claim-date-native-picker {
  position: absolute;
  z-index: 2;
  top: 0;
  right: 0;
  width: 48px;
  height: 100%;
  min-height: 0;
  padding: 0;
  border: 0;
  opacity: 0;
  cursor: pointer;
}
.invoice-date-native-picker::-webkit-calendar-picker-indicator,
.claim-date-native-picker::-webkit-calendar-picker-indicator {
  width: 100%;
  height: 100%;
  margin: 0;
  cursor: pointer;
}
.invoice-filter-actions {
  display: flex;
  grid-column: span 2;
  align-items: end;
  gap: 10px;
}
.dense-filters .invoice-filter-actions .filter-search-button,
.dense-filters .invoice-filter-actions .filter-reset {
  width: auto;
  min-width: 118px;
  height: 42px;
  min-height: 42px;
  padding: 0 20px;
}
.invoice-date-range-help,
.claim-date-range-help {
  align-self: center;
  color: #587068;
  font-size: 12px;
  font-weight: 700;
  grid-column: 1 / -1;
  line-height: 1.35;
}
.claim-date-range-help {
  display: inline-flex;
  grid-column: 1 / 6;
  min-height: 42px;
  align-items: center;
  gap: 8px;
  padding: 0 12px;
  border: 1px solid rgba(40, 95, 83, .12);
  border-radius: 9px;
  background: rgba(224, 239, 233, .55);
}
.claim-date-range-help > span {
  color: #285f53;
  font-size: 16px;
  line-height: 1;
}
@media (max-width: 1320px) {
  .claim-date-range-help { grid-column: 1 / 3; }
}
@media (max-width: 820px) {
  .claim-date-range-help { grid-column: 1 / -1; }
}
@media (max-width: 540px) {
  .claim-date-range-help { grid-column: 1; }
}
.invoice-list-table th { white-space: nowrap; }
.invoice-list-table td { vertical-align: top; }
.invoice-list-table td strong,
.invoice-list-table td small { display: block; }
.invoice-list-table td small { margin-top: 3px; color: #64756f; font-size: 12px; }
.invoice-open-link { display: inline-flex; min-height: 34px; align-items: center; white-space: nowrap; text-decoration: none; }

.invoice-status {
  display: inline-flex;
  width: fit-content;
  align-items: center;
  padding: 5px 9px;
  border-radius: 999px;
  background: #e7eeeb;
  color: #294d44;
  font-size: 12px;
  font-weight: 850;
  letter-spacing: .02em;
  white-space: nowrap;
}
.invoice-status-issued { background: #dcecf8; color: #15537d; }
.invoice-status-partially-paid { background: #fff0c7; color: #755316; }
.invoice-status-paid { background: #dff2e5; color: #17623d; }
.invoice-status-void { background: #f4dedb; color: #8a3029; }
.invoice-balance-due { color: #9a3b31; }
.invoice-balance-paid { color: #22724b; }

.ticket-invoice-workspace {
  display: grid;
  gap: 14px;
  padding: 16px;
  background: #f7faf8;
}
.invoice-workspace-heading {
  padding: 14px 16px;
  border-left: 5px solid #2b7e70;
  background: #eaf3f0;
}
.invoice-workspace-heading > div:first-child { display: grid; gap: 3px; }
.invoice-workspace-heading span { color: #44655c; font-size: 12px; font-weight: 850; letter-spacing: .08em; }
.invoice-workspace-heading strong { color: #123f35; font-size: 19px; }
.invoice-workspace-heading small { color: #586d66; }
.invoice-create-actions,
.invoice-document-actions,
.invoice-editor-actions { display: flex; flex-wrap: wrap; gap: 8px; }

.ticket-invoice-list { display: grid; gap: 8px; }
.ticket-invoice-card {
  display: grid;
  grid-template-columns: minmax(220px, 1fr) auto minmax(120px, .35fr);
  align-items: center;
  gap: 14px;
  width: 100%;
  padding: 12px 14px;
  border: 1px solid #c9d7d2;
  border-left: 5px solid #6c8f85;
  border-radius: 10px;
  background: #fff;
  color: #173f35;
  text-align: left;
}
.ticket-invoice-card:hover,
.ticket-invoice-card.active { border-left-color: #0f8d7d; background: #f0faf7; }
.ticket-invoice-card span:first-child,
.ticket-invoice-card span:last-child { display: grid; gap: 2px; }
.ticket-invoice-card small { color: #60736c; font-size: 12px; }

.invoice-editor {
  overflow: hidden;
  border: 1px solid #bfcfc9;
  border-radius: 14px;
  background: #fff;
  box-shadow: 0 12px 32px rgba(20, 57, 48, .08);
}
.invoice-editor-heading { padding: 15px 16px; border-bottom: 1px solid #cbd9d4; background: #f1f7f5; }
.invoice-editor-heading > div:first-child { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; }
.invoice-editor-heading > div:first-child > span:first-child { color: #123f35; font-size: 19px; font-weight: 900; }
.invoice-editor-heading small { flex-basis: 100%; color: #61726d; }
#invoice-edit-form { display: grid; gap: 14px; padding: 16px; }
.invoice-bill-grid,
.invoice-ticket-snapshot {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
}
.invoice-bill-grid label,
.invoice-notes-grid label,
.invoice-payment-panel form label,
.invoice-claim-panel form label {
  display: grid;
  gap: 5px;
  color: #244f45;
  font-size: 12px;
  font-weight: 800;
}
.invoice-bill-grid input,
.invoice-bill-grid select,
.invoice-notes-grid textarea,
.invoice-payment-panel input,
.invoice-claim-panel input,
.invoice-claim-panel select,
.invoice-lines-table input,
.invoice-lines-table select {
  min-width: 0;
  min-height: 42px;
  border: 1px solid #b8cbc4;
  border-radius: 7px;
  background: #fff;
  color: #153f35;
  font: inherit;
}
.invoice-span-2 { grid-column: span 2; }
.invoice-ticket-snapshot { padding: 11px; border: 1px solid #d3dfdb; border-radius: 10px; background: #f8fbfa; }
.invoice-ticket-snapshot > div { display: grid; gap: 3px; min-width: 0; }
.invoice-ticket-snapshot span { color: #63766f; font-size: 12px; font-weight: 850; letter-spacing: .06em; text-transform: uppercase; }
.invoice-ticket-snapshot strong { overflow-wrap: anywhere; font-size: 13px; }
.invoice-line-heading { padding-top: 4px; }
.invoice-line-heading > div { display: grid; gap: 2px; }
.invoice-line-heading strong { font-size: 17px; }
.invoice-line-heading span { color: #60736c; font-size: 12px; }
.invoice-lines-table { width: 100%; min-width: 900px; table-layout: fixed; }
.invoice-lines-table th:nth-child(1) { width: 140px; }
.invoice-lines-table th:nth-child(3), .invoice-lines-table th:nth-child(4) { width: 115px; }
.invoice-lines-table th:nth-child(5) { width: 58px; }
.invoice-lines-table th:nth-child(6) { width: 110px; }
.invoice-lines-table th:nth-child(7) { width: 44px; }
.invoice-lines-table td { padding: 6px; }
.invoice-lines-table input,
.invoice-lines-table select { width: 100%; padding: 8px; }
.invoice-lines-table input[type="checkbox"] { width: 18px; min-height: 18px; }
.invoice-line-remove { width: 32px; height: 32px; border: 0; border-radius: 50%; background: #f3deda; color: #8c3028; font-size: 20px; }
.invoice-footer-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(250px, .35fr); gap: 14px; }
.invoice-notes-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.invoice-diagnosis { display: grid; gap: 7px; margin: 16px 0 20px; font-size: 14px; }
.invoice-diagnosis textarea { width: 100%; min-height: 108px; padding: 10px 12px; line-height: 1.5; resize: vertical; }
.invoice-diagnosis small { font-weight: normal; color: var(--muted); line-height: 1.4; }
.invoice-ticket-snapshot textarea { width: 100%; padding: 8px 10px; line-height: 1.45; resize: vertical; }
.invoice-total-card { margin: 0; padding: 12px 14px; border: 1px solid #c8d7d1; border-radius: 10px; background: #f6faf8; }
.invoice-total-card > div { display: flex; justify-content: space-between; gap: 12px; padding: 5px 0; }
.invoice-total-card dt { color: #586c65; }
.invoice-total-card dd { margin: 0; font-weight: 850; }
.invoice-total-emphasis,
.invoice-balance-emphasis { margin-top: 4px; border-top: 1px solid #cbd8d3; font-size: 17px; }
.invoice-balance-emphasis dd { color: #9a3b31; }
.invoice-editor-actions { align-items: center; padding-top: 4px; }
.invoice-issue-button { min-height: 42px; border: 0; border-radius: 8px; background: #276eaa; color: #fff; font-weight: 850; }
.danger-button { min-height: 42px; padding: 0 16px; border: 1px solid #cf8c83; border-radius: 8px; background: #f5dfdc; color: #852e27; font-weight: 850; }

.invoice-ledger-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; padding: 0 16px 16px; }
.invoice-payment-panel,
.invoice-claim-panel,
.invoice-history-panel { padding: 13px; border: 1px solid #cbd9d4; border-radius: 10px; background: #fbfdfc; }
.invoice-subhead { align-items: flex-start; margin-bottom: 10px; }
.invoice-subhead > strong { color: #173f35; font-size: 16px; }
.invoice-subhead > span { color: #61736d; font-size: 12px; }
.invoice-payment-panel form { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.invoice-claim-panel form { display: grid; grid-template-columns: 1fr 120px auto; align-items: end; gap: 8px; }
.invoice-payment-list,
.invoice-claim-link-list,
#invoice-event-list { display: grid; gap: 7px; margin-top: 10px; }
.invoice-payment-list > div,
.invoice-claim-link-list > div,
#invoice-event-list > div { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 9px; border-top: 1px solid #d8e2de; }
.invoice-payment-list span,
.invoice-claim-link-list span,
#invoice-event-list span { display: grid; gap: 2px; }
.invoice-payment-list small,
.invoice-claim-link-list small,
#invoice-event-list small { color: #687a74; font-size: 12px; }
#invoice-event-list p { max-width: 60%; margin: 0; text-align: right; }
.invoice-history-panel { margin: 0 16px 16px; }
.invoice-empty,
.invoice-loading { display: grid; gap: 5px; padding: 18px; color: #5c6f68; text-align: center; }

body:not(.technician-session) .ticket-detail-modal .detail-tabs { grid-template-columns: repeat(5, minmax(0, 1fr)); }

@media (max-width: 1100px) {
  .invoice-summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .invoice-filters { grid-template-columns: repeat(4, minmax(140px, 1fr)); }
  .invoice-bill-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 720px) {
  body:not(.technician-session) .ticket-detail-modal .detail-tabs {
    display: grid;
    grid-auto-flow: row;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    overflow: visible;
  }
  .ticket-invoice-workspace { padding: 9px; }
  .invoice-page-intro,
  .invoice-workspace-heading,
  .invoice-editor-heading,
  .invoice-line-heading { align-items: stretch; flex-direction: column; }
  .invoice-summary-grid { grid-template-columns: 1fr 1fr; }
  .invoice-summary-grid article { padding: 12px; }
  .invoice-filters { grid-template-columns: 1fr 1fr; }
  .invoice-filter-actions { grid-column: 1 / -1; }
  .ticket-invoice-card { grid-template-columns: minmax(0, 1fr) auto; }
  .ticket-invoice-card > span:last-child { grid-column: 1 / -1; }
  #invoice-edit-form { padding: 10px; }
  .invoice-bill-grid,
  .invoice-ticket-snapshot { grid-template-columns: 1fr 1fr; }
  .invoice-footer-grid,
  .invoice-ledger-grid { grid-template-columns: 1fr; }
  .invoice-ledger-grid { padding: 0 10px 10px; }
  .invoice-history-panel { margin: 0 10px 10px; }
  .invoice-notes-grid { grid-template-columns: 1fr; }
  .invoice-claim-panel form { grid-template-columns: 1fr; }
  #invoice-event-list > div { align-items: flex-start; flex-direction: column; }
  #invoice-event-list p { max-width: none; text-align: left; }
}

@media (max-width: 480px) {
  .invoice-summary-grid,
  .invoice-filters,
  .invoice-bill-grid,
  .invoice-ticket-snapshot,
  .invoice-payment-panel form { grid-template-columns: 1fr; }
  .invoice-span-2 { grid-column: auto; }
  .invoice-filter-actions { grid-column: auto; }
  .dense-filters .invoice-filter-actions .filter-search-button,
  .dense-filters .invoice-filter-actions .filter-reset { flex: 1 1 0; min-width: 0; }
  .invoice-document-actions > *,
  .invoice-create-actions > *,
  .invoice-editor-actions > * { flex: 1 1 100%; justify-content: center; }
}

/* Verified email cancellation review */
.ticket-cancellation-warning {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 14px;
  min-width: 0;
  padding: 13px 15px;
  color: #6f2521;
  border: 1px solid #dfa29b;
  border-left: 6px solid #ba4037;
  border-radius: 11px;
  background: #fff3f1;
  box-shadow: 0 5px 16px rgba(123, 37, 31, .08);
}

.cancellation-warning-detail { margin: -2px -2px 13px; }
.cancellation-warning-copy { min-width: 0; }
.cancellation-warning-copy > strong {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: #842b25;
  font-size: 14px;
  font-weight: 950;
  letter-spacing: .015em;
}
.cancellation-warning-copy > strong span {
  display: inline-grid;
  width: 23px;
  height: 23px;
  flex: 0 0 23px;
  place-items: center;
  color: #fff;
  border-radius: 50%;
  background: #b83f36;
}
.cancellation-warning-copy p {
  margin: 5px 0 0;
  color: #69322d;
  font-size: 13px;
  font-weight: 700;
  line-height: 1.45;
  overflow-wrap: anywhere;
}
.cancellation-warning-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
}
.cancellation-warning-actions button {
  min-height: 44px;
  white-space: nowrap;
}
.cancellation-risk-list {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  margin-top: 8px;
}
.cancellation-risk-list span,
.ticket-cancellation-badge {
  display: inline-flex;
  align-items: center;
  width: fit-content;
  border-radius: 999px;
  color: #7b2924;
  background: #f6d6d2;
  font-size: 12px;
  font-weight: 900;
}
.cancellation-risk-list span { padding: 4px 8px; }
.cancellation-approval-note { font-weight: 900 !important; }
.ticket-cancellation-badge {
  margin: 3px 0 0;
  padding: 3px 7px;
  line-height: 1.2;
  text-align: center;
}
.ticket-row.ticket-cancellation-pending > td:first-child {
  box-shadow: inset 5px 0 0 #ba4037;
}
.ticket-row.ticket-cancellation-pending .clickable-ticket { padding-left: 6px; }
.email-event.intake-cancellation { border-left-color: #ba4037; }
.cancellation-warning-intake {
  grid-template-columns: 1fr;
  margin: 9px 0;
  padding: 10px 12px;
  box-shadow: none;
}
.cancellation-warning-resolved {
  color: #31584e;
  border-color: #9fc8bb;
  border-left-color: #2f7d69;
  background: #eef8f4;
}
.cancellation-warning-resolved .cancellation-warning-copy > strong,
.cancellation-warning-resolved .cancellation-warning-copy p { color: #28564a; }
.cancellation-warning-resolved .cancellation-warning-copy > strong span { background: #2f7d69; }
.intake-cancellation-linked { color: #7b2924 !important; background: #f6d6d2 !important; }
.cancellation-warning-mobile {
  grid-template-columns: 1fr;
  margin: 9px 0 10px;
  padding: 10px 11px;
  border-left-width: 5px;
  box-shadow: none;
}
.cancellation-warning-mobile .cancellation-warning-copy > strong { font-size: 13px; }
.cancellation-warning-mobile .cancellation-warning-copy p { font-size: 12px; }

@media (max-width: 820px) {
  .cancellation-warning-detail { grid-template-columns: 1fr; align-items: stretch; }
  .cancellation-warning-actions { display: grid; grid-template-columns: 1fr; }
  .cancellation-warning-actions button { width: 100%; white-space: normal; }
}

@media (max-width: 540px) {
  .ticket-cancellation-warning { overflow-wrap: anywhere; }
}

/* Manual customer cancellation request */
.detail-cancellation-request-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 11px 16px;
  border-top: 1px solid #ead1cd;
  border-bottom: 1px solid #e0e7e3;
  background: #fff8f7;
}
.detail-cancellation-request-row > div {
  display: grid;
  min-width: 0;
  gap: 2px;
}
.detail-cancellation-request-row strong {
  color: #74312b;
  font-size: 13px;
}
.detail-cancellation-request-row span {
  color: #6d5b57;
  font-size: 12px;
  line-height: 1.4;
}
.request-cancellation-button {
  flex: 0 0 auto;
  min-height: 44px;
  cursor: pointer;
  white-space: nowrap;
}

.cancellation-request-backdrop { z-index: 180; }
.cancellation-request-modal {
  width: min(520px, calc(100vw - 24px));
  max-height: calc(100dvh - 24px);
  padding: 26px;
  overflow-y: auto;
  border: 1px solid #dca19a;
  border-top: 7px solid #b74f46;
  border-radius: 14px;
  background: #fffdfc;
}
.cancellation-request-modal .section-kicker { color: #8a3029; }
.cancellation-request-modal h2 {
  margin: 6px 38px 6px 0;
  color: #5e211d;
  font-size: 25px;
}
.cancellation-request-modal > p {
  margin: 0 0 15px;
  color: #655752;
  font-size: 13px;
  line-height: 1.45;
}
.cancellation-request-ticket {
  display: grid;
  gap: 3px;
  padding: 12px 14px;
  border: 1px solid #dcc6c1;
  border-radius: 9px;
  background: #f8f3f1;
}
.cancellation-request-ticket span {
  color: #7d625c;
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .07em;
  text-transform: uppercase;
}
.cancellation-request-ticket strong {
  color: #4f2420;
  font-size: 18px;
  overflow-wrap: anywhere;
}
.cancellation-request-ticket small {
  color: #695b57;
  font-size: 12px;
  overflow-wrap: anywhere;
}
.cancellation-request-reminders {
  display: grid;
  gap: 8px;
  margin: 14px 0;
}
.cancellation-request-reminders p {
  margin: 0;
  padding: 9px 11px;
  border-left: 4px solid #d08b83;
  color: #563f3a;
  background: #fff5f3;
  font-size: 12px;
  line-height: 1.45;
}
.cancellation-request-reminders strong { color: #7f2c26; }
.cancellation-request-actions {
  display: grid;
  grid-template-columns: 1fr minmax(220px, 1.5fr);
  gap: 10px;
  margin-top: 16px;
}
.cancellation-request-actions button {
  width: 100%;
  min-height: 48px;
}
#cancellation-request-error { margin-top: 12px; }

@media (max-width: 820px) {
  .detail-cancellation-request-row {
    align-items: stretch;
    flex-direction: column;
    padding: 12px 14px;
  }
  .detail-cancellation-request-row .request-cancellation-button { width: 100%; }
}

@media (max-width: 540px) {
  .cancellation-request-backdrop { padding: 12px; }
  .cancellation-request-modal {
    width: 100%;
    max-height: calc(100dvh - 24px);
    padding: 22px 16px 16px;
  }
  .cancellation-request-actions { grid-template-columns: 1fr; }
}

@media print {
  body.print-invoices * { visibility: hidden !important; }
  body.print-invoices #invoice-list-print-area,
  body.print-invoices #invoice-list-print-area * { visibility: visible !important; }
  body.print-invoices #invoice-list-print-area { position: absolute; inset: 0; overflow: visible; }
}

/* Service details alignment v84 — equal controls, consistent insets, stable mobile reflow. */
.ticket-detail-modal .service-advanced-fields > .visit-er-grid,
.ticket-detail-modal .service-advanced-fields > .service-office-grid {
  width: 100%;
  margin: 0;
  padding: 12px;
  box-sizing: border-box;
}

.ticket-detail-modal .service-advanced-fields > .visit-er-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  align-items: start;
}

.ticket-detail-modal .service-advanced-fields > .service-office-grid {
  border-top: 1px solid #d2dce5;
}

.ticket-detail-modal .visit-er-grid > label,
.ticket-detail-modal .service-office-grid > label {
  min-width: 0;
  grid-template-rows: minmax(18px, auto) 44px;
  align-content: start;
  gap: 6px;
  overflow-wrap: anywhere;
}

.ticket-detail-modal .visit-er-grid > label:not(.visit-span-all, .visit-span-2) > :is(input, select, textarea),
.ticket-detail-modal .service-office-grid > label > :is(input, select, textarea) {
  width: 100%;
  min-width: 0;
  height: 44px;
  min-height: 44px;
  max-height: 44px;
  box-sizing: border-box;
}

.ticket-detail-modal .visit-er-grid > .visit-span-2 {
  grid-column: span 2;
  grid-template-rows: minmax(18px, auto) 44px;
}

.ticket-detail-modal .visit-er-grid > .visit-span-2 > textarea {
  width: 100%;
  min-width: 0;
  height: 44px;
  min-height: 44px;
  max-height: 44px;
  box-sizing: border-box;
}

.ticket-detail-modal .visit-er-grid > .visit-span-all {
  grid-column: 1 / -1;
  grid-template-rows: minmax(18px, auto) minmax(64px, auto);
}

.ticket-detail-modal .visit-er-grid > .visit-span-all > textarea {
  width: 100%;
  min-width: 0;
  min-height: 64px;
  box-sizing: border-box;
}

.ticket-detail-modal .service-office-grid > .visit-span-all {
  grid-column: 1 / -1;
}

@media screen and (max-width: 820px) {
  .ticket-detail-modal .service-advanced-fields > .visit-er-grid,
  .ticket-detail-modal .service-advanced-fields > .service-office-grid {
    grid-template-columns: minmax(0, 1fr);
    gap: 10px;
    padding: 10px;
  }

  .ticket-detail-modal .visit-er-grid > label,
  .ticket-detail-modal .service-office-grid > label,
  .ticket-detail-modal .visit-span-2,
  .ticket-detail-modal .visit-span-all {
    grid-column: 1 / -1;
  }

  .ticket-detail-modal .visit-er-grid input,
  .ticket-detail-modal .visit-er-grid select,
  .ticket-detail-modal .visit-er-grid textarea,
  .ticket-detail-modal .service-office-grid input,
  .ticket-detail-modal .service-office-grid select,
  .ticket-detail-modal .service-office-grid textarea {
    font-size: 16px;
  }
}

/* One visit = one schedule. Completed visits keep their own history; V2 is planned separately. */
.ticket-detail-modal .visit-er-grid :is(input, select):disabled {
  color: #36564d;
  border-color: #c5d3ce;
  background: #eef3f1;
  opacity: 1;
  cursor: default;
}

.ticket-detail-modal .next-visit-planning {
  margin: 0 12px 12px;
  padding: 12px;
  border: 1px solid #9fc8d8;
  border-left: 6px solid #276985;
  border-radius: 9px;
  background: #edf7fb;
}

.ticket-detail-modal .next-visit-heading {
  display: grid;
  gap: 2px;
  margin-bottom: 10px;
}

.ticket-detail-modal .next-visit-heading > span {
  color: #276985;
  font-size: 12px;
  font-weight: 850;
  letter-spacing: .08em;
}

.ticket-detail-modal .next-visit-heading > strong {
  color: #174f69;
  font-size: 16px;
}

.ticket-detail-modal .next-visit-heading > small {
  color: #4d6874;
  font-size: 12px;
  line-height: 1.4;
}

.ticket-detail-modal .next-visit-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  align-items: end;
}

.ticket-detail-modal .next-visit-grid > label {
  display: grid;
  min-width: 0;
  /* Cancel the shared .modal label margin so the input and Start bottoms align. */
  margin: 0;
  gap: 6px;
  color: #375149;
  font-size: 13px;
  font-weight: 720;
}

.ticket-detail-modal .next-visit-grid :is(input, select) {
  width: 100%;
  min-width: 0;
  height: 44px;
  min-height: 44px;
  padding: 9px 11px;
  border: 1px solid #aebfba;
  border-radius: 7px;
  color: #173f35;
  background: #fff;
  font-size: 14px;
  box-sizing: border-box;
}

.ticket-detail-modal .next-visit-button {
  display: grid;
  width: 100%;
  margin: 0;
  box-sizing: border-box;
  min-height: 44px;
  padding: 0 12px;
  place-items: center;
  border: 1px solid #276985;
  border-radius: 8px;
  color: #fff;
  background: #276985;
  box-shadow: 0 7px 16px rgba(39, 105, 133, .2);
  font-size: 12px;
  font-weight: 850;
  line-height: 1.15;
  text-align: center;
  cursor: pointer;
}

.ticket-detail-modal .next-visit-button:disabled {
  cursor: not-allowed;
  box-shadow: none;
  opacity: .5;
}

.ticket-detail-modal .service-save-row[data-visit-stage="complete"] .service-save-actions {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

/* V1 can be saved or finished directly; all three actions stay equal on desktop. */
.ticket-detail-modal .service-save-row[data-visit-stage="new"] .service-save-actions,
.ticket-detail-modal .service-save-row[data-visit-stage="active"] .service-save-actions {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

@media screen and (max-width: 1160px) {
  .ticket-detail-modal .service-advanced-fields > .visit-er-grid,
  .ticket-detail-modal .next-visit-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media screen and (max-width: 820px) {
  .ticket-detail-modal .next-visit-planning {
    margin: 0 10px 10px;
    padding: 10px;
  }

  .ticket-detail-modal .service-advanced-fields > .visit-er-grid,
  .ticket-detail-modal .next-visit-grid,
  .ticket-detail-modal .service-save-row[data-visit-stage="new"] .service-save-actions,
  .ticket-detail-modal .service-save-row[data-visit-stage="active"] .service-save-actions,
  .ticket-detail-modal .service-save-row[data-visit-stage="complete"] .service-save-actions {
    grid-template-columns: minmax(0, 1fr);
  }

  .ticket-detail-modal .visit-er-grid > label,
  .ticket-detail-modal .visit-er-grid > .visit-span-2,
  .ticket-detail-modal .visit-er-grid > .visit-span-all {
    grid-column: 1 / -1;
  }

  .ticket-detail-modal .next-visit-grid :is(input, select) {
    font-size: 16px;
  }
}

/* Compact P/O-linked part workspace */
.service-parts-workspace .field-part-form {
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: end;
  gap: 9px 12px;
  margin: 9px 0;
  padding: 11px 12px;
  box-sizing: border-box;
}

#detail-visits-panel .service-parts-workspace .field-part-form > .visit-form-heading {
  grid-column: 1 / -1;
  min-width: 0;
  margin: -11px -12px 0;
  padding: 11px 12px;
  border-radius: 12px 12px 0 0;
}

.service-parts-workspace .field-part-form > .visit-form-heading > * {
  min-width: 0;
}

.service-parts-workspace .field-part-form > .visit-form-heading small {
  max-width: 460px;
  text-align: right;
}

.service-parts-workspace .field-part-form > .field-part-grid {
  grid-column: 1;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  align-items: end;
  gap: 8px;
  min-width: 0;
}

.service-parts-workspace .field-part-grid > label,
.service-part-edit-grid > label {
  display: grid;
  min-width: 0;
  grid-template-rows: minmax(18px, auto) 44px;
  align-content: end;
  gap: 4px;
  color: #375149;
  font-size: 12px;
  font-weight: 760;
  line-height: 1.3;
}

.service-parts-workspace .field-part-grid :is(input, select),
.service-part-edit-grid :is(input, select),
.service-parts-workspace .field-part-form > .primary-button,
.service-part-edit-grid > .soft-button {
  width: 100%;
  min-width: 0;
  height: 44px;
  min-height: 44px;
  max-height: 44px;
  box-sizing: border-box;
}

.service-parts-workspace .field-part-grid :is(input, select),
.service-part-edit-grid :is(input, select) {
  padding: 8px 10px;
  font-size: 14px;
}

.service-parts-workspace .field-part-number input {
  font-size: 16px;
  font-weight: 780;
  font-variant-numeric: tabular-nums;
  letter-spacing: .012em;
}

.service-parts-workspace .field-part-quantity input {
  text-align: center;
  font-weight: 800;
}

.service-parts-workspace .field-part-form > .primary-button {
  grid-column: 2;
  align-self: end;
  justify-self: stretch;
  padding-inline: 14px;
  white-space: nowrap;
}

.service-parts-workspace .repair-part-list {
  gap: 6px;
}

.service-parts-workspace .repair-part-list .service-part-transaction {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  align-items: stretch;
  gap: 0;
  min-width: 0;
  padding: 0;
  overflow: hidden;
  border-radius: 10px;
}

.service-parts-workspace .service-part-summary {
  min-height: 72px;
  display: grid;
  grid-template-columns: minmax(165px, 1.28fr) minmax(125px, .86fr) minmax(155px, 1fr) minmax(44px, .28fr) auto;
  align-items: center;
  gap: 8px 12px;
  min-width: 0;
  padding: 7px 108px 7px 12px;
  box-sizing: border-box;
}

.service-parts-workspace .service-part-summary > * {
  min-width: 0;
}

.service-parts-workspace .service-part-identity,
.service-parts-workspace .service-part-supplier,
.service-parts-workspace .service-part-po,
.service-parts-workspace .service-part-quantity {
  display: grid;
  align-content: center;
  gap: 2px;
}

.service-parts-workspace .service-part-summary .service-part-number {
  display: block;
  overflow: hidden;
  color: var(--red);
  font-family: ui-monospace, "SFMono-Regular", Consolas, "Liberation Mono", monospace;
  font-size: 17px;
  font-weight: 850;
  font-variant-numeric: tabular-nums;
  line-height: 1.2;
  letter-spacing: .018em;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.service-parts-workspace .service-part-identity > strong {
  display: block;
  margin: 2px 0 0;
  overflow: hidden;
  color: #365149;
  font-size: 13px;
  font-weight: 720;
  line-height: 1.3;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.service-parts-workspace .service-part-supplier > span,
.service-parts-workspace .service-part-quantity > span {
  display: block;
  color: #5b6d65;
  font-size: 12px;
  font-weight: 760;
  line-height: 1.2;
}

.service-parts-workspace .service-part-supplier > strong {
  display: block;
  margin: 0;
  overflow: hidden;
  color: #173f35;
  font-size: 14px;
  font-weight: 800;
  line-height: 1.25;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.service-parts-workspace .service-part-po-link,
.service-parts-workspace .service-part-po-value {
  display: inline-flex;
  min-width: 0;
  align-items: center;
  color: #0c6158;
  font-size: 14px;
  font-weight: 850;
  font-variant-numeric: tabular-nums;
  line-height: 1.2;
  overflow-wrap: anywhere;
}

.service-parts-workspace .service-part-po-link {
  width: fit-content;
  max-width: 100%;
  min-height: 44px;
  padding: 5px 9px;
  border: 1px solid #a8cbbf;
  border-radius: 8px;
  background: #edf8f4;
  cursor: pointer;
  text-align: left;
}

.service-parts-workspace .service-part-po-link:hover,
.service-parts-workspace .service-part-po-link:focus-visible {
  color: #064d46;
  border-color: #5e9d8d;
  background: #dcf1e9;
}

.service-parts-workspace .service-part-po > small {
  display: block;
  margin: 0;
  overflow: hidden;
  color: #63736c;
  font-size: 12px !important;
  font-weight: 650;
  line-height: 1.25;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.service-parts-workspace .service-part-quantity {
  justify-items: center;
}

.service-parts-workspace .service-part-quantity > strong {
  margin: 0;
  color: #173f35;
  font-size: 17px;
  font-weight: 850;
  font-variant-numeric: tabular-nums;
  line-height: 1.15;
}

.service-parts-workspace .service-part-summary > .part-status {
  justify-self: end;
  margin: 0;
  padding: 6px 9px;
  font-size: 12px;
  line-height: 1.2;
  white-space: nowrap;
}

.service-parts-workspace .service-part-editor {
  position: static;
  min-width: 0;
}

.service-parts-workspace .service-part-editor:not([open]) {
  height: 0;
}

.service-parts-workspace .service-part-editor > summary {
  position: absolute;
  top: 14px;
  right: 12px;
  min-width: 84px;
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 7px 11px;
  color: #164c41;
  border: 1px solid #b8cbc3;
  border-radius: 8px;
  background: #f5f7f4;
  box-sizing: border-box;
  font-size: 12px;
  font-weight: 800;
  line-height: 1.2;
  list-style: none;
  cursor: pointer;
}

.service-parts-workspace .service-part-editor > summary::-webkit-details-marker {
  display: none;
}

.service-parts-workspace .service-part-editor > summary::after {
  content: "+";
  margin-left: 7px;
  font-size: 16px;
  line-height: 1;
}

.service-parts-workspace .service-part-editor[open] > summary::after {
  content: "−";
}

.service-parts-workspace .service-part-editor > summary:hover,
.service-parts-workspace .service-part-editor > summary:focus-visible {
  color: #073f37;
  border-color: #79aa9c;
  background: #e8f4ef;
}

.service-parts-workspace .service-part-editor[open] {
  border-top: 1px solid #d2dfd9;
  background: #f7faf8;
}

.service-parts-workspace .service-part-edit-form {
  display: block;
  margin: 0;
  padding: 9px 12px 11px;
}

.service-parts-workspace .service-part-edit-grid {
  display: grid;
  grid-template-columns: minmax(160px, 1fr) minmax(160px, 1fr) minmax(68px, .32fr) auto;
  align-items: end;
  gap: 8px;
  min-width: 0;
}

.service-parts-workspace .service-part-edit-grid > .soft-button {
  align-self: end;
  padding-inline: 14px;
  white-space: nowrap;
}

.po-group-row > td {
  padding: 10px 14px;
  border-top: 2px solid #73aa99;
  border-bottom: 1px solid #accbc0;
  background: #e7f4ef;
}

.po-group-summary {
  min-width: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px 18px;
  color: #173f35;
}

.po-group-summary > strong {
  font-size: 16px;
  font-weight: 880;
  font-variant-numeric: tabular-nums;
  line-height: 1.25;
  overflow-wrap: anywhere;
}

.po-group-summary > span {
  color: #486159;
  font-size: 13px;
  font-weight: 720;
  line-height: 1.35;
  text-align: right;
}

.po-ticket-link {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  color: #0b665b;
  border-radius: 6px;
  font-size: 14px;
  font-weight: 820;
  line-height: 1.25;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
}

.po-ticket-link:hover,
.po-ticket-link:focus-visible {
  color: #063f38;
  background: #e3f2ed;
  outline: 3px solid rgba(46, 112, 93, .22);
  outline-offset: 2px;
}

@media screen and (max-width: 820px) {
  .service-parts-workspace .field-part-form {
    grid-template-columns: minmax(0, 1fr);
    gap: 10px;
    padding: 10px;
  }

  #detail-visits-panel .service-parts-workspace .field-part-form > .visit-form-heading {
    grid-column: 1;
    align-items: flex-start;
    flex-direction: column;
    gap: 4px;
    margin: -10px -10px 0;
    padding: 10px;
  }

  .service-parts-workspace .field-part-form > .visit-form-heading small {
    max-width: none;
    text-align: left;
  }

  .service-parts-workspace .field-part-form > .field-part-grid,
  .service-parts-workspace .service-part-edit-grid {
    grid-column: 1;
    grid-template-columns: minmax(0, 1fr);
    gap: 8px;
  }

  .service-parts-workspace .field-part-form > .primary-button {
    grid-column: 1;
    width: 100%;
  }

  .service-parts-workspace .field-part-grid :is(input, select),
  .service-part-edit-grid :is(input, select) {
    font-size: 16px;
  }

  .service-parts-workspace .service-part-summary {
    min-height: 106px;
    grid-template-columns: minmax(0, 1fr) auto auto;
    grid-template-areas:
      "identity quantity status"
      "supplier po po";
    gap: 6px 9px;
    padding: 8px 10px;
  }

  .service-parts-workspace .service-part-identity {
    grid-area: identity;
  }

  .service-parts-workspace .service-part-supplier {
    grid-area: supplier;
  }

  .service-parts-workspace .service-part-po {
    grid-area: po;
    margin-right: 94px;
  }

  .service-parts-workspace .service-part-quantity {
    grid-area: quantity;
  }

  .service-parts-workspace .service-part-summary > .part-status {
    grid-area: status;
  }

  .service-parts-workspace .service-part-po > small {
    display: none;
  }

  .service-parts-workspace .service-part-editor > summary {
    top: 54px;
    right: 10px;
  }

  .service-parts-workspace .service-part-edit-form {
    padding: 10px;
  }

  .service-parts-workspace .service-part-edit-grid > .soft-button {
    width: 100%;
  }

  .po-group-summary {
    align-items: flex-start;
    flex-direction: column;
    gap: 3px;
  }

  .po-group-summary > span {
    text-align: left;
  }
}

@media screen and (max-width: 480px) {
  .service-parts-workspace > .repair-section-bar {
    min-height: 56px;
    height: auto;
    align-items: center;
  }

  .service-parts-workspace > .repair-section-bar > div {
    min-width: 0;
  }

  .service-parts-workspace > .repair-section-bar .repair-section-note {
    display: none;
  }

  .service-parts-workspace > .repair-section-bar div strong {
    overflow-wrap: anywhere;
  }

  .service-parts-workspace .service-part-summary {
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas:
      "identity status"
      "supplier quantity"
      "po po";
    min-height: 136px;
  }

  .service-parts-workspace .service-part-po {
    margin-right: 94px;
  }

  .service-parts-workspace .service-part-editor > summary {
    top: 84px;
  }
}

/* Repair status is the single operating status; CSR contact work is a shared history. */
.ticket-csr-note-column {
  min-width: 180px;
}

.csr-note-cell {
  display: -webkit-box;
  color: #9d2f37;
  font-weight: 780;
  line-height: 1.35;
  overflow: hidden;
  overflow-wrap: anywhere;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
}

.ticket-csr-note-column > small {
  display: block;
  margin-top: 4px;
  color: #7a5558;
  font-size: 12px;
  line-height: 1.3;
}

.csr-note-empty {
  color: #9b7779;
}

.ticket-detail-modal .service-csr-notes {
  display: grid;
  gap: 6px;
  width: auto;
  margin: 0 12px 8px;
  padding: 9px 10px;
  box-sizing: border-box;
  border: 1px solid #e5b9b9;
  border-left: 4px solid #b54a4f;
  border-radius: 8px;
  background: #fff7f5;
}

.csr-note-heading {
  display: flex;
  align-items: center;
  min-height: 20px;
}

.csr-note-heading strong {
  color: #982d34;
  font-size: 14px;
  font-weight: 900;
  letter-spacing: .035em;
}

.csr-note-history {
  display: grid;
  gap: 5px;
  max-height: 136px;
  overflow-y: auto;
  overscroll-behavior: contain;
}

.csr-note-record,
.csr-note-empty-state {
  min-width: 0;
  padding: 6px 8px;
  border: 1px solid #ecd0cf;
  border-radius: 6px;
  background: #fff;
}

.csr-note-record p {
  margin: 0;
  color: #8e2f36;
  font-size: 13px;
  font-weight: 720;
  line-height: 1.35;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

.csr-note-record small,
.csr-note-empty-state span {
  display: block;
  margin-top: 2px;
  color: #775b5e;
  font-size: 12px;
  line-height: 1.25;
}

.csr-note-empty-state strong {
  color: #914047;
}

.csr-note-composer {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: end;
  gap: 5px 8px;
}

.csr-note-composer.hidden {
  display: none;
}

.csr-note-composer > label,
.csr-note-save-status {
  grid-column: 1 / -1;
  color: #8f3339;
  font-size: 12px;
  font-weight: 800;
}

.csr-note-composer textarea {
  width: 100%;
  min-width: 0;
  min-height: 44px;
  box-sizing: border-box;
  border-color: #d9a7aa;
  background: #fff;
  resize: vertical;
}

.csr-note-save-button {
  min-height: 44px;
  padding: 0 14px;
  border: 1px solid #9f353c;
  border-radius: 7px;
  color: #fff;
  background: #a83d44;
  font: inherit;
  font-size: 12px;
  font-weight: 880;
  white-space: nowrap;
  cursor: pointer;
}

.csr-note-save-button:hover,
.csr-note-save-button:focus-visible {
  background: #8f2f36;
  outline: 3px solid rgba(168, 61, 68, .2);
  outline-offset: 2px;
}

.csr-note-save-button:disabled {
  cursor: wait;
  opacity: .65;
}

.mobile-csr-note {
  display: grid;
  gap: 3px;
  margin-top: 8px;
  padding: 8px 9px;
  border-left: 4px solid #b54a4f;
  border-radius: 6px;
  background: #fff2f0;
}

.mobile-csr-note strong,
.mobile-csr-note span {
  color: #942f36;
}

.mobile-csr-note strong {
  font-size: 12px;
  letter-spacing: .04em;
}

.mobile-csr-note span {
  display: -webkit-box;
  font-size: 13px;
  font-weight: 720;
  line-height: 1.4;
  white-space: pre-wrap;
  max-height: 4.2em;
  overflow: hidden;
  overflow-wrap: anywhere;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
}

.mobile-csr-note small {
  color: #79575a;
  font-size: 12px;
}

@media print {
  .csr-note-cell {
    display: block;
    overflow: visible;
    -webkit-line-clamp: unset;
  }
}

@media screen and (max-width: 820px) {
  .ticket-detail-modal .service-csr-notes {
    margin: 0 8px 8px;
    padding: 8px;
  }

  .csr-note-composer {
    grid-template-columns: minmax(0, 1fr);
  }

  .csr-note-composer > label,
  .csr-note-save-status,
  .csr-note-composer textarea,
  .csr-note-save-button {
    grid-column: 1;
  }

  .csr-note-composer textarea {
    min-height: 50px;
    font-size: 16px;
  }

  .csr-note-save-button {
    width: 100%;
    min-height: 44px;
  }
}

/* Visit customer payment v85 — compact office instruction, clear field result, read-only history. */
.ticket-detail-modal #visit-form > .service-payment-collection {
  order: 65;
}

.service-payment-collection {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 8px 16px;
  margin: 14px 0 2px;
  padding: 14px 16px;
  border: 2px solid #d69a21;
  border-left: 8px solid #b96f05;
  border-radius: 12px;
  background: linear-gradient(105deg, #fff1bd 0%, #fff9e8 72%);
  box-shadow: 0 8px 20px rgba(100, 68, 8, .12);
  box-sizing: border-box;
}

.service-payment-collection.hidden {
  display: none;
}

.service-payment-collection.payment-tone-none {
  border-color: #d69a21;
  border-left-color: #b96f05;
  background: linear-gradient(105deg, #fff1bd 0%, #fff9e8 72%);
}

.service-payment-collection.payment-tone-paid {
  border-color: #a9d3bd;
  border-left-color: #23815e;
  background: #eff9f4;
}

.service-payment-collection.payment-tone-partial {
  border-color: #e2c87d;
  border-left-color: #b57910;
  background: #fff8df;
}

.service-payment-collection.payment-tone-missed {
  border-color: #dfa9a3;
  border-left-color: #b94b42;
  background: #fff2f0;
}

.payment-collection-empty,
.payment-collection-summary,
.payment-collection-state {
  display: grid;
  min-width: 0;
  gap: 2px;
}

.payment-collection-empty,
.payment-collection-summary {
  position: relative;
  min-height: 42px;
  padding-left: 48px;
  align-content: center;
}

.payment-collection-empty::before,
.payment-collection-summary::before {
  content: "$";
  position: absolute;
  left: 0;
  top: 50%;
  width: 36px;
  height: 36px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  color: #fff;
  background: #b96f05;
  box-shadow: 0 3px 8px rgba(100, 68, 8, .2);
  font-size: 20px;
  font-weight: 950;
  transform: translateY(-50%);
}

.payment-collection-empty > span,
.payment-collection-summary > span {
  color: #6d4500;
  font-size: 14px;
  font-weight: 900;
  letter-spacing: .055em;
}

.payment-collection-empty > strong,
.payment-collection-summary > strong {
  color: #332200;
  font-size: 18px;
  line-height: 1.25;
}

.payment-collection-summary > small,
.payment-collection-state > small {
  color: #665b42;
  font-size: 13px;
  line-height: 1.35;
  overflow-wrap: anywhere;
}

.payment-collection-state {
  min-width: 128px;
  text-align: right;
}

.payment-collection-state > strong {
  color: #654a0d;
  font-size: 15px;
}

.payment-tone-paid :is(.payment-collection-summary > span, .payment-collection-state > strong) { color: #176145; }
.payment-tone-missed :is(.payment-collection-summary > span, .payment-collection-state > strong) { color: #993b34; }
.payment-tone-paid .payment-collection-summary::before { background: #23815e; }
.payment-tone-missed .payment-collection-summary::before { background: #b94b42; }

.payment-collection-actions {
  grid-column: 1 / -1;
  display: flex;
  justify-content: flex-end;
  gap: 8px;
}

.payment-collection-editor {
  min-width: 0;
}

.service-payment-collection > .payment-collection-editor {
  justify-self: end;
}

.service-payment-collection > .payment-collection-editor[open] {
  grid-column: 1 / -1;
  width: 100%;
}

.payment-collection-actions .payment-collection-editor[open] {
  flex: 1 1 100%;
}

.payment-collection-editor > summary {
  min-height: 42px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0 13px;
  border: 1px solid #805500;
  border-radius: 8px;
  color: #fff;
  background: #805500;
  box-shadow: 0 4px 10px rgba(100, 68, 8, .16);
  font-size: 13px;
  font-weight: 900;
  list-style: none;
  cursor: pointer;
  box-sizing: border-box;
}

.payment-collection-editor > summary::-webkit-details-marker {
  display: none;
}

.payment-collection-editor[open] > summary {
  margin-left: auto;
  color: #63480c;
  background: #fffaf0;
}

.payment-collection-form {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  align-items: end;
  gap: 9px;
  width: 100%;
  margin-top: 9px;
  padding-top: 9px;
  border-top: 1px solid rgba(128, 92, 19, .22);
}

.payment-collection-form > label {
  display: grid;
  min-width: 0;
  gap: 5px;
  color: #534a36;
  font-size: 13px;
  font-weight: 800;
}

.payment-collection-form :is(input, select) {
  width: 100%;
  min-width: 0;
  height: 44px;
  padding: 0 11px;
  border: 1px solid #b7b8a9;
  border-radius: 7px;
  color: #173f35;
  background: #fff;
  font-size: 14px;
  box-sizing: border-box;
}

.payment-collection-form .payment-note-field {
  grid-column: span 2;
}

.payment-form-actions {
  grid-column: 1 / -1;
  display: flex;
  justify-content: flex-end;
  gap: 8px;
}

.payment-save-button,
.payment-void-button {
  min-height: 44px;
  padding: 0 16px;
  border: 1px solid #236d58;
  border-radius: 8px;
  color: #fff;
  background: #23745d;
  font: inherit;
  font-size: 12px;
  font-weight: 900;
  cursor: pointer;
}

.payment-void-button {
  border-color: #bd6b63;
  color: #963d35;
  background: #fff;
}

.payment-save-button:focus-visible,
.payment-void-button:focus-visible,
.payment-collection-editor > summary:focus-visible {
  outline: 3px solid rgba(35, 116, 93, .22);
  outline-offset: 2px;
}

.payment-save-button:disabled,
.payment-void-button:disabled {
  cursor: wait;
  opacity: .62;
}

/* One always-visible payment editor; no nested request/result/correction cards. */
.service-payment-collection.payment-compact {
  grid-template-columns: minmax(0, 1fr);
  gap: 8px;
  padding: 10px 12px;
  border-width: 1px 1px 1px 4px;
  border-radius: 8px;
  box-shadow: none;
}
.payment-compact-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 8px;
  color: #654a0d;
  font-size: 14px;
}
.payment-visit-picker { display: flex; align-items: center; gap: 8px; min-width: 0; }
.payment-visit-picker select { max-width: 100%; min-height: 44px; font-size: 16px; }
.payment-compact .payment-unified-form { margin: 0; padding: 0; border: 0; gap: 8px 10px; }
.payment-compact .payment-unified-form > label { grid-column: auto; font-size: 14px; gap: 4px; }
.payment-compact .payment-unified-form > .payment-correction-reason { grid-column: 1 / -1; }
.payment-compact .payment-unified-form > .payment-correction-reason[hidden] { display: none; }
.payment-correction-reason small { color: #665b42; font-size: 12px; font-weight: 400; }
.payment-compact .payment-unified-form .payment-form-actions { grid-column: 1 / -1; display: flex; align-items: center; flex-wrap: wrap; }
.payment-compact .payment-form-actions small { margin-right: auto; color: #665b42; font-size: 12px; }
.payment-compact :is(.payment-save-button, .payment-void-button) { font-size: 14px; }
@media screen and (max-width: 820px) {
  .service-payment-collection.payment-compact { padding: 10px; }
  .payment-compact .payment-unified-form { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .payment-compact .payment-unified-form :is(input, select) { font-size: 16px; padding-inline: 8px; }
  .payment-compact .payment-unified-form > .payment-note-field { grid-column: 1 / -1; }
  .payment-compact .payment-form-actions small { flex-basis: 100%; }
  .payment-compact .payment-form-actions button { width: auto; flex: 1 1 auto; }
}
@media screen and (max-width: 359px) {
  .payment-compact .payment-unified-form { grid-template-columns: minmax(0, 1fr); }
}

.ticket-payment-alert {
  display: grid;
  gap: 2px;
  box-sizing: border-box;
  border-left: 5px solid #b87408;
  border-radius: 7px;
  color: #513a0b;
  background: #fff0bd;
  overflow-wrap: anywhere;
}

.ticket-payment-alert > span {
  color: #80520a;
  font-size: 12px;
  font-weight: 950;
  letter-spacing: .035em;
}

.ticket-payment-alert > strong {
  color: #3f2d09;
  font-size: 15px;
  line-height: 1.3;
}

.ticket-payment-alert > small {
  color: #5c4a25;
  font-size: 12px;
  font-weight: 720;
  line-height: 1.35;
}

.ticket-payment-alert-list {
  width: max-content;
  max-width: 100%;
  margin-top: 6px;
  padding: 6px 8px;
}

.ticket-payment-alert-list > span { font-size: 12px; }
.ticket-payment-alert-list > strong { font-size: 13px; }
.ticket-payment-alert-list > small { font-size: 12px; }

.ticket-payment-alert-planner {
  margin: 4px 0 10px;
  padding: 8px 10px;
}

#detail-customer-payment-alert:empty {
  display: none;
}

.ticket-payment-alert-detail {
  margin: 12px 12px 0;
  padding: 12px 14px;
  border: 2px solid #d69929;
  border-left-width: 8px;
  background: #fff4cf;
  box-shadow: 0 4px 12px rgba(128, 82, 10, .1);
}

.mobile-payment-due {
  display: grid;
  gap: 2px;
  margin-top: 9px;
  padding: 9px 10px;
  border-left: 5px solid #c07d13;
  border-radius: 7px;
  color: #513a0b;
  background: #fff0bd;
}

.mobile-payment-due span {
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .035em;
}

.mobile-payment-due strong {
  font-size: 16px;
  line-height: 1.3;
}

.mobile-payment-due small {
  font-size: 13px;
  line-height: 1.35;
  overflow-wrap: anywhere;
}

.visit-payment-history {
  display: grid;
  gap: 3px;
  margin-top: 10px;
  padding: 9px 11px;
  border-left: 4px solid #c08719;
  border-radius: 7px;
  background: #fff8e5;
}

.visit-payment-history > span,
.visit-payment-history > strong,
.visit-payment-history > p,
.visit-payment-history > small {
  margin: 0;
  overflow-wrap: anywhere;
}

.visit-payment-history > span { color: #805c13; font-size: 12px; font-weight: 900; }
.visit-payment-history > strong { color: #46330c; font-size: 14px; }
.visit-payment-history > p,
.visit-payment-history > small { color: #665b42; font-size: 13px; line-height: 1.35; }
.visit-payment-history.payment-tone-paid { border-left-color: #23815e; background: #eff9f4; }
.visit-payment-history.payment-tone-missed { border-left-color: #b94b42; background: #fff2f0; }

@media screen and (max-width: 820px) {
  .service-payment-collection {
    grid-template-columns: minmax(0, 1fr);
    align-items: stretch;
    gap: 8px;
    margin-top: 8px;
    padding: 13px;
  }

  .payment-collection-state {
    min-width: 0;
    text-align: left;
  }

  .payment-collection-actions,
  .service-payment-collection > .payment-collection-editor {
    width: 100%;
    justify-self: stretch;
  }

  .payment-collection-actions {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
  }

  .payment-collection-editor,
  .payment-collection-editor > summary {
    width: 100%;
  }

  .payment-collection-editor[open] > summary {
    margin-left: 0;
  }

  .payment-collection-form {
    grid-template-columns: minmax(0, 1fr);
  }

  .payment-collection-form > label,
  .payment-collection-form .payment-note-field,
  .payment-form-actions {
    grid-column: 1;
  }

  .payment-collection-form :is(input, select) {
    font-size: 16px;
  }

  .payment-form-actions {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
  }

  .payment-save-button,
  .payment-void-button {
    width: 100%;
  }
}

/* Direct part entry and chronological desktop visit overview. */
.service-parts-workspace .service-part-summary {
  min-height: 50px;
  padding: 6px 12px;
  grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr) minmax(0, 1fr) auto;
}
.service-parts-workspace .service-part-summary .service-part-quantity { display: none; }
.service-parts-workspace .service-part-edit-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 6px 10px;
}
.service-parts-workspace .service-part-edit-grid label {
  min-width: 0;
  display: grid;
  gap: 4px;
  font-size: 14px;
}
.service-parts-workspace .service-part-edit-grid :is(input, select, textarea) {
  width: 100%;
  min-width: 0;
  min-height: 42px;
  box-sizing: border-box;
  font-size: 14px;
}
.service-parts-workspace .service-part-edit-grid :is(input, select, textarea):disabled {
  opacity: 1;
  color: #24423c;
  -webkit-text-fill-color: #24423c;
  background: #f4f7f6;
}
.service-parts-workspace .service-part-edit-grid input[name="partNumber"]:disabled {
  color: var(--red);
  -webkit-text-fill-color: var(--red);
}
.service-parts-workspace input[name="partNumber"] { color: var(--red); font-weight: 850; }
.service-parts-workspace .service-part-note { grid-column: span 2; }
.service-parts-workspace .service-part-note textarea { resize: vertical; padding: 8px 10px; }
.service-part-inline-actions {
  display: flex;
  align-items: end;
  gap: 6px;
  grid-column: span 2;
  justify-content: flex-end;
}
.service-part-inline-actions button { min-height: 44px; padding: 8px 14px; font-size: 14px; }
.service-part-delete { border: 1px solid #c78888; border-radius: 8px; color: #9a2424; background: #fff1f1; cursor: pointer; }
.service-part-edit-form[data-dirty="true"] { background: #fff8df; }
.service-part-readonly-note { padding: 8px 12px; font-size: 14px; overflow-wrap: anywhere; }
.service-parts-workspace .service-part-visit-badge {
  display: inline-block;
  width: fit-content;
  padding: 3px 8px;
  border-radius: 5px;
  background: #e7efff;
  color: #234b89;
  font-size: 14px;
  font-weight: 800;
}
.service-parts-workspace .field-part-note { grid-column: span 2; }
@media screen and (min-width: 1400px) {
  .service-parts-workspace .service-part-edit-grid { grid-template-columns: 1fr 1.3fr 1fr 1fr .45fr 1fr; }
  .service-parts-workspace .service-part-note { grid-column: span 4; }
}
@media screen and (max-width: 820px) {
  .service-parts-workspace .service-part-summary {
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas: none;
    min-height: 0;
    gap: 6px;
  }
  .service-parts-workspace .service-part-summary > * { grid-area: auto; }
  .service-parts-workspace .service-part-po { margin-right: 0; }
  .service-parts-workspace .service-part-edit-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .service-parts-workspace .service-part-edit-grid :is(input, select, textarea),
  .service-parts-workspace .field-part-grid :is(input, select) { font-size: 16px; }
  .service-parts-workspace .service-part-inline-actions { grid-column: 1 / -1; justify-content: stretch; }
  .service-part-inline-actions button { flex: 1; min-width: 0; padding-inline: 8px; }
  .service-parts-workspace .field-part-form > .field-part-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* Daily planner: compact time-window rows, with every appointment visible. */
#view-dispatch .page-intro { margin-bottom: 12px; }
#view-dispatch .page-intro h2 { margin: 3px 0 0; font-size: 26px; }
#view-dispatch .dispatch-toolbar { flex-wrap: wrap; margin-bottom: 8px; gap: 10px; }
#view-dispatch .planner-day-controls { display: flex; align-items: end; gap: 6px; }
#view-dispatch .planner-date-label { display: grid; gap: 3px; font-size: 14px; font-weight: 700; }
#view-dispatch .planner-date-label input { width: 170px; min-height: 36px; padding: 6px 9px; }
#view-dispatch .planner-day-controls button { min-height: 36px; }
#view-dispatch .planner-selected-date { min-width: 0; padding: 0; border: 0; background: none; }
#view-dispatch #planner-day-summary { color: var(--muted); font-size: 13px; }
#view-dispatch .planner-status-legend { justify-content: flex-start; flex-wrap: wrap; font-size: 14px; margin: 0 0 9px; }
#view-dispatch .planner-status-legend .pending { background: #b42336; }
#view-dispatch .planner-status-legend .ready { background: #1d4ed8; }
#view-dispatch .planner-status-legend .complete { background: #205b2a; }
#view-dispatch .dispatch-board { display: block; padding: 0; margin-bottom: 16px; border: 1px solid #bccad2; border-radius: 6px; background: white; }
#view-dispatch .planner-matrix { width: 100%; min-width: calc(108px + var(--planner-columns, 4) * 240px); table-layout: fixed; border-collapse: separate; border-spacing: 0; }
#view-dispatch .planner-matrix .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
#view-dispatch .planner-matrix th,
#view-dispatch .planner-matrix td { padding: 3px; vertical-align: top; border-right: 1px solid #d4dee4; border-bottom: 1px solid #d4dee4; white-space: normal; text-transform: none; letter-spacing: normal; }
#view-dispatch .planner-matrix thead th { padding: 8px; background: #223e50; color: #fff; }
#view-dispatch .planner-matrix .planner-time-heading { position: sticky; left: 0; z-index: 1; width: 108px; padding: 8px 6px; background: #f0f4f7; color: #263f50; font-size: 13px; font-weight: 650; line-height: 1.35; text-align: left; }
#view-dispatch .planner-matrix thead .planner-time-heading { background: #223e50; color: white; }
#view-dispatch .planner-tech-heading strong { display: block; font-size: 15px; overflow-wrap: anywhere; }
#view-dispatch .planner-tech-heading span { display: block; margin-top: 2px; font-size: 12px; font-weight: 500; color: #e0eaf0; }
#view-dispatch .planner-tech-title { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
#view-dispatch .planner-tech-heading .planner-tech-count { display: inline-flex; flex: 0 0 auto; justify-content: center; align-items: center; min-width: 26px; padding: 2px 6px; margin: 0; border-radius: 4px; background: #e7eef3; color: #223e50; font-size: 14px; font-weight: 750; line-height: 1.3; }
#view-dispatch .planner-slot { background: #fff; }
#view-dispatch .planner-slot-empty { display: block; padding: 3px; color: #778995; font-size: 13px; text-align: center; }
#view-dispatch .dispatch-card { padding: 6px 8px; margin: 0 0 4px; border-radius: 4px; border: 1px solid #d1dbe2; border-left: 4px solid #b42336; box-shadow: none; min-width: 0; font-family: var(--apex-font-text); letter-spacing: 0; white-space: normal; overflow-wrap: anywhere; transition: none; }
#view-dispatch .dispatch-card:last-child { margin-bottom: 0; }
#view-dispatch .dispatch-card:hover { transform: none; outline: 1px solid #577083; }
#view-dispatch .dispatch-card.planner-work-pending { background: #fff0f1; border-left-color: #b42336; }
#view-dispatch .dispatch-card.planner-work-ready { background: #e7efff; border-left-color: #1d4ed8; }
#view-dispatch .dispatch-card.planner-work-complete { background: #205b2a; border-left-color: #133b19; color: #fff; }
#view-dispatch .dispatch-card-head,
#view-dispatch .planner-customer { display: flex; flex-wrap: wrap; align-items: baseline; gap: 1px 6px; justify-content: space-between; line-height: 1.2; }
#view-dispatch .planner-ticket-id { font-size: 13px; font-weight: 750; }
#view-dispatch .planner-account { font-size: 12px; color: #465d6d; }
#view-dispatch .planner-customer { margin-top: 0; font-size: 13px; }
#view-dispatch .planner-customer span { font-size: 12px; color: #465d6d; }
#view-dispatch .dispatch-card p { margin: 0; font-size: 13px; line-height: 1.2; color: #354d5e; }
#view-dispatch .dispatch-card .planner-address { font-size: 13px; }
#view-dispatch .planner-work-summary { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 1px 8px; margin-top: 0; }
#view-dispatch .planner-work-status { display: block; padding: 0; background: none; font-size: 13px; font-weight: 750; line-height: 1.2; border-radius: 0; letter-spacing: 0; text-transform: none; white-space: normal; }
#view-dispatch .planner-job-types { min-width: 0; font-size: 12px; font-weight: 650; line-height: 1.2; color: #354d5e; }
#view-dispatch .planner-service-fee { display: inline-flex; align-items: baseline; gap: 4px; flex: 0 0 auto; align-self: flex-end; margin-left: auto; padding: 1px 5px; border: 1px solid; border-radius: 4px; background: #fff; font-size: 13px; font-weight: 800; line-height: 1.2; white-space: nowrap; font-variant-numeric: tabular-nums; box-shadow: 0 1px 2px rgba(0, 0, 0, .12); }
#view-dispatch .planner-service-fee-visit { font-size: 12px; font-weight: 600; line-height: 1.2; color: inherit; }
#view-dispatch .planner-service-fee.due { color: #b42318; border-color: #dc9892; }
#view-dispatch .planner-service-fee.paid { color: #166534; border-color: #6ba47b; }
#view-dispatch .planner-work-complete .planner-service-fee { box-shadow: 0 0 0 1px rgba(255, 255, 255, .7), 0 1px 3px rgba(0, 0, 0, .2); }
#view-dispatch .planner-work-status.pending { color: #9f1239; }
#view-dispatch .planner-work-status.ready { color: #1e40af; }
#view-dispatch .planner-work-status.complete { color: #fff; }
#view-dispatch .dispatch-card .planner-office-note { color: #9c2830; font-weight: 650; }
#view-dispatch .planner-work-complete :is(.planner-ticket-id, .planner-account, .planner-customer, .planner-customer span, .planner-address, .planner-issue, .planner-job-types) { color: #fff; }
#view-dispatch .planner-work-complete .planner-office-note { color: #ffe0e4; }
#view-dispatch .dispatch-card-foot { flex-wrap: wrap; gap: 3px; margin-top: 3px; }
#view-dispatch .dispatch-card-foot:empty { display: none; }
#view-dispatch .dispatch-card-foot .tiny-tag { padding: 1px 4px; font-size: 12px; line-height: 1.3; text-transform: none; letter-spacing: 0; }
#view-dispatch .dispatch-card-foot select { max-width: 100%; width: auto; min-height: 28px; padding: 2px 18px 2px 5px; border: 1px solid #9caeb9; border-radius: 3px; font-size: 13px; color: #263f50; background-color: #fff; }
#view-dispatch .route-planner { padding: 10px 12px; border-radius: 6px; gap: 12px; }
#view-dispatch .route-planner h3 { margin: 2px 0; }
#view-dispatch .planner-calendar-panel { margin-top: 16px; box-shadow: none; }
#view-dispatch .planner-calendar-panel .calendar-day { min-height: 54px; padding: 6px; }
#view-dispatch .planner-calendar-panel .calendar-day small { margin-top: 4px; }
@media (max-width: 820px) {
  #view-dispatch .planner-matrix { min-width: calc(88px + var(--planner-columns, 4) * 260px); }
  #view-dispatch .planner-matrix .planner-time-heading { width: 88px; font-size: 12px; }
  #view-dispatch .planner-day-controls { width: 100%; }
  #view-dispatch .planner-date-label { flex: 1; }
  #view-dispatch .planner-date-label input { width: 100%; font-size: 16px; }
  #view-dispatch .planner-day-controls button,
  #view-dispatch .dispatch-card-foot select { min-height: 44px; }
  #view-dispatch .dispatch-card-foot select { font-size: 16px; }
  #view-dispatch .dispatch-toolbar > button { flex: 1; }
}

/* Workspace clarity: presentation only; retain fields, permissions and section order. */
@media screen {
  #view-tickets,
  .ticket-detail-modal #detail-visits-panel {
    --workspace-ink: #203344;
    --workspace-muted: #526575;
    --workspace-border: #ccd6de;
    --workspace-surface: #ffffff;
    --workspace-header: #f1f4f7;
  }

  #view-tickets .page-intro { margin-bottom: 14px; }
  #view-tickets .page-intro h2 { font-size: 1.75rem; line-height: 1.2; }
  #view-tickets .page-intro p { margin-top: 6px; font-size: .875rem; color: var(--workspace-muted); }
  #view-tickets .dense-filters {
    padding: 14px;
    border: 1px solid var(--workspace-border);
    border-radius: 8px;
    background: var(--workspace-surface);
    box-shadow: none;
  }
  #view-tickets .dense-filters label > span {
    font-size: .875rem;
    font-weight: 650;
    text-transform: none;
    letter-spacing: normal;
    color: var(--workspace-ink);
  }
  #view-tickets .dense-filters :is(input, select) { border-color: #a5b4c0; border-radius: 6px; }
  #view-tickets .table-toolbar { background: var(--workspace-header); border-color: var(--workspace-border); }
  #view-tickets #ticket-list-print-area th {
    background: #e9eef3;
    color: #304657;
    font-size: .875rem;
    font-weight: 650;
    text-transform: none;
    letter-spacing: normal;
    line-height: 1.3;
  }
  #view-tickets #ticket-list-print-area td {
    padding: 10px 8px;
    font-size: .875rem;
    line-height: 1.4;
    color: var(--workspace-ink);
    border-bottom-color: #dce3e9;
  }
  #view-tickets #ticket-list-print-area .ticket-read > td { background: #fff; font-weight: 400; }
  #view-tickets #ticket-list-print-area .ticket-unread > td { background: #f0f5ff; }
  #view-tickets #ticket-list-print-area .ticket-row:hover > td { background: #e9f0f8; }
  #view-tickets #ticket-list-print-area :is(.ticket-primary-id, .ticket-customer-name) { font-size: .9375rem; }
  #view-tickets #ticket-list-print-area :is(.ticket-address-street, .ticket-address-locality) {
    font-size: .875rem;
    font-weight: 500;
    line-height: 1.4;
    color: var(--workspace-ink);
  }
  #view-tickets #ticket-list-print-area :is(.ticket-appliance-cell, td small, .clickable-ticket small) {
    font-size: .8125rem;
    color: var(--workspace-muted);
  }
  #view-tickets #ticket-list-print-area .part-status {
    font-size: .875rem;
    line-height: 1.35;
    border-radius: 5px;
    white-space: normal;
  }
  #view-tickets #ticket-list-print-area :is(.internal-note-cell, .csr-note-cell, .next-action) {
    font-size: .875rem;
    line-height: 1.4;
  }

  .ticket-detail-modal #detail-visits-panel :is(.service-unit-grid, .service-photo-workspace,
    .service-history-details, .service-secondary-workspace, .service-advanced-fields, .service-notes-workflow) {
    border: 1px solid var(--workspace-border);
    border-radius: 8px;
    background: var(--workspace-surface);
    box-shadow: none;
  }
  .ticket-detail-modal #detail-visits-panel :is(.visit-form-heading, .service-photo-heading,
    .service-history-details > summary, .repair-section-bar, .service-advanced-fields > summary, .service-notes-heading) {
    color: var(--workspace-ink);
    background: var(--workspace-header);
    border-color: var(--workspace-border);
    border-left-width: 0;
    box-shadow: none;
  }
  .ticket-detail-modal #detail-visits-panel :is(.service-notes-heading strong, .service-photo-heading strong,
    .service-advanced-title strong, .service-history-details > summary > span, .repair-section-bar div strong) {
    color: var(--workspace-ink);
    font-size: 1rem;
    font-weight: 700;
    line-height: 1.35;
  }
  .ticket-detail-modal #detail-visits-panel :is(.service-notes-heading span, .service-photo-heading small,
    .service-advanced-title small, .repair-section-note, .service-history-details > summary > strong) {
    color: var(--workspace-muted);
    font-size: .8125rem;
    font-weight: 500;
  }
  .ticket-detail-modal #detail-visits-panel :is(.service-unit-grid > label, .visit-er-grid > label,
    .service-note-label, .field-part-grid > label, .service-part-edit-grid > label) {
    color: var(--workspace-ink);
    font-size: .875rem;
    font-weight: 650;
    line-height: 1.4;
  }
  .ticket-detail-modal #detail-visits-panel :is(.service-unit-grid, .visit-er-grid, .service-notes-workflow,
    .field-part-grid, .service-part-edit-grid) :is(input:not([type="checkbox"]), select, textarea) {
    border-color: #a5b4c0;
    border-radius: 6px;
    font-size: 1rem;
  }
  /* Flat headings must not inherit white text from the former gradient banner. */
  .ticket-detail-modal #detail-visits-panel .visit-form-heading :is(span, small) {
    color: var(--workspace-muted, #526170);
  }
  .ticket-detail-modal #detail-visits-panel .service-status-grid > label {
    border: 1px solid var(--workspace-border);
    background: var(--workspace-header);
    color: var(--workspace-ink);
    font-size: .875rem;
  }
  .ticket-detail-modal #detail-visits-panel .service-status-grid select { font-size: 1rem; }
  .ticket-detail-modal #detail-visits-panel .service-save-row {
    border: 1px solid #a8c2b3;
    background: #f0f7f2;
    box-shadow: none;
  }
  .ticket-detail-modal #detail-visits-panel .service-save-actions > * { font-size: .875rem; box-shadow: none; }
  .ticket-detail-modal #service-update-save { color: #fff; background: #22663b; border-color: #22663b; }
  .ticket-detail-modal #service-complete-visit { color: #fff; background: #ae293b; border-color: #ae293b; }
  .ticket-detail-modal #service-update-save:hover:not(:disabled) { background: #184e2b; }
  .ticket-detail-modal #service-complete-visit:hover:not(:disabled) { background: #8c1f2e; }

  /* Reuse existing status semantics; text still identifies the exact repair state. */
  :is(#view-tickets, .ticket-detail-modal #detail-visits-panel) :is(.status-tone-parts, .status-tone-waiting) {
    color: #9f1239 !important; border-color: #c9586d !important; background: #fff0f1 !important;
  }
  :is(#view-tickets, .ticket-detail-modal #detail-visits-panel) .status-tone-ready {
    color: #1e40af !important; border-color: #537be2 !important; background: #e7efff !important;
  }
  :is(#view-tickets, .ticket-detail-modal #detail-visits-panel) .status-tone-complete {
    color: #fff !important; border-color: #133b19 !important; background: #205b2a !important;
  }
  :is(#view-tickets, .ticket-detail-modal #detail-visits-panel) :is(button, a, input, select, textarea, summary):focus-visible {
    outline: 3px solid #1d4ed8;
    outline-offset: 2px;
  }
}
@media screen and (max-width: 820px) {
  #view-tickets .dense-filters :is(input, select) { font-size: 1rem; min-height: 44px; }
  .ticket-detail-modal #detail-visits-panel .service-unit-grid > label:not(.visit-check) {
    grid-template-rows: auto minmax(44px, auto);
  }
  .ticket-detail-modal #detail-visits-panel .service-unit-grid input { min-height: 44px; }
}

/* Service Tracking flat sections: keep controls and alerts, remove nested frames. */
@media screen {
  .ticket-detail-modal #detail-visits-panel :is(.service-unit-grid, .service-photo-workspace,
    .service-history-details, .service-parts-workspace, .claim-transaction-workspace,
    .service-advanced-fields, .service-notes-workflow) {
    border: 0;
    border-radius: 0;
    background: var(--workspace-surface);
    box-shadow: none;
  }
  .ticket-detail-modal #detail-visits-panel :is(.visit-form-heading, .service-photo-heading,
    .service-history-details > summary, .repair-section-bar,
    .service-advanced-fields > summary, .service-notes-heading) {
    border: 0;
    border-bottom: 1px solid var(--workspace-border);
    border-radius: 0;
    background: transparent;
    box-shadow: none;
  }
  .ticket-detail-modal #detail-visits-panel .service-status-grid > label {
    border: 0;
    border-radius: 0;
    background: transparent;
  }
  .ticket-detail-modal #detail-visits-panel .service-notes-workflow > label {
    border: 0;
    background: transparent;
  }
  .ticket-detail-modal #detail-visits-panel .next-visit-planning {
    border: 0;
    border-top: 1px solid var(--workspace-border);
    border-radius: 0;
    background: transparent;
  }
  .ticket-detail-modal #detail-visits-panel .field-part-form {
    border: 0;
    border-bottom: 1px solid var(--workspace-border);
    border-radius: 0;
    background: transparent;
    box-shadow: none;
  }
  .ticket-detail-modal #detail-visits-panel .repair-part-list .service-part-transaction {
    border: 0;
    border-bottom: 1px solid var(--workspace-border);
    border-radius: 0;
    background: var(--workspace-surface);
    box-shadow: none;
  }
  .ticket-detail-modal #detail-visits-panel .visit-history-entry {
    border: 0;
    border-bottom: 1px solid var(--workspace-border);
    border-radius: 0;
    background: var(--workspace-surface);
    box-shadow: none;
    padding-block: 14px;
  }
  .ticket-detail-modal #detail-visits-panel .visit-history-facts > div,
  .ticket-detail-modal #detail-visits-panel .visit-history-note:not(.visit-history-alert):not(.visit-history-missing) {
    border: 0;
    border-radius: 0;
    background: transparent;
    padding: 6px 10px;
  }
  .ticket-detail-modal #detail-visits-panel .visit-history-facts {
    border-bottom: 1px solid #e2e8ed;
    padding-bottom: 8px;
  }
}

/* Main workspace flat surfaces: dashboard, field work, parts, claims and invoices. */
@media screen {
  :is(#view-overview, #view-mobile, #view-parts, #view-claims, #view-invoices) {
    --flat-ink: #203344;
    --flat-muted: #526575;
    --flat-line: #ccd6de;
  }
  :is(#view-mobile, #view-parts, #view-claims, #view-invoices) .page-intro {
    margin-bottom: 14px;
  }
  :is(#view-mobile, #view-parts, #view-claims, #view-invoices) .page-intro h2 {
    font-size: 1.75rem;
    line-height: 1.2;
    color: var(--flat-ink);
  }
  :is(#view-mobile, #view-parts, #view-claims, #view-invoices) .page-intro p {
    color: var(--flat-muted);
    font-size: .875rem;
  }
  #view-overview :is(.panel, .tech-load-card),
  #view-mobile :is(.field-team-panel, .mobile-calendar-panel),
  #view-parts .parts-column {
    border: 0;
    border-bottom: 1px solid var(--flat-line);
    border-radius: 0;
    background: #fff;
    box-shadow: none;
  }
  #view-overview .panel-head {
    border-bottom: 1px solid var(--flat-line);
    background: transparent;
  }
  #view-overview .hero-card { border-radius: 8px; box-shadow: none; }
  #view-overview .work-queue-card {
    border: 0;
    border-left: 3px solid #28745f;
    border-bottom: 1px solid var(--flat-line);
    border-radius: 0;
    background: #fff;
    box-shadow: none;
  }
  #view-overview .work-queue-card:hover { background: #edf3f7; box-shadow: none; transform: none; }
  #view-overview .metric-card,
  #view-mobile .mobile-kpi-grid > article,
  #view-parts .parts-stat,
  #view-claims .claim-summary-grid > article,
  #view-invoices .invoice-summary-grid > article {
    padding: 12px;
    border: 0;
    border-bottom: 1px solid var(--flat-line);
    border-radius: 0;
    background: #fff;
    box-shadow: none;
  }
  #view-overview :is(.metric-card, .work-queue-card) > span,
  #view-mobile .mobile-kpi-grid span,
  #view-parts .parts-stat span,
  #view-claims .claim-summary-grid span,
  #view-invoices .invoice-summary-grid span {
    color: var(--flat-muted);
    font-size: .875rem;
    font-weight: 650;
    letter-spacing: normal;
    text-transform: none;
  }
  #view-mobile .tech-mobile-shell {
    border: 0;
    border-radius: 0;
    background: #f1f4f7;
    box-shadow: none;
  }
  #view-mobile .mobile-job-shell {
    border-width: 1px;
    border-left-width: 4px;
    border-radius: 6px;
    box-shadow: none;
  }
  #view-mobile .mobile-job-shell.ticket-unread { box-shadow: inset 2px 0 0 var(--work-color); }
  #view-mobile .mobile-job-shell.mobile-work-todo {
    --work-color: #1d4ed8; --work-ink: #1e40af; --work-soft: #e7efff;
  }
  #view-mobile .mobile-job-shell.mobile-work-pending {
    --work-color: #b42336; --work-ink: #9f1239; --work-soft: #fff0f1;
  }
  #view-mobile .mobile-job-shell.mobile-work-done {
    --work-color: #205b2a; --work-ink: #133b19; --work-soft: #eaf5ee;
  }
  #view-parts .part-card {
    border: 0;
    border-bottom: 1px solid var(--flat-line);
    border-radius: 0;
    background: #fff;
    box-shadow: none;
  }
  #view-parts .part-card > strong { font-size: 1rem; color: var(--red); }
  #view-parts .part-card > span { font-size: .875rem; color: var(--flat-muted); }
  :is(#view-parts, #view-claims, #view-invoices) .dense-filters {
    border: 0;
    border-bottom: 1px solid var(--flat-line);
    border-radius: 0;
    background: #fff;
    box-shadow: none;
  }
  :is(#view-parts, #view-claims, #view-invoices) .dense-filters label > span {
    color: var(--flat-ink);
    font-size: .875rem;
    font-weight: 650;
    text-transform: none;
    letter-spacing: normal;
  }
  :is(#view-parts, #view-claims, #view-invoices) .result-bar {
    border-color: var(--flat-line);
    border-radius: 0;
    background: #f1f4f7;
    box-shadow: none;
  }
  :is(#view-parts, #view-claims, #view-invoices) .table-wrap {
    border-color: var(--flat-line);
    border-radius: 0;
    box-shadow: none;
  }
  :is(#view-parts, #view-claims, #view-invoices) th {
    background: #e9eef3;
    color: #304657;
    font-weight: 650;
    letter-spacing: normal;
    text-transform: none;
  }
  :is(#view-overview, #view-mobile, #view-parts, #view-claims, #view-invoices) :is(button, a, input, select, summary):focus-visible {
    outline: 3px solid #1d4ed8;
    outline-offset: 2px;
  }
}
.service-part-bulk {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px 16px;
  padding: 10px 12px;
}
.service-part-bulk-actions { display: flex; gap: 8px; }
.service-part-bulk-actions button {
  min-height: 44px;
  padding: 10px 18px;
  border: 1px solid transparent;
  border-radius: 6px;
  color: #fff;
  font-size: 0.875rem;
  font-weight: 700;
}
#service-parts-used-all { background: #1d4ed8; }
#service-parts-update { background: #166534; }
.service-part-bulk-actions button:disabled { opacity: 0.5; cursor: not-allowed; }
#service-parts-save-status { font-size: 0.875rem; color: #334155; overflow-wrap: anywhere; }
/* Ticket list: bounded filters and readable columns, never mid-word fragments. */
@media screen {
  .app-shell:has(#view-tickets.active) .topbar h1 { display: none; }
  #view-tickets .page-intro { padding: 0; margin-bottom: 10px; gap: 8px; }
  #view-tickets .page-intro h2 { font-size: 1.25rem; margin: 0; }
  #view-tickets .page-intro :is(.section-kicker, p) { display: none; }
  #view-tickets .dense-filters { grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; padding: 10px 0; }
  #view-tickets .ticket-search-field { grid-column: 1 / 4; }
  #view-tickets .dense-filters :is(label, input, select, button) { min-width: 0; width: 100%; }
  #view-tickets .dense-filters :is(input, select, button) { min-height: 38px; font-size: .875rem; }
  #view-tickets .ticket-search-field small { display: none; }
  #view-tickets .result-bar { flex-wrap: wrap; gap: 6px 12px; padding: 8px 0; }
  #view-tickets #ticket-list-print-area { overflow-x: auto; max-width: 100%; }
  #view-tickets #ticket-list-print-area table { table-layout: auto; min-width: 1760px; }
  #view-tickets #ticket-list-print-area :is(th, td) {
    width: auto; min-width: 70px; padding: 8px 10px; font-size: .875rem;
    word-break: normal; overflow-wrap: normal; line-height: 1.35; vertical-align: top;
  }
  #view-tickets #ticket-list-print-area :is(th, td):nth-child(1) { min-width: 170px; }
  #view-tickets #ticket-list-print-area :is(th, td):nth-child(3) { min-width: 145px; }
  #view-tickets #ticket-list-print-area :is(th, td):nth-child(5) { min-width: 210px; }
  #view-tickets #ticket-list-print-area :is(th, td):nth-child(10) { min-width: 190px; }
  #view-tickets #ticket-list-print-area :is(th, td):nth-child(11) { min-width: 170px; }
  #view-tickets #ticket-list-print-area :is(.ticket-primary-id, .ticket-customer-name) { font-size: .875rem; word-break: normal; overflow-wrap: break-word; }
  #view-tickets #ticket-list-print-area :is(.part-status, .next-action, .internal-note-cell, .csr-note-cell) {
    font-size: .875rem; line-height: 1.35; word-break: normal; overflow-wrap: break-word;
  }
  #view-tickets #ticket-list-print-area .internal-note-cell { background: transparent; border: 0; padding: 0; }
  #view-tickets #ticket-list-print-area .ticket-payment-alert-list { width: auto; padding: 5px 7px; }
}
@media screen and (min-width: 821px) {
  #view-tickets #ticket-list-print-area :is(th, td):nth-child(1) {
    position: sticky; left: 0; z-index: 1; background: #fff; box-shadow: 1px 0 #cbd2da;
  }
  #view-tickets #ticket-list-print-area :is(th, td):nth-child(10) {
    position: sticky; right: 0; z-index: 1; background: #fff; box-shadow: -1px 0 #cbd2da;
  }
  #view-tickets #ticket-list-print-area th:is(:nth-child(1), :nth-child(10)) { background: #eaf0f4; z-index: 2; }
}
@media screen and (max-width: 820px) {
  #view-tickets .dense-filters { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #view-tickets .ticket-search-field { grid-column: 1 / -1; }
  #view-tickets .dense-filters :is(input, select) { font-size: 1rem; min-height: 44px; }
  #view-tickets .dense-filters button { min-height: 44px; }
}
@media (max-width: 600px) {
  .service-part-bulk-actions { width: 100%; }
  .service-part-bulk-actions button { flex: 1; }
}

/* Compact parts costing: same inline entry flow, no additional editor. */
.parts-cost-panel { margin: 8px 0 14px; padding: 10px 0; border-block: 1px solid #cbd2da; }
.parts-cost-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.parts-cost-heading label { display: flex; align-items: center; gap: 8px; }
.parts-cost-heading input { width: 155px; min-height: 36px; }
.parts-cost-summary { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin: 8px 0; }
.parts-cost-summary > div { display: grid; gap: 2px; min-width: 0; }
.parts-cost-summary strong { font-size: 1.1rem; font-variant-numeric: tabular-nums; }
.parts-cost-summary small, #parts-cost-note { color: #526273; font-size: .8rem; }
.service-part-cost { display: flex; align-items: center; min-height: 36px; font-weight: 700; font-variant-numeric: tabular-nums; }
.part-price-field[hidden], #parts-cost-panel.hidden { display: none !important; }
@media (max-width: 600px) {
  .parts-cost-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .parts-cost-heading input { font-size: 16px; }
}
/* Intake exclusions: one compact control group; no automatic or hidden activation. */
.intake-exclusion-controls { margin: 12px 0; padding: 10px 12px; border-block: 1px solid #cbd5e1; background: #fff; color: #243444; }
.intake-exclusion-controls summary, .intake-exclude-menu summary { cursor: pointer; font-weight: 700; }
.intake-exclusion-controls p, .intake-exclusion-rule p { margin: 6px 0; }
.intake-exclusion-rule { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 0; border-top: 1px solid #e2e8f0; overflow-wrap: anywhere; }
.intake-exclusion-actions { display: flex; flex-wrap: wrap; gap: 6px; }
.intake-exclude-menu button { display: block; width: 100%; margin-top: 6px; }
.intake-exclude-menu > summary { display: list-item; list-style-position: inside; min-height: 36px; padding: 8px 12px; text-align: center; border: 1px solid #94a3b8; border-radius: 5px; color: #243444; background: #fff; }
.intake-exclude-menu > summary:focus-visible { outline: 2px solid #2458b8; outline-offset: 2px; }
.intake-exclude-explanation { max-width: 280px; text-align: left; overflow-wrap: anywhere; color: #243444; }
.intake-exclude-explanation p { margin: 8px 0; font-size: 14px; line-height: 1.4; }
.intake-filter-notice { padding: 7px 9px; background: #eef2f6; border-left: 3px solid #64748b; color: #243444; }
.intake-filter-notice[data-filter-state="trial"] { background: #fff8df; border-color: #916600; }
.intake-filter-notice[data-filter-state="protected"] { background: #eef4ff; border-color: #2458b8; }
#intake-exclusion-dialog { width: min(560px, calc(100vw - 24px)); max-height: calc(100dvh - 32px); overflow: auto; padding: 18px; border: 1px solid #aebbc8; border-radius: 10px; color: #243444; background: white; box-sizing: border-box; }
#intake-exclusion-dialog::backdrop { background: rgb(15 23 42 / 50%); }
#intake-exclusion-form { display: grid; gap: 12px; }
#intake-exclusion-form h3, #intake-exclusion-form p { margin: 0; }
#intake-exclusion-form label { display: grid; gap: 5px; font-size: 14px; }
#intake-exclusion-form input:not([type="checkbox"]) { width: 100%; min-width: 0; min-height: 40px; font-size: 16px; border: 1px solid #8b9baa; border-radius: 5px; padding: 8px; box-sizing: border-box; }
#intake-exclusion-form button { min-height: 40px; }
#intake-exclusion-confirm-row { grid-template-columns: auto 1fr; align-items: start; }
#intake-exclusion-confirm-row input { width: 20px; height: 20px; }
#intake-exclusion-preview { font-size: 14px; overflow-wrap: anywhere; }
#intake-exclusion-preview ul { padding-left: 20px; max-height: 180px; overflow: auto; }
@media (max-width: 600px) { .intake-exclusion-rule { align-items: stretch; flex-direction: column; } }

/* Office editing: readable controls and compact, recoverable drafts. */
.ticket-invoice-workspace, .invoice-editor, .invoice-ledger-grid > *, .invoice-footer-grid > * { min-width: 0; }
.invoice-ticket-snapshot label, .historical-visit-correction label { display: grid; gap: 5px; min-width: 0; }
.invoice-bill-grid label, .invoice-ticket-snapshot label, .invoice-notes-grid label,
.invoice-payment-panel form label, .invoice-claim-panel form label { font-size: 14px; }
.invoice-bill-grid input, .invoice-bill-grid select, .invoice-ticket-snapshot input,
.invoice-notes-grid textarea, .invoice-payment-panel input, .invoice-payment-panel select,
.invoice-claim-panel input, .invoice-claim-panel select, .invoice-lines-table input,
.invoice-lines-table select, .historical-visit-correction textarea {
  box-sizing: border-box; width: 100%; min-width: 0; min-height: 42px; padding: 8px;
  border: 1px solid #91aaa0; border-radius: 6px; font-size: 16px; color: #153f35; background: #fff;
}
.invoice-editor input:focus-visible, .invoice-editor select:focus-visible, .invoice-editor textarea:focus-visible,
.invoice-editor button:focus-visible, .historical-visit-correction :focus-visible { outline: 2px solid #2458b8; outline-offset: 2px; }
.invoice-payment-panel form.hidden, .invoice-claim-panel form.hidden { display: none !important; }
#invoice-payment-correction-form { margin-top: 12px; padding-top: 12px; border-top: 2px solid #9bb8ab; }
.invoice-payment-inactive { color: #5c6d66; background: #f0f3f1; }
.invoice-payment-list > div, .invoice-claim-link-list > div { flex-wrap: wrap; overflow-wrap: anywhere; }
.invoice-payment-list > div > span:last-child { display: flex; flex-wrap: wrap; gap: 6px; }
#invoice-event-list > div { align-items: flex-start; flex-wrap: wrap; overflow-wrap: anywhere; }
#invoice-event-list p { text-align: left; max-width: 100%; font-size: 14px; white-space: pre-wrap; }
.office-draft-recovery { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 8px; padding: 10px; background: #fff7df; color: #54410d; border: 1px solid #c9ac57; }
.office-draft-recovery textarea { flex-basis: 100%; width: 100%; min-height: 120px; font-size: 14px; }
.historical-visit-correction { margin-top: 10px; padding: 10px; border: 1px solid #b7cbc2; border-radius: 6px; background: #fff; }
.historical-visit-correction summary { cursor: pointer; font-weight: 700; min-height: 30px; }
.historical-visit-correction form { margin-top: 10px; grid-template-columns: repeat(2,minmax(0,1fr)); }
.historical-visit-correction p { grid-column: 1 / -1; margin: 0; font-size: 14px; color: #4c665b; }
.historical-save-status { align-self: center; font-size: 14px; color: #185b42; }
@media (max-width: 720px) {
  .invoice-lines-table { display: block; min-width: 0; table-layout: auto; }
  .invoice-lines-table thead { display: none; }
  .invoice-lines-table tbody { display: grid; gap: 10px; }
  .invoice-lines-table tr { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 8px; padding: 10px; border: 1px solid #bacdc3; border-radius: 8px; background: #f7faf8; }
  .invoice-lines-table td { display: grid; gap: 4px; min-width: 0; padding: 0; border: 0; }
  .invoice-lines-table td::before { font-size: 13px; font-weight: 700; color: #33584a; }
  .invoice-lines-table td:nth-child(1)::before { content: "Category"; }
  .invoice-lines-table td:nth-child(2) { grid-column: 1 / -1; }
  .invoice-lines-table td:nth-child(2)::before { content: "Description"; }
  .invoice-lines-table td:nth-child(3)::before { content: "Quantity"; }
  .invoice-lines-table td:nth-child(4)::before { content: "Unit price"; }
  .invoice-lines-table td:nth-child(5)::before { content: "Taxable"; }
  .invoice-lines-table td:nth-child(6)::before { content: "Line total"; }
  .invoice-lines-table td:nth-child(7) { grid-column: 2; justify-self: end; }
  .invoice-line-remove { width: 42px; height: 42px; }
  .invoice-ledger-grid { grid-template-columns: minmax(0,1fr); }
  .invoice-claim-panel form { grid-template-columns: minmax(0,1fr); }
  .invoice-claim-panel form button { min-height: 42px; }
}
