/* The mockup's styles, verbatim (apps/web/mockup/valio-dashboard-mockup-v41.html, lines 4-104). The pages are built from them; nothing here is redesigned. */
:root{--blue:#2d45c7;--ink:#101828;--mut:#667085;--dim:#98a2b3;--line:#eaecf0;
--g:#067647;--gbg:#ecfdf3;--r:#c01048;--rbg:#fdf0f3;--a:#b54708;--abg:#fffaeb;--b:#175cd3;--bbg:#eff8ff}
*{box-sizing:border-box;margin:0}body{font:13.5px/1.55 -apple-system,Segoe UI,Roboto,sans-serif;color:var(--ink);background:#f2f4f7;padding:0 0 60px}
.mockbar{background:#111;color:#fff;font-size:11px;letter-spacing:.08em;text-align:center;padding:6px}
/* The logo and the sign-out line up with the page's edges below (Gary, 2026-11-03). */
header{display:flex;align-items:center;gap:26px;padding:14px max(24px,calc((100% - 1120px) / 2 + 24px));background:#fff;border-bottom:1px solid var(--line)}
.logo{display:flex;align-items:center}.logo img{height:26px;width:auto;display:block}
nav{display:flex;gap:6px}
nav a{color:var(--mut);text-decoration:none;font-weight:600;font-size:13.5px;padding:8px 16px;border-radius:8px;cursor:pointer;transition:background .12s}
nav a:hover{background:#f2f4f9;color:var(--ink)}
nav a.on{color:var(--blue);background:none;font-weight:700;border-radius:0;box-shadow:inset 0 -2.5px 0 var(--blue)}
nav a.on:hover{background:none}
main{max-width:1120px;margin:24px auto;padding:0 24px}
.crumb{font-size:12px;color:var(--mut);margin-bottom:10px}
.crumb a{color:var(--blue);font-weight:700;cursor:pointer;text-decoration:none}
/* Five cards, not the mockup's four (Gary, 2026-10-27: one state of the money each); they stack by threes, then one, on narrow screens. */
.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:20px}
@media (max-width:1000px){.cards{grid-template-columns:repeat(3,1fr)}}
@media (max-width:560px){.cards{grid-template-columns:1fr}}
.card{background:#fff;border:1px solid var(--line);border-radius:10px;padding:14px 16px;border-top:3px solid var(--dim)}
.card.door{cursor:pointer}
.card.door:hover{outline:2px solid var(--blue)}
.card .lbl{font-size:10.5px;font-weight:700;letter-spacing:.06em;color:var(--mut)}
.card .amt{font-size:21px;font-weight:800;margin:3px 0 2px}
.card .n{font-size:11px;color:var(--mut);line-height:1.45}
.card .go{font-size:11px;color:var(--blue);font-weight:700;margin-top:6px}
.card.g{border-top-color:var(--g)}.card.r{border-top-color:var(--r)}.card.a{border-top-color:#f79009}.card.b{border-top-color:var(--b)}
.panel{background:#fff;border:1px solid var(--line);border-radius:10px;padding:18px 20px;margin-bottom:16px}
.ph{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;gap:12px}
.ph b{font-size:15px}
.grp{font-size:10.5px;font-weight:800;letter-spacing:.07em;color:var(--mut);padding:14px 10px 6px;border-bottom:1px solid var(--line)}
.gband{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 8px;margin:14px 0 4px;font-size:11px;font-weight:800;letter-spacing:.07em;border-bottom:2.5px solid}
.gband.sure{border-color:var(--dim);color:var(--mut);background:none}
.gband.proj{border-color:var(--dim);color:var(--mut);background:none}
.gband .gt{font-size:16px;font-weight:800;letter-spacing:0;font-variant-numeric:tabular-nums}
.gband .gt{color:var(--ink)}
.vtog{padding:7px 16px;border:1px solid var(--line);border-radius:20px;font-weight:700;font-size:12px;color:var(--mut);cursor:pointer;background:#fff}
.vtog.on{background:var(--blue);color:#fff;border-color:var(--blue)}
/* View by rebate or by contract, a two-sided switch (Gary, 2026-11-03). */
.seg{display:inline-flex;background:#e4e7ec;border-radius:8px;padding:3px;gap:2px}
.seg span{padding:5px 14px;border-radius:6px;font-weight:700;font-size:12px;color:var(--mut);cursor:pointer;user-select:none}
.seg span.on{background:#fff;color:var(--ink);box-shadow:0 1px 2px rgba(16,24,40,.12)}
.srch{border:1px solid var(--line);border-radius:7px;padding:6px 12px;font-size:12.5px;width:230px}
table{width:100%;border-collapse:collapse;font-size:13px}
th{font-size:10px;letter-spacing:.07em;color:var(--dim);text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
th.s{cursor:pointer;user-select:none}th.s:hover{color:var(--ink)}
th.r,td.r{text-align:right}
/* A date or an amount never wraps (Gary, 2026-11-03). */
td.r,td[data-sort]{white-space:nowrap}
td{padding:12px 10px;border-bottom:1px solid #f4f5f7;vertical-align:middle}
tr.fr td{padding:2px 6px 8px;border-bottom:1px solid var(--line)}
tr.fr input{width:100%;border:1px solid var(--line);border-radius:5px;padding:3px 7px;font-size:11px;color:var(--mut)}
tr.rowlink:hover td{background:#f8f9fd;cursor:pointer}
td b{font-weight:700}td .sub{color:var(--dim);font-size:11px;display:block}
.money{font-variant-numeric:tabular-nums;font-weight:700}
.ok{color:var(--g);font-weight:700}
.claim{color:var(--r);font-weight:700}
.task{color:var(--a);font-weight:700}
.wait{color:var(--mut)}
.tabs{display:flex;gap:8px;margin-bottom:14px}
.tab{padding:7px 16px;border:1px solid var(--line);border-radius:20px;font-weight:700;font-size:12px;color:var(--mut);cursor:pointer;background:#fff}
.tab.on{background:var(--blue);color:#fff;border-color:var(--blue)}
.stage{display:flex;gap:3px;align-items:center}
.dot{width:7px;height:7px;border-radius:50%;background:#d0d5dd;position:relative}
.dot:hover::after{content:attr(data-s);position:absolute;bottom:13px;left:50%;transform:translateX(-50%);background:#111;color:#fff;padding:4px 9px;border-radius:5px;font-size:10.5px;font-weight:700;white-space:nowrap;z-index:6}.dot.on{background:var(--g)}.dot.cur{background:var(--blue);outline:3px solid #dbe1ff}
.hide{display:none}
.drawer{border-left:4px solid var(--blue);background:#f8f9fd;padding:16px 18px;border-radius:8px;margin-top:10px}
.ten{font-size:15px;font-weight:700;line-height:1.55;margin-bottom:10px}
.perl{font-size:12.5px;margin:2px 0;cursor:pointer;padding:3px 6px;border-radius:5px}
.perl:hover{background:#eef1fb}
.perl .go2{color:var(--blue);font-weight:700;font-size:11px}
.btn{display:inline-block;background:var(--blue);color:#fff;font-weight:700;font-size:12px;padding:7px 14px;border-radius:7px;margin-right:8px;cursor:pointer;text-decoration:none}
.btn.ghost{background:#fff;color:var(--blue);border:1.5px solid var(--blue)}
.note{font-size:11px;color:var(--dim);margin-top:10px}
.chip{font-size:10px;font-weight:800;letter-spacing:.05em;padding:3px 8px;border-radius:5px;white-space:nowrap}
.chip.a{background:var(--abg);color:var(--a)}.chip.b{background:var(--bbg);color:var(--b)}.chip.r{background:var(--rbg);color:var(--r)}.chip.g{background:var(--gbg);color:var(--g)}
.olink{color:var(--blue);font-weight:700;font-size:12px;cursor:pointer}
.ovl{position:fixed;inset:0;background:rgba(16,24,40,.35);z-index:4}
.side{position:fixed;top:0;right:0;bottom:0;width:min(720px,94vw);background:#fff;box-shadow:-8px 0 30px rgba(0,0,0,.18);padding:24px;overflow:auto;z-index:5}
.side h3{font-size:15px;margin-bottom:4px}
.side .sub2{font-size:11.5px;color:var(--mut);margin-bottom:14px}
.side table{font-size:12.5px}
.x{float:right;cursor:pointer;color:var(--dim);font-weight:700;font-size:14px}
.mrow{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;font-size:13px;padding:7px 0;border-bottom:1px solid #f4f5f7}
.mrow b{font-variant-numeric:tabular-nums;text-align:right;max-width:62%}
.mrow.red{color:var(--r)}
.mrow.here{background:var(--bbg);border-radius:7px;padding:9px 10px;font-weight:700;border-bottom:none;color:var(--b)}
.ladr{display:grid;grid-template-columns:1fr 74px 1fr;gap:12px;align-items:center;padding:10px;border-bottom:1px solid #f4f5f7;font-size:13px}
.ladr b{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.ladr .tag{font-size:11px;color:var(--mut);text-align:right;line-height:1.4}
.ladr.here{background:var(--bbg);border-radius:7px;border-bottom:none;font-weight:700;color:var(--b)}
.ladr.here .tag{color:var(--b)}
.demand2{background:var(--rbg);border:1.5px solid #f2c4d0;border-radius:8px;padding:12px 16px;margin-bottom:12px}
.demand2 .big2{font-size:20px;font-weight:800;color:var(--r)}
.quote2{border-left:4px solid var(--blue);background:#f8f9fd;padding:10px 14px;border-radius:6px;font-size:12.5px;font-style:italic;margin:10px 0}
.dx{float:right;cursor:pointer;color:var(--dim);font-weight:700;margin-left:10px}
.lrow{border-top:1px solid var(--line);margin-top:12px;padding-top:10px;font-size:12.5px;display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.lrow .sep{color:var(--dim)}
.pback{margin-right:10px}
.bars{display:flex;gap:30px;align-items:flex-end;padding:16px 8px 6px}
.bgrp{display:flex;flex-direction:column;align-items:center;gap:6px}
.bpair{display:flex;gap:7px;align-items:flex-end;height:160px}
.bar{width:34px;border-radius:5px 5px 0 0;position:relative;cursor:pointer}
.bar:hover{outline:2px solid var(--blue)}
.bar.past{background:#cfd4dd}.bar.now{background:var(--b)}
.bar .bl{position:absolute;top:-18px;left:50%;transform:translateX(-50%);font-size:10.5px;font-weight:700;white-space:nowrap;font-variant-numeric:tabular-nums}
.bar.past .bl{color:var(--mut)}.bar.now .bl{color:var(--b)}
.bq{font-size:10.5px;font-weight:800;letter-spacing:.05em;color:var(--mut)}
.toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%);background:#111;color:#fff;padding:10px 18px;border-radius:8px;font-size:12.5px;z-index:9;box-shadow:0 4px 20px rgba(0,0,0,.25);max-width:520px;text-align:center}

/* The login page, in the mockup's own tokens (not a mockup page: the mockup starts signed in). */
.login{min-height:80vh;display:flex;align-items:center;justify-content:center;padding:24px}
.login-card{background:#fff;border:1px solid var(--line);border-radius:10px;padding:28px 28px 24px;width:360px;display:flex;flex-direction:column;gap:12px}
.login-logo{height:40px;width:auto;align-self:flex-start;margin-bottom:4px}
.login-card .muted{color:var(--mut);font-size:12.5px;margin-top:-6px}
.login-card label{display:flex;flex-direction:column;gap:4px;font-size:11px;font-weight:700;letter-spacing:.05em;color:var(--mut)}
.login-card input{border:1px solid var(--line);border-radius:7px;padding:8px 10px;font-size:13.5px;color:var(--ink)}
.login-card button{background:var(--blue);color:#fff;font-weight:700;font-size:12.5px;padding:9px 14px;border-radius:7px;border:none;cursor:pointer;margin-top:4px}
.login-error{color:var(--r);font-size:12.5px;font-weight:700}
.login-notice{color:var(--ink);font-size:12.5px}
.login-link{color:var(--blue);font-size:12px;text-decoration:none;align-self:flex-start}
/* A sign-out link in the header, beside the health system name (not in the mockup, which has no login); both sit flush with the page's right edge (Gary, 2026-11-03). */
.who{margin-left:auto;display:flex;align-items:center;gap:14px;font-size:13.5px;font-weight:700;color:var(--ink)}
.who form{display:inline;margin:0}
.who select{font:inherit;color:inherit;border:none;background:none;cursor:pointer;field-sizing:content;padding:0}
.signout{font:inherit;font-size:12.5px;font-weight:700;color:var(--ink);background:#fff;border:1px solid #d0d5dd;border-radius:7px;padding:6px 12px;cursor:pointer}
.signout:hover{border-color:var(--blue);color:var(--blue)}
/* Part two (job 26b): the forms that record an answer. The mockup's buttons as real buttons, and the small lines around them. */
button.btn{border:none;font-family:inherit;line-height:1.55}
button.btn.ghost{border:1.5px solid var(--blue)}
.act{display:inline-flex;gap:6px;align-items:center;flex-wrap:wrap;margin-top:6px}
.act .btn{white-space:nowrap}
td .act.yn{flex-wrap:nowrap}
td.todo{white-space:nowrap}td.todo .act{flex-wrap:nowrap;margin-left:8px;margin-top:0;vertical-align:middle}td.todo .btn{margin-right:0}
#busy{position:fixed;top:0;left:0;height:3px;width:0;background:var(--blue);z-index:9999;transition:width .4s ease;pointer-events:none}#busy.on{width:92%;transition:width 8s cubic-bezier(.1,.7,.3,1);box-shadow:0 0 8px var(--blue)}
.act input[type=number],.act input[type=date],.act input[type=text],.act textarea{border:1px solid var(--line);border-radius:7px;padding:5px 8px;font-size:12px;font-family:inherit;color:var(--ink)}
.act .btn{margin-right:0}
.ask{font-size:12.5px;margin:4px 0 8px 18px;padding:6px 10px;border-left:2px solid var(--a);background:#fff;border-radius:0 6px 6px 0}
.ask.still{border-left-color:var(--mut);color:var(--dim)}
.ten ul.conds{margin:6px 0 4px 18px;padding:0;font-weight:500;font-size:13.5px}.ten ul.conds li{margin:3px 0}.ten .chip{display:inline-block;font-size:10.5px;font-weight:700;padding:1px 7px;border-radius:10px;vertical-align:middle;background:var(--abg);color:var(--a)}.ten .chip.r{background:var(--rbg);color:var(--r)}.ten .chip.g{background:var(--gbg);color:var(--g)}
.did{font-size:12px;color:var(--g);font-weight:700;display:block}
.qrow td{vertical-align:top}
.qtext{white-space:pre-wrap;font-size:12.5px}
.evidence{font-size:11px;white-space:pre-wrap;word-break:break-word;background:#f8f9fd;border-radius:6px;padding:8px 10px;max-height:320px;overflow:auto;color:var(--mut)}
/* The chat about a contract (job 26c): the thread, then the box; answers in plain type, what they rest on in small type. */
.askq input[type=text]{font-family:inherit;color:var(--ink)}
.chat .askrow{display:flex;gap:8px;align-items:flex-end;margin-top:10px}.chat .askrow .srch{flex:1 1 320px;width:auto}
.chat textarea.srch{font-family:inherit;color:var(--ink);resize:none;line-height:1.4;min-height:34px;max-height:160px;overflow:auto}
.chat .thread{max-height:520px;overflow:auto;padding-right:4px}
.chat .turn{padding:8px 0;border-top:1px solid var(--line)}.chat .turn:first-child{border-top:0}
.chat .you,.chat .valio{font-size:13px;line-height:1.5;padding:6px 10px;border-radius:8px;max-width:85%}
.chat .you{background:#eef1fb;margin-left:auto}.chat .valio{background:#f8f9fa;margin-top:6px}
.chat .turn .sub{display:block;font-size:11px;color:var(--dim);margin-bottom:2px}
.chat .cites{margin-top:4px}.chat .cite{display:block;font-size:11px;color:var(--dim)}
.chat blockquote{margin:4px 0 4px;padding:4px 10px;border-left:3px solid var(--line);color:var(--mut);font-size:12px;white-space:pre-wrap}
/* The live site improved (docs/trd/live-site-improved.md): one side pop-out, 720 px, shows how a rebate works, its periods, a contract, a payment, our math and a claim; each opens over the last with a way back. */
.how .howh{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}
.how .howt{font-size:15px}.how .howh .sub{display:block;color:var(--mut);font-size:12px}
.how .rate{font-size:22px;font-weight:800;white-space:nowrap}
.how .facts{display:flex;flex-wrap:wrap;gap:6px 22px;font-size:13px;margin:10px 0 6px}.how .facts b{margin-right:4px}
.how .measure{font-size:13px;margin:6px 0 8px}.how .measure b{margin-right:4px}
.how table.tiers{margin:8px 0 4px;background:#fff;border-radius:6px}.how table.tiers td,.how table.tiers th{padding:7px 10px}
.how table.tiers tr.here td{background:var(--bbg);font-weight:700}
.how .quote2{font-style:normal;background:#fff}.how .quote2 .cite{display:block;font-size:11.5px;color:var(--dim);margin-top:6px;font-style:normal}
.how .lrow .btn{margin-right:0}
.ptable td{vertical-align:top;font-size:13px}.ptable .ask{margin:6px 0 0}.ptable td .sub{display:block;font-size:11px;color:var(--dim);font-weight:400}
.how .quote2{border-left:none;padding-left:12px}
.how table.tiers td.r{white-space:nowrap}
.ptable td:first-child,.ptable td:last-child,.ptable th{white-space:nowrap}
.chip.mut{background:#eef0f3;color:var(--mut)}
.chip.rr{background:var(--r);color:#fff}
.how .part{font-size:10.5px;font-weight:800;letter-spacing:.07em;color:var(--dim);margin:14px 0 6px}
.how table.ptable{background:#fff;border-radius:6px}.how table.ptable td,.how table.ptable th{padding:7px 10px}
.how table.tiers tr.lists td{padding:0 10px 9px 10px;border-bottom:1px solid var(--line);font-size:12px;color:var(--mut)}
.how table.tiers tr.lists .lr{white-space:nowrap}.how table.tiers tr.lists .lr b{color:var(--ink)}
.how table.tiers tr.lists.here td{background:var(--bbg)}
.side .how .rate{margin-bottom:2px}
.side .ptable td,.side .ptable th{padding:8px 6px}
.side .ptable td .sub{white-space:normal}
.side .how .facts{margin-top:8px}
.side .ten{font-size:13.5px;font-weight:600}
/* Phones and small tablets (Gary, 2026-11-02: the site must work on mobile). The header keeps the logo and the two tabs; the
   cards go two then one across; a list scrolls sideways inside its panel and its filter row gives way to the search; the pop-out
   takes the whole width and its tables scroll sideways inside it. Inputs are 16 px so a phone does not zoom into them. */
@media (max-width:760px){
header{gap:10px;padding:10px 12px}header .who{display:none}
nav a{padding:7px 10px;font-size:13px}
main{margin:14px auto;padding:0 12px}
.cards{grid-template-columns:1fr 1fr;gap:10px}.card{padding:12px}.card .amt{font-size:19px}
.panel{padding:12px;overflow-x:auto}
.ph{flex-wrap:wrap}.ph b{font-size:14px}.ph>span{width:100%}.srch{width:100%;font-size:16px}
.panel table{min-width:560px}.panel td{padding:9px 6px}.panel th{padding:8px 6px}
tr.fr{display:none}.fbtn{display:none}
.side .how .two{grid-template-columns:1fr}
.crumb{margin-bottom:8px}
.gband{flex-wrap:wrap;gap:4px}
.side{width:100vw;padding:16px 14px;box-shadow:none}
.side h3{padding-right:28px}
#mp_body{overflow-x:auto}.side .ptable{min-width:600px}.side table.tiers{min-width:460px}
.how .facts{flex-direction:column;gap:4px}
.lrow .btn{margin-bottom:6px}
.toast{max-width:92vw}
.login-card{width:100%}
}
@media (max-width:480px){.cards{grid-template-columns:1fr}}
/* The lists, option C (Gary, 2026-11-03): dense rows, no bold, column names in a quiet dark grey over a firmer line, a status word,
   the filter row behind one button with chips for what is set. The same header on every list, so the site reads as one. */
th{font-size:11px;font-weight:600;letter-spacing:.04em;color:#475467;text-transform:uppercase;border-bottom:1px solid #d0d5dd}
td{padding:9px 10px}td b{font-weight:600}
td .nm{font-weight:500}td .sub{font-size:12px;color:var(--mut)}td.money{font-weight:500}td.due{white-space:nowrap}
.st{font-size:12px;font-weight:600;letter-spacing:.03em;text-transform:uppercase;color:var(--dim)}.st.g{color:var(--g)}
.fbtn{display:inline-flex;align-items:center;gap:6px;border:1px solid #d0d5dd;border-radius:7px;padding:6px 12px;font-size:12.5px;color:var(--ink);background:#fff;cursor:pointer;white-space:nowrap;user-select:none}
.fbtn.on{border-color:var(--blue);color:var(--blue);background:var(--bbg)}
tr.fr td{padding:0 10px;background:#f6f7f9;border-bottom:1px solid #d0d5dd}
tr.fr input{border:0;border-bottom:1px solid transparent;border-radius:0;background:transparent;padding:7px 0;font-size:12px;color:var(--ink)}
tr.fr input::placeholder{color:var(--dim)}tr.fr input:focus{outline:none;border-bottom-color:var(--blue)}
.pnote{font-size:11.5px;color:var(--dim)}
.chips{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:0 0 10px;font-size:12px;color:var(--mut)}
.chipf{display:inline-flex;align-items:center;gap:6px;border:1px solid #c7d7f9;background:var(--bbg);color:var(--b);border-radius:999px;padding:2px 10px;font-size:12px;font-weight:500}
.chipf i{font-style:normal;color:var(--dim);cursor:pointer}
/* Action needed: one switch for "did it hold?" (Gary, 2026-11-03): grey until answered, green on for yes, off with a red word for no. */
button.sw{display:inline-flex;align-items:center;gap:10px;border:0;background:none;padding:0;cursor:pointer;font:inherit;font-size:12.5px;color:var(--mut);white-space:nowrap}
.sw .k{width:38px;height:22px;border-radius:999px;background:#d0d5dd;position:relative;display:inline-block;flex:none;transition:background .15s}
.sw .k::after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.25);transition:left .15s}
.sw.on .k{background:var(--g)}.sw.on .k::after{left:18px}
.sw .w{font-weight:600;color:var(--ink)}.sw.on .w{color:var(--g)}.sw.no .w{color:var(--r)}
button.sw:hover .k{filter:brightness(.95)}
button.lnk{border:0;background:none;padding:0;color:var(--blue);font:inherit;font-size:11px;cursor:pointer}
/* How it works, option 1 (Gary, 2026-11-03): the elected tier in a box with its rates by product list; the others one line; the ladder on a click. */
.how .tierbox{border:1px solid #c7d7f9;background:var(--bbg);border-radius:8px;padding:12px 14px;margin:6px 0 4px}
.how .tierbox .t{font-size:13px;font-weight:650;color:var(--b);margin-bottom:4px}.how .tierbox .t span{font-size:10.5px;letter-spacing:.05em;font-weight:700;margin-left:8px}
.how .tierbox .req{font-size:13px;margin-bottom:8px}
.how .two{display:grid;grid-template-columns:1fr 1fr;gap:0 24px}
.how .two div{display:flex;justify-content:space-between;gap:10px;padding:4px 0;border-bottom:1px solid #dbe5f8;font-size:12.5px}.how .two div b{font-weight:600;white-space:nowrap}
.how .others{font-size:12.5px;color:var(--mut);margin-top:10px}
.how .cnt{font-size:10.5px;letter-spacing:.05em;color:var(--b);font-weight:700;margin-left:6px}
.how table.tiers tr.here td{font-weight:600}
.how .quote2{background:#f8f9fd;padding:10px 14px;border-radius:6px;font-size:12.5px;margin:4px 0}
/* The payments page's by-quarter card. */
.card .qt{width:100%;border-collapse:collapse;font-size:11.5px;margin:4px 0 2px}
.card .qt th{font-size:10px;padding:2px 0;color:var(--dim);text-align:right;border:0;letter-spacing:0}
.card .qt td{padding:2px 0;border:0;text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.card .qt td:first-child,.card .qt th:first-child{text-align:left;color:var(--mut)}
/* The Payments page (Gary, 2026-11-03): received year against year, its own look, not the rebates cards. */
table.yoy{width:auto;min-width:420px;margin:2px 0 6px}table.yoy td{padding:7px 10px}table.yoy td:first-child{color:var(--mut)}
table.yoy th{padding:6px 10px}
.neg{color:var(--r);font-weight:600}.pos{color:var(--g);font-weight:600}
.strip{display:flex;flex-wrap:wrap;gap:0;margin-top:14px;border-top:1px solid var(--line);padding-top:12px;font-size:12px;color:var(--mut)}
.strip>span{padding:4px 18px 4px 0;margin-right:18px;border-right:1px solid var(--line)}.strip>span:last-child{border-right:0}
.strip b{color:var(--ink);font-weight:600;font-size:14px;margin-right:4px;font-variant-numeric:tabular-nums}
.strip .door{cursor:pointer}.strip .door:hover b{color:var(--blue)}
#yt td .sub{display:block}
.side table.yoy{min-width:0;width:100%}
@media (max-width:760px){
table.yoy{min-width:0;width:100%}table.yoy td,table.yoy th{padding:6px 4px}.panel table.yoy{min-width:0}
.strip{gap:6px}.strip>span{border-right:0;padding-right:0;margin-right:0;width:100%}
}

/* The Finance page's charts and the forecast's three kinds (Gary, 2026-11-03 and 2026-11-04) */
.fcharts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:16px}
.fcharts .panel{margin:0;padding:16px 18px 12px}
/* The Finance tab (Gary, 2026-11-04): three cards across, two charts under them, then the forecast. */
.cards.fin{grid-template-columns:repeat(3,1fr)}
.fcharts.two{grid-template-columns:repeat(2,minmax(0,1fr))}
@media (max-width:760px){.cards.fin,.fcharts.two{grid-template-columns:1fr}}
.ch h4{font-size:13px;font-weight:700;margin:0 0 2px}
.ch.door{cursor:pointer}.ch.door:hover{outline:2px solid var(--blue)}
.ch .go{font-size:11px;color:var(--blue);font-weight:700;margin-top:6px}
.ch .s{font-size:11.5px;color:var(--mut);margin-bottom:8px}
.ch svg{display:block;width:100%;height:auto;font:11px -apple-system,Segoe UI,Roboto,sans-serif}
.lg{display:flex;flex-wrap:wrap;gap:14px;font-size:11.5px;color:var(--mut);margin-top:6px}
.lg i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}
table.fc td{padding:11px 10px;vertical-align:top}
table.fc td.big{font-size:15px;font-weight:600;white-space:nowrap}
table.fc .bar{height:8px;border-radius:4px;background:#eef1f5;position:relative;margin-top:6px}
table.fc .bar i{position:absolute;left:0;top:0;bottom:0;border-radius:4px}
@media (max-width:760px){.fcharts{grid-template-columns:1fr}table.fc{min-width:0}table.fc td:nth-child(3){display:none}}

/* Export to Excel: the button sits beside Filter, and stays on a phone, where the filter row and its button do not (the phone has search) */
@media (max-width:760px){.fbtn{display:none}.fbtn.xbtn{display:inline-flex}}
/* The claims lists (Gary, 2026-11-03): nothing wraps but the claim's name; the status word, then its buttons, under one head. */
table.claims td{white-space:nowrap}table.claims td:first-child{white-space:normal}
table.claims td.todo{text-align:right;width:1%}
table.claims .pick{display:inline-flex;gap:6px;align-items:center}table.claims .pick.hide,table.claims .btn.hide{display:none}
table.claims input[type=date]{border:1px solid #d0d5dd;border-radius:7px;padding:5px 8px;font:inherit;font-size:12.5px}
/* Action needed and Potential underpayments (docs/trd/live-site-improved.md, FR-12, FR-15; Gary, 2026-11-05) */
table.fixed{table-layout:fixed;width:100%}table.fixed td{vertical-align:middle}
tr.off:not(.stay){display:none}
.tabs3{display:flex;gap:22px;border-bottom:1px solid var(--line,#e5e7eb);margin:2px 0 4px}.tabs3 a{padding:9px 2px;font-weight:600;font-size:13.5px;color:var(--mut);cursor:pointer;border-bottom:2px solid transparent}
.tabs3 a.on{color:var(--blue);border-color:var(--blue)}.tabs3 a i{font-style:normal;background:var(--bbg);color:var(--blue);border-radius:9px;padding:1px 7px;margin-left:6px;font-size:11.5px}
.nm.clamp{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}a.more{font-size:12px;cursor:pointer}
td.due .chip{font-size:12px;font-weight:700;letter-spacing:0;display:inline-block}td.due .sub{margin-top:3px}
.chip.soon{background:var(--bbg);color:var(--blue)}.chip.later{background:#f2f4f7;color:var(--mut)}
.yn2{display:inline-flex;border:1px solid #d0d5dd;border-radius:8px;overflow:hidden}.yn2 button{border:0;background:#fff;padding:6px 16px;font:inherit;font-size:13px;font-weight:600;color:var(--ink);cursor:pointer}
.yn2 button+button{border-left:1px solid #d0d5dd}.yn2 button:hover{background:#f5f7fb}.yn2.hide{display:none}
td.ans .did{display:inline;font-size:13px}td.ans .did.no{color:var(--mut)}td.ans form.inl{display:inline}td.ans .sub{display:block}
.anote{display:block;margin-top:6px;padding:5px 9px;border-left:3px solid var(--g);background:#f8faf9;border-radius:4px;font-size:12.5px;color:var(--ink);overflow-wrap:anywhere}
.nbox{position:relative;display:block;margin-top:6px}.nbox input{width:100%;box-sizing:border-box;padding:6px 32px 6px 9px;border:1px solid #d0d5dd;border-radius:6px;font:inherit;font-size:12.5px}
button.arrow{width:24px;height:24px;border:0;border-radius:5px;background:var(--bbg);color:var(--blue);font-weight:700;cursor:pointer;padding:0;line-height:24px}
.nbox button.arrow{position:absolute;right:4px;top:50%;transform:translateY(-50%)}
td.ans .pick{display:inline-flex;gap:6px;align-items:center}td.ans .pick.hide{display:none}td.ans .pick input[type=date]{padding:4px 6px;border:1px solid #d0d5dd;border-radius:6px;font:inherit;font-size:12.5px}
.fullw{position:fixed;inset:0;background:rgba(17,24,39,.35);display:flex;align-items:center;justify-content:center;z-index:60;padding:16px}
.fullw>div{background:#fff;max-width:560px;width:100%;padding:20px 22px;border-radius:12px;line-height:1.55;font-size:14px}.fullw p{margin:8px 0 12px}.fullw .x{cursor:pointer;font-weight:600}
@media (max-width:760px){table.fixed{table-layout:auto}}
td.ans form.act.note{display:block;margin:0}td.ans form.act.now:not(.note):not(.inl){display:block;margin-top:4px}td.ans form.act.inl{display:inline}
td.ans .did{display:inline-block;margin-right:4px}
/* Every payment from FINANCE_FROM, its count and sum, and the day the files end (docs/trd/live-site-improved.md, FR-16) */
table.hideearly tr.early{display:none}
.ptot{display:flex;gap:16px;align-items:baseline;flex-wrap:wrap;padding:8px 2px 10px;font-size:14px}.ptot b{font-size:17px}.ptot span{color:var(--mut)}
.ch .s b.files{color:var(--a);font-weight:600}
/* A period an independent check has not judged right yet (Gary, 2026-11-05; checks.ts) */
.vf{display:inline-block;font-size:12px;font-weight:600;color:var(--mut);background:#f2f4f7;border-radius:6px;padding:2px 8px;white-space:nowrap;cursor:help}
/* Payment status and "At a glance" (Gary, 2026-11-05) */
.pst{display:inline-flex;align-items:center;gap:6px;font-weight:600;font-size:13px;white-space:nowrap;cursor:help}.pst svg{flex:none}
.pkey{background:#fff;border:1px solid var(--line);border-radius:10px;padding:8px 12px;margin:0 0 10px;box-shadow:0 4px 14px rgba(16,24,40,.08)}.pkey.hide{display:none}.pkey td{padding:4px 10px;font-size:13px;color:var(--mut)}
.glancep table.glance{width:100%;border-collapse:collapse}.glancep table.glance.hide{display:none}.glancep td{padding:9px 10px;border-bottom:1px solid #f2f4f7}
.glancep td.gn{width:28px;color:var(--dim);font-weight:700}.glancep tr.tot td{border-top:1px solid var(--line)}.glancep tr.tot b,.glancep tr.tot .money{font-weight:800}
.glancep tr.sub2 b{font-weight:600;color:var(--mut)}.glancep .money{font-size:15px;font-weight:650;white-space:nowrap}.glancep select{padding:4px 8px;border:1px solid #d0d5dd;border-radius:6px;font:inherit}
.glancep{margin:6px 0 18px}.glancep .gh{display:flex;justify-content:space-between;align-items:center;margin:0 2px 10px}.glancep .gh b{font-size:15px}
.gsw{display:inline-flex;border:1px solid #d0d5dd;border-radius:8px;overflow:hidden}.gsw a{padding:5px 12px;font-size:13px;font-weight:600;color:var(--mut);cursor:pointer}.gsw a+a{border-left:1px solid #d0d5dd}
.gsw a.on{background:var(--bbg);color:var(--blue)}.gsw a i{font-style:normal;font-weight:500;font-size:11px;color:var(--dim);margin-left:4px}
.cards.glance5{grid-template-columns:repeat(5,minmax(0,1fr))}.cards.glance5.four{grid-template-columns:repeat(4,minmax(0,1fr))}.cards.glance5.hide{display:none}.cards.glance5 .amt{font-size:22px}.cards.glance5 .n{font-size:12px}
@media (max-width:900px){.cards.glance5{grid-template-columns:1fr 1fr}}@media (max-width:560px){.cards.glance5{grid-template-columns:1fr}}
/* Earned and received, side by side, each adding up (Gary, 2026-11-05) */
.gtwo{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:20px}.gtwo.hide{display:none}
.gside{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 16px}.gside .lbl{font-size:11px;letter-spacing:.06em;color:var(--mut);font-weight:700;margin-bottom:6px}
.gl{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:8px;border-radius:8px;cursor:pointer}.gl:hover{background:#f5f7fb}.gl .sub{display:block;font-size:12px;color:var(--mut);margin-top:1px}
.gl .money{white-space:nowrap;font-weight:700}.gl.top b,.gl.top .money{font-size:18px;font-weight:800}.gl.sub1{margin-left:18px;border-left:2px solid var(--line);border-radius:0 8px 8px 0}
.gl.apart{margin-top:8px;border-top:1px dashed var(--line);border-radius:0;color:var(--mut)}.gl.apart b{font-weight:600}
@media (max-width:760px){.gtwo{grid-template-columns:1fr}}
.lrgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2px 24px;margin-top:8px;font-size:12.5px}.lrgrid.hide{display:none}.lrgrid div{display:flex;justify-content:space-between;gap:10px;border-bottom:1px solid #f2f4f7;padding:3px 0}.lrgrid b{white-space:nowrap}
.bridge{font-size:15px;line-height:1.9}.bridge .eq{color:var(--dim);margin:0 4px}.bridge .bp{cursor:pointer;border-bottom:1px dotted var(--line);white-space:nowrap}.bridge .bp:hover{color:var(--blue)}.bridge .sub{font-size:12px;color:var(--mut)}
