/* Flow 2b (prefix cb-): how-update, change-message, till, rules, f2-recap */
.cb-fill { height: 100%; display: flex; flex-direction: column; }
.cb-ctl { position: absolute; right: 96px; top: 46px; display: flex; gap: 8px; }
.cb-ctl .btn { min-height: 46px; padding: 0 18px; }
.cb-cm-ctl .btn { min-height: 46px; padding: 0 18px; }

/* ---- how-update: sequence diagram. Lanes sit at x = 116, 508, 900, 1292 of the 1408 px content width ---- */
.cb-seq { position: relative; flex: 1; min-height: 0; margin-top: 20px; }
.cb-lane { position: absolute; top: 0; width: 232px; height: 44px; display: flex; align-items: flex-start; justify-content: center; gap: 10px; border-bottom: 2px solid var(--ink); background: #fff; font-size: 21px; font-weight: 600; letter-spacing: -.01em; line-height: 30px; z-index: 2; }
.cb-lane svg { width: 28px; height: 28px; flex: none; fill: none; stroke: var(--ink); stroke-width: 2; stroke-linejoin: round; stroke-linecap: round; }
.cb-life { position: absolute; top: 44px; bottom: 0; width: 0; border-left: 1px dashed #b0b0b0; }
.cb-rows { position: relative; z-index: 1; padding-top: 58px; }
.cb-row { position: relative; display: flex; flex-direction: column; align-items: flex-start; margin-bottom: 9px; }
.cb-row.cb-r { align-items: flex-end; }
.cb-row p { margin: 0 18px; padding: 0 4px; background: #fff; white-space: nowrap; transition: color .28s, opacity .28s; }
.cb-row svg { opacity: var(--cb-old-ink, 1); transition: opacity .28s; }
.cb-row .cb-l { align-self: flex-start; }
.cb-when { font-size: 15px; line-height: 20px; letter-spacing: .1em; text-transform: uppercase; color: var(--cb-old-when, var(--blue)); }
.cb-say { font-size: 21px; line-height: 26px; font-weight: 600; color: var(--cb-old-say, var(--ink)); letter-spacing: -.005em; }
.cb-cap { font-size: 19px; line-height: 26px; color: var(--cb-old-cap, var(--grey)); }
.cb-arrow { display: block; overflow: visible; flex: none; }
.cb-arrow text { font-size: 14px; font-weight: 600; fill: #fff; text-anchor: middle; }
.cb-badge, .cb-head, .cb-dot { fill: var(--blue); }
.cb-node { fill: #fff; stroke: var(--blue); stroke-width: 2.5; }
.cb-line { fill: none; stroke: var(--blue); stroke-width: 2.5; stroke-dasharray: 1; stroke-dashoffset: 0; transition: stroke-dashoffset .42s ease-out .1s; }
.cb-head, .cb-node { transition: opacity .12s .5s; }
.cb-dot { transition: opacity .12s .6s; }
.cb-line.cb-l2 { transition-delay: .6s; }
.cb-head.cb-l2 { transition-delay: 1s; }
.cb-row5 { flex-direction: row; justify-content: flex-end; align-items: center; margin: 2px 0 0; }
.cb-row5 .cb-cap { font-size: 20px; margin-right: 12px; }
.cb-chip { display: grid; grid-template-columns: 38px 1fr; gap: 11px; align-items: center; width: 322px; padding: 10px 14px 11px 11px; border-radius: 20px; background: #ececf1; color: #000; font-family: -apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, Arial, sans-serif; }
.cb-row5.shown .cb-chip { animation: notif-in .45s cubic-bezier(.2, .9, .3, 1.2); } /* keyframes from components.css */
.cb-chip-ic { width: 38px; height: 38px; border-radius: 9px; display: grid; place-items: center; background: #0e4d3a; color: #fff; font: 700 19px/1 Georgia, "Times New Roman", serif; }
.cb-chip b { display: flex; justify-content: space-between; font-size: 16px; line-height: 1.2; }
.cb-chip small { font-size: 13px; font-weight: 400; color: rgba(0, 0, 0, .5); }
.cb-chip div span { display: block; font-size: 16px; line-height: 1.25; margin-top: 1px; }
@media screen {
  /* the four numbers wait on their lanes; each press inks one arrow; earlier conversations stay, dimmed */
  body:not(.guide):not(.overview) .cb-row:not(.cb-row5):not(.shown) { visibility: visible; opacity: 1; }
  body:not(.guide):not(.overview) .cb-row:not(.shown) .cb-line { stroke-dashoffset: 1; transition: none; }
  body:not(.guide):not(.overview) .cb-row:not(.shown) :is(p, .cb-head, .cb-node, .cb-dot) { opacity: 0; transition: none; }
  body:not(.guide):not(.overview) .cb-row:not(.shown) .cb-badge { fill: #fff; stroke: #b0b0b0; }
  body:not(.guide):not(.overview) .cb-row:not(.shown) text { fill: var(--soft); }
  body:not(.guide):not(.overview) .cb-rows:not(:has(.cb-row5.shown)) .cb-row.shown:has(~ .cb-row.shown) { --cb-old-say: #8e8e8e; --cb-old-cap: #adadad; --cb-old-when: #8dbcf3; --cb-old-ink: .4; }
}
.cb-facts { display: grid; grid-template-columns: repeat(3, 1fr); gap: 48px; border-top: 1px solid var(--ink); padding-top: 14px; margin-top: 18px; }
.cb-facts p { font-size: 20px; line-height: 1.35; }

/* ---- change-message ---- */
.cb-cm { display: grid; grid-template-columns: 1fr auto; gap: 64px; height: 100%; align-items: center; }
.cb-cm-main { height: 100%; display: flex; flex-direction: column; min-width: 0; }
.cb-cm-body { flex: 1; display: flex; flex-direction: column; justify-content: space-between; margin-top: 28px; }
.cb-cm-code { position: relative; font-size: 22px; padding: 20px 0; }
.cb-cm-code .ln.cb-hi { background: var(--blue-tint); }
.cb-cm-ctl { position: absolute; right: 20px; top: 20px; display: flex; gap: 8px; font-family: var(--sans); }
#cb-cm-val { padding: 2px 0; }
#cb-cm-val.cb-flash { animation: cb-flash 1.4s ease-out; }
@keyframes cb-flash { 0%, 45% { background: var(--blue); color: #fff; } 100% { background: transparent; color: inherit; } }
.cb-tok { position: relative; background: var(--blue); color: #fff; padding: 2px 0; }
.cb-ann { position: absolute; left: 50%; top: 100%; width: 24px; height: 17px; margin-left: -1px; border-left: 2px solid var(--blue); border-bottom: 2px solid var(--blue); }
.cb-ann b { position: absolute; left: 100%; bottom: -13px; margin-left: 9px; font: 400 20px/24px var(--sans); color: var(--blue); white-space: nowrap; }
table.cb-cm-t td { padding: 13px 20px 13px 0; }
table.cb-cm-t td:first-child { font-weight: 400; color: var(--grey); width: 62%; text-wrap: balance; }
table.cb-cm-t td:last-child { color: var(--ink); font-weight: 600; padding-right: 0; }
.cb-cm-phone { display: flex; flex-direction: column; align-items: center; gap: 8px; }

/* ---- till ---- */
.cb-till { display: grid; grid-template-columns: 1fr 328px; gap: 48px; height: 100%; align-items: center; }
.cb-till-main { height: 100%; display: flex; flex-direction: column; }
.cb-till-rows { flex: 1; display: flex; flex-direction: column; margin-top: 34px; }
.cb-till-rows .row { flex: 1 1 auto; grid-template-columns: 34px 84px 1fr 400px; gap: 20px; align-items: start; align-content: center; padding: 14px 0; }
.cb-till-rows .row .n { line-height: 36px; }
.cb-till-rows .row h3 { font-size: 29px; }
.cb-till-rows .row p { margin-top: 8px; font-size: 23px; }
.cb-till-rows .row .cb-take { margin-top: 5px; font-size: 20px; line-height: 1.38; border-left: 3px solid var(--blue); padding-left: 16px; }
.cb-till-rows .cb-take span { display: block; margin-top: 8px; }
.cb-ico { width: 84px; height: 54px; fill: none; stroke: var(--ink); stroke-width: 1.7; stroke-linejoin: round; stroke-linecap: round; }
.cb-ico .cb-b { stroke: var(--blue); stroke-width: 2.1; }
.cb-staff { display: flex; flex-direction: column; align-items: center; gap: 14px; }
.cb-staff .small { text-align: center; text-wrap: balance; }
.cb-dev { width: 328px; padding: 10px; border: 2px solid var(--ink); border-radius: 46px; background: #fff; }
.cb-scr { position: relative; border: 1px solid var(--line); border-radius: 35px; overflow: hidden; padding: 34px 16px 26px; }
.cb-scr::before { content: ""; position: absolute; left: 50%; top: 13px; width: 64px; height: 7px; margin-left: -32px; border-radius: 4px; background: var(--ink); }
.cb-s-bar { display: flex; justify-content: space-between; align-items: baseline; padding: 8px 0 12px; font-size: 16px; color: var(--grey); border-bottom: 1px solid var(--ink); }
.cb-s-bar b { font-size: 18px; }
.cb-s-bar em { font-style: normal; font-size: 15px; color: var(--good); }
.cb-s-cam { margin-top: 14px; background: #111; padding: 14px 0 26px; text-align: center; }
.cb-s-cam span { font-size: 16px; color: rgba(255, 255, 255, .78); }
/* viewfinder corners: eight solid white bars drawn as backgrounds */
.cb-s-find { position: relative; width: 176px; height: 176px; margin: 12px auto 0; display: grid; place-items: center; background:
  linear-gradient(#fff, #fff) 0 0 / 26px 3px, linear-gradient(#fff, #fff) 0 0 / 3px 26px,
  linear-gradient(#fff, #fff) 100% 0 / 26px 3px, linear-gradient(#fff, #fff) 100% 0 / 3px 26px,
  linear-gradient(#fff, #fff) 0 100% / 26px 3px, linear-gradient(#fff, #fff) 0 100% / 3px 26px,
  linear-gradient(#fff, #fff) 100% 100% / 26px 3px, linear-gradient(#fff, #fff) 100% 100% / 3px 26px;
  background-repeat: no-repeat; }
.cb-s-find img { width: 132px; padding: 8px; background: #fff; }
.cb-s-find i { position: absolute; left: 6px; right: 6px; top: 50%; height: 2px; background: var(--blue); }
.cb-s-res { display: flex; justify-content: space-between; align-items: flex-end; padding: 16px 0 14px; }
.cb-s-res b { display: block; font-size: 22px; letter-spacing: -.02em; line-height: 1.15; }
.cb-s-res span { display: block; font-size: 16px; color: var(--grey); margin-top: 3px; }
.cb-s-res div:first-child span { font-family: var(--mono); }
.cb-s-bal { text-align: right; }
.cb-s-bal b { color: var(--blue); }
.cb-s-btn { height: 58px; display: grid; place-items: center; background: var(--blue); color: #fff; font-size: 20px; font-weight: 600; }

/* ---- rules ---- */
.cb-rules { flex: 1; min-height: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 64px; margin-top: 36px; }
.cb-rules h3 { padding: 30px 0 24px; }
.cb-pos h3 { padding-top: 29px; }
.cb-pos { display: flex; flex-direction: column; border-top: 1px solid var(--ink); }
.cb-pos > div { flex: 1 1 auto; display: flex; flex-direction: column; justify-content: center; padding: 14px 0; border-top: 1px solid var(--line); }
.cb-pos p { font-size: 25px; line-height: 1.34; }
.cb-pos .tiny { font-size: 15px; letter-spacing: .1em; text-transform: uppercase; margin-top: 8px; }
.cb-pol { display: flex; flex-direction: column; padding: 0 40px 30px; }
.cb-pol .ticks li + li { margin-top: 18px; }
.cb-pol .ticks:not(.no) { flex: 1; display: flex; flex-direction: column; justify-content: space-between; padding-bottom: 24px; }
.cb-pol .ticks.no { margin-top: auto; padding-top: 24px; border-top: 1px solid #cfcfcf; }
.cb-pol .ticks.no li { color: var(--ink); }

/* ---- f2-recap ---- */
#f2-recap .ticks { margin-top: 48px; }
#cb-recap-pass { zoom: 1.12; }
