/* Keepline AI Outreach — matches the approved layout (outreach-canvas Main/Contacts/Patient/Results). */
:root { --ink: #16212C; --muted: #4B5563; --line: #E5E7EB; --line-soft: #F0F1F3; --bg: #F4F6F7; --teal: #17786A; --teal-dark: #0F5A4F; }
* { box-sizing: border-box; }
body { margin: 0; background: var(--bg); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; color: var(--ink); }
a { color: var(--teal); } a:hover { color: var(--teal-dark); }
a.plain { text-decoration: none; }
h1 { margin: 0; font-size: 26px; font-weight: 800; }
h2 { margin: 0 0 10px; font-size: 18px; font-weight: 800; }
code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.muted { color: var(--muted); } .small { font-size: 12px; } .strong { font-weight: 700; }
.ok { color: var(--teal); font-weight: 700; } .info { color: #075985; font-weight: 700; } .warn-text { color: #92400E; font-weight: 700; }
.empty { color: var(--muted); padding: 14px 0; }
.break { word-break: break-all; }

/* Shell */
.shell { display: flex; flex-wrap: wrap; min-height: 100vh; background: var(--bg); }
.nav { flex: 1 1 220px; max-width: 260px; background: #16212C; color: #E5E7EB; padding: 24px 16px; display: flex; flex-direction: column; gap: 4px; }
.nav-brand { font-size: 17px; font-weight: 800; color: #FFFFFF; padding: 0 10px 4px; }
.nav-sub { font-size: 12px; color: #9CA3AF; padding: 0 10px 18px; }
.switcher { padding: 4px 10px 18px; }
.switcher select { width: 100%; min-height: 36px; border-radius: 8px; border: 1px solid #2B3642; background: #1F2B37; color: #E5E7EB; font-size: 13px; padding: 0 8px; }
.nav > a { display: block; padding: 11px 12px; border-radius: 8px; color: #D1D5DB; text-decoration: none; font-size: 14px; }
.nav > a.active { background: var(--teal); color: #FFFFFF; font-weight: 600; }
.nav > a:hover:not(.active) { background: #1F2B37; color: #FFFFFF; }
.nav-foot { margin-top: auto; font-size: 12px; color: #9CA3AF; padding: 18px 10px 0; border-top: 1px solid #2B3642; }
.nav-link { color: #9CA3AF; margin-top: 8px; padding: 0; }
.main { flex: 999 1 560px; min-width: 0; padding: 28px 32px; display: flex; flex-direction: column; gap: 22px; }
.flash { background: #ECFDF5; border: 1px solid #A7F3D0; color: #065F46; border-radius: 10px; padding: 12px 14px; font-size: 14px; }

/* Header */
.page-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 12px; }
.page-head.align-end, .align-end { align-items: flex-end; }
.sub { font-size: 13px; color: var(--muted); margin-top: 4px; }
.row-gap { display: flex; gap: 8px; flex-wrap: wrap; }
.row-gap form { margin: 0; }

/* Buttons */
.btn { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: 0 16px; border-radius: 9px; border: 1px solid #D1D5DB; background: #FFFFFF; font-size: 14px; font-weight: 600; color: var(--ink); cursor: pointer; text-decoration: none; font-family: inherit; }
.btn:hover { border-color: #9CA3AF; color: var(--ink); }
.btn-primary { border: none; background: var(--teal); color: #FFFFFF; font-weight: 700; }
.btn-primary:hover { background: var(--teal-dark); color: #FFFFFF; }
.btn-danger { border: 1px solid #FECACA; color: #991B1B; }
.btn-sm { min-height: 40px; padding: 0 14px; border-radius: 8px; font-size: 13px; }
.btn-lg { min-height: 46px; border-radius: 10px; }
.btn-block { width: 100%; }
.btn-link { background: none; border: none; color: var(--teal); cursor: pointer; font-size: 13px; padding: 8px 0; font-family: inherit; text-decoration: underline; }
button:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, summary:focus-visible { outline: 3px solid #5EEAD4; outline-offset: 2px; }

/* Cards & KPIs */
.kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; }
.kpi { background: #FFFFFF; border: 1px solid var(--line); border-radius: 12px; padding: 16px 18px; }
.kpi-label { font-size: 12px; font-weight: 700; color: var(--muted); text-transform: uppercase; letter-spacing: .4px; }
.kpi-value { font-size: 30px; font-weight: 800; margin-top: 6px; }
.kpi-note { font-size: 12px; color: var(--muted); }
.kpi-warn { background: #FFF7ED; border-color: #FED7AA; }
.kpi-warn .kpi-label, .kpi-warn .kpi-value, .kpi-warn .kpi-note { color: #9A3412; }
.kpi-dark { background: #16212C; border-color: #16212C; color: #FFFFFF; border-radius: 14px; }
.kpi-dark .kpi-label { color: #A7F3D0; } .kpi-dark .kpi-note { color: #CBD5E1; }
.card { background: #FFFFFF; border: 1px solid var(--line); border-radius: 12px; padding: 18px 20px; }
.card-table { padding: 6px 18px 12px; } .card-table h2 { margin-top: 14px; }
.card-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 10px; margin-bottom: 10px; }
.card-head h2 { margin: 0; }

/* Chips & tabs */
.chips { display: flex; gap: 6px; flex-wrap: wrap; }
.office-pick { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 700; color: var(--muted); }
.office-pick select { min-height: 36px; min-width: 180px; max-width: 100%; }
.chip { display: inline-flex; align-items: center; min-height: 36px; padding: 0 12px; border-radius: 999px; border: 1px solid #D1D5DB; background: #FFFFFF; color: var(--ink); font-size: 13px; text-decoration: none; }
.chip.active { border-color: #16212C; background: #16212C; color: #FFFFFF; font-weight: 600; }
.tabs { display: flex; flex-wrap: wrap; gap: 8px; }
.tab { display: inline-flex; align-items: center; min-height: 44px; padding: 0 16px; border-radius: 10px; border: 1px solid #D1D5DB; background: #FFFFFF; color: var(--ink); font-size: 14px; text-decoration: none; }
.tab.active { border-color: #16212C; background: #16212C; color: #FFFFFF; font-weight: 700; }

/* Badges */
.badge { display: inline-block; font-size: 12px; font-weight: 700; padding: 4px 10px; border-radius: 999px; white-space: nowrap; align-self: flex-start; }
.b-red { background: #FEE2E2; color: #991B1B; } .b-blue { background: #E0F2FE; color: #075985; } .b-amber { background: #FEF3C7; color: #92400E; }
.b-violet { background: #EDE9FE; color: #5B21B6; } .b-green { background: #DCFCE7; color: #166534; } .b-teal { background: #CCFBF1; color: #115E59; }
.b-slate { background: #F1F5F9; color: #334155; }

/* Action list */
.list { display: flex; flex-direction: column; }
.task-row { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; padding: 14px 0; border-top: 1px solid var(--line-soft); }
.task-main { flex: 1 1 320px; min-width: 0; }
.task-title { font-size: 15px; font-weight: 700; }
.task-meta { font-weight: 400; color: var(--muted); font-size: 13px; }
.task-text { font-size: 13px; color: #374151; margin-top: 3px; }
.task-notes { margin: 6px 0 0; padding-left: 18px; font-size: 12px; color: var(--muted); }
.task-actions { display: flex; gap: 8px; align-items: flex-start; flex-wrap: wrap; }
.task-actions form { margin: 0; }
.note-pop { position: relative; }
.note-pop > summary { list-style: none; } .note-pop > summary::-webkit-details-marker { display: none; }
.note-pop[open] > form { position: absolute; right: 0; top: 46px; z-index: 5; width: 280px; background: #FFFFFF; border: 1px solid var(--line); border-radius: 10px; padding: 10px; box-shadow: 0 8px 24px rgba(22,33,44,.12); }
.note-pop.block[open] > form { position: static; width: auto; box-shadow: none; margin-top: 8px; }

/* Tables */
.table-wrap { overflow-x: auto; }
.tbl { width: 100%; border-collapse: collapse; font-size: 13px; min-width: 640px; }
.tbl-wide { min-width: 820px; }
.tbl th { text-align: left; color: var(--muted); font-size: 12px; padding: 10px 6px; border-bottom: 1px solid var(--line); font-weight: 600; }
.tbl td { padding: 11px 6px; border-bottom: 1px solid var(--line-soft); vertical-align: middle; }
.tbl tr.day-head th { background: #F3F4F6; color: var(--ink); font-size: 13px; font-weight: 500; padding: 8px 6px; border-top: 2px solid var(--line); }
.tbl tr:last-child td { border-bottom: none; }
.tbl input[type=number] { width: 110px; }

/* Pipeline & funnel */
.pipeline { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; }
.pipe { background: #FFFFFF; border: 1px solid var(--line); border-radius: 12px; padding: 14px; }
.pipe-label { font-size: 12px; font-weight: 700; color: var(--muted); }
.pipe-value { font-size: 26px; font-weight: 800; margin-top: 4px; }
.bar { display: block; width: 100%; margin-top: 10px; }
.funnel { display: flex; flex-direction: column; gap: 10px; }
.funnel-row { display: flex; align-items: center; gap: 12px; }
.funnel-label { width: 110px; font-size: 13px; color: #374151; }
.funnel-bar { flex: 1; } .funnel-bar .bar { margin: 0; }
.funnel-n { width: 56px; text-align: right; font-size: 14px; font-weight: 700; }

/* Patient */
.patient-page { display: flex; flex-wrap: wrap; gap: 20px; align-content: flex-start; }
.back { flex: 1 1 100%; font-size: 13px; text-decoration: none; }
.patient-card { flex: 1 1 300px; border-radius: 16px; padding: 22px; display: flex; flex-direction: column; gap: 14px; align-self: flex-start; }
.patient-card h1 { font-size: 24px; }
.facts { margin: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 16px; font-size: 13px; }
.facts dt { color: var(--muted); } .facts dd { margin: 2px 0 0; font-weight: 700; }
.timeline-card { flex: 2 1 460px; min-width: 0; border-radius: 16px; padding: 22px; }
.chart-card { flex: 1 1 100%; min-width: 0; border-radius: 16px; padding: 22px; }
.chart-card h3 { font-size: 15px; margin: 16px 0 6px; }
.chart-card caption { text-align: left; padding: 10px 0 4px; }
.chart-card .tbl td.dup { color: #6B7280; text-decoration: line-through; }
.timeline { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.timeline li { display: flex; gap: 14px; padding-bottom: 18px; }
.timeline li.last { padding-bottom: 0; } .timeline li.last .tl-line { display: none; }
.tl-rail { width: 12px; flex: 0 0 12px; display: flex; flex-direction: column; align-items: center; }
.dot { width: 12px; height: 12px; border-radius: 50%; background: #94A3B8; }
.dot-call { background: var(--teal); } .dot-warn { background: #B45309; } .dot-rule { background: #94A3B8; } .dot-visit { background: #CBD5E1; }
.dot-task { background: #0EA5E9; } .dot-note { background: #64748B; }
.tl-line { flex: 1; width: 2px; background: var(--line); margin-top: 4px; }
.tl-body { flex: 1; min-width: 0; }
.tl-when { font-size: 12px; color: var(--muted); }
.tl-title { font-size: 14px; font-weight: 700; margin-top: 2px; }
.tl-text { font-size: 13px; color: #374151; margin-top: 2px; }
.tl-box { font-size: 13px; color: #374151; margin-top: 2px; background: #F7F8F9; border-radius: 10px; padding: 10px 12px; }
.tl-play { margin-top: 8px; }
.tl-body audio { display: block; margin-top: 8px; width: 100%; max-width: 360px; }

/* Forms */
.stack { display: flex; flex-direction: column; gap: 8px; }
.stack form { margin: 0; }
.stack-lg { display: flex; flex-direction: column; gap: 14px; }
.grid-2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.grid-3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.field-label, .stack label { display: flex; flex-direction: column; gap: 4px; font-size: 12px; font-weight: 700; color: var(--muted); }
input[type=text], input[type=email], input[type=password], input[type=search], input[type=tel], input[type=number], input[type=time], input:not([type]), select, textarea {
  min-height: 44px; border-radius: 9px; border: 1px solid #D1D5DB; padding: 0 12px; font-size: 14px; background: #FFFFFF; color: var(--ink); font-family: inherit; max-width: 100%; }
textarea { padding: 10px 12px; min-height: 64px; resize: vertical; }
input[type=search] { width: 240px; }
.days { border: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: 12px; }
.check { display: inline-flex; align-items: center; gap: 6px; font-size: 14px; color: var(--ink); font-weight: 400; }
[hidden] { display: none !important; }
/* Analytics filter bar (static/app.js form[data-autofilter]): applies on change; date range fields; loading state. */
input[type=date], input[type=month] { min-height: 44px; border-radius: 9px; border: 1px solid #D1D5DB; padding: 0 10px; font-size: 14px; background: #FFFFFF; color: var(--ink); font-family: inherit; }
.field-error { color: #991B1B; font-weight: 700; align-self: center; }
form.is-loading { opacity: .65; }
form.is-loading [data-autofilter-status]::before { content: ''; display: inline-block; width: 10px; height: 10px; margin-right: 6px; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: kl-spin .8s linear infinite; vertical-align: -1px; }
@keyframes kl-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { form.is-loading [data-autofilter-status]::before { animation: none; } }
.form-error { background: #FEF2F2; color: #991B1B; border: 1px solid #FECACA; border-radius: 9px; padding: 10px 12px; font-size: 14px; }

/* Auth pages */
.center-page { display: flex; align-items: center; justify-content: center; min-height: 100vh; padding: 16px; }
.auth-card { width: 100%; max-width: 400px; background: #FFFFFF; border: 1px solid var(--line); border-radius: 16px; padding: 28px; }
.auth-card h1 { font-size: 22px; margin-bottom: 8px; }
.auth-brand { font-size: 14px; font-weight: 800; color: var(--teal); margin-bottom: 16px; }
.qr { display: flex; justify-content: center; margin: 12px 0; } .qr svg { width: 200px; height: 200px; }
.secret { background: #F1F5F9; padding: 2px 6px; border-radius: 6px; }

@media (max-width: 900px) {
  .kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pipeline { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .grid-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
  .nav { max-width: none; flex-basis: 100%; padding: 16px; }
  .nav-foot { margin-top: 12px; }
  .main { padding: 20px 16px; }
  .pipeline { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .grid-2, .grid-3 { grid-template-columns: 1fr; }
  input[type=search] { width: 100%; }
}

/* Call list */
.banner { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 12px; background: #ECFDF5; border: 1px solid #A7F3D0; border-radius: 12px; padding: 14px 18px; color: #065F46; text-decoration: none; font-size: 14px; }
.banner:hover { border-color: var(--teal); color: #065F46; }
.cl-row { display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-start; padding: 14px 0; border-top: 1px solid var(--line-soft); }
.cl-check { width: 22px; padding-top: 3px; } .cl-check input { width: 18px; height: 18px; }
.cl-main { flex: 1 1 360px; min-width: 0; }
.cl-main .badge { margin-left: 6px; vertical-align: 1px; }
.cl-facts { display: flex; flex-wrap: wrap; gap: 4px 14px; font-size: 12px; color: var(--muted); margin-top: 6px; }
.cl-warn { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.cl-warn .badge { margin-left: 0; }
.add-form { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.add-form select, .add-form input { min-height: 40px; font-size: 13px; }
.add-form input[name=staff_note] { width: 220px; }
.add-form > div { flex-basis: 100%; }
.pager { justify-content: flex-end; align-items: center; padding: 10px 0 4px; }
.note-pop label { font-size: 12px; }
.dot-test { background: #F59E0B; }
.flash.full { flex: 1 1 100%; }
.patient-card .note-pop[open] > form { position: static; width: auto; box-shadow: none; margin-top: 8px; }

/* Open Dental agent sync warnings and the one-time token box. */
.banner-warn { background: #FFF7ED; border-color: #FED7AA; color: #9A3412; }
.banner-warn:hover { border-color: #F97316; color: #9A3412; }
.token-box { background: #F8FAFC; border: 1px dashed #94A3B8; border-radius: 10px; padding: 12px 14px; font-size: 14px; }
.token-box code { font-size: 15px; word-break: break-all; }

.tl-highlight { margin-top: 6px; font-size: 14px; }
.num-sm { width: 4.5em; }
.cl-why { margin-bottom: 2px; }
.checklist { list-style: none; padding: 0; margin: 0; display: grid; gap: 6px; }

/* Patient identification: Name · Chart # · DOB · age (· location) [Same name] */
.pt-id { display: inline; }
.pt-id .pt-meta { color: #4B5563; font-weight: 400; font-size: 13px; white-space: normal; }
.pt-id .badge { margin-left: 4px; vertical-align: 1px; }

/* Call detail: summary card, transcript */
.call-summary dl { display: grid; grid-template-columns: minmax(120px, max-content) 1fr; gap: 6px 16px; margin: 0; }
.call-summary dt { color: #4B5563; font-size: 13px; }
.call-summary dd { margin: 0; }
.call-summary .summary-text { font-size: 15px; line-height: 1.55; margin: 0 0 12px; }
.call-summary .next-step { background: #E7F3F1; color: #0F5A4F; border-radius: 10px; padding: 10px 12px; font-weight: 600; margin: 0 0 12px; }
.transcript { white-space: pre-wrap; font-size: 14px; line-height: 1.55; max-height: 480px; overflow: auto; background: #F7F8F9; border-radius: 10px; padding: 12px 14px; margin: 0; }
.task-summary { font-size: 13px; color: #374151; margin-top: 4px; }
.task-summary strong { color: #0F5A4F; }
@media (max-width: 600px) { .call-summary dl { grid-template-columns: 1fr; } }

/* Work queue: Call back / Book in PMS */
.nav-count { display: inline-block; min-width: 20px; padding: 1px 7px; margin-left: 6px; border-radius: 999px; background: #FDE68A; color: #78350F; font-size: 12px; font-weight: 700; text-align: center; }
.wq-list { display: grid; gap: 12px; }
.wq-card { display: grid; gap: 8px; }
.wq-card.wq-overdue { border-color: #FCA5A5; }
.wq-card.wq-flag { border-color: #F59E0B; border-width: 2px; background: #FFFBEB; }
.wq-mustdo { padding: 6px 10px; border-radius: 8px; background: #FEF3C7; color: #78350F; }
.wq-head { display: flex; justify-content: space-between; gap: 10px; flex-wrap: wrap; align-items: flex-start; }
.wq-badges { display: flex; gap: 6px; flex-wrap: wrap; }
.wq-facts { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 6px 16px; margin: 0; }
.wq-facts dt { color: var(--muted); font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .3px; }
.wq-facts dd { margin: 0; }
.wq-actions { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.wq-actions form { margin: 0; }
.wq-day { margin-top: 18px; }
.wq-day h2 { font-size: 16px; margin: 0 0 8px; }
.next-step { background: #E7F3F1; color: #0F5A4F; border-radius: 10px; padding: 8px 12px; font-weight: 600; margin: 0; }
.print-only { display: none; }
body.print-view .nav, body.print-view .no-print { display: none; }
body.print-view .print-only { display: block; font-size: 18px; }
@media print { .nav, .no-print, .wq-actions, .tl-play { display: none !important; } .print-only { display: block; font-size: 18px; } .main { padding: 0; } .card { break-inside: avoid; border-color: #999; } }
/* Morning Huddle + Analytics (src/web/views/huddle.js, analytics.js) */
.banner-alert { background: #FEF2F2; border: 2px solid #F87171; color: #991B1B; margin-bottom: 14px; } .banner-alert:hover { color: #991B1B; border-color: #DC2626; }
.banner-info { background: #EFF6FF; border: 1px solid #BFDBFE; color: #1E3A8A; }
.hd-kpis { margin-bottom: 14px; }
.hd-table td { vertical-align: top; }
.hd-procs, .hd-alerts, .hd-gaps { margin: 0; padding-left: 16px; }
.hd-procs li, .hd-alerts li { margin: 1px 0; }
.hd-alerts { font-size: 12px; color: var(--muted); margin-top: 4px; }
.hd-chips { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 4px; }
.hd-chips .badge { font-size: 11px; padding: 2px 8px; }
.hd-done td { background: #F8FAFC; }
.hd-group-title { font-size: 16px; margin: 4px 0 8px; }
.hd-section { margin: 16px 0 6px; font-size: 13px; text-transform: uppercase; letter-spacing: .04em; color: #4B5563; }
/* Huddle: one block per office (All locations on a multi-office practice) */
.hd-office { margin: 22px 0 8px; } .hd-office-title { font-size: 20px; margin: 0 0 10px; padding-bottom: 6px; border-bottom: 2px solid #1F2937; }
.hd-closed .hd-office-title { border-bottom-color: #D1D5DB; }
/* Huddle: Yesterday in review */
.hd-review summary { cursor: pointer; font-size: 16px; } .hd-review-office { margin-top: 10px; } .hd-review-office h3 { margin: 6px 0; font-size: 15px; }
.hd-review-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 10px; margin-top: 6px; }
.hd-review-tile { border: 1px solid #E5E7EB; border-radius: 8px; padding: 10px 12px; background: #FAFAF9; } .hd-review-tile .kpi-label { margin-bottom: 4px; }
.hd-review-names { margin: 6px 0 0; padding-left: 18px; }
/* Analytics › Chair time simulator */
/* Analytics › Chair time: schedule planner */
.sp-grid th, .sp-grid td { vertical-align: top; } .sp-in { min-width: 190px; } .sp-in select, .sp-in input { font-size: 12px; padding: 3px 4px; margin: 1px 0; max-width: 100%; }
.sp-doc { border-left: 2px solid #E5E7EB; padding-left: 6px; margin: 2px 0 6px; } .sp-name { width: 100%; } .sp-hours input { width: 92px; } .sp-closed { background: #F9FAFB; }
.sp-chip { display: inline-block; border-radius: 6px; padding: 2px 6px; margin: 2px 0; font-weight: 600; font-size: 13px; } .sp-chip .small { font-weight: 400; }
.sp-summary th, .sp-summary td { text-align: center; } .sp-summary tbody th { text-align: left; } .sp-cell { min-width: 84px; } .sp-cell strong { font-size: 15px; }
.sp-office { border-bottom: 2px solid #1F2937; } .sp-week th, .sp-week td { border-top: 2px solid #1F2937; } .sp-none { background: #F9FAFB; } .sp-hide { display: none; }
.sp-row { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; margin: 2px 0; } .sp-row input[type=time] { width: 96px; }
.sp-green { background: #DCFCE7; color: #166534; } .sp-amber { background: #FEF3C7; color: #92400E; } .sp-red { background: #FEE2E2; color: #991B1B; }
.sim-steps { margin: 6px 0 8px; padding-left: 20px; } .sim-steps li { margin: 2px 0; } .sim-sentence { font-size: 15px; margin: 12px 0 6px; padding: 10px 12px; background: #F0FDF4; border: 1px solid #BBF7D0; border-radius: 8px; } .b-gray { background: #F3F4F6; color: #374151; }
.hd-print { width: 100%; border-collapse: collapse; font-size: 10pt; }
.hd-print th, .hd-print td { border-bottom: 1px solid #CBD5E1; padding: 3px 4px; text-align: left; vertical-align: top; }
.hd-print-head { margin-bottom: 6px; font-size: 11pt; }
.hd-print-foot { margin-top: 6px; font-size: 8pt; color: #475569; }
.an-bars td.bar-cell { width: 40%; }
@page huddle { size: landscape; margin: 10mm; }
@media print { body.huddle-print { font-size: 10pt; } body.huddle-print .hd-print-page { page: huddle; } .hd-break { break-before: page; } }
.hd-sub th { background: #F1F5F9; text-align: left; font-size: 13px; }
/* Daily duties (views/duties.js): one-click Done next to a huddle duty chip. */
.inline-form { display: inline-flex; gap: 4px; align-items: center; margin: 2px 4px 2px 0; }
/* Analytics lists grouped by office → provider (analytics-facts.js drillBody). */
.tbl-grouped .grp-head th { background: #F3F6F5; text-align: left; font-weight: 400; padding-top: 10px; }
.grp-toggle { background: none; border: 0; padding: 0; font: inherit; color: inherit; cursor: pointer; }
.grp-toggle::before { content: "\25BE"; display: inline-block; width: 1.1em; }
.grp-toggle[aria-expanded="false"]::before { content: "\25B8"; }
.tbl-grouped .grp-sub td { border-top: 1px solid #CCD5D2; background: #FAFBFB; }
.grp-bar { padding: 8px 12px 0; }
@media print { .tbl-grouped .grp-head th { background: none; border-top: 2px solid #999; } .tbl-grouped tbody.grp-rows { break-inside: auto; } }

/* Huddle › Calendar */
.cal-grid td, .cal-grid th { vertical-align: top; width: 14.28%; } .cal-day { min-width: 140px; padding: 4px; } .cal-num { font-weight: 700; font-size: 13px; margin-bottom: 2px; }
.cal-today { outline: 2px solid #1F2937; outline-offset: -2px; } .cal-empty { background: #F9FAFB; } .cal-line { border-radius: 6px; padding: 4px 6px; margin: 3px 0; font-size: 12px; }
.sc-day { cursor: pointer; user-select: none; } .sc-day.sc-sel { background: #ECFDF5; } .sc-day.sc-pick { background: #D1FAE5; box-shadow: inset 0 0 0 2px var(--teal); }
.cal-line.cal-closed { color: #9CA3AF; background: #F9FAFB; } .cal-office { font-weight: 700; } .cal-line a.plain { display: block; color: inherit; text-decoration: none; }
.sp-num-sm { width: 5em; } .sp-short { color: #b42318; font-weight: 600; }
.trend-year h3 { margin: 12px 0 6px; } .trend-est td { color: var(--muted); font-style: italic; }
.spark { vertical-align: middle; } .spark-a { stroke: var(--teal); stroke-width: 2; } .spark-b { stroke: #9CA3AF; stroke-width: 1.5; stroke-dasharray: 3 2; }
.delta-up { color: #0F7B3E; font-weight: 600; } .delta-down { color: #b42318; font-weight: 600; }
.trend-prov td { font-size: 12px; color: var(--muted); } .trend-prov td:first-child + td, .trend-prov td.small { padding-left: 14px; }
.sp-month { background: #F0FDFA; border: 1px solid #99F6E4; border-radius: 8px; padding: 8px 10px; margin: 8px 0; } .sp-month-on { outline: 2px solid var(--teal); }
.sp-summary { color: var(--ink); background: #F9FAFB; border-radius: 4px; padding: 2px 6px; margin: 2px 0 4px; }
.sp-x { border: 0; background: none; color: #b42318; font-size: 12px; cursor: pointer; padding: 2px 4px; } .sp-add { border: 1px dashed #9CA3AF; background: #fff; border-radius: 6px; font-size: 12px; padding: 2px 8px; margin: 2px 0 4px; cursor: pointer; }
.sp-row.sp-hide, .sp-doc.sp-hide, .sp-add.sp-hide, select.sp-hide { display: none; }
.cmp-periods { font-size: 16px; margin: 10px 0 2px; } .help-dot { display: inline-block; width: 14px; height: 14px; border-radius: 50%; background: var(--line); color: var(--muted); font-size: 10px; line-height: 14px; text-align: center; cursor: help; }
.banner-ok { background: #F0FDF4; border: 1px solid #BBF7D0; color: #166534; } .banner.sp-hide { display: none; }
.sp-views { display: inline-flex; border: 1px solid var(--line); border-radius: 8px; overflow: hidden; margin: 8px 0 4px; } .sp-view { padding: 6px 14px; font-weight: 600; color: var(--ink); text-decoration: none; border-right: 1px solid var(--line); } .sp-view:last-child { border-right: 0; } .sp-view.on { background: var(--ink); color: #fff; }

/* Daily duties: one fold per duty type */
.du-type { border-top: 1px solid #E5E7EB; padding-top: 4px; }
.du-type > summary { cursor: pointer; list-style: none; display: flex; align-items: center; gap: 6px; }
.du-type > summary::-webkit-details-marker { display: none; }
.du-type > summary::before { content: '▸'; color: var(--muted); font-size: 12px; }
.du-type[open] > summary::before { content: '▾'; }
.du-type > summary h3 { margin: 8px 0; }
.du-fold { margin: 6px 0; }

/* Campaign sections that fold (Call list, Text list, Daily duties…) and long lists in pages of 15 */
details.fold-card > summary { cursor: pointer; list-style: none; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
details.fold-card > summary::-webkit-details-marker { display: none; }
details.fold-card > summary::before { content: '▸'; color: var(--muted); font-size: 14px; }
details.fold-card[open] > summary::before { content: '▾'; }
details.fold-card > summary h2 { margin: 0; }
/* The open / close button at the end of each section header: easy to see and tap. */
details.fold-card > summary::after { content: 'Show list ▾'; margin-left: auto; padding: 6px 14px; border-radius: 999px; border: 1px solid #16212C; background: #16212C; color: #FFFFFF; font-size: 13px; font-weight: 600; }
details.fold-card[open] > summary::after { content: 'Hide ▴'; background: #FFFFFF; color: #16212C; }
details.du-type > summary::after { content: 'Show ▾'; margin-left: auto; padding: 4px 12px; border-radius: 999px; border: 1px solid #16212C; background: #16212C; color: #FFFFFF; font-size: 12px; font-weight: 600; }
details.du-type[open] > summary::after { content: 'Hide ▴'; background: #FFFFFF; color: #16212C; }
details.fold-card:not([open]) { padding-bottom: 12px; }
.pager { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 10px 0 4px; }

/* AI Inreach (src/web/views/inreach.js): call activity and call quality dashboard */
.ir-h { margin: 22px 0 10px; }
.ir-grid { margin-top: 14px; }
.ir-kpis + .card, .ir-kpis + .grid-2 { margin-top: 14px; }
section[data-ir-matrix], section[data-ir-heat], section[data-ir-flagged], section[data-ir-never] { margin-top: 14px; }
.ir-staff .card-head h3 { margin: 0; font-size: 16px; }
.ir-mini { display: flex; flex-wrap: wrap; gap: 6px 14px; font-size: 13px; color: var(--muted); }
.ir-mini strong { color: var(--ink); }
.tbl.ir-mix { min-width: 0; font-size: 12px; } .tbl.ir-mix td { padding: 5px 4px; }
.ir-trend { display: inline-block; min-width: 26px; padding: 1px 6px; margin-right: 3px; border-radius: 6px; background: #F1F5F9; text-align: center; font-weight: 600; }
.ir-coach { margin: 4px 0 0 18px; padding: 0; }
.tbl.ir-daily { min-width: 0; } .ir-daily meter { width: 90px; vertical-align: middle; }
.tbl.ir-heat { min-width: 520px; table-layout: fixed; } .ir-heat th, .ir-heat td { text-align: center; padding: 6px 2px; font-size: 12px; }
.ir-heat tbody th { text-align: right; padding-right: 8px; color: var(--muted); font-weight: 500; white-space: nowrap; }
.ir-heat td { border: 1px solid #FFFFFF; }
.ir-heat-0 { background: #F8FAFC; color: #CBD5E1; } .ir-heat-1 { background: #DCEFEA; } .ir-heat-2 { background: #B5DFD4; } .ir-heat-3 { background: #7CC7B4; }
.ir-heat-4 { background: #3FA48B; color: #FFFFFF; } .ir-heat-5 { background: #1F6F5C; color: #FFFFFF; }
.ir-heat td.ir-missed { box-shadow: inset 0 0 0 2px #DC2626; }
.ir-m { display: block; font-size: 10px; color: #B91C1C; font-weight: 700; } .ir-heat-4 .ir-m, .ir-heat-5 .ir-m { color: #FEE2E2; }
.ir-transcript p { margin: 6px 0; } .ir-local strong { color: var(--teal); } .ir-remote strong { color: #475569; }
@media (max-width: 640px) { .ir-heat th, .ir-heat td { font-size: 11px; } .ir-daily meter { width: 60px; } }
.ir-kpis-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }
@media (max-width: 1200px) { .ir-kpis-6 { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 640px) { .ir-kpis-6 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.ir-delta { font-weight: 600; } .ir-up { color: var(--teal); } .ir-down { color: #B91C1C; }
.kpi-dark .ir-up { color: #A7F3D0; } .kpi-dark .ir-down { color: #FCA5A5; }
.ir-chart { width: 100%; min-width: 420px; height: auto; display: block; }
.ir-legend { display: flex; flex-wrap: wrap; gap: 6px 16px; margin-top: 6px; } .ir-legend svg { vertical-align: -1px; }
section[data-ir-trend], section[data-ir-periods] { margin-top: 14px; }
.ir-say { margin: 4px 0; padding: 6px 10px; border-left: 3px solid var(--teal); background: #F0FAF7; border-radius: 6px; }
.ir-coach-list { margin: 0; padding-left: 20px; } .ir-coach-list > li { margin-bottom: 12px; }
.ir-audio { width: 100%; }
@media print { .ir-sheet { border: none; } .ir-say { background: none; } }
/* Evaluation sheet (owner, 2026-11-10): goal cards, action items; prints over several pages (the sheet must not be kept on one). */
.ir-goals { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 10px; }
.ir-goal { border: 1px solid var(--line); border-radius: 10px; padding: 10px 12px; display: flex; flex-direction: column; gap: 4px; background: #F7FAFC; }
.ir-goal-total { background: #EEF4FA; }
.ir-goal-big { font-size: 26px; font-weight: 700; line-height: 1.1; font-variant-numeric: tabular-nums; }
.ir-goal-foot { margin-top: auto; display: flex; gap: 6px; flex-wrap: wrap; }
.ir-actions { border: 1px solid var(--line); border-left: 4px solid var(--teal); border-radius: 10px; padding: 10px 14px; }
.ir-actions ol { margin: 0; padding-left: 18px; } .ir-actions li { margin: 4px 0; }
@media print { .card.ir-sheet { break-inside: auto; } .ir-goal, .ir-actions, .ir-coach-list > li, .tbl tr { break-inside: avoid; }
  .ir-page-break { break-before: page; } .ir-goal, .ir-goal-total { -webkit-print-color-adjust: exact; print-color-adjust: exact; } }

/* AI Inreach shell (src/web/views/inreach-layout.js): its own product, same tokens, indigo accent */
body.ir-app { --ir-accent: #4338CA; background: #F6F7FB; }
.ir-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 18px; padding: 12px 24px; background: #1E1B4B; color: #FFFFFF; }
.ir-brand { color: #FFFFFF; text-decoration: none; font-size: 17px; letter-spacing: .2px; }
.ir-mark { color: #A5B4FC; margin-right: 4px; }
.ir-switch select { background: #312E81; color: #FFFFFF; border: 1px solid #4F46E5; border-radius: 8px; padding: 6px 10px; }
.ir-practice { color: #C7D2FE; }
.ir-user { margin-left: auto; display: flex; align-items: center; gap: 10px; color: #C7D2FE; }
.ir-user form { margin: 0; } .ir-user .btn-link { color: #FFFFFF; }
.ir-nav { display: flex; flex-wrap: wrap; gap: 4px; padding: 0 24px; background: #FFFFFF; border-bottom: 1px solid var(--line); }
.ir-nav a { padding: 12px 14px; color: var(--ink); text-decoration: none; font-size: 14px; border-bottom: 3px solid transparent; }
.ir-nav a.active { border-bottom-color: var(--ir-accent); color: var(--ir-accent); font-weight: 700; }
.ir-main { padding: 22px 24px 40px; max-width: 1400px; margin: 0 auto; }
.ir-foot { padding: 12px 24px 24px; text-align: center; }
.ir-app .kpi-dark { background: #1E1B4B; border-color: #1E1B4B; } .ir-app .kpi-dark .kpi-label { color: #C7D2FE; }
.ir-app .chip.active { background: var(--ir-accent); border-color: var(--ir-accent); }
.ir-pick { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 12px; }
.ir-pick a { display: block; padding: 18px; border-radius: 12px; border: 1px solid var(--line); background: #FFFFFF; text-decoration: none; color: var(--ink); font-weight: 600; }
.ir-pick a:hover { border-color: var(--ir-accent); }
@media (max-width: 640px) { .ir-bar, .ir-nav, .ir-main { padding-left: 14px; padding-right: 14px; } .ir-user { margin-left: 0; } }
.ir-kpis-6 { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); }
@media (max-width: 1200px) { .ir-kpis-6 { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); } }
.ir-action { border-color: #FCA5A5; } .ir-action h2 { color: #991B1B; }
section[data-ir-np], section[data-ir-np-calls], section[data-ir-np-never] { margin-top: 14px; }
.ir-cbbar { width: 100%; height: 18px; border-radius: 6px; display: block; background: #F1F5F9; }
section[data-ir-callbacks] { margin-top: 14px; }
section[data-ir-ins-block], section[data-ir-np-sources] { margin-top: 14px; }
.ir-board { margin: 6px 0 10px; padding-left: 22px; } .ir-board li { display: flex; gap: 10px; align-items: baseline; padding: 4px 0; border-bottom: 1px solid var(--line-soft); }
.ir-board li span:first-child { flex: 1; }
section[data-ir-prod-out], section[data-ir-prod-in], section[data-ir-prod-cb] { margin-top: 14px; }
.ir-help { margin: 4px 0 0 18px; padding: 0; } th[data-booking-help] { cursor: help; }
a.ir-kpi-link { display: block; text-decoration: none; color: inherit; } a.ir-kpi-link:hover { border-color: var(--ir-accent, #4338CA); box-shadow: 0 0 0 1px var(--ir-accent, #4338CA); }
a.ir-kpi-link.kpi-dark { color: #FFFFFF; }   /* a clickable dark tile keeps its white text (the link rule above would inherit dark ink) */
.ir-fold { margin-top: 14px; } .ir-fold > summary h2 { font-size: 16px; }
.ir-fold-body { margin-top: 12px; } .ir-fold-body > .card, .ir-fold-body > section.card { box-shadow: none; }
.ir-foldall { margin: 14px 0 0; }
.ir-say-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 10px; margin-top: 8px; }
.ir-say-card { border: 1px solid var(--line); border-radius: 10px; padding: 12px 14px; display: flex; flex-direction: column; gap: 4px; background: #FFFFFF; }
.ir-quote { margin: 6px 0; padding: 8px 12px; border-left: 3px solid var(--ir-accent, #4338CA); background: #F5F6FF; border-radius: 6px; white-space: normal; overflow-wrap: anywhere; line-height: 1.45; }
@media (max-width: 640px) { .ir-say-cards { grid-template-columns: 1fr; } }

/* Keepline Sleep shell (src/web/views/sleep-layout.js): its own product, same tokens, night-blue accent */
body.sl-app { --ir-accent: #0E7490; background: #F5F8FA; }
.sl-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 18px; padding: 12px 24px; background: #0B2A3A; color: #FFFFFF; }
.sl-brand { color: #FFFFFF; text-decoration: none; font-size: 17px; } .sl-mark { color: #67E8F9; margin-right: 4px; }
.sl-switch select { background: #12405A; border-color: #0E7490; }
.sl-app .kpi-dark { background: #0B2A3A; border-color: #0B2A3A; } .sl-app .kpi-dark .kpi-label { color: #A5F3FC; }
.sl-app .chip.active { background: var(--ir-accent); border-color: var(--ir-accent); }
.sl-flags { margin: 0; padding-left: 18px; } .sl-flags li { margin: 3px 0; }
.sl-stages { display: flex; flex-wrap: wrap; gap: 4px; margin: 6px 0; }
.sl-stage { font-size: 11px; padding: 3px 8px; border-radius: 999px; background: #EEF2F5; color: #475569; }
.sl-stage.done { background: #CCFBF1; color: #115E59; } .sl-stage.now { background: #0E7490; color: #FFFFFF; font-weight: 700; }
.sl-board { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(200px, 1fr); gap: 10px; overflow-x: auto; padding-bottom: 8px; }
.sl-col { background: #FFFFFF; border: 1px solid var(--line); border-radius: 12px; padding: 10px; min-height: 120px; }
.sl-col h3 { margin: 0 0 8px; font-size: 13px; display: flex; justify-content: space-between; }
.sl-card { display: block; border: 1px solid var(--line); border-radius: 8px; padding: 8px; margin-bottom: 6px; text-decoration: none; color: var(--ink); background: #FAFCFD; }
.sl-card.stuck { border-color: #F59E0B; background: #FFFBEB; } .sl-card .small { color: var(--muted); }
.sl-form { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 10px 14px; align-items: end; }
.sl-docs li { margin: 6px 0; } .sl-pre { white-space: pre-wrap; font-size: 12px; background: #F8FAFC; border: 1px solid var(--line); border-radius: 8px; padding: 10px; overflow-x: auto; }
@media (max-width: 640px) { .sl-bar { padding: 12px 14px; } .sl-board { grid-auto-columns: minmax(170px, 80vw); } }

.ir-best { background: rgba(16, 185, 129, 0.08); }
.ir-check { padding: 8px 10px; border: 1px solid var(--line, #E5E7EB); border-radius: 8px; }

/* Keepline Sleep sample case (*): read-only (a disabled fieldset around the case), pinned above the case list. */
fieldset.sl-readonly { border: 0; margin: 0; padding: 0; min-width: 0; }
fieldset.sl-readonly button, fieldset.sl-readonly input, fieldset.sl-readonly select, fieldset.sl-readonly textarea { opacity: .75; }
.sl-sample-row tr { background: #F0F9FF; }

/* Keepline Sleep practice missions. */
.sl-mission-next { background: #F0F9FF; border: 1px solid #BAE6FD; border-radius: 10px; padding: 10px 14px; margin: 8px 0; }
.sl-mission-next p { margin: 6px 0 0; }
.sl-missions { margin: 8px 0 0; padding-left: 22px; }
.sl-missions li { padding: 2px 0; color: #64748B; }
.sl-missions li.done { color: #15803D; }
.sl-missions li.now { color: inherit; font-weight: 600; }
.sl-ck { list-style: none; margin: 6px 0 0; padding: 0; }
.sl-ck li { padding: 3px 0; }
.sl-ck li.sl-ck-na { color: #64748B; }
.section-title { margin: 20px 0 8px; font-size: 16px; }
/* Inreach: what makes up a person's Production (Evaluation, By person). */
.ir-prod-items { text-align: left; margin-top: 6px; }
.ir-prod-items summary { cursor: pointer; color: var(--accent, #17786A); }
.ir-prod-items table { margin-top: 6px; font-size: 13px; }
