@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700;800&family=Manrope:wght@400;500;600;700;800&display=swap');
:root {
  --bg: #f3f5f7;
  --surface: #ffffff;
  --surface-2: #f8fafb;
  --text: #16212c;
  --muted: #697682;
  --line: #dce2e7;
  --accent: #173a5e;
  --accent-2: #285d8d;
  --success: #276748;
  --danger: #a53a3a;
  --warning: #8b5b10;
  --radius: 14px;
  --shadow: 0 8px 22px rgba(17, 37, 56, 0.08);
  font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
}

* { box-sizing: border-box; }
html, body { margin: 0; min-height: 100%; background: var(--bg); color: var(--text); }
body { min-height: 100dvh; }
button, input, select, textarea { font: inherit; }
button { -webkit-tap-highlight-color: transparent; }
button, [role="button"] { touch-action: manipulation; }
button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible {
  outline: 3px solid rgba(40,93,141,.22);
  outline-offset: 2px;
}
button:active { transform: translateY(1px); }

.app-shell { min-height: 100dvh; padding-bottom: calc(78px + env(safe-area-inset-bottom)); }
.topbar {
  position: sticky; top: 0; z-index: 20;
  display: flex; align-items: center; justify-content: space-between;
  padding: calc(14px + env(safe-area-inset-top)) 18px 12px;
  background: rgba(255,255,255,0.96); border-bottom: 1px solid var(--line);
  backdrop-filter: blur(14px);
}
.eyebrow { font-size: 10px; font-weight: 800; letter-spacing: .14em; color: var(--muted); margin-bottom: 3px; }
h1 { font-size: 24px; line-height: 1.1; margin: 0; letter-spacing: -.02em; }
.icon-button {
  width: 42px; height: 42px; border-radius: 11px; border: 1px solid var(--line);
  background: var(--surface); color: var(--accent); line-height: 1;
  display: grid; place-items: center; box-shadow: 0 2px 8px rgba(20,35,50,.05);
}
.icon-button svg { width:22px; height:22px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }

.content { padding: 16px; max-width: 760px; margin: 0 auto; }
.section { margin-bottom: 18px; }
.section-header { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:10px; }
.section-title { font-size: 13px; font-weight: 800; color: #475562; text-transform: uppercase; letter-spacing: .07em; }
.section-subtitle { font-size: 12px; color: var(--muted); }

.card { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: 0 2px 10px rgba(20,35,50,.035); }
.card.pad { padding: 14px; }

.control-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.field { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.field.full { grid-column: 1 / -1; }
label { font-size: 12px; font-weight: 750; color: #4d5b67; }
input, select, textarea {
  width: 100%; border: 1px solid #cfd7de; border-radius: 10px; background: #fff; color: var(--text);
  padding: 11px 12px; outline: none; min-height: 44px;
}
textarea { min-height: 100px; resize: vertical; line-height: 1.4; }
input:focus, select:focus, textarea:focus { border-color: var(--accent-2); box-shadow: 0 0 0 3px rgba(40,93,141,.12); }

.metrics { display:grid; grid-template-columns: 1fr 1fr; gap:10px; margin: 12px 0 18px; }
.metric { background: var(--accent); color: white; border-radius: 13px; padding: 14px; min-height: 82px; }
.metric.secondary { background: #263746; }
.metric-label { font-size: 11px; text-transform: uppercase; letter-spacing: .08em; opacity:.76; font-weight:750; }
.metric-value { margin-top:5px; font-size:26px; font-weight:800; letter-spacing:-.03em; }

.entry-list { display:flex; flex-direction:column; gap:10px; }
.entry-card { padding: 14px; }
.entry-head { display:flex; justify-content:space-between; align-items:flex-start; gap:12px; }
.entry-time { font-weight:800; font-size:16px; }
.entry-amount { font-size:17px; font-weight:800; color:var(--accent); white-space:nowrap; }
.entry-meta { margin-top:5px; color:var(--muted); font-size:13px; display:flex; flex-wrap:wrap; gap:6px; align-items:center; }
.dot::before { content:"•"; margin-right:6px; }
.entry-notes { margin-top:11px; padding-top:11px; border-top:1px solid var(--line); font-size:14px; line-height:1.45; white-space:pre-wrap; color:#33414d; }
.entry-actions { display:flex; gap:8px; margin-top:11px; }

.btn { border:0; border-radius:10px; min-height:44px; padding:10px 14px; font-weight:750; cursor:pointer; }
.btn.primary { background:var(--accent); color:white; }
.btn.secondary { background:#e8edf1; color:#263746; }
.btn.outline { background:white; color:var(--accent); border:1px solid #b8c5d0; }
.btn.danger { background:#fff0f0; color:var(--danger); border:1px solid #efc9c9; }
.btn.small { min-height:34px; padding:7px 10px; font-size:12px; }
.btn.full { width:100%; }
.btn:disabled { opacity:.45; cursor:not-allowed; }

.empty { text-align:center; padding:28px 18px; color:var(--muted); }
.empty strong { display:block; color:var(--text); margin-bottom:5px; }

.list-row { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:14px; border-bottom:1px solid var(--line); }
.list-row:last-child { border-bottom:0; }
.row-main { min-width:0; }
.row-title { font-weight:800; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.row-sub { color:var(--muted); font-size:12px; margin-top:4px; }
.row-value { text-align:right; font-weight:800; white-space:nowrap; }
.row-value small { display:block; color:var(--muted); font-weight:650; margin-top:3px; }

.day-group { margin-bottom:12px; }
.day-head { display:flex; justify-content:space-between; gap:12px; align-items:baseline; padding: 0 2px 7px; }
.day-date { font-size:13px; font-weight:800; color:#40505e; }
.day-total { font-size:12px; color:var(--muted); }

.pill { display:inline-flex; align-items:center; border-radius:999px; padding:5px 8px; font-size:11px; font-weight:800; background:#e9eef3; color:#42515e; }
.pill.accent { background:#e4edf6; color:#173a5e; }

.bottom-nav {
  position: fixed; left:0; right:0; bottom:0; z-index:30;
  display:grid; grid-template-columns:repeat(4,1fr); gap:0;
  padding: 7px 6px calc(7px + env(safe-area-inset-bottom));
  background:rgba(255,255,255,.97); border-top:1px solid var(--line); backdrop-filter:blur(15px);
}
.nav-item { border:0; background:transparent; color:#73808c; display:flex; flex-direction:column; align-items:center; gap:3px; padding:5px; font-size:10px; font-weight:750; }
.nav-item.active { color:var(--accent); }
.nav-icon { width:22px; height:22px; display:grid; place-items:center; }
.nav-icon svg { width:22px; height:22px; fill:none; stroke:currentColor; stroke-width:1.9; stroke-linecap:round; stroke-linejoin:round; }

.modal-backdrop { position:fixed; inset:0; z-index:100; background:rgba(9,19,29,.42); display:flex; align-items:flex-end; justify-content:center; }
.modal { width:100%; max-width:760px; max-height:92dvh; overflow:auto; overscroll-behavior:contain; background:var(--surface); border-radius:20px 20px 0 0; padding:16px 16px calc(18px + env(safe-area-inset-bottom)); box-shadow:var(--shadow); }
.modal-head { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:16px; }
.modal-title { font-size:20px; font-weight:850; letter-spacing:-.02em; }
.close-btn { width:38px; height:38px; border-radius:10px; border:1px solid var(--line); background:#f7f9fa; font-size:20px; }
.modal-actions { display:grid; grid-template-columns:1fr 1.4fr; gap:10px; margin-top:16px; }
.preview-bar { margin-top:12px; border:1px solid var(--line); border-radius:11px; padding:11px 12px; display:flex; justify-content:space-between; align-items:center; background:var(--surface-2); }
.preview-bar strong { font-size:17px; }
.form-error { margin-top:10px; color:var(--danger); font-size:12px; font-weight:700; display:none; }
.form-error.show { display:block; }

.toast { position:fixed; left:50%; bottom:calc(90px + env(safe-area-inset-bottom)); transform:translateX(-50%) translateY(14px); z-index:200; background:#17232e; color:#fff; padding:10px 14px; border-radius:999px; font-size:12px; font-weight:750; opacity:0; pointer-events:none; transition:.18s ease; white-space:nowrap; max-width:calc(100vw - 24px); overflow:hidden; text-overflow:ellipsis; }
.toast.show { opacity:1; transform:translateX(-50%) translateY(0); }

.note { font-size:12px; color:var(--muted); line-height:1.45; }
.warning { border-left:4px solid #c28a2c; background:#fff9ef; padding:11px 12px; border-radius:9px; color:#6c4c16; font-size:12px; line-height:1.45; }
.success { border-left:4px solid #4c8b69; background:#f1faf5; padding:11px 12px; border-radius:9px; color:#315c46; font-size:12px; line-height:1.45; }
.divider { height:1px; background:var(--line); margin:14px 0; }

@media (min-width: 700px) {
  .topbar { padding-left:24px; padding-right:24px; }
  .content { padding:22px; }
  .modal { align-self:center; border-radius:20px; margin:20px; max-height:88dvh; }
}

@media (max-width: 430px) {
  .control-grid { grid-template-columns:1fr; }
  .field.full { grid-column:auto; }
}


.list-row-button { width:100%; border-left:0; border-right:0; border-top:0; background:transparent; text-align:left; color:inherit; }
.list-row-button:active { background:#f5f8fa; }
.status-line { display:flex; align-items:center; gap:7px; margin-top:9px; font-size:12px; color:var(--muted); }
.status-dot { width:7px; height:7px; border-radius:50%; background:#81909d; flex:0 0 auto; }
.status-dot.ok { background:#3f805e; }
.status-dot.warn { background:#b4771c; }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior:auto !important; transition:none !important; animation:none !important; }
}

/* Rates use fixed columns so the price column remains centered regardless of service-name length. */
.rate-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 180px 64px;
  column-gap: 18px;
  align-items: center;
}
.rate-value {
  width: 100%;
  text-align: center;
  justify-self: center;
}
.rate-row .edit-service { justify-self: end; }

@media (max-width: 560px) {
  .rate-row {
    grid-template-columns: minmax(0, 1fr) auto auto;
    column-gap: 10px;
  }
  .rate-value { width: auto; min-width: 86px; }
}

/* Invox broader billing workflow */
.optional { color: var(--muted); font-weight: 550; }
.field-help { color: var(--muted); font-size: 11px; line-height: 1.4; margin-top: -1px; }
.status-pill { padding: 4px 7px; }
.status-pill.unbilled { background: #f3eee4; color: #76551d; }
.status-pill.invoiced { background: #e4edf6; color: #24547f; }
.status-pill.paid { background: #e7f3ec; color: #2f6a4a; }
.client-contact { margin-top: 8px; color: var(--muted); font-size: 12px; line-height: 1.5; }
.client-notes { margin-top: 11px; padding-top: 11px; border-top: 1px solid var(--line); font-size: 13px; line-height: 1.5; white-space: pre-wrap; color: #33414d; }
.empty.compact { padding: 16px 10px; }
.invoice-row { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 14px; align-items: center; padding: 14px; border-bottom: 1px solid var(--line); }
.invoice-row:last-child { border-bottom: 0; }
.invoice-row-right { display: flex; align-items: center; justify-content: flex-end; gap: 8px; }
.invoice-row-right .row-value { min-width: 110px; }
.settings-summary { display: flex; justify-content: space-between; align-items: center; gap: 14px; }
.invoice-modal-summary { display: flex; justify-content: space-between; gap: 12px; align-items: baseline; padding: 11px 12px; border: 1px solid var(--line); background: var(--surface-2); border-radius: 11px; margin-bottom: 14px; }
.invoice-modal-summary span { color: var(--muted); font-size: 12px; text-align: right; }
.invoice-calc { margin-top: 14px; border-top: 1px solid var(--line); padding-top: 8px; }
.invoice-calc > div { display: flex; justify-content: space-between; gap: 20px; padding: 6px 0; font-size: 13px; }
.invoice-calc-total { border-top: 1px solid var(--line); margin-top: 5px; padding-top: 11px !important; font-size: 17px !important; }

@media (max-width: 560px) {
  .invoice-row { grid-template-columns: 1fr; }
  .invoice-row-right { justify-content: flex-start; flex-wrap: wrap; }
  .invoice-row-right .row-value { width: 100%; text-align: left; }
  .invoice-row-right .row-value small { display: inline-block; margin-left: 8px; }
  .invoice-modal-summary { align-items: flex-start; flex-direction: column; }
  .invoice-modal-summary span { text-align: left; }
}

/* Overnight shift clarity */
.overnight-label {
  display: inline-flex;
  align-items: center;
  margin-left: 8px;
  padding: 3px 7px;
  border-radius: 999px;
  background: #e9eef3;
  color: #5d6c79;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .02em;
  vertical-align: 2px;
}
.overnight-help { margin-top: -4px; }

/* Mileage tracking */
.mileage-section { padding-top: 3px; }
.mileage-fields {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  padding: 12px;
  border: 1px solid var(--line);
  background: var(--surface-2);
  border-radius: 11px;
}
.mileage-fields .field.full { grid-column: 1 / -1; }
.mileage-preview {
  margin-top: 8px;
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 9px 12px;
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: center;
  color: var(--muted);
  font-size: 12px;
  background: #fbfcfd;
}
.mileage-preview strong { color: var(--text); font-size: 12px; text-align: right; }
.mileage-meta { color: #48657c; }

@media (max-width: 430px) {
  .mileage-fields { grid-template-columns: 1fr; }
  .mileage-fields .field.full { grid-column: auto; }
  .mileage-preview { align-items: flex-start; flex-direction: column; }
  .mileage-preview strong { text-align: left; }
}

/* Mileage is intentionally presented as part of each work block, not as a separate workflow. */
.mileage-card {
  border: 1px solid var(--line);
  border-radius: 14px;
  background: #f8fafc;
  padding: 14px;
  gap: 12px;
}
.mileage-card-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}
.mileage-card-title {
  color: var(--text);
  font-size: 15px;
  font-weight: 800;
  letter-spacing: -0.01em;
}
.mileage-badge {
  flex: 0 0 auto;
  border: 1px solid #bfd0e0;
  border-radius: 999px;
  color: var(--accent);
  background: white;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .08em;
  padding: 4px 7px;
}
.mileage-card .mileage-fields {
  width: 100%;
}
.mileage-card-help {
  border-top: 1px solid var(--line);
  padding-top: 10px;
}
.suite-bar{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-bottom:3px solid var(--suite-accent,#365d55);background:#172d30;color:white}.suite-bar small,.suite-bar strong{display:block}.suite-bar small{letter-spacing:.12em;font-size:.62rem;color:#bdd0c9}.suite-bar a{color:white}.suite-bar a[hidden]{display:none}#syncStatus{padding:6px 18px;color:#526765;font-size:.78rem}#drafts details{margin:8px 16px;padding:12px 15px;border:1px solid #cad7d4;border-radius:12px;background:white}#drafts summary{cursor:pointer;font-weight:650}.draft-line{display:block;width:100%;padding:12px;text-align:left;background:white;border:0;border-top:1px solid #e2e8e5;color:#173f39;cursor:pointer}
.suite-exit{color:inherit;background:transparent;border:0;text-decoration:underline;cursor:pointer}.suite-bar{gap:12px;flex-wrap:wrap}.suite-bar>div{margin-right:auto}

/* Camp Chair Studios shared owner-workspace system — Invox 2.3.0.
   Follows Bookt's Manrope / DM Sans type, evergreen sidebar, warm surfaces,
   component radii, form treatment and responsive navigation. */

:root {
  --bg:#f8f9f6;
  --surface:#fff;
  --surface-2:#f7faf7;
  --text:#1d302a;
  --muted:#75877a;
  --line:#e2eae2;
  --accent:#234b3c;
  --accent-2:#367150;
  --success:#2c6c45;
  --danger:#a6504a;
  --warning:#956b20;
  --radius:15px;
  --shadow:0 14px 50px rgba(27,56,38,.045);
  font-family:'DM Sans',system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  font-synthesis:none;
  text-rendering:optimizeLegibility;
  -webkit-font-smoothing:antialiased;
}
html,body {background:var(--bg); color:var(--text);font-size:15px;}
a{color:inherit;text-decoration:none}
button, input, select, textarea{font-family:'DM Sans',system-ui,sans-serif;letter-spacing:normal}
button{cursor:pointer}
button:disabled{cursor:not-allowed}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #94b9a7;outline-offset:2px}
h1,h2,h3,.modal-title,.metric-value{font-family:Manrope,system-ui,sans-serif;letter-spacing:-.045em}
h1{font-size:clamp(1.75rem,2.4vw,2.1rem);line-height:1.18}
.app-shell{min-height:100dvh;padding-bottom:0}
.suite-sidebar{width:244px;position:fixed;top:0;bottom:0;left:0;z-index:35;background:#193b2d;color:#d5e5d7;padding:28px 14px;display:flex;flex-direction:column;gap:0}
.suite-identity{display:flex;align-items:center;gap:12px;margin:2px 11px 36px;color:#fff;min-width:0}
.suite-mark{display:grid;place-items:center;width:39px;height:39px;flex-shrink:0;border-radius:11px;background:#3c7053;color:#f2faf2}
.suite-mark svg{width:24px;height:24px}
.suite-identity>span:last-child{display:flex;flex-direction:column;gap:2px;min-width:0}
.suite-identity strong{font:800 1.48rem Manrope,system-ui,sans-serif;letter-spacing:-.085em;line-height:1.1}
.suite-period{color:#9ecbb0}
.suite-identity small{font-size:.58rem;font-weight:750;letter-spacing:.14em;color:#97baa4}
.suite-business{border:1px solid #426652;border-radius:12px;padding:13px;margin:0 3px 20px;display:flex;gap:10px;align-items:center;background:#214534;min-height:65px}
.suite-business img{width:35px;height:35px;object-fit:contain;border-radius:7px;background:white;padding:3px;flex:none}
.suite-business img[hidden]{display:none}
.suite-business>div{min-width:0}
.suite-business small{display:block;font-size:.61rem;letter-spacing:.12em;font-weight:750;color:#9ec7aa;margin-bottom:5px}
.suite-business strong{display:block;font-size:.9rem;font-weight:700;color:#fff;line-height:1.25;overflow-wrap:anywhere}
.sidebar-bottom{margin-top:auto;display:grid;gap:3px;padding:9px 4px 0;border-top:1px solid #3a5e49}
.sidebar-link{display:flex;align-items:center;justify-content:space-between;text-align:left;width:100%;padding:11px 13px;color:#bed5c3;background:none;border:0;border-radius:9px;font-size:.85rem;font-weight:600}
.sidebar-link:hover{color:#fff;background:#254935}
.sidebar-link span{opacity:.55}
.sidebar-link[hidden]{display:none}
.main-stage{margin-left:244px;min-height:100dvh;padding-bottom:50px}
.topbar{position:sticky;top:0;z-index:20;min-height:104px;display:flex;align-items:center;justify-content:space-between;gap:22px;padding:19px clamp(24px,4vw,62px);background:rgba(248,249,246,.96);border-bottom:1px solid #e8eee7;backdrop-filter:blur(14px)}
.page-heading{min-width:0}
.eyebrow{margin-bottom:7px;font-size:.67rem;letter-spacing:.13em;font-weight:800;color:#819c89}
.header-action{min-height:43px;border:0;border-radius:11px;padding:11px 15px;display:inline-flex;align-items:center;gap:8px;background:#234b3c;color:#fff;font-size:.88rem;font-weight:750;white-space:nowrap;box-shadow:0 4px 14px rgba(20,60,37,.12)}
.header-action:hover{background:#173f30}
.header-action svg{width:18px;height:18px;stroke:currentColor;stroke-width:2;stroke-linecap:round;fill:none}
.content{width:100%;max-width:1130px;padding:28px clamp(24px,4vw,62px);margin:0 auto}
.section{margin-bottom:27px}
.section-header{margin-bottom:15px;align-items:center}
.section-title{font:800 .95rem Manrope,system-ui,sans-serif;letter-spacing:-.03em;text-transform:none;color:#31483b}
.section-subtitle{margin-top:4px;font-size:.82rem;line-height:1.5;color:#839387}
.card{border:1px solid #e3ebe2;border-radius:16px;box-shadow:var(--shadow);background:#fff;overflow:hidden}
.card.pad{padding:22px}
#syncStatus{max-width:1130px;margin:0 auto;padding:14px clamp(24px,4vw,62px) 0;font-size:.77rem;color:#6e8774}
#syncStatus:not(:empty)::before{content:'';display:inline-block;width:7px;height:7px;border-radius:50%;background:#83bd98;margin-right:8px;vertical-align:1px}
#drafts{max-width:1130px;margin:0 auto;padding:0 clamp(24px,4vw,62px)}
#drafts details{margin:13px 0 0;border:1px solid #dce7dd;border-radius:13px;background:#fff;box-shadow:var(--shadow);padding:16px 18px}
#drafts summary{font-size:.87rem;font-weight:750;color:#355641;cursor:pointer}
.draft-line{color:#2c6245;font-size:.87rem;line-height:1.5}
.draft-line:hover{background:#f5faf5}
.bottom-nav{position:fixed;z-index:40;left:14px;right:auto;top:226px;bottom:auto;width:216px;display:flex;flex-direction:column;gap:4px;padding:0;background:transparent;border:0;backdrop-filter:none}
.nav-item{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:12px;text-align:left;min-height:47px;padding:12px 15px;border:0;border-radius:9px;background:transparent;color:#a8c4b1;font-size:.89rem;font-weight:650}
.nav-item:hover{background:#254935;color:#fff}
.nav-item.active{background:#315a41;color:#fff}
.nav-icon,.nav-icon svg{width:21px;height:21px;flex-shrink:0}
.nav-icon svg{stroke-width:1.9}
.metric{background:#234b3c;color:white;border-radius:13px;min-height:95px;padding:17px 19px}
.metric.secondary{background:#eaf1e9;color:#254734}
.metric.secondary .metric-label{opacity:.75}
.metric-label{font-size:.67rem;letter-spacing:.08em;font-weight:750}
.metric-value{font-size:1.65rem;font-weight:800;letter-spacing:-.05em}
.entry-list,.metrics{gap:13px}
.entry-card{padding:19px}
.entry-time,.entry-amount,.row-title,.row-value{font-family:Manrope,system-ui,sans-serif;letter-spacing:-.025em}
.entry-time,.row-title{font-weight:750}
.entry-amount{color:#28563f}
.entry-meta,.row-sub,.entry-notes,.client-notes{color:#6e8073}
.btn{min-height:43px;border-radius:11px;padding:10px 15px;font-weight:700;font-size:.85rem;transition:background .15s}
.btn.primary{background:#234b3c;color:#fff}
.btn.primary:hover{background:#173f30}
.btn.secondary{background:#edf2ed;color:#234638}
.btn.secondary:hover{background:#dce9df}
.btn.outline{border:1px solid #cadbd0;color:#2c5a42;background:#fff}
.btn.outline:hover{background:#f2f8f3}
.btn.danger{background:#fff2ef;color:#a6504a;border:1px solid #e9c8c4}
.btn.small{font-size:.77rem;min-height:35px}
label{font-size:.81rem;font-weight:700;color:#354d40}
input:not([type=checkbox]):not([type=radio]):not([type=file]),select,textarea{border:1px solid #dce4db;border-radius:10px;min-height:45px;padding:11px 13px;background:white;color:#263c30;font-size:.91rem;font-weight:500;line-height:1.45}
input::placeholder,textarea::placeholder{color:#849488;opacity:1;font-weight:400}
input:focus,select:focus,textarea:focus{border-color:#79a58d;box-shadow:0 0 0 3px rgba(80,150,103,.13)}
.control-grid{gap:16px}
.field{gap:8px}
.field-help{font-size:.78rem;line-height:1.5;color:#809386}
.list-row{padding:17px 20px;border-bottom:1px solid #eef1ec}
.row-sub{font-size:.77rem;line-height:1.5}
.row-value{color:#294d3a}
.note{color:#708577;line-height:1.6;font-size:.83rem}
.empty{padding:40px 24px;border:0;border-radius:15px;min-height:135px;color:#82968a}
.empty strong{color:#355642}
.pill,.pill.accent{background:#edf4ee;color:#305e41}
.status-pill.unbilled{background:#fff5e6;color:#906e27}
.status-pill.invoiced{background:#eaf0f9;color:#315a82}
.status-pill.paid{background:#eaf5eb;color:#356b46}
.modal-backdrop{background:rgba(12,32,21,.46);backdrop-filter:blur(4px);align-items:center;padding:20px}
.modal{max-width:665px;max-height:min(90dvh,850px);border-radius:18px;padding:26px;box-shadow:0 24px 80px rgba(12,32,21,.2)}
.modal-title{font-size:1.42rem;font-weight:800}
.modal-head{padding-bottom:12px;border-bottom:1px solid #e6eee6;margin-bottom:24px}
.close-btn{background:#edf3ed;color:#47624f;border-radius:9px}
.close-btn:hover{background:#dce9df}
.modal-actions{margin-top:25px;gap:11px}
.warning{background:#fff8ec;border:1px solid #eddfc3;color:#7e622e;border-radius:11px;line-height:1.5}
.preview-bar{border:1px solid #dce8dd;border-radius:12px;background:#f3f8f3}
.mileage-card{background:#fafcf9;border-color:#e1ebe2;border-radius:13px;padding:18px}
.mileage-card-title{font:800 .99rem Manrope,system-ui,sans-serif;color:#314b3b}
.mileage-badge{border-color:#d5e6d8;color:#3d7652;background:#eef7f0}
.mileage-fields{background:#fff;border-color:#e4eae2}
.mileage-preview{background:#f4f9f4;border-color:#e1eee0}
.source-tag{vertical-align:middle;display:inline-flex;align-items:center;padding:3px 6px;margin-left:5px;border-radius:5px;color:#416f50;background:#edf6ec;font:750 .57rem 'DM Sans',system-ui,sans-serif;letter-spacing:.06em;text-transform:uppercase}
.rate-row{grid-template-columns:minmax(0,1fr) minmax(130px,165px) minmax(75px,95px);column-gap:20px}
.rate-value{text-align:right}
.rate-row .edit-service{justify-self:end}

/* Mobile owner workspace: same touch-friendly bottom navigation as Bookt,
   without forcing desktop sidebar content into a tiny viewport. */
@media (max-width: 899px){
  .suite-sidebar{position:static;width:auto;padding:13px 20px;min-height:0;display:flex;flex-direction:row;gap:12px;align-items:center;flex-wrap:wrap;border:0}
  .suite-identity{margin:0 auto 0 0;gap:9px}
  .suite-mark{width:33px;height:33px;border-radius:9px}
  .suite-mark svg{width:20px;height:20px}
  .suite-identity strong{font-size:1.22rem}
  .suite-identity small{font-size:.48rem}
  .suite-business{margin:0;background:transparent;border:0;padding:0;min-height:0;flex:1 1 140px;max-width:240px}
  .suite-business img{width:29px;height:29px}
  .suite-business small{display:none}
  .suite-business strong{font-size:.77rem;font-weight:600;text-align:right;color:#dfede1}
  .sidebar-bottom{flex:1 0 100%;margin:0;padding:6px 0 0;border:0;display:flex;justify-content:flex-end;gap:13px}
  .sidebar-link{width:auto;padding:1px 0;font-size:.73rem;color:#bbd2c0}
  .sidebar-link span{display:none}
  .main-stage{margin-left:0;min-height:calc(100dvh - 100px);padding-bottom:calc(105px + env(safe-area-inset-bottom))}
  .topbar{min-height:83px;padding:17px 20px;gap:12px}
  .bottom-nav{left:0;right:0;top:auto;bottom:0;width:auto;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;padding:7px 6px calc(7px + env(safe-area-inset-bottom));background:rgba(255,255,255,.98);border-top:1px solid #e0e9e1;box-shadow:0 -6px 24px rgba(20,55,31,.05);backdrop-filter:blur(15px)}
  .nav-item{min-width:0;min-height:53px;display:flex;flex-direction:column;justify-content:center;gap:3px;padding:5px 3px;border-radius:9px;color:#7f9587;font-size:.69rem}
  .nav-item.active{background:#eef5ed;color:#23543d}
  .nav-item:hover{background:#f4f8f4;color:#23543d}
  .nav-icon,.nav-icon svg{width:22px;height:22px}
  .content{padding:19px 20px}
  #syncStatus{padding:11px 20px 0}
  #drafts{padding:0 20px}
  .modal-backdrop{padding:0;align-items:flex-end;backdrop-filter:none}
  .modal{width:100%;max-width:100%;max-height:92dvh;margin:0;border-radius:21px 21px 0 0;padding:20px 20px calc(22px + env(safe-area-inset-bottom))}
}
@media (max-width:530px){
  .suite-sidebar{padding:11px 16px}
  .suite-business{flex:0 1 auto;min-width:110px;max-width:calc(100% - 180px)}
  .suite-business strong{font-size:.72rem}
  .topbar{padding:16px;min-height:79px}
  .eyebrow{font-size:.6rem}
  h1{font-size:1.55rem}
  .header-action{padding:10px;min-width:43px;min-height:43px;justify-content:center}
  .header-action span{display:none}
  .content{padding:17px 16px}
  #syncStatus{padding:10px 16px 0}
  #drafts{padding:0 16px}
  .metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
  .metric{padding:13px;min-height:81px}
  .metric-value{font-size:1.4rem}
  .rate-row{grid-template-columns:minmax(0,1fr) auto;gap:11px 10px}
  .rate-value{text-align:left;width:auto;min-width:0;justify-self:start;grid-column:1}
  .rate-row .edit-service{grid-column:2;grid-row:1/3;justify-self:end}
  .list-row{padding:15px}
  .control-grid{gap:12px}
  .modal{padding:17px 16px calc(20px + env(safe-area-inset-bottom))}
}

/* Quiet customer identity detail, independent of the owner interface theme. */
.suite-business {border-left:3px solid var(--business-accent,#84ab90)}
@media (max-width:899px){.suite-business{border-left:0}}
/* File manager is part of this same suite. */
.suite-bar{border:0;background:#193b2d;color:#fff;min-height:80px;padding:16px clamp(18px,4vw,56px);display:flex;gap:20px;align-items:center;box-shadow:none}
.suite-bar small{font-size:.59rem;color:#9ec7aa;letter-spacing:.14em}
.suite-bar strong{font:800 1.23rem Manrope,system-ui,sans-serif;letter-spacing:-.045em}
.suite-bar a{color:#d2e7d8;font-weight:700;font-size:.86rem;margin-left:auto}
.suite-bar a:hover{text-decoration:underline}

.file-manager{max-width:900px;padding-top:40px}.file-intro{color:#7c8c80;line-height:1.6;margin:12px 0 24px}.file-manager #list{margin-top:18px}.file-manager .draft-line{border-top:1px solid #e9efe8}.file-manager #status{color:#477a58;font-size:.8rem}
/* Standalone Invox identity: no shared Bookt install scope. */
.login-required .app-shell{visibility:hidden}
.login-cover{position:fixed;inset:0;z-index:999;background:#f5f7f4;display:grid;place-items:center;padding:20px;color:#193b2d;font:15px/1.5 'DM Sans',sans-serif}
.login-card{width:min(100%,420px);background:white;border:1px solid #d5ded7;border-radius:18px;box-shadow:0 18px 48px #172c261a;padding:32px;display:grid;gap:13px}
.login-card h1{font:700 28px 'Manrope',sans-serif;margin:0}
.login-card p{margin:0;color:#65786c}
.login-card label{display:grid;gap:6px;font-weight:600}.login-card input{width:100%;box-sizing:border-box;border-radius:9px;border:1px solid #bccdc1;padding:13px;font:inherit}
.login-card button{margin-top:6px;padding:12px}.login-card [role=status]{color:#ad3f30;font-weight:600}

.migration-cover{position:fixed;inset:0;z-index:800;background:#14271ce6;display:grid;place-items:center;padding:24px}.migration-panel{width:min(100%,490px);background:#fff;border-radius:18px;padding:32px;box-shadow:0 25px 70px #0004;display:grid;gap:16px}.migration-panel h2{font:700 25px 'Manrope',sans-serif;color:#1d3f2f;margin:0}.migration-panel p{color:#52665d;line-height:1.6;margin:0}

.forgot-link{border:0;background:none;color:#366451;text-decoration:underline;cursor:pointer;justify-self:start;padding:0;font:inherit}.forgot-link:hover{color:#153e2c}
