:root {
  --ink: #111; --muted: #4A5568; --bg: #F3F5F8; --card: #fff; --line: #C9CED6; --navy: #0B2545;
  --green: #1B7F3B; --green-bg: #DDF3E4; --orange: #E07B00; --orange-bg: #FFE8CC; --red: #C62828; --red-bg: #FBD9D9;
  --blue: #1F4E9A; --blue-bg: #E3ECF8; --grey-bg: #E9ECF0;
}
* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; font: 15px/1.4 -apple-system, "Helvetica Neue", Helvetica, Arial, sans-serif; color: var(--ink); background: var(--bg); padding-bottom: 72px; }
a { color: var(--blue); text-decoration: none; }
h1 { font-size: 22px; margin: 14px 0 10px; } h1 small, h2 small { font-size: 13px; font-weight: 500; color: var(--muted); margin-left: 6px; }
h2 { font-size: 16px; margin: 0 0 8px; } h3 { font-size: 14px; margin: 14px 0 6px; }
.wrap { max-width: 1180px; margin: 0 auto; padding: 0 12px; }
.muted { color: var(--muted); } .warn { color: var(--red); font-weight: 600; } .small { font-size: 13px; } .nowrap { white-space: nowrap; }
code { background: var(--grey-bg); padding: 1px 5px; border-radius: 4px; font-size: 13px; }
pre { white-space: pre-wrap; word-break: break-word; font: 13px/1.4 ui-monospace, Menlo, monospace; }
pre.wa { font: 14px/1.45 -apple-system, Helvetica, Arial, sans-serif; margin: 6px 0 0; }
pre.log { background: #0B2545; color: #E8EEF7; padding: 10px; border-radius: 8px; max-height: 420px; overflow: auto; }

/* top bar */
.top { position: sticky; top: 0; z-index: 20; background: var(--navy); color: #fff; display: flex; align-items: center; gap: 10px; padding: 8px 12px; }
.top .brand { color: #fff; font-weight: 700; font-size: 17px; margin-right: auto; white-space: nowrap; }
.top .back { color: #fff; font-size: 26px; line-height: 1; padding: 0 8px 2px 2px; font-weight: 700; text-decoration: none; } .top .brand span, .loginbox h1 span { color: #F2C230; }
.top .clocks { display: flex; gap: 8px; font-size: 12px; opacity: .95; } .top .clocks span { white-space: nowrap; }
.top .who { color: #fff; font-weight: 600; border: 1px solid rgba(255,255,255,.4); border-radius: 14px; padding: 2px 10px; font-size: 13px; }
.top form.inline { margin: 0; } .top .btn.small { background: #fff; color: var(--navy); }
.flash { background: #FFF6D6; border-bottom: 1px solid #E7D28A; padding: 8px 14px; font-size: 14px; } .flash.warn { background: var(--red-bg); border-color: #E6A2A2; border-radius: 8px; margin: 8px 0; }
.foot { text-align: center; color: var(--muted); font-size: 12px; padding: 20px 12px 10px; }

/* bottom nav */
.bottom { position: fixed; bottom: 0; left: 0; right: 0; background: #fff; border-top: 1px solid var(--line); display: flex; z-index: 20; padding-bottom: env(safe-area-inset-bottom); }
.bottom a { flex: 1; text-align: center; padding: 8px 0 6px; font-size: 11px; color: var(--muted); font-weight: 600; }
.bottom a i { display: block; font-style: normal; font-size: 18px; line-height: 20px; } .bottom a.on { color: var(--navy); border-top: 3px solid var(--navy); margin-top: -1px; }

/* cards & grid */
.card { background: var(--card); border: 1px solid var(--line); border-radius: 10px; padding: 12px; margin: 10px 0; }
.grid2 { display: grid; gap: 10px; grid-template-columns: 1fr; } @media (min-width: 760px) { .grid2 { grid-template-columns: 1fr 1fr; } }
.stack label { display: block; margin: 8px 0; } .stack input, .loginbox input, .decide input, .search input { width: 100%; padding: 9px 10px; border: 1px solid var(--line); border-radius: 8px; font-size: 15px; }

/* kpis */
.kpis { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 8px; margin: 8px 0; }
.kpi { display: block; background: var(--card); border: 1px solid var(--line); border-left-width: 6px; border-radius: 10px; padding: 10px 12px; color: var(--ink); }
.kpi b { display: block; font-size: 24px; line-height: 1.1; } .kpi span { display: block; font-size: 12px; color: var(--muted); font-weight: 600; text-transform: uppercase; letter-spacing: .02em; margin-top: 2px; }
.kpi small { display: block; font-size: 12px; color: var(--muted); margin-top: 4px; }
.kpi.green { border-left-color: var(--green); } .kpi.orange { border-left-color: var(--orange); } .kpi.red { border-left-color: var(--red); background: #FFF7F7; }
.kpi.blue { border-left-color: var(--blue); } .kpi.grey { border-left-color: #9AA3AF; }

/* chips, dots, sources */
.chip { display: inline-block; padding: 1px 8px; border-radius: 10px; font-size: 12px; font-weight: 700; background: var(--grey-bg); color: var(--ink); }
.chip.green { background: var(--green-bg); color: var(--green); } .chip.orange { background: var(--orange-bg); color: #8A4B00; } .chip.red { background: var(--red-bg); color: var(--red); }
.chip.t1 { background: var(--red-bg); color: var(--red); } .chip.t2 { background: var(--orange-bg); color: #8A4B00; } .chip.t3 { background: var(--green-bg); color: var(--green); }
.citychip { display: inline-block; color: #fff; font-size: 11px; font-weight: 700; padding: 1px 7px; border-radius: 8px; margin-right: 6px; }
.dot { display: inline-block; width: 11px; height: 11px; border-radius: 50%; background: #9AA3AF; vertical-align: middle; } .dot.green { background: var(--green); } .dot.red { background: var(--red); } .dot.grey { background: #9AA3AF; }
.src { display: inline-block; font-size: 12px; padding: 2px 8px; border-radius: 8px; background: var(--green-bg); color: var(--green); font-weight: 600; margin: 2px 4px 2px 0; }
.src.stale { background: var(--orange-bg); color: #8A4B00; } .src.bad { background: var(--red-bg); color: var(--red); }
.srcs { display: flex; flex-wrap: wrap; gap: 4px; }
.count { background: var(--red); color: #fff; border-radius: 9px; padding: 0 6px; font-size: 11px; margin-left: 4px; }

/* buttons */
.btn { display: inline-block; border: 1px solid var(--line); background: #fff; color: var(--ink); border-radius: 8px; padding: 7px 12px; font-size: 14px; font-weight: 600; cursor: pointer; }
.btn.small { padding: 4px 9px; font-size: 12px; } .btn.on { background: var(--navy); color: #fff; }
.btn.primary { background: var(--navy); color: #fff; width: 100%; margin-top: 8px; }
.btn.green { background: var(--green); color: #fff; border-color: var(--green); } .btn.orange { background: var(--orange); color: #fff; border-color: var(--orange); } .btn.red { background: var(--red); color: #fff; border-color: var(--red); }
.links .btn { margin: 2px 4px 2px 0; }

/* tabs */
.tabs { display: flex; gap: 6px; overflow-x: auto; padding: 4px 0; margin: 6px 0; }
.tab { white-space: nowrap; padding: 6px 12px; border-radius: 16px; border: 1px solid var(--line); background: #fff; color: var(--ink); font-weight: 600; font-size: 14px; }
.tab.on { background: var(--c, var(--navy)); color: #fff; border-color: transparent; } .tabs.sub .tab { font-size: 13px; padding: 4px 10px; }

/* action cards */
.actions { display: grid; gap: 8px; grid-template-columns: 1fr; } @media (min-width: 760px) { .actions { grid-template-columns: 1fr 1fr; } }
.action { display: block; border: 1px solid var(--line); border-left: 6px solid #9AA3AF; border-radius: 10px; padding: 8px 10px; background: #fff; color: var(--ink); }
.action.red { border-left-color: var(--red); background: #FFF7F7; } .action.orange { border-left-color: var(--orange); background: #FFFBF4; } .action.green { border-left-color: var(--green); }
.a-head { font-size: 14px; } .a-text { margin: 4px 0; font-weight: 600; } .a-foot { display: flex; justify-content: space-between; gap: 8px; font-size: 12px; color: var(--muted); flex-wrap: wrap; }
.action.red .a-text { color: var(--red); } .action.orange .a-text { color: #8A4B00; }

/* tables */
table.list { width: 100%; border-collapse: collapse; font-size: 14px; }
table.list th, table.list td { text-align: left; padding: 6px 6px; border-bottom: 1px solid #E6E9EE; vertical-align: top; }
table.list thead th { font-size: 12px; color: var(--muted); text-transform: uppercase; letter-spacing: .02em; }
table.list td.note { color: var(--muted); font-size: 13px; } table.list tr.other { opacity: .7; } table.list tr.month th { background: var(--grey-bg); font-size: 13px; }
table.list tr.past { opacity: .55; } table.list tr.now td { background: #FFF6D6; } table.list tr.reason td { font-size: 12px; padding-top: 0; }
td.red { color: var(--red); font-weight: 700; }
ul.plain { list-style: none; padding: 0; margin: 0; } ul.plain li { padding: 3px 0; border-bottom: 1px solid #EEF1F5; } ul.plain.small li { font-size: 13px; }

/* 14-day board */
.boardwrap { overflow-x: auto; -webkit-overflow-scrolling: touch; border: 1px solid var(--line); border-radius: 10px; background: #fff; }
table.board { border-collapse: separate; border-spacing: 2px; font-size: 12px; }
table.board th { font-weight: 600; text-align: center; padding: 4px 2px; min-width: 64px; } table.board th.today { background: #FFF6D6; border-radius: 6px; }
table.board th.sticky { position: sticky; left: 0; background: #fff; z-index: 2; text-align: left; min-width: 118px; max-width: 160px; padding-left: 8px; box-shadow: 2px 0 0 #E6E9EE; }
table.board tr.occ th { color: var(--muted); font-size: 11px; }
table.board td.cell { text-align: center; border-radius: 6px; padding: 4px 2px; background: var(--grey-bg); }
table.board td.cell b { display: block; font-size: 15px; } table.board td.cell small { display: block; font-size: 10.5px; color: var(--muted); }
table.board td.green { background: var(--green-bg); } table.board td.orange { background: var(--orange-bg); } table.board td.red { background: var(--red-bg); }
table.board td.sold { outline: 2px solid #9AA3AF; outline-offset: -2px; } .e { color: var(--red); font-weight: 800; }
.legend { font-size: 13px; color: var(--muted); } .board-img { width: 100%; border: 1px solid var(--line); border-radius: 8px; }

/* scans */
.scan { border: 1px solid var(--line); border-left: 6px solid #9AA3AF; border-radius: 10px; background: #fff; padding: 8px 10px; margin: 8px 0; font-size: 14px; }
.scan.green { border-left-color: var(--green); } .scan.orange { border-left-color: var(--orange); } .scan.red { border-left-color: var(--red); }
.s-body { margin: 4px 0; } .s-move { margin: 4px 0; } .s-foot { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; justify-content: space-between; font-size: 12px; margin-top: 6px; }
.decide { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; } .decide input { width: 170px; padding: 5px 8px; font-size: 13px; } .decide .btn { padding: 5px 10px; font-size: 13px; }
.decided { font-weight: 700; padding: 3px 8px; border-radius: 8px; background: var(--grey-bg); } .decided.approved { background: var(--green-bg); color: var(--green); } .decided.hold { background: var(--orange-bg); color: #8A4B00; } .decided.rejected { background: var(--red-bg); color: var(--red); }

/* season strip */
.stripwrap { background: #fff; border: 1px solid var(--line); border-radius: 10px; padding: 6px; } svg.strip { width: 100%; height: 150px; display: block; }
.mix { display: flex; gap: 2px; margin: 4px 0 12px; min-height: 26px; } .mixbar { min-width: 0; overflow: hidden; white-space: nowrap; font-size: 12px; font-weight: 700; padding: 4px 6px; border-radius: 6px; }
.mixbar.green { background: var(--green-bg); color: var(--green); } .mixbar.orange { background: var(--orange-bg); color: #8A4B00; } .mixbar.red { background: var(--red-bg); color: var(--red); }

/* messages */
.search { display: flex; gap: 6px; margin: 6px 0; } .search input { flex: 1; }
.msgs { display: flex; flex-direction: column; gap: 8px; }
.msg { background: #fff; border: 1px solid var(--line); border-radius: 12px; padding: 8px 12px; max-width: 920px; } .msg.me { background: #E7F6EC; border-color: #BFE3C9; }
.m-head { display: flex; justify-content: space-between; gap: 8px; font-size: 13px; } .m-media { margin: 6px 0; }
.posts { display: grid; gap: 8px; grid-template-columns: 1fr; } @media (min-width: 760px) { .posts { grid-template-columns: 1fr 1fr; } }
.post { display: block; border: 1px solid var(--line); border-radius: 10px; padding: 8px 10px; color: var(--ink); background: #fff; }
.p-head { display: flex; justify-content: space-between; font-size: 13px; } .p-body { font-size: 13px; color: var(--muted); white-space: pre-wrap; margin-top: 4px; max-height: 84px; overflow: hidden; }

/* login */
body.login { display: flex; min-height: 100vh; align-items: center; justify-content: center; padding: 16px; }
.loginbox { width: 100%; max-width: 380px; } .gbtn { text-align: center; background: #fff; color: var(--navy); border: 2px solid var(--navy); } .center { text-align: center; } .loginbox h1 { margin-top: 0; } .loginbox label { display: block; margin: 10px 0; font-weight: 600; font-size: 13px; }
details summary { cursor: pointer; color: var(--blue); font-weight: 600; margin-top: 8px; }

/* ops hub */
.hub { display: grid; gap: 8px; grid-template-columns: 1fr; margin: 8px 0; } @media (min-width: 760px) { .hub { grid-template-columns: 1fr 1fr; } }
.hubcard { display: block; background: #fff; border: 1px solid var(--line); border-left: 6px solid var(--navy); border-radius: 10px; padding: 10px 12px; color: var(--ink); }
.hubcard.red { border-left-color: var(--red); } .hubcard b { display: block; font-size: 16px; } .hubcard span { display: block; color: var(--muted); font-size: 13px; margin-top: 2px; }
.cityband { color: #fff; font-weight: 700; padding: 5px 10px; border-radius: 6px; margin: 12px 0 6px; }
/* ledgers */
.ledger h3 { margin: 6px 0; } .lday { border: 1px solid var(--line); border-left: 6px solid #9AA3AF; border-radius: 8px; padding: 6px 8px; margin: 6px 0; font-size: 13px; }
.lday.green { border-left-color: var(--green); } .lday.orange { border-left-color: var(--orange); } .lday.red { border-left-color: var(--red); background: #FFF7F7; }
.l-line { padding-left: 16px; } .l-line.red { color: var(--red); font-weight: 600; }
/* cleaning lines */
.cl { padding: 6px 0; border-bottom: 1px solid #EEF1F5; font-size: 14px; line-height: 1.6; } .cl .chip { margin-left: 4px; }
/* live grid */
table.grid th { min-width: 78px; } table.grid tr.bld th { text-align: left; background: var(--grey-bg); font-size: 12px; padding: 3px 8px; position: static; }
table.grid td.cell { min-width: 78px; height: 38px; } table.grid td.stay { background: var(--green-bg); text-align: left; padding-left: 6px; }
table.grid td.stay.first { border-top-left-radius: 10px; border-bottom-left-radius: 10px; } table.grid td.stay.last { border-top-right-radius: 10px; border-bottom-right-radius: 10px; }
table.grid td.stay.orange { background: var(--orange-bg); } table.grid td.stay.red { background: var(--red-bg); }
table.grid td.stay b { font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 110px; } table.grid td.stay small { font-size: 10px; }
table.grid td.open { background: var(--grey-bg); } table.grid td.open.red { background: var(--red-bg); }

@media (max-width: 480px) {
  .top { gap: 6px; padding: 6px 8px; } .top .brand { font-size: 15px; } .top .clocks { gap: 5px; font-size: 10.5px; }
  .top .btn.small { padding: 3px 7px; font-size: 11px; } .top .who { padding: 2px 7px; font-size: 12px; }
  .kpi b { font-size: 21px; } h1 { font-size: 20px; }
}
.brief { border-left: 6px solid var(--navy); } .brief p { margin: 4px 0; }
table.arrivals tr.row-red td { background: #FFF1F1; } table.arrivals tr.row-orange td { background: #FFF8EC; } table.arrivals tr.row-green td { background: #F2FBF4; }
table.arrivals td:first-child { border-left: 5px solid transparent; } table.arrivals tr.row-red td:first-child { border-left-color: var(--red); }
table.arrivals tr.row-orange td:first-child { border-left-color: var(--orange); } table.arrivals tr.row-green td:first-child { border-left-color: var(--green); }
/* phase C */
.md h2 { font-size: 15px; margin: 14px 0 4px; } .md h1 { font-size: 17px; } .md table { border-collapse: collapse; font-size: 13px; } .md td, .md th { border: 1px solid var(--line); padding: 3px 6px; }
.md ul { padding-left: 18px; } .md li { margin: 2px 0; } .md code { font-size: 12px; }
.snaps { display: grid; gap: 8px; grid-template-columns: 1fr; margin: 8px 0; } @media (min-width: 760px) { .snaps { grid-template-columns: 1fr 1fr; } }
.snap { border: 1px solid var(--line); border-radius: 8px; padding: 8px; background: #fff; } .snap.red { border-color: var(--red); } .snap pre { max-height: 140px; overflow: auto; color: var(--muted); }
.thumb { width: 100%; border: 1px solid var(--line); border-radius: 6px; margin: 6px 0; }
.search.big input { font-size: 17px; padding: 12px; }
.result { display: block; padding: 8px 0; border-bottom: 1px solid #EEF1F5; color: var(--ink); } .r-head { font-size: 14px; } .r-snip { font-size: 13px; color: var(--muted); margin-top: 2px; } .r-snip b { color: var(--ink); background: #FFF0A8; }
.decide select { padding: 6px 8px; border: 1px solid var(--line); border-radius: 8px; font-size: 13px; }

/* refunds sheet (refunds agent): the workbook's layout - sticky header, frozen left columns, Excel-like cells */
.refbar { background: var(--card); border: 1px solid var(--line); border-radius: 10px; padding: 8px 12px; margin: 8px 0; font-size: 13px; }
.refbar-links { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; } .refbar-time { color: var(--muted); } .refbar-time b { color: var(--ink); }
.refbar-counts { display: flex; flex-wrap: wrap; gap: 4px; margin: 6px 0; } .refbar-policy { margin: 4px 0 0; color: var(--ink); }
.tabs .tab small { font-size: 11px; opacity: .85; margin-left: 2px; }
.sheetwrap { max-height: calc(100dvh - 190px); min-height: 220px; overflow: auto; }
table.sheet { table-layout: fixed; width: 100%; border-collapse: separate; border-spacing: 0; font-size: 12px; line-height: 1.35; font-family: Arial, Helvetica, sans-serif; }
table.sheet th, table.sheet td { border-right: 1px solid #D0D5DD; border-bottom: 1px solid #D0D5DD; padding: 4px 5px; vertical-align: top; text-align: left; overflow-wrap: anywhere; word-break: break-word; }
table.sheet thead th { position: sticky; top: 0; z-index: 3; color: #fff; font-weight: 700; text-align: center; vertical-align: middle; font-size: 11.5px; height: 46px; }
table.sheet td.c { text-align: center; } table.sheet td.num { text-align: right; font-variant-numeric: tabular-nums; } table.sheet td.flagcell { font-size: 15px; line-height: 1.1; }
table.sheet td.empty { text-align: center; color: var(--muted); padding: 18px; background: #fff; }
table.sheet col.col-s1 { width: 58px; } table.sheet col.col-s2 { width: 44px; } table.sheet col.col-s3 { width: 160px; }
table.sheet.sticky1 col.col-s1 { width: 160px; }
table.sheet .s1, table.sheet .s2, table.sheet .s3 { position: sticky; z-index: 2; }
table.sheet .s1 { left: 0; } table.sheet .s2 { left: 58px; } table.sheet .s3 { left: 102px; box-shadow: 2px 0 0 #B8BFC9; }
table.sheet thead th.s1 { font-size: 10.5px; padding-left: 2px; padding-right: 2px; }
table.sheet.sticky1 .s1 { box-shadow: 2px 0 0 #B8BFC9; }
table.sheet thead th.s1, table.sheet thead th.s2, table.sheet thead th.s3 { z-index: 4; }
table.sheet details.more summary { list-style: none; cursor: pointer; color: inherit; font-weight: inherit; margin: 0; } table.sheet details.more summary::-webkit-details-marker { display: none; }
table.sheet details.more summary::after { content: " ▾"; color: var(--blue); } table.sheet details.more[open] summary { display: none; }
table.sheet form.sheetform { gap: 4px; } table.sheet form.sheetform input { width: 100%; padding: 4px 6px; font-size: 12px; } table.sheet form.sheetform .btn { white-space: nowrap; }
table.sheet .decided { display: inline-block; font-size: 11.5px; } table.sheet small.echo { display: block; color: var(--muted); font-size: 11px; margin-top: 2px; }
table.sheet.lists, table.sheet.keytab { width: 100%; } table.sheet.keytab td { font-size: 13px; } table.sheet.keytab td.c { white-space: nowrap; }
.totals table.list { width: auto; } .totals th { text-align: left; font-weight: 700; padding: 3px 14px 3px 0; } .totals td.num { text-align: right; font-variant-numeric: tabular-nums; }
.sheetfoot { font-size: 12px; color: var(--muted); font-style: italic; margin: 6px 0; }
@media (max-width: 480px) {
  table.sheet col.col-s1 { width: 46px; } table.sheet col.col-s2 { width: 36px; } table.sheet col.col-s3 { width: 112px; }
  table.sheet .s2 { left: 46px; } table.sheet .s3 { left: 82px; } table.sheet thead th.s1 { font-size: 9.5px; }
  table.sheet.sticky1 col.col-s1 { width: 130px; }
  .sheetwrap { max-height: calc(100dvh - 150px); }
}

/* ---- rates redesign (rates build agent, 25 Oct 2026): unit grid, calendar, summary cards ---- */
.review { border-left: 6px solid var(--navy); }
ul.rv { list-style: none; margin: 0; padding: 0; } ul.rv li { padding: 5px 8px; margin: 4px 0; border-left: 5px solid #9AA3AF; background: var(--grey-bg); border-radius: 0 6px 6px 0; font-size: 14px; }
ul.rv li a { color: var(--ink); } ul.rv li.green { border-left-color: var(--green); background: var(--green-bg); } ul.rv li.red { border-left-color: var(--red); background: var(--red-bg); }
ul.rv li.orange { border-left-color: var(--orange); background: var(--orange-bg); } ul.rv li.blue { border-left-color: var(--blue); background: var(--blue-bg); } ul.rv li.blue a { color: var(--blue); font-weight: 600; }
table.rg th { min-width: 84px; } table.rg th.we { background: #F3F5F8; border-radius: 6px; } table.rg th.today { background: #FFF6D6; }
table.rg th.sticky { min-width: 96px; max-width: 130px; } table.rg th.sticky small { display: block; font-weight: 500; color: var(--muted); font-size: 10px; }
table.rg tr.bld th.sticky { background: var(--grey-bg); font-size: 12px; } table.rg tr.bld td { background: var(--grey-bg); border-radius: 0 6px 6px 0; text-align: left; font-size: 11px; color: var(--muted); padding: 2px 8px; }
table.rg td.cell { height: 54px; vertical-align: middle; padding: 3px 3px; line-height: 1.2; }
table.rg td.open small { font-size: 10.5px; color: var(--ink); } table.rg td.open b { font-size: 15px; } table.rg td.open em { display: block; font-style: normal; font-size: 10px; color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 110px; margin: 0 auto; }
table.rg td.open.none { background: var(--grey-bg); }
table.rg td.stay { background: var(--green-bg); text-align: left; padding-left: 8px; } table.rg td.stay.orange { background: var(--orange-bg); } table.rg td.stay.red { background: var(--red-bg); }
table.rg td.stay.first { border-top-left-radius: 14px; border-bottom-left-radius: 14px; } table.rg td.stay.last { border-top-right-radius: 14px; border-bottom-right-radius: 14px; }
table.rg td.stay b { display: block; font-size: 12.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } table.rg td.stay small { display: block; font-size: 10px; color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
table.rg td.blocked { background: repeating-linear-gradient(135deg, #E9ECF0 0 6px, #D2D7DE 6px 12px); color: var(--muted); font-size: 11px; font-weight: 600; }
.e.t1 { color: var(--red); } .e.t2 { color: #8A4B00; } .e.t3 { color: var(--green); }
/* calendar */
.cal { display: grid; gap: 10px; grid-template-columns: 1fr; margin: 8px 0; } @media (min-width: 720px) { .cal { grid-template-columns: 1fr 1fr; } } @media (min-width: 1100px) { .cal { grid-template-columns: 1fr 1fr 1fr; } }
.month { background: #fff; border: 1px solid var(--line); border-radius: 10px; padding: 8px; min-width: 0; } .month h3 { margin: 0 0 6px; font-size: 14px; } .month h3 small { font-weight: 500; color: var(--muted); font-size: 11px; }
table.mt { width: 100%; table-layout: fixed; border-collapse: separate; border-spacing: 1px; } table.mt th { font-size: 10px; color: var(--muted); font-weight: 600; padding: 0 0 2px; }
td.dc { height: 46px; vertical-align: top; padding: 1px 2px; border-radius: 3px; font-size: 9.5px; overflow: hidden; color: var(--ink); line-height: 1.15; }
td.dc.empty { background: transparent; } td.dc.past { opacity: .5; } td.dc.td { outline: 2px solid var(--navy); outline-offset: -2px; } td.dc.inv { color: #fff; }
td.dc i { font-style: normal; display: block; font-size: 9px; } td.dc b { display: block; font-size: 11.5px; letter-spacing: -.02em; } td.dc small { display: block; font-size: 8.5px; }
.ev { display: block; font-size: 8.5px; font-weight: 700; line-height: 1.3; padding: 0 2px; border-radius: 3px; margin-top: 1px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ev.t1 { background: var(--red); color: #fff; } .ev.t2 { background: var(--orange); color: #fff; } .ev.t3 { background: var(--green); color: #fff; } .ev.more { background: #fff; color: var(--ink); }
.cal-legend .ev, .mev .ev { display: inline-block; font-size: 11px; padding: 0 6px; } .mev li { font-size: 12.5px; }
.cal-legend .ramp i { display: inline-block; width: 14px; height: 12px; vertical-align: middle; border-radius: 2px; }
@media (max-width: 420px) { td.dc { height: 42px; font-size: 9px; padding: 1px 1px; } td.dc b { font-size: 10.5px; } .ev { font-size: 8px; } .month { padding: 6px 4px; } }
/* summary */
.ucard h2 { font-size: 17px; } .ucard h3 { margin: 6px 0 4px; } .ucard h3 small { font-weight: 500; color: var(--muted); font-size: 11.5px; margin-left: 4px; }
.ugrid { display: grid; gap: 12px; grid-template-columns: 1fr; margin-bottom: 8px; } @media (min-width: 900px) { .ugrid { grid-template-columns: 1fr 1fr; } }
table.comps td { font-size: 13px; } table.comps td.num { text-align: right; white-space: nowrap; } table.comps .green { color: var(--green); font-weight: 700; } table.comps .red { color: var(--red); font-weight: 700; }
.remarks p { margin: 4px 0; font-size: 14px; } ul.acts { margin: 4px 0 6px; padding-left: 18px; } ul.acts li { margin: 3px 0; font-size: 14px; }
table.mtab th { min-width: 66px; } table.mtab th.sticky { min-width: 104px; } table.mtab td { text-align: center; padding: 4px 3px; background: #fff; border-bottom: 1px solid #EEF1F5; font-size: 12.5px; }
table.mtab tr.avg td { background: var(--blue-bg); font-size: 13.5px; } table.mtab th small { font-weight: 500; color: var(--muted); }
.scan.alert { border-left-color: var(--red); background: #FFF7F7; }
/* complaints & requests page (requests agent, 25 Oct 2026) - append only */
.req-meta { display: flex; flex-wrap: wrap; gap: 4px 12px; align-items: center; font-size: 13px; margin: 6px 0 2px; }
.timer { font-weight: 700; } .timer.red { color: var(--red); } .timer.orange { color: #8A4B00; } .timer.green { color: var(--green); }
.nobody { color: var(--red); font-weight: 700; } .actioned { color: var(--green); font-weight: 600; }
.scan.req pre.wa { max-height: none; } .scan .s-head .chip { margin-right: 4px; }
.scan.req.red { background: #FFF7F7; } .scan.req.orange { background: #FFFBF4; }
details.card > summary { color: var(--ink); font-size: 16px; font-weight: 700; margin: 0; } details.card[open] > summary { margin-bottom: 6px; }
details.card summary small { font-size: 13px; font-weight: 500; color: var(--muted); margin-left: 6px; }
.legend-dots span { display: inline-block; margin-right: 10px; } .legend-dots i { display: inline-block; width: 10px; height: 10px; border-radius: 50%; margin-right: 4px; vertical-align: middle; }
.legend-dots i.red { background: var(--red); } .legend-dots i.orange { background: var(--orange); } .legend-dots i.green { background: var(--green); }
@media (max-width: 480px) { .decide input { width: 100%; } .decide select { width: 100%; } .decide .btn { width: 100%; } }

/* redesign 3 (26 Oct): header search icon, location bar */
.top .hsearch { font-size: 20px; line-height: 1; padding: 6px 8px; text-decoration: none; color: inherit; }
.locbar { display: flex; gap: 6px; overflow-x: auto; padding: 6px 12px; border-bottom: 1px solid var(--line, #e3e3e3); background: var(--bg2, #fafafa); }
.locbar a { white-space: nowrap; padding: 4px 10px; border-radius: 14px; font-size: 13px; text-decoration: none; color: inherit; border: 1px solid var(--line, #ddd); }
.locbar a.on { color: #fff; background: var(--c, #333); border-color: var(--c, #333); }

/* locations */
.locband { color: #fff; font-weight: 700; padding: 6px 12px; border-radius: 8px; margin: 14px 0 6px; display: flex; align-items: center; gap: 8px; }
.locband small { font-weight: 400; opacity: .9; font-size: 12px; }
.locband a { color: #fff; }
.locnote { background: #FFF7E6; border: 1px solid #F0C879; color: #5A3E00; border-radius: 10px; padding: 10px 12px; margin: 10px 0; font-size: 14px; }
.locchips { display: flex; gap: 6px; flex-wrap: wrap; margin: 6px 0; }
.locchips a { padding: 3px 10px; border-radius: 14px; border: 1px solid var(--line); font-size: 13px; color: var(--ink); text-decoration: none; }
.locchips a.on { color: #fff; background: var(--c, #333); border-color: var(--c, #333); }
.locchip { display: inline-block; color: #fff; font-size: 11px; font-weight: 700; padding: 1px 7px; border-radius: 8px; margin-right: 4px; background: var(--c, #4A5568); }
.loc-empty { color: var(--muted); font-size: 13px; padding: 4px 0 8px; }
.hub.loc { margin-top: 4px; }

/* users */
.chip.role.admin { background: var(--blue-bg, #E8F0FE); color: #1A49B8; } .chip.role.ops { background: var(--green-bg); color: var(--green); } .chip.role.rates { background: var(--orange-bg); color: #8A4B00; }
.role-note { margin: 4px 0 10px; font-size: 13.5px; }
table.users td.act form { margin: 0; } table.users td code { font-size: 13px; }
.scrollx { overflow-x: auto; }

/* accounting */
.acc-hub { margin-bottom: 4px; } .acc-foot { margin-top: 18px; }
.miss { color: #8A4B00; background: var(--orange-bg); border-radius: 6px; padding: 0 5px; font-size: 12px; font-weight: 700; }
a.mail { white-space: nowrap; font-size: 12.5px; font-weight: 600; }
table.acc-days td.num, table.acc-exp td.num, table.list td.num, table.list th.num { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
table.acc-days tr.we td { background: #FAFBFC; } table.acc-days tr.now td { background: #FFF6D6; }
table.acc-exp { min-width: 980px; font-size: 13px; } table.acc-exp td { vertical-align: top; }
details.chd summary { cursor: pointer; font-size: 13.5px; margin: 2px 0; color: var(--ink); font-weight: 500; } details.chd ul { margin: 2px 0 6px 10px; }
details.gaps { margin: 4px 0 8px; } details.gaps summary { color: #8A4B00; font-size: 13px; } details.gaps ul li { color: var(--ink); }
details.rules summary { font-size: 14px; } .chip.blue { background: var(--blue-bg); color: var(--blue); }
.ledger h3 { margin-top: 6px; } .lday { border-left: 4px solid #9AA3AF; padding: 4px 8px; margin: 6px 0; background: #fff; border-radius: 0 6px 6px 0; font-size: 13px; }
.lday.ok { border-left-color: var(--green); } .lday.mismatch, .lday.red { border-left-color: var(--red); } .l-line { padding-left: 14px; color: var(--muted); } .l-line.red { color: var(--red); }
