:root {
  --bg: #f6f7f9;
  --panel: #ffffff;
  --ink: #1d232b;
  --muted: #5f6b7a;
  --line: #dde2e8;
  --accent: #1f5fae;
  --accent-ink: #ffffff;
  --warn-bg: #fff4dc;
  --warn-ink: #7a4b00;
  --bad-bg: #fde8e8;
  --bad-ink: #9b1c1c;
  --ok-bg: #e5f4ea;
  --ok-ink: #1e6b3a;
  --info-bg: #e8f0fb;
  --info-ink: #1f4f8f;
  --radius: 8px;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Noto Sans", "Noto Sans Arabic", Arial, sans-serif;
  font-size: 16px;
  color: var(--ink);
}
* { box-sizing: border-box; }
body { margin: 0; background: var(--bg); line-height: 1.4; }
h1 { font-size: 1.35rem; margin: 0 0 12px; }
h2 { font-size: 1.1rem; margin: 20px 0 8px; }
h3 { font-size: 1rem; margin: 14px 0 6px; }
p { margin: 6px 0; }
.muted { color: var(--muted); }
.small { font-size: .85rem; }
.nowrap { white-space: nowrap; }

/* Arabic and other right-to-left text sits in its own isolated run */
.rtl { direction: rtl; unicode-bidi: isolate; text-align: right; display: block; font-size: 1.05rem; }


button, .btn {
  font: inherit; border: 1px solid var(--accent); background: var(--accent); color: var(--accent-ink);
  border-radius: var(--radius); padding: 9px 14px; cursor: pointer; min-height: 44px; min-width: 44px;
}
button.secondary { background: var(--panel); color: var(--accent); }
button.danger { background: var(--bad-ink); border-color: var(--bad-ink); }
button.link { background: none; border: none; color: var(--accent); padding: 0; min-height: 0; text-decoration: underline; }
button:disabled { opacity: .5; cursor: default; }
input, select, textarea {
  font: inherit; border: 1px solid var(--line); border-radius: var(--radius); padding: 8px 10px; background: #fff; width: 100%;
  min-height: 44px;
}
label { display: block; font-size: .9rem; color: var(--muted); margin: 10px 0 4px; }
.row { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.row > * { flex: 0 0 auto; }
.grow { flex: 1 1 auto; }

.card { background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius); padding: 14px; margin: 10px 0; }
.note { border-radius: var(--radius); padding: 10px 12px; margin: 10px 0; font-size: .92rem; }
.note.info { background: var(--info-bg); color: var(--info-ink); }
.note.warn { background: var(--warn-bg); color: var(--warn-ink); }
.note.bad { background: var(--bad-bg); color: var(--bad-ink); }
.note.ok { background: var(--ok-bg); color: var(--ok-ink); }

