/* Generated by scripts/build-frontend.mjs. Edit the source files listed in src/bundles.json. */
/* Source: src/styles/tokens-components.css */
:root {
  --bg: #f3f5f7;
  --panel: #ffffff;
  --ink: #17202a;
  --muted: #667085;
  --line: #d9dee7;
  --accent: #17202a;
  --ok: #147a3d;
  --warn: #a15c00;
  --danger: #b42318;
  --radius: 18px;
}

* { box-sizing: border-box; }
html, body { margin: 0; min-height: 100%; background: var(--bg); color: var(--ink); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; }
button, input, select { font: inherit; }

.app-shell { max-width: 430px; min-height: 100vh; margin: 0 auto; background: var(--bg); }
.app-header { display: flex; gap: 12px; align-items: center; padding: 18px 18px 10px; position: sticky; top: 0; z-index: 5; background: rgba(243,245,247,.92); backdrop-filter: blur(10px); }
.brand-mark { width: 38px; height: 38px; border: 0; border-radius: 10px; background: var(--accent); color: #fff; display: grid; place-items: center; font-weight: 900; font-size: 18px; letter-spacing: -0.08em; cursor: pointer; box-shadow: 0 6px 16px rgba(16,24,40,.16); }
.brand-mark:active { transform: translateY(1px); }
.brand-title { font-weight: 800; font-size: 19px; }
.brand-subtitle { color: var(--muted); font-size: 12px; margin-top: 1px; }

.screen { padding: 12px 18px 28px; }
.hero { background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius); padding: 18px; box-shadow: 0 8px 24px rgba(16,24,40,.06); }
.h1 { font-size: 28px; line-height: 1.05; font-weight: 850; margin: 0 0 8px; letter-spacing: -0.04em; }
.h2 { font-size: 18px; font-weight: 800; margin: 22px 0 10px; }
.small { font-size: 13px; color: var(--muted); line-height: 1.35; }

