/* Approved shell branding; invoice appearance remains practice configuration. */
@font-face {
  font-family:Manrope;
  src:url("Manrope-Variable.946beb949095.ttf") format('truetype');
  font-weight:200 800;
  font-display:swap;
}

:root {
  --ink:#20372f;
  --muted:#52675e;
  --border:#d8e1d8;
  --primary:#173f35;
  --brand:#173f35;
  --accent:#d9a441;
  --paper:#faf8f2;
}

body {
  font-family:Manrope,system-ui,sans-serif;
  background:#faf8f2;
  color:#20372f;
}

h1,h2,h3 {
  color:#173f35;
  letter-spacing:-.035em;
}

h1 {
  font-size:clamp(1.85rem,3.2vw,2.6rem);
  line-height:1.18;
}

a {
  color:#173f35;
}

.app-sidebar {
  background:#173f35;
}

.honeyguide-brand {
  display:block;
  padding:15px 0 28px;
}

.honeyguide-brand img {
  display:block;
  max-width:100%;
  height:auto;
}

.app-navigation a {
  color:#edf1e9;
}

.app-navigation a:hover,.app-navigation a[aria-current="page"] {
  background:#31564a;
  color:#fff;
}

.nav-label {
  color:#c4d6c6;
}
.navigation-tools {
  margin-top:14px;
}
.navigation-tools summary {
  color:#dfe8df;
  cursor:pointer;
  padding:10px 12px;
  font-size:.85rem;
}
.navigation-tools[open] summary {
  color:#fff;
}
.app-navigation[hidden],.mobile-navigation-toggle[hidden] { display:none; }
.mobile-navigation-toggle { color:#fff; border:1px solid #c4d6c6; background:transparent; }

.sidebar-footer {
  color:#dfe8df;
}

.sandbox-banner {
  background:#dfe8df;
  color:#173f35;
}

.app-topbar {
  background:#faf8f2;
  min-height:76px;
  height:auto;
  flex-wrap:wrap;
}
.topbar-label {
  display:block;
  font-weight:600;
}

.practice-identity {
  display:flex;
  align-items:center;
  gap:14px;
  flex:1;
  min-width:0;
}

.practice-portal-logo {
  display:block;
  max-width:150px;
  max-height:48px;
  width:auto;
  height:auto;
  object-fit:contain;
  flex-shrink:0;
}

.portal-logo-preview {
  margin:24px 0;
  padding:20px;
  max-width:340px;
  background:#fff;
  border:1px solid var(--border);
  border-radius:12px;
}

.portal-logo-preview img {
  display:block;
  max-width:100%;
  max-height:100px;
  width:auto;
  height:auto;
  object-fit:contain;
}

.portal-logo-preview p {
  margin-bottom:0;
  color:var(--muted);
  font-size:.85rem;
}

.eyebrow {
  font-size:.73rem;
  font-weight:800;
  letter-spacing:.12em;
  color:#52675e;
}

.page-intro {
  font-size:1.03rem;
  max-width:680px;
  line-height:1.75;
}

.honeyguide-stats {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:20px;
  margin:32px 0;
}

.honeyguide-stats>div {
  border-bottom:1px solid #d8e1d8;
  padding:10px 0 24px;
}

.honeyguide-stats strong {
  display:block;
  font-size:1.75rem;
  color:#173f35;
}

.honeyguide-stats span {
  font-size:.85rem;
  color:#52675e;
}

.module-grid {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:22px;
  margin:24px 0;
}

.module-card {
  padding:28px;
  border:1px solid #d8e1d8;
  border-radius:14px;
  background:#fff;
  min-width:0;
}

.module-card.available {
  border-top:4px solid #d9a441;
}

.module-card h2 {
  font-size:1.3rem;
}

.module-card p {
  line-height:1.75;
}

.module-card label {
  display:block;
  margin:16px 0;
}

.module-card input:not([type=checkbox]) {
  width:100%;
}

.status-pill {
  display:inline-block;
  font-size:.75rem;
  background:#dfe8df;
  color:#173f35;
  padding:3px 11px;
  border-radius:20px;
  margin:0;
}

.quiet-note {
  font-size:.86rem;
  color:#52675e;
  line-height:1.8;
}

.setup-list {
  max-width:800px;
  line-height:1.9;
  padding-left:22px;
}

.setup-list li {
  padding:9px 0;
}

.page-footer {
  border-color:#d8e1d8;
}

button,.button {
  background:#173f35;
  border-color:#173f35;
  color:#fff;
}

button:hover,.button:hover {
  background:#285449;
  color:#fff;
}

/* Variant colours must follow the brand button rule: the legacy secondary text
   otherwise inherits dark ink while its background is replaced with forest. */
.button-secondary {
  background:#fff;
  color:#173f35;
  border-color:#becdc2;
}
.button-secondary:hover {
  background:#dfe8df;
  color:#173f35;
}
.button-quiet {
  background:transparent;
  color:#52675e;
  border-color:transparent;
}
.button-quiet:hover {
  background:#dfe8df;
  color:#173f35;
}

.auth-page .honeyguide-brand {
  max-width:360px;
  margin:auto;
}

.billing-page {
  max-width:1000px;
}
.billing-next-task {
  border-top:4px solid #d9a441;
}
.billing-disclosure {
  border:1px solid #d8e1d8;
  border-radius:12px;
  padding:18px 22px;
  margin:24px 0;
  background:#fff;
}
.billing-disclosure summary {
  cursor:pointer;
  font-weight:700;
  color:#173f35;
}
.billing-disclosure[open] summary {
  margin-bottom:18px;
}
.billing-month-picker {
  display:flex;
  align-items:end;
  flex-wrap:wrap;
  gap:16px;
  margin:28px 0;
}
.billing-month-picker label {
  display:grid;
  gap:8px;
}
.billing-month-picker input {
  min-height:42px;
  padding:8px 12px;
}
.billing-preparation {
  padding-left:24px;
}
.billing-preparation li {
  padding:12px 0;
  border-bottom:1px solid #d8e1d8;
}
.billing-preparation li p {
  margin:0 0 8px;
}
.billing-preparation a {
  font-weight:700;
  text-decoration:underline;
}
.billing-totals {
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:16px;
  margin:28px 0;
}
.billing-totals dt {
  font-size:.85rem;
  color:#52675e;
}
.billing-totals dd {
  margin:8px 0 0;
  font-size:1.25rem;
  font-weight:700;
  overflow-wrap:anywhere;
}
.billing-notice {
  padding:16px;
  background:#f4eddf;
  border-left:4px solid #d9a441;
}
.billing-save {
  border-top:1px solid #d8e1d8;
  padding-top:12px;
}
.billing-table-scroll {
  max-width:100%;
  overflow:auto;
}
.billing-tool-list {
  list-style:none;
  padding:0;
}
.billing-tool-list li {
  margin:16px 0;
}
.billing-tool-list span {
  display:block;
  color:#52675e;
  font-size:.85rem;
  margin-top:5px;
}

@media(max-width:700px) {
  .app-navigation { display:block; padding-top:12px; }
  .app-navigation a { border:0; padding:10px 12px; }
  .billing-totals {
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .billing-month-picker {
    align-items:stretch;
  }
  .billing-review {
    padding:20px;
  }
}

.auth-page main {
  max-width:500px;
}
.auth-page .sandbox-banner {
  margin-left:0;
}

@media(max-width:900px) {
  .honeyguide-brand {
    max-width:235px;
    padding:12px 0;
  }
  .honeyguide-stats {
    gap:12px;
  }
  .module-card {
    padding:22px;
  }
  .module-grid {
    gap:16px;
  }
}

@media(max-width:600px) {
  .practice-identity {
    flex-basis:100%;
    gap:10px;
  }
  .practice-portal-logo {
    max-width:100px;
    max-height:40px;
  }
  .app-topbar {
    padding:12px 18px;
    gap:10px;
  }
  .account-menu {
    width:100%;
    justify-content:flex-end;
  }
  .module-grid {
    grid-template-columns:1fr;
  }
  .honeyguide-stats {
    grid-template-columns:1fr;
    gap:0;
  }
  .honeyguide-stats>div {
    padding:12px 0;
  }
  .honeyguide-stats strong {
    font-size:1.3rem;
  }
  .topbar-label {
    width:100%;
    max-width:none;
    white-space:normal;
  }
  .module-card {
    padding:20px;
  }
}

/* Daily capture presents one primary task and keeps optional record details nearby. */
main>form.capture-filter {
  display:flex;
  flex-wrap:wrap;
  gap:12px;
  align-items:end;
  margin:24px 0;
}
.capture-filter label {
  display:grid;
  gap:8px;
}
.capture-filter input {
  min-height:44px;
  padding:8px 12px;
  max-width:100%;
}
.capture-filter button { min-height:44px; }
.capture-list {
  background:#fff;
  border:1px solid var(--border);
  border-radius:12px;
  padding:0 22px;
}
.capture-list>p {
  padding:16px 0;
}
.capture-list-row {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:24px;
  padding:22px 0;
  border-bottom:1px solid var(--border);
}
.capture-list-row:last-child {
  border-bottom:0;
}
.capture-list-row>div {
  min-width:0;
}
.capture-list-row h2 {
  font-size:1rem;
  letter-spacing:0;
  margin:0;
  overflow-wrap:anywhere;
}
.capture-list-row h2 a {
  text-decoration:underline;
  text-underline-offset:3px;
}
.capture-list-row p {
  margin:7px 0 0;
  font-size:.9rem;
  color:var(--muted);
  overflow-wrap:anywhere;
}
.capture-state {
  font-size:.85rem;
  color:var(--muted);
}
.capture-table-scroll {
  max-width:100%;
  overflow-x:auto;
  border:1px solid var(--border);
  border-radius:12px;
  background:#fff;
}
.capture-table {
  width:100%;
  min-width:640px;
  margin:0;
}
.capture-table-scroll .capture-treatment-table { min-width:760px; }
.capture-table caption {
  position:absolute;
  width:1px;
  height:1px;
  overflow:hidden;
  clip-path:inset(50%);
}
.capture-table th,.capture-table td {
  padding:18px 20px;
  vertical-align:top;
  overflow-wrap:anywhere;
}
.capture-table tbody th { background:transparent; font-weight:600; }
.capture-table .capture-money {
  text-align:right;
  font-variant-numeric:tabular-nums;
  white-space:nowrap;
}
.capture-date { white-space:nowrap; }
.capture-description { color:var(--muted); }
.capture-table a { display:inline-block; padding:4px 0; text-decoration:underline; }
.capture-table-scroll:focus-visible { outline:3px solid var(--primary); outline-offset:3px; }
.capture-row-options summary {
  color:var(--primary);
  cursor:pointer;
  font-size:.9rem;
}
.capture-row-options a {
  display:block;
  margin-top:12px;
  text-decoration:underline;
}
.capture-row-options button {
  margin-top:12px;
}
.capture-total {
  display:flex;
  gap:16px;
  align-items:center;
  margin:28px 0 18px;
}
.capture-total strong {
  font-size:1.35rem;
}
.capture-panel {
  padding:24px;
  background:#fff;
  border:1px solid var(--border);
  border-radius:12px;
}
.capture-panel h2 {
  margin-top:0;
}
.capture-details {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:24px;
}
.capture-details dt {
  font-size:.85rem;
  color:var(--muted);
}
.capture-details dd {
  margin:6px 0 0;
  overflow-wrap:anywhere;
}
.capture-note {
  color:var(--muted);
  max-width:65ch;
}
form.entry.capture-form {
  display:block;
  max-width:780px;
  padding:28px;
}
.capture-field {
  margin:0 0 20px;
}
.capture-form label {
  display:block;
  margin-bottom:7px;
}
.capture-form input:not([type=checkbox]):not([type=hidden]), .capture-form select, .capture-form textarea {
  width:100%;
  max-width:100%;
  min-width:0;
}
.capture-form input[type=checkbox] {
  width:auto;
}
.capture-checkbox {
  display:flex;
  gap:10px;
  align-items:center;
  margin-top:20px;
}
.capture-checkbox label {
  margin:0;
}
.capture-form .visit-row {
  margin:22px 0;
}
.capture-form .visit-row>div {
  margin-bottom:14px;
}
.capture-form .visit-notes {
  margin:18px 0;
}
.capture-form .visit-notes summary {
  cursor:pointer;
  color:var(--primary);
}
.capture-form .visit-notes[open] summary {
  margin-bottom:18px;
}
.capture-form .visit-row-grid {
  grid-template-columns:1fr;
}
.capture-form .visit-remove {
  display:flex;
  align-items:center;
  gap:8px;
  margin-top:18px;
  font-size:.85rem;
}
.capture-form .visit-row-removed .visit-amount-field {
  display:none;
}
.capture-form .helptext {
  font-size:.85rem;
  color:var(--muted);
}
.capture-form .visit-toolbar {
  flex-wrap:wrap;
}
.capture-form .visit-toolbar span {
  font-size:.9rem;
}
@media(max-width:700px) {
  .capture-list {
    padding:0 16px;
  }
  .capture-list-row {
    align-items:start;
    flex-wrap:wrap;
    gap:14px;
  }
  .capture-row-options[open] {
    flex-basis:100%;
  }
  .capture-details {
    grid-template-columns:1fr;
  }
  form.entry.capture-form {
    padding:18px;
  }
  .capture-form .visit-header {
    grid-template-columns:1fr;
  }
}

/* UI 1 review: financial columns stay comparable; help does not obscure work. */
.page-footer { color:var(--muted); font-size:12px; }
.sandbox-banner strong { font-size:12px; }
.billing-amounts caption { text-align:left; padding:12px; color:var(--muted); }
.billing-amounts tbody th { background:transparent; font-weight:600; }
.billing-amounts .billing-money { text-align:right; white-space:nowrap; font-variant-numeric:tabular-nums; }
.billing-table-scroll .billing-amounts { min-width:720px; }
.billing-amounts th:first-child { min-width:180px; overflow-wrap:anywhere; }
.billing-totals dd { font-variant-numeric:tabular-nums; }
#billing-error:focus-visible,.billing-table-scroll:focus-visible { outline:3px solid var(--primary); outline-offset:3px; }
.billing-notice a { text-decoration:underline; }
@media(max-width:1000px) { .billing-totals { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:1199px) {
  body .guide-launch { position:static; display:block; width:fit-content; margin:16px 24px 24px auto; }
  body .guide-launch[hidden] { display:none; }
}

/* Payment stages share the approved shell; use space and headings, not new chrome. */
.payment-workspace .payment-sequence { font-size:.9rem; color:var(--primary); padding:16px 0; border-bottom:1px solid var(--border); }
.payment-sequence span { margin:0 8px; }
.payment-workspace h1 { margin-top:0; font-size:2rem; }
.payment-workspace .payment-sequence { padding:0 0 12px; margin:12px 0; }
.payment-workspace .payment-filters { display:flex; flex-wrap:wrap; align-items:end; gap:16px; margin:20px 0; }
.payment-workspace .payment-filters label { display:grid; gap:6px; }
.payment-workspace .payment-totals { padding:16px 20px; }
.payment-workspace .payment-totals p { margin:0 0 8px; }
.payment-workspace .payment-posting-review { border-top:1px solid var(--border); margin-top:24px; padding-top:12px; }
.payment-workspace .payment-posting-review h2 { font-size:1.1rem; }
.payment-workspace .payment-posting-review .matching-actions { display:flex; flex-wrap:wrap; gap:12px; }
.payment-workspace .matching-toolbar { position:static; align-items:center; }
.payment-workspace .matching-toolbar h2 { flex-basis:100%; margin:12px 0 0; font-size:1.1rem; }
.payment-workspace .matching-toolbar p { flex-basis:100%; margin:0; }
.payment-workspace table { font-variant-numeric:tabular-nums; }
.payment-workspace td,.payment-workspace th { vertical-align:top; }
.payment-workspace [role=alert]:focus-visible,.payment-workspace .errorlist:focus-visible { outline:3px solid var(--primary); outline-offset:3px; }
.payment-workspace form.entry { display:block; }
.payment-workspace .payment-confirmation { border-top:4px solid var(--accent); }
.payment-workspace #allocation-summary { line-height:1.8; }
.payment-workspace #add-allocation { background:white; color:var(--primary); border:1px solid var(--border); }
.payment-workspace details summary { cursor:pointer; }
.payment-workspace .payment-money { text-align:right; white-space:nowrap; }
.payment-workspace th { color:var(--muted); }
.payment-page .guide-launch { position:static; display:block; width:fit-content; margin:16px 24px 24px auto; box-shadow:none; }
.payment-page .guide-launch[hidden] { display:none; }
.nav-label,.guide-top { font-size:12px; }
.payment-workspace textarea { height:100px; min-height:80px; resize:vertical; }
.payment-workspace .allocation-fields { display:grid; grid-template-columns:minmax(0,2fr) minmax(0,1fr); gap:20px; }
.payment-workspace .allocation-fields label { display:block; margin-bottom:8px; }
.payment-workspace .allocation-fields select,.payment-workspace .allocation-fields input { width:100%; }
.payment-workspace .allocation-remove { display:flex; gap:10px; align-items:center; }
.month-finish h1 { font-size:2rem; }
.month-finish { max-width:1120px; overflow-wrap:anywhere; }
.finish-stage { border-top:1px solid var(--border); padding:22px 0; }
.finish-stage h2 { font-size:1.2rem; margin-top:0; }
.finish-stage tbody th { font-weight:500; background:transparent; }
.finish-actions { display:flex; flex-wrap:wrap; align-items:center; gap:12px; margin:20px 0; }
.month-finish .finish-money { text-align:right; white-space:nowrap; font-variant-numeric:tabular-nums; }
.month-finish th { color:var(--muted); }
.month-finish form.entry { display:block; }
.month-finish .finish-confirmation { border-top:4px solid var(--accent); margin:24px 0; }
.month-finish .finish-confirmation[hidden] { display:none; }
.month-finish .finish-confirmation textarea { height:100px; min-height:80px; }
.month-finish .finish-filters { display:flex; flex-wrap:wrap; align-items:end; gap:16px; margin:24px 0; }
.month-finish .finish-filters label { display:grid; gap:8px; }
.month-finish .invoice-settings-heading { flex-wrap:wrap; }
.month-finish td { overflow-wrap:anywhere; }
.month-finish .finish-history-table { min-width:900px; }
.finish-history-table td:first-child { white-space:nowrap; }
.finish-history-table td:nth-child(2) { min-width:180px; }
.month-finish .finish-invoice-table th:first-child { min-width:280px; }
.month-finish details summary { cursor:pointer; }
.month-finish .errorlist:focus-visible { outline:3px solid var(--primary); outline-offset:3px; }
.finish-page .guide-launch { position:static; display:block; width:fit-content; margin:16px 24px 24px auto; box-shadow:none; }
.finish-page .guide-launch[hidden] { display:none; }
@media(max-width:700px) { .month-finish h1 { font-size:1.75rem; } }
.payment-workspace .payment-confirmation > p:last-child { margin-top:18px; }
@media(max-width:700px) {
  .payment-workspace .allocation-fields { grid-template-columns:1fr; gap:0; }
  .payment-workspace h1 { font-size:1.75rem; }
}

/* Cash capture reuses product surfaces and appearance tokens in both themes. */
.cash-workspace .cash-form { max-width:620px; }
.cash-workspace .cash-form select,.cash-workspace .cash-form input,.cash-workspace .cash-form textarea { width:100%; box-sizing:border-box; }
.cash-workspace dl { display:grid; grid-template-columns:minmax(110px,1fr) minmax(0,3fr); gap:12px 24px; max-width:680px; margin:24px 0; overflow-wrap:anywhere; }
.cash-workspace dd { margin:0; }
.cash-workspace dt { color:var(--muted); }
.cash-workspace .cash-amount { font-variant-numeric:tabular-nums; font-size:1.3rem; font-weight:600; }
@media(max-width:500px) { .cash-workspace dl { grid-template-columns:1fr; gap:6px; } .cash-workspace dd { margin-bottom:12px; } }

/* Keep version and delivery columns readable beside long patient names. The
   labelled wrapper scrolls on a phone; the page and financial values never shrink. */
.finish-invoice-scroll .finish-invoice-table { min-width:760px; margin:0; border:0; border-radius:0; }
.finish-invoice-table th:nth-child(2), .finish-invoice-table td:nth-child(2) { min-width:110px; }
.finish-invoice-table th:nth-child(3), .finish-invoice-table td:nth-child(3) { min-width:150px; }
.finish-invoice-table th:nth-child(4), .finish-invoice-table td:nth-child(4) { min-width:120px; }