.badge { display: inline-block; font-size: .75rem; padding: 2px 8px; border-radius: 99px; background: #eef1f4; color: var(--muted); white-space: nowrap; }
.badge.claimed { background: #efe8fb; color: #5b2ea6; }
.badge.allocated { background: var(--info-bg); color: var(--info-ink); }
.badge.pending { background: var(--warn-bg); color: var(--warn-ink); }
.badge.urgent { background: var(--bad-bg); color: var(--bad-ink); }
.badge.ok { background: var(--ok-bg); color: var(--ok-ink); }

table { border-collapse: collapse; width: 100%; background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius); }
th, td { text-align: left; padding: 8px 10px; border-bottom: 1px solid var(--line); vertical-align: top; font-size: .93rem; }
th { background: #f0f2f5; font-weight: 600; color: var(--muted); font-size: .82rem; }
td.num, th.num { text-align: right; }

/* ---------- sign in ---------- */
.signin { max-width: 380px; margin: 40px auto; padding: 0 16px; }

/* ---------- broker: phone first ---------- */
.phone { max-width: 560px; margin: 0 auto; min-height: 100vh; padding-bottom: calc(80px + env(safe-area-inset-bottom)); }
.phone header { background: var(--panel); border-bottom: 1px solid var(--line); padding: 10px 16px; padding-top: calc(10px + env(safe-area-inset-top)); display: flex; justify-content: space-between; align-items: center; position: sticky; top: 0; z-index: 2; }
.phone header .who { font-size: .85rem; color: var(--muted); }
.phone main { padding: 12px 16px; }
/* the bottom tab bar sits clear of the iPhone's home indicator and Safari's
   floating address bar (13 Oct, iPhone check) */
.tabs { position: fixed; bottom: 0; left: 0; right: 0; display: flex; background: var(--panel); border-top: 1px solid var(--line); z-index: 3;
  padding: 0 env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left); }
.tabs a { flex: 1; text-align: center; padding: 14px 0; color: var(--muted); text-decoration: none; font-weight: 600; }
.tabs a.on { color: var(--accent); box-shadow: inset 0 3px 0 var(--accent); }
.lead { display: block; text-decoration: none; color: inherit; }
.lead .name { font-weight: 600; font-size: 1.05rem; }
.lead .where { color: var(--muted); font-size: .9rem; margin-top: 2px; }
.lead .meta { display: flex; justify-content: space-between; align-items: center; margin-top: 8px; }
.days { font-weight: 600; }
.days.urgent { color: var(--bad-ink); }
.outcomes { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.outcomes button { background: var(--panel); color: var(--ink); border-color: var(--line); text-align: left; }
.outcomes button.on { border-color: var(--accent); box-shadow: inset 0 0 0 2px var(--accent); }
.kv { display: grid; grid-template-columns: 110px 1fr; gap: 4px 10px; font-size: .95rem; }
.kv dt { color: var(--muted); }
.kv dd { margin: 0; min-width: 0; }
.copyrow { margin-bottom: 4px; }
.copyrow { flex-wrap: nowrap; }
.copyrow .value { overflow-wrap: anywhere; min-width: 0; flex: 1 1 auto; }
.copyrow button.copy { padding: 4px 12px; font-size: .9rem; }

/* ---------- manager / owner: laptop ---------- */
.desk { display: grid; grid-template-columns: 230px 1fr; min-height: 100vh; }
.desk > nav { background: #1f2a37; color: #cfd6df; padding: 16px 0; }
.desk > nav .brand { color: #fff; font-weight: 700; padding: 0 18px 4px; }
.desk > nav .who { font-size: .82rem; padding: 0 18px 14px; border-bottom: 1px solid #334155; margin-bottom: 8px; }
.desk > nav a { display: flex; justify-content: space-between; color: #cfd6df; text-decoration: none; padding: 9px 18px; font-size: .95rem; }
.desk > nav a.on { background: #2e3c4d; color: #fff; box-shadow: inset 3px 0 0 #7fb0ff; }
.desk > nav .group { font-size: .72rem; text-transform: uppercase; letter-spacing: .06em; color: #8a97a8; padding: 14px 18px 4px; }
.desk > nav .count { background: #f2b84b; color: #2a1d00; border-radius: 99px; font-size: .75rem; padding: 0 7px; font-weight: 700; }
.desk > nav .signout { margin: 18px; width: calc(100% - 36px); background: transparent; border-color: #4b5a6c; color: #cfd6df; }
.desk main { padding: 22px 28px; max-width: 1200px; }
.tiles { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
.tile { background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius); padding: 12px 14px; }
.tile .n { font-size: 1.6rem; font-weight: 700; }
.tile .l { color: var(--muted); font-size: .85rem; }
.split { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.formgrid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0 16px; }

/* ---------- dialogs ---------- */
.overlay { position: fixed; inset: 0; background: rgba(15, 23, 32, .45); display: flex; align-items: center; justify-content: center; z-index: 10; padding: 16px; }
.dialog { background: var(--panel); border-radius: 10px; max-width: 520px; width: 100%; padding: 20px; box-shadow: 0 10px 30px rgba(0,0,0,.25); }
.dialog .actions { display: flex; gap: 8px; justify-content: flex-end; margin-top: 16px; }

.refusal { max-width: 460px; margin: 60px auto; padding: 0 16px; text-align: center; }

/* owner and manager at phone width: the menu behind a "Menu" button (13 Oct) */
.deskbar, .menu-scrim { display: none; }
@media (max-width: 760px) {
  .desk { grid-template-columns: 1fr; }
  .deskbar { display: flex; justify-content: space-between; align-items: center; gap: 12px; background: var(--panel);
    border-bottom: 1px solid var(--line); padding: 10px 16px; padding-top: calc(10px + env(safe-area-inset-top));
    position: sticky; top: 0; z-index: 21; }
  .deskbar .who { font-size: .85rem; color: var(--muted); }
  .desk > nav { display: none; padding: 8px 0; }
  /* stops short of the bottom, so there is always somewhere outside to tap */
  .desk > nav.open { display: block; position: fixed; left: 0; right: 0; top: var(--deskbar-h, 64px); overflow-y: auto;
    max-height: calc(100vh - var(--deskbar-h, 64px) - 72px); max-height: calc(100dvh - var(--deskbar-h, 64px) - 72px);
    z-index: 22; box-shadow: 0 8px 24px rgba(0,0,0,.25); }
  .menu-scrim.open { display: block; position: fixed; inset: 0; background: rgba(15, 23, 32, .35); z-index: 20; }
  .desk > nav .brand, .desk > nav .who { display: none; }   /* already in the header */
  /* owner and manager on a phone: menu links big enough to tap (UI-10) */
  .desk > nav a { min-height: 44px; align-items: center; }
  .desk main > p > a { display: inline-flex; align-items: center; min-height: 44px; }
  .tiles, .split, .formgrid { grid-template-columns: 1fr 1fr; }
}

/* Phone tap targets: every link a broker taps is at least 44 px tall (Apple's minimum) */
.phone main > p > a, .signin a, .refusal a {
  display: inline-flex; align-items: center; min-height: 44px; min-width: 44px;
}
.phone main > p > button.link { min-height: 44px; }
input[type=checkbox] { min-height: 0; width: auto; }
a.btn { display: inline-flex; align-items: center; text-decoration: none; }
/* Safari draws its own small dropdown and ignores the height above; a plain
   one keeps every dropdown 44 px tall on an iPhone too */
select {
  -webkit-appearance: none; appearance: none; padding-right: 32px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%235f6b7a' stroke-width='2'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 12px center;
}

/* BD and Clients: the two areas, at the top of every screen */
.areatabs { display: flex; background: var(--panel); border-bottom: 1px solid var(--line); }
.areatabs a { flex: 0 0 auto; min-width: 96px; min-height: 44px; display: inline-flex; align-items: center; justify-content: center;
  padding: 0 18px; color: var(--muted); text-decoration: none; font-weight: 600; }
.areatabs a.on { color: var(--accent); box-shadow: inset 0 -3px 0 var(--accent); }
.phone .areatabs a { flex: 1 1 0; }
.deskmain { min-width: 0; }

/* ---------- slice 3b: the open owners list, one set of screens ---------- */
.bd-search { display: flex; gap: 8px; margin: 8px 0 10px; }
.bd-search input { flex: 1 1 auto; font-size: 1.05rem; }
.bd-filters { background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius); padding: 4px 12px; margin-bottom: 8px; }
.bd-filters summary { min-height: 44px; display: flex; align-items: center; cursor: pointer; font-weight: 600; color: var(--muted); }
.filterrow { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 12px; padding-bottom: 12px; }
.filter { margin: 0; color: var(--muted); font-size: .85rem; }
.filter select { margin-top: 4px; }
.ownerlist { display: flex; flex-direction: column; gap: 10px; }
.ownerhead { display: none; }
.ownerrow { display: block; background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius); padding: 12px 14px;
  color: inherit; text-decoration: none; }
.ownerrow .o-name { font-weight: 600; font-size: 1.05rem; }
.ownerrow .o-props { margin-top: 4px; font-size: .9rem; }
.ownerrow .o-props .match { color: var(--ink); }
.ownerrow .o-last { margin-top: 6px; color: var(--muted); }
.ownerrow.dnc { opacity: .75; border-style: dashed; }
.copyrow .value.muted { font-style: italic; }

/* a broker at a laptop: the same screens, full width, list as a table */
@media (min-width: 1024px) {
  .phone.wide-ok { max-width: none; display: flex; flex-direction: column; padding-bottom: 0; }
  .phone.wide-ok header { order: 0; }
  .phone.wide-ok .areatabs { order: 1; }
  .phone.wide-ok .tabs { order: 2; position: static; border-top: 0; border-bottom: 1px solid var(--line); justify-content: flex-start; }
  .phone.wide-ok .tabs a { flex: 0 0 auto; padding: 12px 22px; }
  .phone.wide-ok main { order: 3; width: 100%; max-width: 1280px; margin: 0 auto; padding: 18px 28px; }
  .filterrow { grid-template-columns: repeat(5, 1fr); }
  .ownerlist { gap: 0; border: 1px solid var(--line); border-radius: var(--radius); background: var(--panel); }
  .ownerhead, .ownerrow { display: grid; grid-template-columns: 1.1fr 2fr 1.3fr; gap: 16px; padding: 10px 14px; }
  .ownerhead { color: var(--muted); font-size: .82rem; font-weight: 600; background: #f0f2f5; border-bottom: 1px solid var(--line); }
  .ownerrow { border: 0; border-bottom: 1px solid var(--line); border-radius: 0; }
  .ownerrow:hover { background: #f6f9fd; }
  .ownerrow .o-props, .ownerrow .o-last { margin-top: 0; }
}
.desk .ownerhead, .desk .ownerrow { display: grid; grid-template-columns: 1.1fr 2fr 1.3fr; gap: 16px; padding: 10px 14px; }
.desk .ownerlist { gap: 0; border: 1px solid var(--line); border-radius: var(--radius); background: var(--panel); }
.desk .ownerhead { color: var(--muted); font-size: .82rem; font-weight: 600; background: #f0f2f5; border-bottom: 1px solid var(--line); }
.desk .ownerrow { border: 0; border-bottom: 1px solid var(--line); border-radius: 0; }
.desk .ownerrow .o-props, .desk .ownerrow .o-last { margin-top: 0; }
.desk .filterrow { grid-template-columns: repeat(5, 1fr); }
/* a phone number or email behind Show and Copy: text first, buttons wrap under it on a phone */
.revealrow { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; padding: 6px 0; }
.revealtext { flex: 1 1 180px; display: flex; gap: 10px; align-items: baseline; min-width: 0; }
.revealtext .small { flex: 0 0 64px; }
.revealtext .value { overflow-wrap: anywhere; min-width: 0; }
.revealtext .value.muted { font-style: italic; overflow-wrap: normal; white-space: nowrap; }
.revealbtns { display: flex; gap: 8px; flex: 0 0 auto; }

/* slice 3b, Stage C: list pages, order, "opened today" on a row */
.badge.warn { background: var(--warn-bg); color: var(--warn-ink); }
.ownerrow .badge { margin-left: 6px; white-space: normal; font-weight: 500; }
.ownerrow .opened-today { display: inline-block; margin-top: 4px; margin-left: 0; }
.pager { justify-content: space-between; margin: 8px 0; }
.pager button { min-height: 44px; }
.sortby select { min-width: 12rem; }

/* team activity (amendment 2026-10-09_1) */
.periodbar { justify-content: space-between; margin: 10px 0 14px; gap: 12px; }
.periodbar button { min-height: 44px; }
.periodbar .row { flex-wrap: nowrap; }
.periodbar .row > strong { flex: 1 1 6rem; text-align: center; min-width: 0; }
table.activity th.grp { text-align: center; border-bottom: 1px solid var(--line); }
table.activity td.num { text-align: right; font-variant-numeric: tabular-nums; }
table.activity tfoot th, table.activity tfoot td { border-top: 2px solid var(--line); font-weight: 600; }
table.activity .mix { margin: 0; padding: 0; list-style: none; font-size: .85rem; }
table.activity a.member { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 4px; min-height: 44px; }
.activity-cards { display: none; }
.actcard h4 { margin: 10px 0 4px; }
.actcard .kv { display: grid; grid-template-columns: 1fr auto; gap: 2px 12px; }
.actcard .mix { margin: 6px 0 0; padding-left: 18px; font-size: .9rem; }
.actcard a.member { display: inline-flex; align-items: center; min-height: 44px; flex-wrap: wrap; gap: 4px; }
@media (max-width: 900px) {
  .activity-wide { display: none; }
  .activity-cards { display: block; }
  .tablebox { overflow-x: auto; }
}
@media (max-width: 480px) {
  /* on a phone the period's dates go on their own line above Previous and Next */
  .periodbar > .row { flex: 1 1 100%; min-width: 0; flex-wrap: wrap; }
  .periodbar .row > strong { order: -1; flex-basis: 100%; text-align: left; }
}

/* tables marked "stack" become one block per row on a phone */
@media (max-width: 600px) {
  table.stack, table.stack tbody, table.stack tr, table.stack td { display: block; width: auto; }
  table.stack thead { display: none; }
  table.stack tr { border: 1px solid var(--line); border-radius: var(--radius); padding: 8px 12px; margin-bottom: 8px; background: var(--panel); }
  table.stack td { border: 0; padding: 2px 0; }
  table.stack td button { min-height: 44px; margin-top: 4px; }
}

/* lists a tab configures (13 Oct 14:30): cards on a phone, a table on a laptop */
.subtabs { display: flex; gap: 4px; margin: 0 0 8px; border-bottom: 1px solid var(--line); }
.subtabs a { padding: 12px 16px; min-height: 44px; display: inline-flex; align-items: center; text-decoration: none; color: var(--muted); border-bottom: 2px solid transparent; }
.subtabs a.on { color: var(--accent, #1f5fbf); border-bottom-color: currentColor; font-weight: 600; }
.tablist { display: flex; flex-direction: column; gap: 10px; }
.tabhead { display: none; }
.tabrow { background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius); padding: 12px 14px; display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.tabrow.blocked { border-style: dashed; opacity: .85; }
.tabcell { min-width: 0; overflow-wrap: anywhere; }
.tabactions { flex-wrap: wrap; gap: 8px; }
.tabactions .btn, .tabactions button { min-height: 44px; }
.filterrow { --filter-cols: 5; }
@media (min-width: 1024px) {
  .tablist { gap: 0; border: 1px solid var(--line); border-radius: var(--radius); background: var(--panel); }
  .tabhead, .tabrow { display: grid; grid-template-columns: var(--tab-cols) auto; gap: 12px; padding: 10px 12px; align-items: start; }
  .tabhead { color: var(--muted); font-size: .8rem; font-weight: 600; background: #f0f2f5; border-bottom: 1px solid var(--line); }
  .tabrow { border: 0; border-bottom: 1px solid var(--line); border-radius: 0; }
  .filterrow { grid-template-columns: repeat(var(--filter-cols), minmax(0, 1fr)); }
}

/* owners list at phone width, every role (13 Oct, iPhone check): cards, not
   the laptop table; page buttons only below the list, so the first owner is on
   the first screen */
@media (max-width: 760px) {
  .desk main { padding: 12px 16px; }
  .desk .ownerhead { display: none; }
  .desk .ownerlist { gap: 10px; border: 0; background: none; }
  .desk .ownerrow { display: block; border: 1px solid var(--line); border-radius: var(--radius); padding: 12px 14px; background: var(--panel); }
  .desk .ownerrow .o-props { margin-top: 4px; }
  .desk .ownerrow .o-last { margin-top: 6px; }
  .pager[data-pager="top"] { display: none; }
  .sortby select { min-width: 0; }
}