.search-wrap { margin-top: 16px; position: relative; }
.search-input { width: 100%; border: 2px solid var(--accent); border-radius: 14px; padding: 15px 14px; font-size: 18px; outline: none; background: #fff; }
.search-input::placeholder { color: #98a2b3; }
.scan-note { margin-top: 10px; padding: 10px 12px; border: 1px dashed var(--line); border-radius: 12px; color: var(--muted); font-size: 12px; background: #fbfcfd; }

.result-card, .asset-card { background: var(--panel); border: 1px solid var(--line); border-radius: 16px; padding: 14px; margin-top: 12px; box-shadow: 0 4px 16px rgba(16,24,40,.04); }
.asset-card { cursor: pointer; }
.asset-card:active { transform: scale(.995); }
.asset-top { display: flex; justify-content: space-between; gap: 10px; align-items: flex-start; }
.asset-title { font-weight: 800; font-size: 17px; }
.asset-id { color: var(--muted); font-size: 12px; margin-top: 3px; }
.badge { border-radius: 999px; padding: 5px 9px; font-size: 12px; font-weight: 750; white-space: nowrap; background: #eef2f6; color: #344054; }
.badge.deployed { background: #e7f0ff; color: #174a9c; }
.badge.checked-in { background: #ecfdf3; color: var(--ok); }
.badge.collected { background: #fff4e5; color: var(--warn); }
.badge.available { background: #f2f4f7; color: #475467; }
.badge.not-available { background: #fef3f2; color: #b42318; }

.details { display: grid; gap: 9px; margin-top: 14px; }
.detail-row { display: grid; grid-template-columns: 118px 1fr; gap: 8px; font-size: 14px; }
.detail-label { color: var(--muted); }
.detail-value { font-weight: 650; overflow-wrap: anywhere; }
.location-callout { margin-top: 14px; padding: 14px; border-radius: 14px; background: #f8fafc; border: 1px solid var(--line); }
.location-label { color: var(--muted); font-size: 12px; }
.location-value { font-size: 24px; font-weight: 850; margin-top: 2px; letter-spacing: -0.03em; }

.actions { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 14px; }
.btn { border: 0; border-radius: 14px; padding: 14px 12px; font-weight: 800; cursor: pointer; }
.btn-primary { background: var(--accent); color: #fff; }
.btn-secondary { background: #eef2f6; color: var(--ink); }
.btn-danger { background: var(--danger); color: #fff; }
.btn-full { width: 100%; margin-top: 10px; }
.btn:active { transform: translateY(1px); }

.empty { text-align: center; color: var(--muted); padding: 24px 8px; }
.nav { display: grid; grid-template-columns: repeat(3,1fr); gap: 8px; margin-top: 14px; }
.nav button { border: 1px solid var(--line); border-radius: 14px; background: #fff; padding: 11px 6px; font-weight: 800; }

.recent-item { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 11px 0; border-bottom: 1px solid var(--line); cursor: pointer; }
.recent-item:last-child { border-bottom: 0; }
.toast { position: fixed; left: 50%; bottom: 24px; transform: translateX(-50%); background: #17202a; color: #fff; padding: 12px 16px; border-radius: 999px; font-weight: 750; font-size: 13px; box-shadow: 0 12px 28px rgba(0,0,0,.22); opacity: 0; pointer-events: none; transition: opacity .18s ease; }
.toast.show { opacity: 1; }

.home-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 18px; }
.big-action { border: 0; border-radius: 16px; background: var(--accent); color: #fff; min-height: 76px; font-weight: 850; font-size: 19px; cursor: pointer; }
.big-action.muted { background: #eef2f6; color: var(--ink); }
.home-actions {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin-top: 18px;
}
.home-action-card {
  width: 100%;
  border: 0;
  border-radius: 16px;
  background: #eef2f6;
  color: var(--ink);
  min-height: 64px;
  padding: 18px 20px;
  font-weight: 850;
  font-size: 18px;
  text-align: left;
  cursor: pointer;
  box-shadow: 0 4px 12px rgba(16, 24, 40, .06);
}
.home-action-card-primary {
  background: var(--accent);
  color: #fff;
  box-shadow: 0 8px 18px rgba(16, 24, 40, .10);
}
.home-action-card:active { transform: translateY(1px); }
.big-action:active { transform: translateY(1px); }
.home-grid.dashboard-actions { grid-template-columns: 1fr; gap: 12px; margin-top: 16px; }
.home-grid.dashboard-actions .big-action { width: 100%; min-height: 70px; font-size: 20px; }
.home-grid.phase-actions { grid-template-columns: 1fr; gap: 10px; margin-top: 14px; }
.home-grid.phase-actions .phase-action {
  width: 100%;
  min-height: 104px;
  padding: 14px 16px;
  text-align: left;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  gap: 5px;
}
.phase-action strong { font-size: 24px; }
.phase-action span { max-width: 270px; font-size: 13px; font-weight: 650; line-height: 1.35; opacity: .78; }
.workflow-menu-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 18px; }
.workflow-menu-grid .big-action { min-height: 84px; font-size: 17px; }
.menu-context-back { padding: 12px 14px 0; }
.field-label { display: block; margin: 16px 0 7px; color: var(--muted); font-size: 13px; font-weight: 750; }
.select-input { width: 100%; border: 2px solid var(--accent); border-radius: 14px; padding: 14px; font-size: 17px; background: #fff; }
.text-input { width: 100%; border: 2px solid var(--accent); border-radius: 14px; padding: 14px; font-size: 17px; background: #fff; }
.confirm-box { margin-top: 14px; padding: 12px; border-radius: 14px; background: #f8fafc; border: 1px solid var(--line); font-size: 13px; color: var(--muted); line-height: 1.35; }
.details.compact { margin-top: 10px; }

.planned-card {
  border: 1px solid rgba(255,255,255,0.14);
  border-radius: 18px;
  padding: 16px;
  margin: 16px 0;
  background: rgba(255,255,255,0.055);
}
.planned-card.warning {
  border-color: rgba(255, 196, 87, 0.45);
}
.planned-location {
  font-size: 24px;
  font-weight: 800;
  margin-top: 4px;
}
.next-action {
  margin-top: 16px;
  padding: 14px;
  border: 2px solid var(--accent);
  border-radius: 16px;
  background: #fff;
}

.top-actions { display: flex; gap: 10px; justify-content: space-between; margin-bottom: 14px; }
.top-actions .btn { width: auto; }

.room-card { background: var(--panel); border: 1px solid var(--line); border-radius: 16px; padding: 14px; margin-top: 12px; box-shadow: 0 4px 16px rgba(16,24,40,.04); cursor: pointer; }
.room-card:active { transform: scale(.995); }
.room-top { display: flex; justify-content: space-between; gap: 10px; align-items: center; }
.room-title { font-weight: 850; font-size: 18px; }
.room-count { color: var(--muted); font-size: 13px; margin-top: 3px; }
.subtle-link { border: 0; background: transparent; color: var(--muted); font-weight: 800; padding: 0; cursor: pointer; }
.success-actions { display: grid; grid-template-columns: 1fr; gap: 10px; margin-top: 14px; }


/* Keyboard focus remains visible in both contrast modes. */
button:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, summary:focus-visible, [tabindex]:focus-visible { outline: 3px solid #2563eb; outline-offset: 3px; }
html[data-theme="dark"] :focus-visible { outline-color: #93c5fd; }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; } }

.job-open-button { background: transparent; border: 0; padding: 0; color: inherit; text-align: left; cursor: pointer; font: inherit; font-weight: 700; }

/* Source: src/styles/beta-access.css */
/* Confidential beta / NDA gate */
.terms-gate {
  position: fixed;
  inset: 0;
  z-index: 9999;
  background: radial-gradient(circle at top, rgba(45, 87, 255, 0.18), transparent 35%), #07111f;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
  color: #f8fafc;
}

.terms-card {
  width: min(560px, 100%);
  background: rgba(15, 23, 42, 0.96);
  border: 1px solid rgba(148, 163, 184, 0.28);
  border-radius: 26px;
  box-shadow: 0 28px 80px rgba(0,0,0,0.45);
  padding: 28px;
}

.terms-logo {
  width: 46px;
  height: 46px;
  border-radius: 14px;
  display: grid;
  place-items: center;
  background: #f8fafc;
  margin-bottom: 18px;
  padding: 6px;
}
.terms-logo-img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
}

.terms-card h1 {
  margin: 0;
  font-size: 28px;
  line-height: 1.1;
  letter-spacing: -0.04em;
}

.terms-kicker {
  margin: 8px 0 22px;
  color: #93c5fd;
  font-weight: 700;
  text-transform: uppercase;
  font-size: 12px;
  letter-spacing: 0.12em;
}

.terms-body {
  display: grid;
  gap: 12px;
  margin-bottom: 20px;
  color: #dbeafe;
  font-size: 15px;
  line-height: 1.45;
}

.terms-body p { margin: 0; }

.terms-check {
  display: flex;
  gap: 12px;
  align-items: flex-start;
  padding: 14px;
  border: 1px solid rgba(148, 163, 184, 0.25);
  border-radius: 16px;
  background: rgba(255,255,255,0.04);
  margin-bottom: 16px;
  font-weight: 700;
}

.terms-check input {
  width: 20px;
  height: 20px;
  margin-top: 1px;
  accent-color: #60a5fa;
}

.terms-button {
  width: 100%;
  border: 0;
  border-radius: 16px;
  padding: 15px 18px;
  background: #3b82f6;
  color: white;
  font-weight: 900;
  font-size: 16px;
  cursor: pointer;
}

.terms-button:disabled {
  opacity: 0.42;
  cursor: not-allowed;
}

.terms-footer {
  margin: 18px 0 0;
  color: #94a3b8;
  font-size: 12px;
  text-align: center;
}

/* Source: src/styles/surfaces-forms.css */
/* Polishing pass */
.app-header { border-bottom: 1px solid rgba(217,222,231,.65); }
.brand-mark { font-family: ui-rounded, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; }
.hero { position: relative; overflow: hidden; }
.hero::after { content: ""; position: absolute; inset: auto -42px -52px auto; width: 130px; height: 130px; border-radius: 999px; background: rgba(23,32,42,.045); pointer-events: none; }
.project-strip { margin-top: 14px; padding: 12px 14px; border-radius: 14px; background: #f8fafc; border: 1px solid var(--line); display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.project-strip span { color: var(--muted); font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; }
.project-strip strong { font-size: 14px; text-align: right; }
.build-footer { margin-top: 18px; color: var(--muted); font-size: 11px; text-align: center; }
.big-action { box-shadow: 0 8px 18px rgba(16,24,40,.10); }
.big-action.muted { box-shadow: none; }
.result-card, .asset-card, .room-card { transition: transform .08s ease, box-shadow .12s ease; }
.asset-card:hover, .room-card:hover { box-shadow: 0 8px 22px rgba(16,24,40,.07); }
.next-action { box-shadow: 0 8px 22px rgba(16,24,40,.07); }
.empty strong { color: var(--ink); }
.terms-body { max-height: 34vh; overflow: auto; }
.terms-card { max-height: 92vh; overflow: auto; }
@media (max-width: 380px) {
  .home-grid { grid-template-columns: 1fr; }
  .actions { grid-template-columns: 1fr; }
  .detail-row { grid-template-columns: 104px 1fr; }
}

/* Inventory polish */
.compact-hero { padding-bottom: 16px; }
.csv-actions { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 10px; margin: 14px 0; }
.form-card, .batch-card { background: #fff; border: 1px solid rgba(15, 23, 42, .09); border-radius: 22px; padding: 16px; box-shadow: 0 12px 30px rgba(15, 23, 42, .07); margin: 14px 0; }
.form-grid { display: grid; grid-template-columns: 1fr; gap: 12px; }
.form-card label, .batch-card label { color: #334155; font-size: 12px; font-weight: 700; letter-spacing: .01em; display: block; }
.text-field, .text-area { width: 100%; box-sizing: border-box; margin-top: 6px; border: 1px solid rgba(15, 23, 42, .14); border-radius: 14px; padding: 12px; font-size: 16px; background: #f8fafc; color: #0f172a; }
.text-field:disabled { color: #64748b; background: #eef2f7; }
.text-area { min-height: 86px; resize: vertical; font-family: inherit; }
.compact-field { padding: 10px; font-size: 14px; }
.batch-card { display: grid; gap: 10px; }
@media (max-width: 420px) { .csv-actions { grid-template-columns: 1fr; } }

/* Source: src/styles/scanning.css */
/* Camera identification spike */
.search-wrap.with-camera {
  display: flex;
  gap: 8px;
  align-items: center;
}
.search-wrap.with-camera .search-input {
  flex: 1;
}
.camera-btn {
  width: 52px;
  min-height: 52px;
  border-radius: 16px;
  border: 1px solid rgba(0,0,0,.12);
  background: #ffffff;
  font-size: 22px;
  box-shadow: 0 8px 18px rgba(0,0,0,.06);
}
.scanner-box {
  border: 1px solid rgba(0,0,0,.12);
  border-radius: 20px;
  padding: 14px;
  background: #fff;
  margin: 16px 0;
}
.scanner-frame {
  height: 190px;
  border-radius: 16px;
  border: 2px dashed rgba(0,98,255,.35);
  display: grid;
  place-items: center;
  color: #1d5fd0;
  font-weight: 800;
  background: rgba(0,98,255,.05);
  margin-bottom: 10px;
}
.scanner-frame.live {
  position: relative;
  overflow: hidden;
  border: 0;
  background: #080a0d;
  color: #fff;
}
.scanner-frame.live video {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
}
.scanner-guide {
  position: absolute;
  inset: 18%;
  border: 2px solid rgba(255,255,255,.92);
  border-radius: 14px;
  box-shadow: 0 0 0 999px rgba(0,0,0,.22);
  pointer-events: none;
}
.scanner-guide span {
  position: absolute;
  left: 8%;
  right: 8%;
  top: 50%;
  height: 2px;
  background: #ff3b30;
  box-shadow: 0 0 8px rgba(255,59,48,.85);
}
.camera-status {
  min-height: 38px;
  padding: 10px 12px;
  border-radius: 12px;
  background: rgba(0,98,255,.08);
  color: #174ea6;
  font-size: 13px;
  font-weight: 750;
  line-height: 1.35;
}
.camera-status.error {
  background: rgba(190,24,93,.08);
  color: #9f1239;
}
.camera-count {
  margin-top: 8px;
  text-align: right;
  color: #475569;
  font-size: 12px;
  font-weight: 800;
}
.camera-manual-entry { margin: 12px 0; }
.camera-manual-entry .search-scan-row { padding: 8px 0 0; }
.camera-actions { margin-top: 12px; }
.file-input {
  width: 100%;
  padding: 14px;
  border: 1px solid rgba(0,0,0,.12);
  border-radius: 16px;
  background: #fff;
  margin: 12px 0;
}
.ocr-box {
  width: 100%;
  min-height: 130px;
  border-radius: 16px;
  border: 1px solid rgba(0,0,0,.12);
  padding: 14px;
  font: inherit;
  box-sizing: border-box;
  margin-bottom: 12px;
}
.candidate {
  display: block;
  width: 100%;
  text-align: left;
  padding: 14px 16px;
  margin: 8px 0;
  border-radius: 16px;
  border: 1px solid rgba(0,98,255,.18);
  background: rgba(0,98,255,.06);
  font-weight: 800;
  color: #113d85;
}
.identifier-pill {
  display: inline-block;
  margin: 14px 0;
  padding: 12px 16px;
  border-radius: 999px;
  background: rgba(0,98,255,.08);
  font-weight: 900;
}
.actions.vertical {
  display: grid;
  gap: 10px;
}

/* Source: src/styles/history.css */
/* Local DB / Undo / History */
.undo-bar {
  position: sticky;
  top: 72px;
  z-index: 20;
  margin: 0 14px 10px;
  padding: 10px 12px;
  border-radius: 16px;
  background: #111827;
  color: white;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  font-weight: 700;
  box-shadow: 0 10px 24px rgba(0,0,0,.18);
}
.undo-bar button {
  border: 0;
  background: white;
  color: #111827;
  border-radius: 999px;
  padding: 8px 14px;
  font-weight: 900;
}
.history-card {
  margin-top: 18px;
  padding: 14px;
  border-radius: 18px;
  background: #ffffff;
  border: 1px solid rgba(0,0,0,.08);
}
.history-item {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 0;
  border-top: 1px solid rgba(0,0,0,.06);
}
.history-item:first-of-type {
  border-top: 0;
}
.history-line {
  display: block;
  overflow-x: auto;
  white-space: nowrap;
  line-height: 1.5;
  -webkit-overflow-scrolling: touch;
}
.history-line a {
  font-weight: 800;
  color: inherit;
}

/* Source: src/styles/nda.css */
/* Deterministic NDA gate */
.hidden {
  display: none !important;
}
.nda-gate {
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: 22px;
  background: linear-gradient(180deg, #f7f9fc 0%, #eef4ff 100%);
  box-sizing: border-box;
}
.nda-card {
  width: min(560px, 100%);
  background: #fff;
  border-radius: 28px;
  padding: 26px;
  box-shadow: 0 24px 70px rgba(15, 23, 42, .16);
  border: 1px solid rgba(0, 0, 0, .08);
}
.nda-card h1 {
  margin: 12px 0 8px;
  font-size: 28px;
}
.nda-card p {
  color: #344054;
  line-height: 1.45;
}
.nda-check {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  padding: 14px;
  margin: 16px 0;
  border-radius: 18px;
  background: rgba(0,98,255,.06);
  font-weight: 800;
}
.nda-check input {
  margin-top: 3px;
}
.nda-footer {
  margin-top: 14px;
  text-align: center;
  color: #667085;
  font-size: 12px;
}

/* Source: src/styles/device-frame.css */
/* iPhone-style presentation frame restored */
html,
body {
  min-height: 100%;
}

body {
  margin: 0;
  background: #dfe7f3;
}

.phone-stage {
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: 18px;
  box-sizing: border-box;
  background:
    radial-gradient(circle at top left, rgba(0,98,255,.12), transparent 32%),
    linear-gradient(180deg, #f3f6fb 0%, #dfe7f3 100%);
}

.phone-shell {
  width: min(430px, 100%);
  height: min(920px, calc(100vh - 36px));
  min-height: 720px;
  overflow: auto;
  border-radius: 42px;
  background: #f7f9fc;
  box-shadow:
    0 28px 80px rgba(15, 23, 42, .28),
    inset 0 0 0 1px rgba(255,255,255,.85);
  border: 10px solid #111827;
  position: relative;
}

.phone-shell::before {
  content: "";
  position: sticky;
  top: 8px;
  left: 50%;
  transform: translateX(-50%);
  display: block;
  width: 118px;
  height: 28px;
  margin: 8px auto -36px;
  border-radius: 999px;
  background: #111827;
  z-index: 999;
}

.phone-shell #app,
.phone-shell .nda-gate {
  width: 100%;
  min-height: 100%;
  box-sizing: border-box;
}

.phone-shell .nda-gate {
  padding: 52px 18px 22px;
  display: grid;
  place-items: center;
  background: linear-gradient(180deg, #f7f9fc 0%, #eef4ff 100%);
}

.phone-shell .nda-card {
  width: 100%;
  box-sizing: border-box;
  border-radius: 28px;
  padding: 22px;
}

.phone-shell .nda-card h1 {
  font-size: 24px;
}

.phone-shell .app-header {
  position: sticky;
  top: 0;
  z-index: 50;
  /* Keep the preview header below its simulated iPhone camera island. */
  padding-top: 50px;
}

@media (max-width: 520px) {
  .phone-stage {
    padding: 0;
    display: block;
  }

  .phone-shell {
    width: 100vw;
    height: 100vh;
    min-height: 100vh;
    border: 0;
    border-radius: 0;
    box-shadow: none;
  }

  .phone-shell::before {
    display: none;
  }

  .phone-shell .app-header {
    /* viewport-fit=cover requires explicit clearance for a real iPhone notch/island. */
    padding-top: calc(14px + max(env(safe-area-inset-top, 0px), var(--safe-area-inset-top, 0px)));
  }
}

/* Source: src/styles/jobs.css */
/* Jobs restored */
.job-list {
  display: grid;
  gap: 12px;
  padding: 0 14px 18px;
}
.job-card {
  padding: 16px;
  border-radius: 20px;
  background: #fff;
  border: 1px solid rgba(0,0,0,.08);
  box-shadow: 0 10px 24px rgba(0,0,0,.05);
  cursor: pointer;
}
.job-card-body {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
}
.job-delete-confirm {
  display: grid;
  gap: 8px;
  min-width: 132px;
}
.job-delete-warning {
  font-size: 12px;
  line-height: 1.35;
  color: var(--danger);
  padding: 0 2px;
}
.settings-job-list {
  display: grid;
  gap: 12px;
}
.settings-job-row {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 12px;
  padding-top: 12px;
  border-top: 1px solid var(--line);
}
.settings-job-row:first-child {
  padding-top: 0;
  border-top: 0;
}
.settings-delete-btn {
  flex-shrink: 0;
}
.job-card.active {
  border-color: rgba(0,98,255,.35);
  background: rgba(0,98,255,.05);
}
html:not([data-theme="dark"]) .job-card.active .small {
  color: #596477;
}
.form-card label {
  display: grid;
  gap: 6px;
  font-weight: 800;
  margin-bottom: 12px;
}
.form-card input,
.form-card textarea {
  width: 100%;
  box-sizing: border-box;
  border: 1px solid rgba(0,0,0,.12);
  border-radius: 14px;
  padding: 12px 14px;
  font: inherit;
}
.form-card textarea {
  min-height: 90px;
}

/* Source: src/styles/navigation.css */
/* Universal no-dead-end header */
.app-header {
  position: sticky;
  top: 0;
  z-index: 100;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 16px 12px;
  background: rgba(247, 249, 252, .94);
  backdrop-filter: blur(14px);
  border-bottom: 1px solid rgba(0,0,0,.06);
}
.app-header-title {
  flex: 1;
  min-width: 0;
}
.logo-home {
  width: 42px;
  height: 42px;
  border-radius: 14px;
  border: 0;
  background: #111827;
  padding: 6px;
  cursor: pointer;
}
.logo-home-img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
}
.brand {
  font-weight: 900;
  font-size: 16px;
}
.subbrand {
  font-size: 12px;
  color: var(--muted);
}

.settings-cog-btn {
  width: 42px;
  height: 42px;
  border-radius: 14px;
  border: 1px solid rgba(0,0,0,.08);
  background: #fff;
  color: #334155;
  display: grid;
  place-items: center;
  flex-shrink: 0;
  margin-left: auto;
  cursor: pointer;
  box-shadow: 0 4px 12px rgba(0,0,0,.04);
}

.settings-cog-btn:active {
  transform: translateY(1px);
}

.settings-cog-btn.active {
  background: rgba(0,98,255,.1);
  border-color: rgba(0,98,255,.28);
  color: #0062ff;
}

/* Source: src/styles/locations.css */
/* Locations */
.location-list {
  display: grid;
  gap: 12px;
  padding: 0 14px 18px;
}
.location-card {
  padding: 16px;
  border-radius: 20px;
  background: #fff;
  border: 1px solid rgba(0,0,0,.08);
  box-shadow: 0 10px 24px rgba(0,0,0,.05);
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
}

/* Source: src/styles/lists.css */
/* Real visible search/list screens */
.list-hero {
  margin-bottom: 8px !important;
  padding-bottom: 12px !important;
}
.search-scan-row {
  display: flex;
  gap: 8px;
  align-items: center;
  margin-top: 12px;
}


/* Hard fixed searchable list pages */
.list-page-header {
  padding: 18px 16px 10px;
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.inventory-header-actions {
  display: flex;
  align-items: center;
  gap: 8px;
}

/* Source: src/styles/inventory-scan-controls.css */
.scan-update-setup,
.scan-update-scanner {
  margin: 10px 0;
  padding: 12px;
  border-radius: 16px;
  box-shadow: none;
}
.scan-update-setup { display: grid; gap: 10px; }
.scan-update-setup label { margin-bottom: 0; }
.scan-update-screen .btn { min-height: 52px; }
.scan-update-screen .select-input,
.scan-update-screen .search-input,
.scan-update-screen .text-input { min-height: 52px; padding: 12px; font-size: 16px; }
.scan-update-scanner .settings-section-title { margin: 0 0 4px; }
.scan-update-scanner .search-scan-row { margin-top: 8px; padding: 0; }
.scan-update-scanner .scan-icon-btn { flex: 0 0 52px; width: 52px; height: 52px; }
.scan-update-screen .visible-list { padding: 0 0 12px; }
.scan-update-screen .list-heading { padding: 4px 0 8px; }
.scan-update-screen .asset-card { padding: 12px; margin: 8px 0; }
.scan-update-screen .asset-title { font-size: 15px; }
.scan-update-screen .compact-hero { padding: 14px; }
.work-empty { display: grid; gap: 10px; text-align: left; padding: 16px; background: var(--panel); border: 1px solid var(--line); border-radius: 16px; }
.work-empty strong { color: var(--ink); }
.work-empty .btn { justify-self: start; min-height: 52px; }

.scan-update-message {
  margin-top: 10px;
  padding: 10px 12px;
  border-radius: 12px;
  background: rgba(0, 98, 255, .08);
  color: #174ea6;
  font-size: 13px;
  font-weight: 750;
}
.inventory-quick-filters {
  display: grid;
  gap: 9px;
  margin: 0 14px 14px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: var(--panel);
  box-shadow: 0 4px 16px rgba(16,24,40,.04);
}
.inventory-filter-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 7px;
  padding-bottom: 2px;
}
.inventory-filter-label {
  flex: 0 0 auto;
  min-width: 62px;
  color: var(--muted);
  font-size: 11px;
  font-weight: 850;
  letter-spacing: .04em;
  text-transform: uppercase;
}
.filter-chip {
  min-height: 34px;
  padding: 7px 11px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--panel);
  color: var(--text);
  font-size: 12px;
  font-weight: 800;
  white-space: nowrap;
  cursor: pointer;
}
.filter-chip.active {
  border-color: var(--accent);
  background: var(--accent);
  color: #fff;
}
.assign-filter-toggle {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
  margin-top: 12px;
}
.assign-filter-toggle .filter-chip {
  width: 100%;
  min-height: 40px;
}
.inventory-location-filter {
  display: grid;
  grid-template-columns: 62px minmax(0, 1fr);
  align-items: center;
  gap: 7px;
}
.inventory-location-filter .select-input {
  min-height: 40px;
  margin: 0;
  padding-top: 8px;
  padding-bottom: 8px;
}
.btn:disabled {
  opacity: .45;
  cursor: not-allowed;
}
.scan-update-filters {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 140px;
  align-items: end;
  gap: 10px;
  padding: 0 0 10px;
}
.scan-update-filters label {
  display: grid;
  gap: 6px;
  font-size: 12px;
  font-weight: 800;
}
@media (max-width: 540px) {
  .inventory-header-actions { flex-wrap: nowrap; justify-content: flex-end; gap: 6px; }
  .inventory-header-actions .btn { padding: 10px 9px; font-size: 13px; white-space: nowrap; }
  .scan-update-filters { gap: 8px; }
  .scan-update-filters .btn { max-width: 140px; min-height: 52px; padding: 12px; font-size: 14px; }
}
.search-scan-row {
  display: flex !important;
  gap: 8px;
  align-items: center;
  padding: 0 16px 12px;
}
.search-scan-row .search-input {
  flex: 1;
}
.scan-icon-btn {
  width: 46px;
  height: 46px;
  border-radius: 16px;
  border: 1px solid rgba(0,0,0,.08);
  background: #fff;
  font-size: 20px;
  box-shadow: 0 8px 18px rgba(0,0,0,.04);
}
.list-heading {
  padding: 4px 16px 8px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-weight: 900;
  color: #111827;
}
.list-heading span {
  color: #667085;
  font-size: 12px;
}
.visible-list {
  padding: 0 14px 18px;
}
.visible-list .asset-card,
.visible-list .location-card {
  margin-bottom: 12px;
}
.inventory-screen .hero,
.locations-screen .hero {
  display: none !important;
}

/* Source: src/styles/field-batches.css */
.assign-destination {
  padding: 18px 16px 12px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  background: rgba(0,98,255,.06);
  border-bottom: 1px solid rgba(0,0,0,.06);
}
.assign-session-footer {
  position: sticky;
  bottom: 0;
  background: rgba(247,249,252,.96);
  backdrop-filter: blur(12px);
  border-top: 1px solid rgba(0,0,0,.08);
  padding: 12px 16px;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 14px;
}
.batch-action-footer {
  flex-direction: row;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 8px 0 max(8px, env(safe-area-inset-bottom, 0px), var(--safe-area-inset-bottom, 0px));
}
.assign-session-actions {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.inventory-delete-footer {
  z-index: 6;
}
.inventory-delete-actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}
.inventory-delete-footer .small {
  margin-top: 4px;
  line-height: 1.35;
}
.assign-undo-btn {
  margin-top: 6px;
  border-top: 1px solid rgba(0, 0, 0, .08);
  padding-top: 14px;
  background: #fff;
  color: var(--muted);
}
.assign-results { padding-bottom: 90px; }
.cloud-batch-screen .visible-list { padding-bottom: 12px; }
.my-work-group { margin-bottom: 14px; }
.my-work-group > .small { padding: 0 4px 5px; font-weight: 700; }
.my-work-activity-heading { margin-top: 22px; }
.my-work-activity { margin-top: 0; }
.my-work-activity-line[role="button"] { cursor: pointer; }
.compact-inventory-list .compact-asset-card {
  margin-top: 7px;
  margin-bottom: 7px;
  padding: 10px 12px;
  border-radius: 14px;
}
.compact-asset-card .asset-top {
  align-items: center;
}
.compact-asset-identity {
  min-width: 0;
}
.compact-asset-card .asset-title {
  overflow: hidden;
  font-size: 15px;
  line-height: 1.2;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.compact-asset-card .asset-id {
  margin-top: 2px;
}
.compact-asset-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 3px 14px;
  margin-top: 7px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.25;
}
.sync-status {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 9px 14px;
  background: #ecfdf3;
  color: #067647;
  border-bottom: 1px solid rgba(6, 118, 71, .18);
  font-size: 12px;
  font-weight: 800;
}
.sync-status.pending { background: #fffaeb; color: #b54708; border-bottom-color: rgba(181, 71, 8, .2); }
.sync-status button { border: 0; background: transparent; color: inherit; font-weight: 900; text-decoration: underline; cursor: pointer; }
.prestage-controls { margin-bottom: 12px; }
.prestage-results { padding-bottom: 150px; }
.prestage-asset { cursor: pointer; }
.prestage-asset.selected {
  border-color: var(--accent);
  box-shadow: 0 0 0 2px rgba(0,98,255,.16), 0 10px 24px rgba(0,0,0,.05);
}
.prestage-check {
  width: 28px;
  height: 28px;
  border-radius: 9px;
  border: 2px solid rgba(0,0,0,.16);
  display: grid;
  place-items: center;
  flex-shrink: 0;
  font-weight: 900;
}
.operation-card-right {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}
.prestage-asset.selected .prestage-check {
  background: var(--accent);
  border-color: var(--accent);
  color: #fff;
}
.prestage-session-footer { z-index: 5; }
.prestage-session-footer .batch-action-footer {
  flex-direction: row;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 8px 0 max(8px, env(safe-area-inset-bottom, 0px), var(--safe-area-inset-bottom, 0px));
}
.batch-action-footer > div { flex: 0 0 auto; font-size: 13px; }
.batch-action-footer > .btn { flex: 1; min-height: 52px; max-width: 72%; padding: 12px; font-size: 16px; }
.assign-session-actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}
.prestage-session-footer .btn { min-height: 48px; }

.home-actions.stacked{display:flex!important;flex-direction:column!important;gap:16px!important}
.home-actions.stacked>*{width:100%!important;flex:none!important}


.deploy-shortcuts { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 8px; margin-bottom: 14px; }
.deploy-shortcuts .btn { min-height: 48px; padding: 10px 6px; white-space: normal; font-size: 13px; }

.deployment-photo-overlay { position: fixed; inset: 0; z-index: 1000; background: rgba(0,0,0,.65); display: grid; place-items: center; padding: 20px; }
.deployment-photo-dialog { background: var(--panel); color: var(--ink); border: 1px solid var(--line); border-radius: 18px; padding: 22px; width: 100%; max-width: 400px; max-height: 90dvh; overflow: auto; }
.deployment-photo-dialog h2 { margin-top: 0; }
.deployment-photo-dialog input { max-width: 100%; margin-top: 12px; }
.deployment-photo-actions { display: flex; gap: 10px; margin-top: 20px; }
.deployment-photo-actions .btn { flex: 1; }

.field-selection-tools { display:flex; flex-wrap:wrap; gap:8px; margin:12px 0; }
.field-selection-tools .btn { min-height:48px; }
.field-item-check { width:24px; height:24px; accent-color:var(--accent); flex-shrink:0; cursor:pointer; }
.workflow-menu-grid .big-action .small { display:block; margin-top:8px; font-weight:400; }

.cloud-batch-screen .batch-action-footer > div { min-width:0; flex:1; overflow-wrap:anywhere; }
.cloud-batch-screen .batch-action-footer > .btn { flex:1.5; }

.field-placement summary { min-height:44px; padding-top:12px; cursor:pointer; font-size:13px; font-weight:700; }

/* Source: src/styles/subscription.css */
.subscription-strip {
  margin: 14px 0 10px;
  padding: 12px 14px;
  border-radius: 16px;
  border: 1px solid rgba(0, 98, 255, .14);
  background: rgba(0, 98, 255, .05);
  cursor: pointer;
  display: grid;
  gap: 4px;
}
.subscription-strip.limited {
  border-color: rgba(245, 158, 11, .28);
  background: rgba(245, 158, 11, .08);
}
.subscription-strip.subscribed {
  border-color: rgba(16, 185, 129, .24);
  background: rgba(16, 185, 129, .08);
}
.subscription-badge {
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .02em;
  text-transform: uppercase;
  color: #0f172a;
}
.subscription-detail {
  font-size: 12px;
  color: #475467;
}
.subscription-cta {
  font-size: 12px;
  font-weight: 800;
  color: #0062ff;
}
.unlock-code-input {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
  font-size: 22px;
  letter-spacing: .18em;
  text-align: center;
  text-transform: uppercase;
}
.subscription-error {
  margin-top: 10px;
  padding: 10px 12px;
  border-radius: 12px;
  background: rgba(239, 68, 68, .08);
  border: 1px solid rgba(239, 68, 68, .18);
  color: #b42318;
  font-size: 13px;
  font-weight: 700;
}
.subscription-status-card {
  text-align: center;
}
.subscription-unlocked {
  font-size: 18px;
  font-weight: 900;
  color: #067647;
  margin-bottom: 8px;
}


.subscription-config { display: grid; gap: 14px; }
.subscription-config h2, .subscription-config p { margin: 0; }
.subscription-config label { display: grid; gap: 7px; font-weight: 700; }
.subscription-config label .small { font-weight: 400; }
.subscription-capacity-fields { display: grid; gap: 18px; }
.subscription-config input, .subscription-config select {
  width: 100%; min-width: 0; min-height: 48px; padding: 11px;
  border: 1px solid var(--line); border-radius: 10px;
  background: var(--panel); color: var(--ink);
}
.subscription-config :focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
.subscription-price-breakdown { margin: 0; display: grid; gap: 10px; font-size: 14px; }
.subscription-price-breakdown > div { display: flex; justify-content: space-between; gap: 14px; }
.subscription-price-breakdown dd { margin: 0; font-weight: 750; white-space: nowrap; }
.subscription-quote-total { border-top: 1px solid var(--line); padding-top: 16px; display: grid; gap: 6px; }
.subscription-quote-total strong { font-size: 32px; letter-spacing: -.03em; }
.subscription-quote-total small { font-size: 13px; color: var(--muted); letter-spacing: normal; }
.subscription-draft-actions { display: grid; gap: 10px; }

.billing-overview { display: grid; gap: 12px; }
.billing-overview p { margin: 0; }
.billing-overview .btn { white-space: normal; text-align: center; }
.billing-overview button:disabled { opacity: .65; cursor: not-allowed; }

/* StoreKit billing controls. Keep these in source, not generated styles.css. */
.billing-overview h2 { margin: 0; font-size: 22px; line-height: 1.2; }
.billing-overview { gap: 16px; }
.billing-overview > p { font-size: 14px; line-height: 1.5; }
.billing-plan-options, .billing-account-actions { display: grid; gap: 12px; min-width: 0; }
.billing-plan-options .btn { display: grid; gap: 6px; width: 100%; min-height: 76px; padding: 16px; border: 1px solid var(--line); border-radius: 12px; background: var(--panel); text-align: left; }
.billing-plan-options .btn span:first-child { font-size: 17px; font-weight: 750; }
.billing-plan-options .btn span:last-child { font-size: 15px; font-weight: 500; color: var(--muted); }
.billing-plan-options .billing-current-plan { border-color: var(--accent); }
.billing-account-actions { margin-top: 4px; padding-top: 16px; border-top: 1px solid var(--line); }
.billing-account-actions .btn { width: 100%; min-height: 48px; padding: 12px; border-radius: 12px; font-size: 15px; font-weight: 650; }

/* Source: src/styles/administration.css */
.settings-home-btn {
  margin-top: 12px;
}

.settings-section {
  margin-top: 0;
}

.settings-section-title {
  font-size: 13px;
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: .06em;
  color: var(--ink);
  margin-bottom: 12px;
}

.settings-section-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 12px;
}

.settings-section-heading .settings-section-title { margin-bottom: 0; }
.settings-add-event-btn { padding: 10px 12px; white-space: nowrap; }
.people-no-events .btn { margin-right: auto; margin-left: auto; }

.settings-section-desc {
  margin-bottom: 12px;
}

.backup-actions {
  display: grid;
  gap: 9px;
}

.backup-explanation,
.backup-message {
  margin: 12px 0 0;
}

.backup-summary {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  margin: 14px 0;
}

.backup-summary span {
  padding: 9px 10px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--panel-soft, #f8fafc);
  font-size: 12px;
}

.backup-summary strong {
  display: block;
  font-size: 16px;
}

.settings-logout-actions {
  margin-top: 24px;
  padding-bottom: 8px;
}

.auth-gate {
  min-height: 100%;
  padding: 64px 18px 28px;
  display: grid;
  place-items: center;
  background: linear-gradient(180deg, #f7f9fc 0%, #eef4ff 100%);
}

.auth-card {
  width: 100%;
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: 28px;
  padding: 22px;
  box-shadow: 0 18px 45px rgba(16, 24, 40, .12);
}

.auth-card h1 {
  margin: 0 0 10px;
  font-size: 28px;
  letter-spacing: -.04em;
}

.auth-card form label {
  display: grid;
  gap: 7px;
  font-size: 13px;
  font-weight: 800;
}

.auth-card input {
  width: 100%;
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 13px 14px;
  background: #fff;
  color: #17202a;
}

.auth-kicker {
  margin-bottom: 8px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .12em;
  text-transform: uppercase;
}

.auth-provider { margin-top: 20px; }
.auth-divider { display: flex; align-items: center; gap: 12px; margin: 18px 0; color: var(--muted); font-size: 12px; }
.auth-divider::before, .auth-divider::after { content: ''; height: 1px; flex: 1; background: var(--line); }
.auth-message { min-height: 38px; padding-top: 14px; color: var(--muted); font-size: 13px; line-height: 1.4; }
.auth-message.error { color: var(--danger); }
.auth-account-notice { margin-top: 12px; padding: 10px 12px; border-radius: 12px; background: #fff4e5; color: var(--warn); font-size: 13px; font-weight: 700; }

.access-request-panel {
  margin-top: 8px;
  padding: 12px 14px;
  border: 1px solid var(--line);
  border-radius: 16px;
}

.access-request-panel summary {
  cursor: pointer;
  font-weight: 900;
  color: var(--ink);
}

.access-request-panel form,
.people-invite-form {
  display: grid;
  gap: 12px;
  margin-top: 14px;
}

.people-message {
  margin-bottom: 12px;
  padding: 11px 13px;
  border: 1px solid rgba(16, 185, 129, .24);
  border-radius: 12px;
  background: rgba(16, 185, 129, .08);
  color: #067647;
  font-size: 13px;
  font-weight: 700;
}

.people-list {
  display: grid;
  gap: 10px;
}

.people-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 0;
  border-top: 1px solid var(--line);
}

.people-row:first-child { border-top: 0; }
.people-row-main { min-width: 0; }
.people-meta { display: flex; align-items: center; gap: 10px; }

.people-user-row {
  width: 100%;
}

.people-user-link {
  min-width: 0;
  padding: 7px 4px;
  border: 0;
  border-radius: 10px;
  background: transparent;
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
}

.people-user-link:hover .settings-row-label,
.people-user-link:focus-visible .settings-row-label {
  text-decoration: underline;
}

.people-row-chevron {
  color: var(--muted);
  font-size: 24px;
  font-weight: 700;
  line-height: 1;
}

.people-detail-view {
  display: grid;
  gap: 14px;
}

.people-detail-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}

.event-access-note { margin: 10px 0; }

.people-review-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  justify-content: flex-end;
}

.people-review-actions select { min-width: 130px; }

.event-access-fieldset {
  margin: 0;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 14px;
}

.event-access-fieldset legend {
  padding: 0 6px;
  color: var(--ink);
  font-size: 12px;
  font-weight: 800;
}

.event-access-panel {
  width: 100%;
  padding: 9px 11px;
  border: 1px solid var(--line);
  border-radius: 12px;
}

.event-access-panel summary {
  cursor: pointer;
  color: var(--ink);
  font-size: 13px;
  font-weight: 800;
}

.event-choice-list {
  display: grid;
  gap: 7px;
  margin: 10px 0;
}

.event-choice {
  display: flex !important;
  align-items: flex-start;
  gap: 9px;
  padding: 9px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--panel);
  cursor: pointer;
}

.event-choice input { margin-top: 2px; }
.event-choice span { display: grid; gap: 2px; }
.event-choice small { color: var(--muted); font-weight: 500; }

.company-code {
  margin: 12px 0;
  padding: 14px;
  border: 1px dashed var(--ink);
  border-radius: 14px;
  text-align: center;
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
  font-size: 22px;
  font-weight: 900;
  letter-spacing: .08em;
  color: var(--ink);
  user-select: all;
}

@media (max-width: 560px) {
  .people-row { align-items: flex-start; flex-direction: column; }
  .people-meta, .people-review-actions { width: 100%; justify-content: flex-start; }
}

.settings-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}

.settings-row-label {
  font-weight: 800;
  font-size: 15px;
  color: var(--ink);
}

.theme-toggle {
  position: relative;
  display: inline-flex;
  align-items: center;
  flex-shrink: 0;
  cursor: pointer;
}

.theme-toggle input {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}

.theme-toggle-track {
  width: 52px;
  height: 30px;
  border-radius: 999px;
  background: #cbd5e1;
  border: 1px solid rgba(0,0,0,.08);
  position: relative;
  transition: background .2s ease;
}

.theme-toggle-thumb {
  position: absolute;
  top: 3px;
  left: 3px;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 2px 6px rgba(0,0,0,.18);
  transition: transform .2s ease;
}

.theme-toggle input:checked + .theme-toggle-track {
  background: #17202a;
}

.theme-toggle input:checked + .theme-toggle-track .theme-toggle-thumb {
  transform: translateX(22px);
}


/* People administration owns one viewport; only the selected content scrolls. */
.phone-shell:has(.people-admin-screen, .settings-menu-screen, .current-job-screen) { overflow: hidden; }
.phone-shell:has(.people-admin-screen, .settings-menu-screen, .current-job-screen) #app {
  height: 100%; min-height: 0; display: flex; flex-direction: column; overflow: hidden;
}
.phone-shell:has(.people-admin-screen, .settings-menu-screen, .current-job-screen) .app-header,
.phone-shell:has(.people-admin-screen, .settings-menu-screen, .current-job-screen) .sync-status { flex-shrink: 0; }
.people-admin-screen {
  flex: 1; min-height: 0; width: 100%; box-sizing: border-box;
  display: flex; flex-direction: column; gap: 10px; overflow: hidden;
  padding-bottom: max(12px, env(safe-area-inset-bottom, 0px), var(--safe-area-inset-bottom, 0px));
}
.people-admin-screen > .btn { align-self: flex-start; flex-shrink: 0; }
.people-admin-screen > .hero { flex-shrink: 0; margin: 0; padding: 10px 0; background: none; }
.people-submenu { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; flex-shrink: 0; }
.people-submenu .btn { min-height: 44px; padding: 9px; }
.people-section-content { flex: 1; min-height: 0; overflow: auto; overscroll-behavior: contain; }
.people-users-pane { display: flex; flex-direction: column; overflow: hidden; }
.people-users-pane > .people-message, .people-users-pane > .subscription-error { flex-shrink: 0; }
.people-users-card { display: flex; flex-direction: column; flex: 1; min-height: 0; margin: 0; }
.people-users-card > .settings-section-title, .people-users-card > .settings-section-desc { flex-shrink: 0; }
.people-users-card > .people-list { flex: 1; min-height: 0; overflow: auto; overscroll-behavior: contain; display: block; }
@media (min-width: 700px), (max-height: 500px) {
  .people-submenu { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .people-submenu .btn { font-size: 12px; }
}
@media (max-height: 500px) {
  .people-admin-screen > .hero .small { display: none; }
  .people-admin-screen { gap: 6px; }
  .people-admin-screen > .hero { padding: 0; }
}

.settings-menu-screen, .current-job-screen {
  flex: 1; min-height: 0; display: flex; flex-direction: column; gap: 10px; overflow: hidden;
}
.settings-menu-screen > .btn, .current-job-screen > .btn { align-self: flex-start; flex-shrink: 0; }
.settings-menu-screen > .hero, .current-job-screen > .hero { flex-shrink: 0; margin: 0; padding: 10px 0; }
.settings-menu-content { min-height: 0; overflow: auto; overscroll-behavior: contain; }
.settings-submenu { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin-bottom: 12px; }
.settings-menu-item { display: flex; align-items: center; justify-content: space-between; gap: 8px; text-align: left; min-height: 66px; white-space: normal; }
.settings-menu-item span { min-width: 0; }
.settings-menu-item strong, .settings-menu-item small { display: block; overflow-wrap: anywhere; }
.settings-menu-item small { font-size: 12px; font-weight: 400; margin-top: 4px; }
.current-job-card { flex: 1; min-height: 0; display: flex; flex-direction: column; margin: 0; }
.current-job-card > .settings-job-list { flex: 1; min-height: 0; overflow: auto; overscroll-behavior: contain; }

.settings-account-row, .settings-current-job { border: 1px solid var(--line); border-radius: 12px; background: var(--panel); margin-bottom: 12px; }
.settings-account-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 12px; }
.settings-account-row > div, .settings-current-job summary > span:first-child { min-width: 0; }
.settings-account-row strong, .settings-current-job strong { font-size: 14px; overflow-wrap: anywhere; }
.settings-row-caption { display: block; font-size: 11px; text-transform: uppercase; letter-spacing: .7px; color: var(--muted); margin-bottom: 6px; }
.settings-account-row .btn { flex-shrink: 0; padding: 8px 10px; font-size: 12px; }
.settings-current-job summary { list-style: none; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 12px; cursor: pointer; min-height: 68px; }
.settings-current-job summary::-webkit-details-marker { display: none; }
.settings-current-job[open] summary > span:last-child { transform: rotate(180deg); }
.settings-job-picker { max-height: 240px; overflow: auto; overscroll-behavior: contain; padding: 4px; display: grid; gap: 4px; }
.settings-job-picker .btn { display: flex; align-items: center; justify-content: space-between; gap: 8px; text-align: left; white-space: normal; overflow-wrap: anywhere; }
.settings-job-picker [aria-current=true] { font-weight: 800; }
.settings-install-button { margin-bottom: 8px; }
.settings-install-button[hidden] { display: none; }

/* Keep keyboard dismissal reachable beside Job search on narrow screens. */
.job-search-controls { display: flex; align-items: center; gap: 8px; }
.job-search-controls .search-input { flex: 1; min-width: 0; }
.job-search-controls > button { display: none; flex: 0 0 auto; min-height: 52px; }
.job-search-controls:focus-within > button { display: inline-flex; }

/* Source: src/styles/dark-theme.css */
html[data-theme="dark"] {
  --bg: #000000;
  --panel: #0a0a0a;
  --ink: #ffffff;
  --muted: #a3a3a3;
  --line: #2a2a2a;
  --accent: #ffffff;
  --ok: #4ade80;
  --warn: #fbbf24;
  --danger: #f87171;
  color-scheme: dark;
}

html[data-theme="dark"] body {
  background: #000;
}

html[data-theme="dark"] .phone-stage {
  background: #000;
}

html[data-theme="dark"] .phone-shell {
  background: var(--bg);
  box-shadow:
    0 28px 80px rgba(0, 0, 0, .65),
    inset 0 0 0 1px rgba(255,255,255,.08);
  border-color: #1f1f1f;
}

html[data-theme="dark"] .phone-shell::before {
  background: #1f1f1f;
}

html[data-theme="dark"] .app-header {
  background: rgba(0,0,0,.92);
  border-bottom-color: var(--line);
}

html[data-theme="dark"] .settings-cog-btn {
  background: #111;
  border-color: var(--line);
  color: #fff;
}

html[data-theme="dark"] .settings-cog-btn.active {
  background: rgba(255,255,255,.12);
  border-color: rgba(255,255,255,.28);
  color: #fff;
}

html[data-theme="dark"] .hero,
html[data-theme="dark"] .result-card,
html[data-theme="dark"] .asset-card,
html[data-theme="dark"] .room-card,
html[data-theme="dark"] .job-card,
html[data-theme="dark"] .location-card,
html[data-theme="dark"] .form-card,
html[data-theme="dark"] .batch-card,
html[data-theme="dark"] .history-card {
  background: var(--panel);
  border-color: var(--line);
  box-shadow: none;
}

html[data-theme="dark"] .hero::after {
  background: rgba(255,255,255,.04);
}

html[data-theme="dark"] .search-input,
html[data-theme="dark"] .select-input,
html[data-theme="dark"] .text-input,
html[data-theme="dark"] .text-field,
html[data-theme="dark"] .text-area,
html[data-theme="dark"] .form-card input,
html[data-theme="dark"] .form-card textarea,
html[data-theme="dark"] .scan-icon-btn,
html[data-theme="dark"] .camera-btn {
  background: #111;
  color: var(--ink);
  border-color: var(--line);
}

html[data-theme="dark"] .search-input::placeholder,
html[data-theme="dark"] .form-card input::placeholder,
html[data-theme="dark"] .form-card textarea::placeholder {
  color: #737373;
}

html[data-theme="dark"] .btn-primary {
  background: #fff;
  color: #000;
}

html[data-theme="dark"] .btn-danger {
  background: var(--danger);
  color: #fff;
}

html[data-theme="dark"] .btn-secondary,
html[data-theme="dark"] .big-action.muted,
html[data-theme="dark"] .badge {
  background: #1a1a1a;
  color: var(--ink);
  border-color: var(--line);
}

html[data-theme="dark"] .scan-update-message {
  background: rgba(96, 165, 250, .12);
  color: #93c5fd;
}

html[data-theme="dark"] .camera-status {
  background: rgba(96, 165, 250, .12);
  color: #93c5fd;
}
html[data-theme="dark"] .camera-status.error {
  background: rgba(251, 113, 133, .12);
  color: #fda4af;
}
html[data-theme="dark"] .camera-count { color: #94a3b8; }

html[data-theme="dark"] .big-action:not(.muted) {
  background: #fff;
  color: #000;
}

html[data-theme="dark"] .project-strip,
html[data-theme="dark"] .location-callout,
html[data-theme="dark"] .confirm-box,
html[data-theme="dark"] .next-action,
html[data-theme="dark"] .scan-note,
html[data-theme="dark"] .scanner-box,
html[data-theme="dark"] .undo-bar,
html[data-theme="dark"] .assign-destination,
html[data-theme="dark"] .assign-session-footer {
  background: #111;
  border-color: var(--line);
  color: var(--ink);
}

html[data-theme="dark"] .prestage-check { border-color: var(--line); }
html[data-theme="dark"] .prestage-asset.selected {
  border-color: #fff;
  box-shadow: 0 0 0 2px rgba(255,255,255,.18);
}
html[data-theme="dark"] .prestage-asset.selected .prestage-check {
  background: #fff;
  border-color: #fff;
  color: #000;
}

html[data-theme="dark"] .subscription-strip.limited {
  background: rgba(251, 191, 36, .12);
  border-color: rgba(251, 191, 36, .28);
}

html[data-theme="dark"] .subscription-strip.subscribed {
  background: rgba(74, 222, 128, .12);
  border-color: rgba(74, 222, 128, .28);
}

html[data-theme="dark"] .subscription-cta {
  color: #93c5fd;
}

html[data-theme="dark"] .subscription-unlocked {
  color: #4ade80;
}

html[data-theme="dark"] .toast {
  background: #fff;
  color: #000;
}

html[data-theme="dark"] .theme-toggle-track {
  background: #333;
  border-color: #444;
}

html[data-theme="dark"] .theme-toggle input:checked + .theme-toggle-track {
  background: #fff;
}

html[data-theme="dark"] .theme-toggle input:checked + .theme-toggle-track .theme-toggle-thumb {
  background: #000;
}

html[data-theme="dark"] .theme-toggle-thumb {
  background: #fff;
}

html[data-theme="dark"] .badge.deployed {
  background: #1e3a5f;
  color: #93c5fd;
}

html[data-theme="dark"] .badge.checked-in {
  background: #14532d;
  color: #86efac;
}

html[data-theme="dark"] .badge.collected {
  background: #78350f;
  color: #fcd34d;
}

html[data-theme="dark"] .badge.not-available {
  background: #7f1d1d;
  color: #fecaca;
}

html[data-theme="dark"] .form-card label,
html[data-theme="dark"] .batch-card label {
  color: var(--muted);
}

html[data-theme="dark"] .list-heading {
  color: var(--ink);
}

html[data-theme="dark"] .list-heading span {
  color: var(--muted);
}

html[data-theme="dark"] .job-card.active {
  border-color: rgba(255,255,255,.35);
  background: #141414;
}

html[data-theme="dark"] .sync-status { background: #052e24; color: #6ce9a6; }
html[data-theme="dark"] .sync-status.pending { background: #451a03; color: #fedf89; }

/* Source: src/styles/csv-import.css */
.csv-import-overlay {
  position: fixed;
  inset: 0;
  z-index: 200;
  display: grid;
  place-items: center;
  padding: 20px;
  background: rgba(15, 23, 42, .55);
  backdrop-filter: blur(4px);
}

.csv-import-warning {
  width: min(520px, 100%);
  max-height: min(760px, calc(100vh - 40px));
  overflow-y: auto;
  margin: 0;
}

.csv-import-file {
  margin: 8px 0 14px;
}

.csv-import-violations {
  display: grid;
  gap: 10px;
  margin-bottom: 14px;
}

.csv-import-violation {
  padding: 12px;
  border-radius: 14px;
  background: rgba(239, 68, 68, .08);
  border: 1px solid rgba(239, 68, 68, .18);
}

.csv-import-message {
  margin: 0 0 12px;
}

.csv-import-summary {
  margin: 0 0 14px;
  padding: 12px;
  border-radius: 14px;
}

.csv-import-fixed {
  background: rgba(59, 130, 246, .08);
  border: 1px solid rgba(59, 130, 246, .18);
}

.csv-import-modes,
.csv-email-decisions {
  display: grid;
  gap: 10px;
  margin: 0 0 14px;
  padding: 12px;
  border-radius: 14px;
  border: 1px solid rgba(148, 163, 184, .28);
}

.csv-import-modes label,
.csv-email-decision-row {
  display: grid;
  gap: 4px;
  align-items: start;
}

.csv-import-modes label {
  grid-template-columns: auto 1fr;
  gap: 10px;
}

.csv-import-modes small,
.csv-email-decision-row small {
  display: block;
  color: inherit;
  opacity: .72;
}

.csv-email-decision {
  width: 100%;
}

.settings-csv-actions { margin-bottom: 0; }

html[data-theme="dark"] .csv-import-overlay {
  background: rgba(0, 0, 0, .78);
}

html[data-theme="dark"] .csv-import-violation {
  background: rgba(248, 113, 113, .12);
  border-color: rgba(248, 113, 113, .24);
}

html[data-theme="dark"] .csv-import-fixed,
html[data-theme="dark"] .csv-import-ready {
  background: rgba(255, 255, 255, .06);
  border-color: rgba(255, 255, 255, .14);
}

/* Source: src/styles/admin-log.css */
.job-card-actions {
  display: flex;
  justify-content: flex-end;
  padding-top: 8px;
  gap: 8px;
}

.admin-log-controls {
  display: grid;
  gap: 12px;
}

.admin-log-filter-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}

.admin-log-filter-grid label {
  display: grid;
  gap: 6px;
  font-size: 12px;
  font-weight: 800;
}

.admin-log-list {
  display: grid;
  gap: 10px;
}

.admin-log-entry {
  align-items: flex-start;
  padding: 12px 14px;
  border: 1px solid rgba(0, 0, 0, .08);
  border-radius: 14px;
  background: #fff;
}

.admin-log-entry-main {
  min-width: 0;
  display: grid;
  gap: 4px;
}

.admin-log-changes {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 8px;
}

.admin-log-time {
  flex: none;
  white-space: nowrap;
}

@media (max-width: 640px) {
  .admin-log-filter-grid { grid-template-columns: 1fr; }
  .admin-log-entry { display: grid; }
  .admin-log-time { order: -1; }
}

html[data-theme="dark"] .admin-log-entry {
  background: #111827;
  border-color: rgba(255, 255, 255, .1);
}

/* Source: src/styles/handoff.css */
/* My Work hand-off and field-first Deploy filters */
.deploy-assignment-toggle {
  margin: 0 14px 12px;
}

.my-work-handoff-card {
  margin-top: 4px;
}

.my-work-handoff-card .small {
  margin-bottom: 12px;
  line-height: 1.4;
}

.my-work-handoff-card label {
  margin-bottom: 0;
}

.my-work-handoff-footer {
  z-index: 8;
}

.my-work-handoff-actions {
  display: grid;
  grid-template-columns: minmax(0, .7fr) minmax(0, 1.3fr);
  gap: 10px;
}

.my-work-handoff-footer .small {
  margin-top: 4px;
  line-height: 1.35;
}

.compact-empty {
  padding: 14px;
}

.my-work-handoff-card + .my-work-activity-heading {
  margin-top: 14px;
}

/* Source: src/styles/label-review.css */
/* Product label review keeps the photograph and recognized text within a phone. */
.label-photo-preview { display: block; width: 100%; max-height: 260px; object-fit: contain; border-radius: 12px; margin: 12px 0; }
.label-recognized-text { white-space: pre-wrap; overflow-wrap: anywhere; font: inherit; }
.label-ocr-screen .candidate { overflow-wrap: anywhere; }

/* Source: src/styles/offline.css */
/* Offline preparation remains easy to tap in the field. */
.offline-action { min-height: 52px; margin-bottom: 8px; }

/* Source: src/styles/responsive-devices.css */
/* Real phones, foldables and tablets use the available viewport. Keep the
   simulated phone frame only for a wide desktop preview with a fine pointer. */
@media (max-width: 1024px), (pointer: coarse), (display-mode: standalone) {
  .phone-stage {
    padding: 0;
    display: block;
    min-height: 100vh;
    min-height: 100dvh;
  }
  .phone-shell {
    width: 100%;
    height: 100vh;
    height: 100dvh;
    min-height: 0;
    border: 0;
    border-radius: 0;
    box-shadow: none;
  }
  .phone-shell::before { display: none; }
  .phone-shell .app-header {
    /* Safari exposes env(); Capacitor's Android SystemBars bridge injects the
       equivalent custom properties. max() prevents double-counting when a newer
       Android WebView supplies both. */
    padding-top: calc(14px + max(env(safe-area-inset-top, 0px), var(--safe-area-inset-top, 0px)));
    padding-left: max(18px, env(safe-area-inset-left, 0px), var(--safe-area-inset-left, 0px));
    padding-right: max(18px, env(safe-area-inset-right, 0px), var(--safe-area-inset-right, 0px));
  }
  .screen {
    padding-left: max(18px, env(safe-area-inset-left, 0px), var(--safe-area-inset-left, 0px));
    padding-right: max(18px, env(safe-area-inset-right, 0px), var(--safe-area-inset-right, 0px));
    padding-bottom: max(28px, env(safe-area-inset-bottom, 0px), var(--safe-area-inset-bottom, 0px));
  }
}

/* Wrapping content must not widen compact cover screens or split-screen views. */
.asset-top > div:first-child, .asset-title, .asset-id,
.settings-row > div, .settings-job-row > div { min-width: 0; overflow-wrap: anywhere; }
.search-wrap.with-camera .search-input { min-width: 0; }
.inventory-screen .list-page-header { flex-wrap: wrap; gap: 10px; }
.inventory-header-actions { flex-wrap: wrap; }
.inventory-header-actions .btn { min-height: 48px; }

@media (min-width: 600px) and (max-width: 1024px), (min-width: 600px) and (pointer: coarse) {
  .home-grid.phase-actions { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .screen { max-width: 1120px; margin-inline: auto; }
}

@media (max-height: 600px) {
  .scanner-frame { height: 150px; height: clamp(120px, 30dvh, 180px); }
}
