/* Minification failed. Returning unminified contents.
(6,10): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,28): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,48): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,68): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,86): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,103): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,123): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,143): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,162): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,180): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,198): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,214): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,230): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,248): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,271): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,293): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,315): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,337): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,359): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,381): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,403): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,425): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,447): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,469): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,490): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,513): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,534): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,552): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,573): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,593): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,612): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,630): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,658): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,689): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,716): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,741): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,768): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,794): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,821): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,844): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,871): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,892): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,921): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,950): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,1151): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,1250): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,1339): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,1387): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,1412): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,1438): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,1464): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,1488): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,1506): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,1528): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,1552): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,1578): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,1629): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,1657): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,1687): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,1716): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,1743): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,1771): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,1801): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,1825): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,1855): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,1879): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,2053): run-time error CSS1039: Token not allowed after unary operator: '-bs-body-font-family'
(6,2090): run-time error CSS1039: Token not allowed after unary operator: '-bs-body-font-size'
(6,2127): run-time error CSS1039: Token not allowed after unary operator: '-bs-body-font-weight'
(6,2166): run-time error CSS1039: Token not allowed after unary operator: '-bs-body-line-height'
(6,2199): run-time error CSS1039: Token not allowed after unary operator: '-bs-body-color'
(6,2231): run-time error CSS1039: Token not allowed after unary operator: '-bs-body-text-align'
(6,2274): run-time error CSS1039: Token not allowed after unary operator: '-bs-body-bg'
(6,3502): run-time error CSS1039: Token not allowed after unary operator: '-bs-highlight-bg'
(6,3645): run-time error CSS1039: Token not allowed after unary operator: '-bs-link-color'
(6,3706): run-time error CSS1039: Token not allowed after unary operator: '-bs-link-hover-color'
(6,3858): run-time error CSS1039: Token not allowed after unary operator: '-bs-font-monospace'
(6,4065): run-time error CSS1039: Token not allowed after unary operator: '-bs-code-color'
(6,4180): run-time error CSS1039: Token not allowed after unary operator: '-bs-body-bg'
(6,4215): run-time error CSS1039: Token not allowed after unary operator: '-bs-body-color'
(6,7682): run-time error CSS1039: Token not allowed after unary operator: '-bs-border-color'
(6,7970): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,7991): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,8042): run-time error CSS1039: Token not allowed after unary operator: '-bs-gutter-x'
(6,8085): run-time error CSS1039: Token not allowed after unary operator: '-bs-gutter-x'
(6,8625): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,8646): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,8716): run-time error CSS1039: Token not allowed after unary operator: '-bs-gutter-y'
(6,8760): run-time error CSS1039: Token not allowed after unary operator: '-bs-gutter-x'
(6,8803): run-time error CSS1039: Token not allowed after unary operator: '-bs-gutter-x'
(6,8889): run-time error CSS1039: Token not allowed after unary operator: '-bs-gutter-x'
(6,8932): run-time error CSS1039: Token not allowed after unary operator: '-bs-gutter-x'
(6,8968): run-time error CSS1039: Token not allowed after unary operator: '-bs-gutter-y'
(6,10144): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,10171): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,10198): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,10231): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,10264): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,10296): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,10328): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,10358): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,10388): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,10420): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,10452): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,10482): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,11817): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,11850): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,11883): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,11922): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,11961): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,11999): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,12037): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,12073): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,12109): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,12147): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,12185): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,12221): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,13557): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,13590): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,13623): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,13662): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,13701): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,13739): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,13777): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,13813): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,13849): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,13887): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,13925): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,13961): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,15297): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,15330): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,15363): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,15402): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,15441): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,15479): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,15517): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,15553): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,15589): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,15627): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,15665): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,15701): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,17038): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,17071): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,17104): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,17143): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,17182): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,17220): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,17258): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,17294): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,17330): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,17368): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,17406): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,17442): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,18814): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,18849): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,18884): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,18925): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,18966): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,19006): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,19046): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,19084): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,19122): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,19162): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,19202): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,19240): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,19267): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,19305): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,19331): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,19378): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,19411): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,19457): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,19499): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,19544): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,19584): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,19628): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,19710): run-time error CSS1039: Token not allowed after unary operator: '-bs-table-color'
(6,19764): run-time error CSS1039: Token not allowed after unary operator: '-bs-table-border-color'
(6,19855): run-time error CSS1039: Token not allowed after unary operator: '-bs-table-bg'
(6,19928): run-time error CSS1039: Token not allowed after unary operator: '-bs-table-accent-bg'
(6,20416): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,20475): run-time error CSS1039: Token not allowed after unary operator: '-bs-table-striped-color'
(6,20555): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,20614): run-time error CSS1039: Token not allowed after unary operator: '-bs-table-striped-color'
(6,20653): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,20711): run-time error CSS1039: Token not allowed after unary operator: '-bs-table-active-color'
(6,20765): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,20822): run-time error CSS1039: Token not allowed after unary operator: '-bs-table-hover-color'
(6,20860): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,20882): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,20904): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,20936): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,20966): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,20996): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,21025): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,21054): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,21082): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,21121): run-time error CSS1039: Token not allowed after unary operator: '-bs-table-color'
(6,21156): run-time error CSS1039: Token not allowed after unary operator: '-bs-table-border-color'
(6,21197): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,21219): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,21241): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,21273): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,21303): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,21333): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,21362): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,21391): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,21419): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,21458): run-time error CSS1039: Token not allowed after unary operator: '-bs-table-color'
(6,21493): run-time error CSS1039: Token not allowed after unary operator: '-bs-table-border-color'
(6,21532): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,21554): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,21576): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,21608): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,21638): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,21668): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,21697): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,21726): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,21754): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,21793): run-time error CSS1039: Token not allowed after unary operator: '-bs-table-color'
(6,21828): run-time error CSS1039: Token not allowed after unary operator: '-bs-table-border-color'
(6,21864): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,21886): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,21908): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,21940): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,21970): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,22000): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,22029): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,22058): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,22086): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,22125): run-time error CSS1039: Token not allowed after unary operator: '-bs-table-color'
(6,22160): run-time error CSS1039: Token not allowed after unary operator: '-bs-table-border-color'
(6,22199): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,22221): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,22243): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,22275): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,22305): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,22335): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,22364): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,22393): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,22421): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,22460): run-time error CSS1039: Token not allowed after unary operator: '-bs-table-color'
(6,22495): run-time error CSS1039: Token not allowed after unary operator: '-bs-table-border-color'
(6,22533): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,22555): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,22577): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,22609): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,22639): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,22669): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,22698): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,22727): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,22755): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,22794): run-time error CSS1039: Token not allowed after unary operator: '-bs-table-color'
(6,22829): run-time error CSS1039: Token not allowed after unary operator: '-bs-table-border-color'
(6,22866): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,22888): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,22910): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,22942): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,22972): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,23002): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,23031): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,23060): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,23088): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,23127): run-time error CSS1039: Token not allowed after unary operator: '-bs-table-color'
(6,23162): run-time error CSS1039: Token not allowed after unary operator: '-bs-table-border-color'
(6,23198): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,23220): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,23242): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,23274): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,23304): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,23334): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,23363): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,23392): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,23420): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,23459): run-time error CSS1039: Token not allowed after unary operator: '-bs-table-color'
(6,23494): run-time error CSS1039: Token not allowed after unary operator: '-bs-table-border-color'
(6,46069): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,46096): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,46124): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,46147): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,46171): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,46196): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,46221): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,46244): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,46268): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,46294): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,46328): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,46360): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,46400): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,46491): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,46522): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,46637): run-time error CSS1039: Token not allowed after unary operator: '-bs-btn-padding-y'
(6,46661): run-time error CSS1039: Token not allowed after unary operator: '-bs-btn-padding-x'
(6,46697): run-time error CSS1039: Token not allowed after unary operator: '-bs-btn-font-family'
(6,46733): run-time error CSS1039: Token not allowed after unary operator: '-bs-btn-font-size'
(6,46769): run-time error CSS1039: Token not allowed after unary operator: '-bs-btn-font-weight'
(6,46807): run-time error CSS1039: Token not allowed after unary operator: '-bs-btn-line-height'
(6,46839): run-time error CSS1039: Token not allowed after unary operator: '-bs-btn-color'
(6,47006): run-time error CSS1039: Token not allowed after unary operator: '-bs-btn-border-width'
(6,47039): run-time error CSS1039: Token not allowed after unary operator: '-bs-btn-border-color'
(6,47080): run-time error CSS1039: Token not allowed after unary operator: '-bs-btn-border-radius'
(6,47125): run-time error CSS1039: Token not allowed after unary operator: '-bs-btn-bg'
(6,47346): run-time error CSS1039: Token not allowed after unary operator: '-bs-btn-hover-color'
(6,47389): run-time error CSS1039: Token not allowed after unary operator: '-bs-btn-hover-bg'
(6,47425): run-time error CSS1039: Token not allowed after unary operator: '-bs-btn-hover-border-color'
(6,47486): run-time error CSS1039: Token not allowed after unary operator: '-bs-btn-color'
(6,47523): run-time error CSS1039: Token not allowed after unary operator: '-bs-btn-bg'
(6,47553): run-time error CSS1039: Token not allowed after unary operator: '-bs-btn-border-color'
(6,47605): run-time error CSS1039: Token not allowed after unary operator: '-bs-btn-hover-color'
(6,47648): run-time error CSS1039: Token not allowed after unary operator: '-bs-btn-hover-bg'
(6,47684): run-time error CSS1039: Token not allowed after unary operator: '-bs-btn-hover-border-color'
(6,47738): run-time error CSS1039: Token not allowed after unary operator: '-bs-btn-focus-box-shadow'
(6,47812): run-time error CSS1039: Token not allowed after unary operator: '-bs-btn-hover-border-color'
(6,47866): run-time error CSS1039: Token not allowed after unary operator: '-bs-btn-focus-box-shadow'
(6,48002): run-time error CSS1039: Token not allowed after unary operator: '-bs-btn-active-color'
(6,48046): run-time error CSS1039: Token not allowed after unary operator: '-bs-btn-active-bg'
(6,48083): run-time error CSS1039: Token not allowed after unary operator: '-bs-btn-active-border-color'
(6,48297): run-time error CSS1039: Token not allowed after unary operator: '-bs-btn-focus-box-shadow'
(6,48385): run-time error CSS1039: Token not allowed after unary operator: '-bs-btn-disabled-color'
(6,48451): run-time error CSS1039: Token not allowed after unary operator: '-bs-btn-disabled-bg'
(6,48490): run-time error CSS1039: Token not allowed after unary operator: '-bs-btn-disabled-border-color'
(6,48534): run-time error CSS1039: Token not allowed after unary operator: '-bs-btn-disabled-opacity'
(6,48573): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,48593): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,48613): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,48643): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,48669): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,48695): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,48731): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,48768): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,48795): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,48822): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,48859): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,48919): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,48948): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,48977): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,49031): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,49051): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,49071): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,49101): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,49127): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,49153): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,49189): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,49227): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,49254): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,49281): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,49318): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,49378): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,49407): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,49436): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,49488): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,49508): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,49528): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,49558): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,49584): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,49610): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,49646): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,49683): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,49710): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,49737): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,49774): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,49834): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,49863): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,49892): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,49941): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,49961): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,49981): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,50011): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,50037): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,50063): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,50099): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,50136): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,50163): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,50190): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,50227): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,50287): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,50316): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,50345): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,50397): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,50417): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,50437): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,50467): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,50493): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,50519): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,50555): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,50591): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,50618): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,50645): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,50682): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,50742): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,50771): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,50800): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,50851): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,50871): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,50891): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,50921): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,50947): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,50973): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,51009): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,51045): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,51072): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,51099): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,51136): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,51196): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,51225): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,51254): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,51304): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,51324): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,51344): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,51374): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,51400): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,51426): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,51462): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,51500): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,51527): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,51554): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,51591): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,51651): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,51680): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,51709): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,51758): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,51778): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,51798): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,51828): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,51854): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,51880): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,51916): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,51951): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,51978): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,52005): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,52042): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,52102): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,52131): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,52160): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,52220): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,52243): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,52273): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,52299): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,52325): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,52361): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,52398): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,52425): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,52452): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,52489): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,52549): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,52581): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,52614): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,52653): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,52695): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,52718): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,52748): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,52774): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,52800): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,52836): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,52874): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,52901): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,52928): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,52965): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,53025): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,53057): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,53090): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,53129): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,53169): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,53192): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,53222): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,53248): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,53274): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,53310): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,53346): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,53373): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,53400): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,53437): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,53497): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,53529): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,53562): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,53601): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,53638): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,53661): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,53691): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,53717): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,53743): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,53779): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,53816): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,53843): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,53870): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,53907): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,53967): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,53999): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,54032): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,54071): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,54111): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,54134): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,54164): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,54190): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,54216): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,54252): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,54288): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,54315): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,54342): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,54379): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,54439): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,54471): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,54504): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,54543): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,54582): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,54605): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,54635): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,54661): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,54687): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,54723): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,54759): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,54786): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,54813): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,54850): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,54910): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,54942): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,54975): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,55014): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,55052): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,55075): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,55105): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,55131): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,55157): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,55193): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,55231): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,55258): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,55285): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,55322): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,55382): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,55414): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,55447): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,55486): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,55523): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,55546): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,55576): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,55602): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,55628): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,55664): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,55699): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,55726): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,55753): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,55790): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,55850): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,55882): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,55915): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,55954): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,55983): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,56008): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,56044): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,56068): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,56102): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,56150): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,56190): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,56239): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,56280): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,56312): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,56355): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,56380): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,56478): run-time error CSS1039: Token not allowed after unary operator: '-bs-btn-color'
(6,56520): run-time error CSS1039: Token not allowed after unary operator: '-bs-btn-hover-color'
(6,56568): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,56594): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,56618): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,56645): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,56702): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,56729): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,56755): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,56783): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,57663): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,57689): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,57719): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,57745): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,57776): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,57806): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,57835): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,57863): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,57885): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,57947): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,57984): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,58015): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,58070): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,58130): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,58168): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,58227): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,58260): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,58299): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,58335): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,58372): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,58409): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,58451): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,58485): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,58522): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,58557): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,58593): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,58662): run-time error CSS1039: Token not allowed after unary operator: '-bs-dropdown-zindex'
(6,58711): run-time error CSS1039: Token not allowed after unary operator: '-bs-dropdown-min-width'
(6,58748): run-time error CSS1039: Token not allowed after unary operator: '-bs-dropdown-padding-y'
(6,58777): run-time error CSS1039: Token not allowed after unary operator: '-bs-dropdown-padding-x'
(6,58825): run-time error CSS1039: Token not allowed after unary operator: '-bs-dropdown-font-size'
(6,58860): run-time error CSS1039: Token not allowed after unary operator: '-bs-dropdown-color'
(6,58934): run-time error CSS1039: Token not allowed after unary operator: '-bs-dropdown-bg'
(6,58991): run-time error CSS1039: Token not allowed after unary operator: '-bs-dropdown-border-width'
(6,59029): run-time error CSS1039: Token not allowed after unary operator: '-bs-dropdown-border-color'
(6,59075): run-time error CSS1039: Token not allowed after unary operator: '-bs-dropdown-border-radius'
(6,59166): run-time error CSS1039: Token not allowed after unary operator: '-bs-dropdown-spacer'
(6,59208): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,59302): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,59422): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,59522): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,59646): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,59746): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,59870): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,59970): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,60095): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,60195): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,60321): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,60423): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,60591): run-time error CSS1039: Token not allowed after unary operator: '-bs-dropdown-spacer'
(6,60975): run-time error CSS1039: Token not allowed after unary operator: '-bs-dropdown-spacer'
(6,61414): run-time error CSS1039: Token not allowed after unary operator: '-bs-dropdown-spacer'
(6,61943): run-time error CSS1039: Token not allowed after unary operator: '-bs-dropdown-divider-margin-y'
(6,62018): run-time error CSS1039: Token not allowed after unary operator: '-bs-dropdown-divider-bg'
(6,62106): run-time error CSS1039: Token not allowed after unary operator: '-bs-dropdown-item-padding-y'
(6,62140): run-time error CSS1039: Token not allowed after unary operator: '-bs-dropdown-item-padding-x'
(6,62207): run-time error CSS1039: Token not allowed after unary operator: '-bs-dropdown-link-color'
(6,62382): run-time error CSS1039: Token not allowed after unary operator: '-bs-dropdown-link-hover-color'
(6,62435): run-time error CSS1039: Token not allowed after unary operator: '-bs-dropdown-link-hover-bg'
(6,62518): run-time error CSS1039: Token not allowed after unary operator: '-bs-dropdown-link-active-color'
(6,62593): run-time error CSS1039: Token not allowed after unary operator: '-bs-dropdown-link-active-bg'
(6,62681): run-time error CSS1039: Token not allowed after unary operator: '-bs-dropdown-link-disabled-color'
(6,62842): run-time error CSS1039: Token not allowed after unary operator: '-bs-dropdown-header-padding-y'
(6,62878): run-time error CSS1039: Token not allowed after unary operator: '-bs-dropdown-header-padding-x'
(6,62954): run-time error CSS1039: Token not allowed after unary operator: '-bs-dropdown-header-color'
(6,63047): run-time error CSS1039: Token not allowed after unary operator: '-bs-dropdown-item-padding-y'
(6,63081): run-time error CSS1039: Token not allowed after unary operator: '-bs-dropdown-item-padding-x'
(6,63121): run-time error CSS1039: Token not allowed after unary operator: '-bs-dropdown-link-color'
(6,63166): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,63194): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,63219): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,63281): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,63308): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,63341): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,63377): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,63437): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,63491): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,63528): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,63565): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,63607): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,65845): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,65874): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,65905): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,65933): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,65974): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,66027): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,66176): run-time error CSS1039: Token not allowed after unary operator: '-bs-nav-link-padding-y'
(6,66205): run-time error CSS1039: Token not allowed after unary operator: '-bs-nav-link-padding-x'
(6,66244): run-time error CSS1039: Token not allowed after unary operator: '-bs-nav-link-font-size'
(6,66285): run-time error CSS1039: Token not allowed after unary operator: '-bs-nav-link-font-weight'
(6,66322): run-time error CSS1039: Token not allowed after unary operator: '-bs-nav-link-color'
(6,66570): run-time error CSS1039: Token not allowed after unary operator: '-bs-nav-link-hover-color'
(6,66626): run-time error CSS1039: Token not allowed after unary operator: '-bs-nav-link-disabled-color'
(6,66700): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,66731): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,66766): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,66803): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,66865): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,66905): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,66939): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,67018): run-time error CSS1039: Token not allowed after unary operator: '-bs-nav-tabs-border-width'
(6,67056): run-time error CSS1039: Token not allowed after unary operator: '-bs-nav-tabs-border-color'
(6,67132): run-time error CSS1039: Token not allowed after unary operator: '-bs-nav-tabs-border-width'
(6,67187): run-time error CSS1039: Token not allowed after unary operator: '-bs-nav-tabs-border-width'
(6,67260): run-time error CSS1039: Token not allowed after unary operator: '-bs-nav-tabs-border-radius'
(6,67317): run-time error CSS1039: Token not allowed after unary operator: '-bs-nav-tabs-border-radius'
(6,67433): run-time error CSS1039: Token not allowed after unary operator: '-bs-nav-tabs-link-hover-border-color'
(6,67540): run-time error CSS1039: Token not allowed after unary operator: '-bs-nav-link-disabled-color'
(6,67696): run-time error CSS1039: Token not allowed after unary operator: '-bs-nav-tabs-link-active-color'
(6,67750): run-time error CSS1039: Token not allowed after unary operator: '-bs-nav-tabs-link-active-bg'
(6,67797): run-time error CSS1039: Token not allowed after unary operator: '-bs-nav-tabs-link-active-border-color'
(6,67887): run-time error CSS1039: Token not allowed after unary operator: '-bs-nav-tabs-border-width'
(6,67977): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,68015): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,68053): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,68155): run-time error CSS1039: Token not allowed after unary operator: '-bs-nav-pills-border-radius'
(6,68225): run-time error CSS1039: Token not allowed after unary operator: '-bs-nav-link-disabled-color'
(6,68374): run-time error CSS1039: Token not allowed after unary operator: '-bs-nav-pills-link-active-color'
(6,68429): run-time error CSS1039: Token not allowed after unary operator: '-bs-nav-pills-link-active-bg'
(6,68779): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,68803): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,68832): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,68870): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,68913): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,68959): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,69003): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,69041): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,69075): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,69111): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,69154): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,69203): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,69241): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,69279): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,69317): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,69355): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,69619): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,69671): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,69714): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,69754): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,69922): run-time error CSS1039: Token not allowed after unary operator: '-bs-navbar-padding-y'
(6,69949): run-time error CSS1039: Token not allowed after unary operator: '-bs-navbar-padding-x'
(6,70237): run-time error CSS1039: Token not allowed after unary operator: '-bs-navbar-brand-padding-y'
(6,70285): run-time error CSS1039: Token not allowed after unary operator: '-bs-navbar-brand-padding-y'
(6,70331): run-time error CSS1039: Token not allowed after unary operator: '-bs-navbar-brand-margin-end'
(6,70375): run-time error CSS1039: Token not allowed after unary operator: '-bs-navbar-brand-font-size'
(6,70414): run-time error CSS1039: Token not allowed after unary operator: '-bs-navbar-brand-color'
(6,70529): run-time error CSS1039: Token not allowed after unary operator: '-bs-navbar-brand-hover-color'
(6,70571): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,70597): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,70628): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,70656): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,70699): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,70754): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,70965): run-time error CSS1039: Token not allowed after unary operator: '-bs-navbar-active-color'
(6,71096): run-time error CSS1039: Token not allowed after unary operator: '-bs-navbar-color'
(6,71182): run-time error CSS1039: Token not allowed after unary operator: '-bs-navbar-active-color'
(6,71300): run-time error CSS1039: Token not allowed after unary operator: '-bs-navbar-toggler-padding-y'
(6,71335): run-time error CSS1039: Token not allowed after unary operator: '-bs-navbar-toggler-padding-x'
(6,71380): run-time error CSS1039: Token not allowed after unary operator: '-bs-navbar-toggler-font-size'
(6,71435): run-time error CSS1039: Token not allowed after unary operator: '-bs-navbar-color'
(6,71494): run-time error CSS1039: Token not allowed after unary operator: '-bs-border-width'
(6,71523): run-time error CSS1039: Token not allowed after unary operator: '-bs-navbar-toggler-border-color'
(6,71575): run-time error CSS1039: Token not allowed after unary operator: '-bs-navbar-toggler-border-radius'
(6,71625): run-time error CSS1039: Token not allowed after unary operator: '-bs-navbar-toggler-transition'
(6,71846): run-time error CSS1039: Token not allowed after unary operator: '-bs-navbar-toggler-focus-width'
(6,71989): run-time error CSS1039: Token not allowed after unary operator: '-bs-navbar-toggler-icon-bg'
(6,72128): run-time error CSS1039: Token not allowed after unary operator: '-bs-scroll-height'
(6,72426): run-time error CSS1039: Token not allowed after unary operator: '-bs-navbar-nav-link-padding-x'
(6,72475): run-time error CSS1039: Token not allowed after unary operator: '-bs-navbar-nav-link-padding-x'
(6,73340): run-time error CSS1039: Token not allowed after unary operator: '-bs-navbar-nav-link-padding-x'
(6,73389): run-time error CSS1039: Token not allowed after unary operator: '-bs-navbar-nav-link-padding-x'
(6,74254): run-time error CSS1039: Token not allowed after unary operator: '-bs-navbar-nav-link-padding-x'
(6,74303): run-time error CSS1039: Token not allowed after unary operator: '-bs-navbar-nav-link-padding-x'
(6,75169): run-time error CSS1039: Token not allowed after unary operator: '-bs-navbar-nav-link-padding-x'
(6,75218): run-time error CSS1039: Token not allowed after unary operator: '-bs-navbar-nav-link-padding-x'
(6,76088): run-time error CSS1039: Token not allowed after unary operator: '-bs-navbar-nav-link-padding-x'
(6,76137): run-time error CSS1039: Token not allowed after unary operator: '-bs-navbar-nav-link-padding-x'
(6,76971): run-time error CSS1039: Token not allowed after unary operator: '-bs-navbar-nav-link-padding-x'
(6,77020): run-time error CSS1039: Token not allowed after unary operator: '-bs-navbar-nav-link-padding-x'
(6,77621): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,77665): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,77715): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,77768): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,77798): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,77827): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,77862): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,77920): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,78196): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,78220): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,78244): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,78276): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,78303): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,78361): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,78394): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,78417): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,78468): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,78499): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,78528): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,78565): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,78587): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,78606): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,78624): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,78642): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,78677): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,78785): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-height'
(6,78845): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-bg'
(6,78897): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-border-width'
(6,78931): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-border-color'
(6,78973): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-border-radius'
(6,79171): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-inner-border-radius'
(6,79230): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-inner-border-radius'
(6,79343): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-inner-border-radius'
(6,79404): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-inner-border-radius'
(6,79547): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-spacer-y'
(6,79571): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-spacer-x'
(6,79601): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-color'
(6,79648): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-title-spacer-y'
(6,79715): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-title-spacer-y'
(6,79834): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-spacer-x'
(6,79879): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-cap-padding-y'
(6,79908): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-cap-padding-x'
(6,79959): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-cap-color'
(6,80001): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-cap-bg'
(6,80037): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-border-width'
(6,80071): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-border-color'
(6,80138): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-inner-border-radius'
(6,80173): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-inner-border-radius'
(6,80233): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-cap-padding-y'
(6,80262): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-cap-padding-x'
(6,80297): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-cap-color'
(6,80339): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-cap-bg'
(6,80372): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-border-width'
(6,80406): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-border-color'
(6,80476): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-inner-border-radius'
(6,80511): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-inner-border-radius'
(6,80588): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-cap-padding-x'
(6,80642): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-cap-padding-y'
(6,80695): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-cap-padding-x'
(6,80793): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-bg'
(6,80831): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-bg'
(6,80892): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-cap-padding-x'
(6,80945): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-cap-padding-x'
(6,81049): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-img-overlay-padding'
(6,81098): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-inner-border-radius'
(6,81232): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-inner-border-radius'
(6,81291): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-inner-border-radius'
(6,81380): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-inner-border-radius'
(6,81441): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-inner-border-radius'
(6,81508): run-time error CSS1039: Token not allowed after unary operator: '-bs-card-group-margin'
(6,82395): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,82424): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,82447): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,82617): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,82668): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,82700): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,82738): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,82794): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,82831): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,82865): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,82898): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,82943): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,83239): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,83277): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,83327): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,83389): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,83692): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,83738): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,83813): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,83851): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,83886): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,83922): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,84047): run-time error CSS1039: Token not allowed after unary operator: '-bs-accordion-btn-padding-y'
(6,84081): run-time error CSS1039: Token not allowed after unary operator: '-bs-accordion-btn-padding-x'
(6,84136): run-time error CSS1039: Token not allowed after unary operator: '-bs-accordion-btn-color'
(6,84199): run-time error CSS1039: Token not allowed after unary operator: '-bs-accordion-btn-bg'
(6,84283): run-time error CSS1039: Token not allowed after unary operator: '-bs-accordion-transition'
(6,84428): run-time error CSS1039: Token not allowed after unary operator: '-bs-accordion-active-color'
(6,84478): run-time error CSS1039: Token not allowed after unary operator: '-bs-accordion-active-bg'
(6,84537): run-time error CSS1039: Token not allowed after unary operator: '-bs-accordion-border-width'
(6,84573): run-time error CSS1039: Token not allowed after unary operator: '-bs-accordion-border-color'
(6,84664): run-time error CSS1039: Token not allowed after unary operator: '-bs-accordion-btn-active-icon'
(6,84710): run-time error CSS1039: Token not allowed after unary operator: '-bs-accordion-btn-icon-transform'
(6,84794): run-time error CSS1039: Token not allowed after unary operator: '-bs-accordion-btn-icon-width'
(6,84836): run-time error CSS1039: Token not allowed after unary operator: '-bs-accordion-btn-icon-width'
(6,84916): run-time error CSS1039: Token not allowed after unary operator: '-bs-accordion-btn-icon'
(6,84989): run-time error CSS1039: Token not allowed after unary operator: '-bs-accordion-btn-icon-width'
(6,85035): run-time error CSS1039: Token not allowed after unary operator: '-bs-accordion-btn-icon-transition'
(6,85237): run-time error CSS1039: Token not allowed after unary operator: '-bs-accordion-btn-focus-border-color'
(6,85301): run-time error CSS1039: Token not allowed after unary operator: '-bs-accordion-btn-focus-box-shadow'
(6,85398): run-time error CSS1039: Token not allowed after unary operator: '-bs-accordion-color'
(6,85441): run-time error CSS1039: Token not allowed after unary operator: '-bs-accordion-bg'
(6,85471): run-time error CSS1039: Token not allowed after unary operator: '-bs-accordion-border-width'
(6,85510): run-time error CSS1039: Token not allowed after unary operator: '-bs-accordion-border-color'
(6,85596): run-time error CSS1039: Token not allowed after unary operator: '-bs-accordion-border-radius'
(6,85654): run-time error CSS1039: Token not allowed after unary operator: '-bs-accordion-border-radius'
(6,85759): run-time error CSS1039: Token not allowed after unary operator: '-bs-accordion-inner-border-radius'
(6,85823): run-time error CSS1039: Token not allowed after unary operator: '-bs-accordion-inner-border-radius'
(6,85968): run-time error CSS1039: Token not allowed after unary operator: '-bs-accordion-border-radius'
(6,86028): run-time error CSS1039: Token not allowed after unary operator: '-bs-accordion-border-radius'
(6,86146): run-time error CSS1039: Token not allowed after unary operator: '-bs-accordion-inner-border-radius'
(6,86212): run-time error CSS1039: Token not allowed after unary operator: '-bs-accordion-inner-border-radius'
(6,86328): run-time error CSS1039: Token not allowed after unary operator: '-bs-accordion-border-radius'
(6,86388): run-time error CSS1039: Token not allowed after unary operator: '-bs-accordion-border-radius'
(6,86446): run-time error CSS1039: Token not allowed after unary operator: '-bs-accordion-body-padding-y'
(6,86481): run-time error CSS1039: Token not allowed after unary operator: '-bs-accordion-body-padding-x'
(6,86899): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,86927): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,86955): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,86990): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,87011): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,87043): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,87081): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,87119): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,87202): run-time error CSS1039: Token not allowed after unary operator: '-bs-breadcrumb-padding-y'
(6,87233): run-time error CSS1039: Token not allowed after unary operator: '-bs-breadcrumb-padding-x'
(6,87278): run-time error CSS1039: Token not allowed after unary operator: '-bs-breadcrumb-margin-bottom'
(6,87323): run-time error CSS1039: Token not allowed after unary operator: '-bs-breadcrumb-font-size'
(6,87387): run-time error CSS1039: Token not allowed after unary operator: '-bs-breadcrumb-bg'
(6,87425): run-time error CSS1039: Token not allowed after unary operator: '-bs-breadcrumb-border-radius'
(6,87507): run-time error CSS1039: Token not allowed after unary operator: '-bs-breadcrumb-item-padding-x'
(6,87610): run-time error CSS1039: Token not allowed after unary operator: '-bs-breadcrumb-item-padding-x'
(6,87652): run-time error CSS1039: Token not allowed after unary operator: '-bs-breadcrumb-divider-color'
(6,87695): run-time error CSS1039: Token not allowed after unary operator: '-bs-breadcrumb-divider'
(6,87759): run-time error CSS1039: Token not allowed after unary operator: '-bs-breadcrumb-item-active-color'
(6,87805): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,87839): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,87874): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,87905): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,87948): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,87972): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,88005): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,88042): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,88081): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,88136): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,88169): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,88212): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,88267): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,88300): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,88372): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,88406): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,88440): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,88484): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,88523): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,88556): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,88702): run-time error CSS1039: Token not allowed after unary operator: '-bs-pagination-padding-y'
(6,88733): run-time error CSS1039: Token not allowed after unary operator: '-bs-pagination-padding-x'
(6,88774): run-time error CSS1039: Token not allowed after unary operator: '-bs-pagination-font-size'
(6,88811): run-time error CSS1039: Token not allowed after unary operator: '-bs-pagination-color'
(6,88876): run-time error CSS1039: Token not allowed after unary operator: '-bs-pagination-bg'
(6,88907): run-time error CSS1039: Token not allowed after unary operator: '-bs-pagination-border-width'
(6,88947): run-time error CSS1039: Token not allowed after unary operator: '-bs-pagination-border-color'
(6,89207): run-time error CSS1039: Token not allowed after unary operator: '-bs-pagination-hover-color'
(6,89257): run-time error CSS1039: Token not allowed after unary operator: '-bs-pagination-hover-bg'
(6,89300): run-time error CSS1039: Token not allowed after unary operator: '-bs-pagination-hover-border-color'
(6,89373): run-time error CSS1039: Token not allowed after unary operator: '-bs-pagination-focus-color'
(6,89423): run-time error CSS1039: Token not allowed after unary operator: '-bs-pagination-focus-bg'
(6,89474): run-time error CSS1039: Token not allowed after unary operator: '-bs-pagination-focus-box-shadow'
(6,89565): run-time error CSS1039: Token not allowed after unary operator: '-bs-pagination-active-color'
(6,89616): run-time error CSS1039: Token not allowed after unary operator: '-bs-pagination-active-bg'
(6,89660): run-time error CSS1039: Token not allowed after unary operator: '-bs-pagination-active-border-color'
(6,89748): run-time error CSS1039: Token not allowed after unary operator: '-bs-pagination-disabled-color'
(6,89821): run-time error CSS1039: Token not allowed after unary operator: '-bs-pagination-disabled-bg'
(6,89867): run-time error CSS1039: Token not allowed after unary operator: '-bs-pagination-disabled-border-color'
(6,90024): run-time error CSS1039: Token not allowed after unary operator: '-bs-pagination-border-radius'
(6,90085): run-time error CSS1039: Token not allowed after unary operator: '-bs-pagination-border-radius'
(6,90177): run-time error CSS1039: Token not allowed after unary operator: '-bs-pagination-border-radius'
(6,90239): run-time error CSS1039: Token not allowed after unary operator: '-bs-pagination-border-radius'
(6,90284): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,90317): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,90351): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,90385): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,90437): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,90470): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,90504): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,90539): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,90584): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,90612): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,90640): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,90668): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,90695): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,90717): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,90785): run-time error CSS1039: Token not allowed after unary operator: '-bs-badge-padding-y'
(6,90811): run-time error CSS1039: Token not allowed after unary operator: '-bs-badge-padding-x'
(6,90847): run-time error CSS1039: Token not allowed after unary operator: '-bs-badge-font-size'
(6,90885): run-time error CSS1039: Token not allowed after unary operator: '-bs-badge-font-weight'
(6,90933): run-time error CSS1039: Token not allowed after unary operator: '-bs-badge-color'
(6,91030): run-time error CSS1039: Token not allowed after unary operator: '-bs-badge-border-radius'
(6,91127): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,91153): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,91179): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,91205): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,91235): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,91260): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,91296): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,91353): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,91418): run-time error CSS1039: Token not allowed after unary operator: '-bs-alert-padding-y'
(6,91444): run-time error CSS1039: Token not allowed after unary operator: '-bs-alert-padding-x'
(6,91484): run-time error CSS1039: Token not allowed after unary operator: '-bs-alert-margin-bottom'
(6,91520): run-time error CSS1039: Token not allowed after unary operator: '-bs-alert-color'
(6,91559): run-time error CSS1039: Token not allowed after unary operator: '-bs-alert-bg'
(6,91585): run-time error CSS1039: Token not allowed after unary operator: '-bs-alert-border'
(6,91622): run-time error CSS1039: Token not allowed after unary operator: '-bs-alert-border-radius'
(6,91850): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,91875): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,91897): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,91987): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,92012): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,92034): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,92124): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,92149): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,92171): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,92256): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,92281): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,92303): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,92388): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,92413): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,92435): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,92522): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,92547): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,92569): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,92654): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,92679): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,92701): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,92784): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,92809): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,92831): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,92974): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,93000): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,93032): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,93057): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,93094): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,93156): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,93185): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,93214): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,93284): run-time error CSS1039: Token not allowed after unary operator: '-bs-progress-height'
(6,93336): run-time error CSS1039: Token not allowed after unary operator: '-bs-progress-font-size'
(6,93382): run-time error CSS1039: Token not allowed after unary operator: '-bs-progress-bg'
(6,93418): run-time error CSS1039: Token not allowed after unary operator: '-bs-progress-border-radius'
(6,93545): run-time error CSS1039: Token not allowed after unary operator: '-bs-progress-bar-color'
(6,93628): run-time error CSS1039: Token not allowed after unary operator: '-bs-progress-bar-bg'
(6,93665): run-time error CSS1039: Token not allowed after unary operator: '-bs-progress-bar-transition'
(6,93985): run-time error CSS1039: Token not allowed after unary operator: '-bs-progress-height'
(6,94011): run-time error CSS1039: Token not allowed after unary operator: '-bs-progress-height'
(6,94195): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,94225): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,94249): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,94299): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,94332): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,94371): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,94407): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,94445): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,94482): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,94525): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,94565): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,94609): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,94650): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,94689): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,94722): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,94756): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,94790): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,94919): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-border-radius'
(6,95167): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-action-color'
(6,95296): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-action-hover-color'
(6,95374): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-action-hover-bg'
(6,95448): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-action-active-color'
(6,95506): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-action-active-bg'
(6,95601): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-item-padding-y'
(6,95637): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-item-padding-x'
(6,95679): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-color'
(6,95744): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-bg'
(6,95775): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-border-width'
(6,95815): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-border-color'
(6,96096): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-disabled-color'
(6,96169): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-disabled-bg'
(6,96242): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-active-color'
(6,96293): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-active-bg'
(6,96337): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-active-border-color'
(6,96493): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-border-width'
(6,96545): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-border-width'
(6,96716): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-border-radius'
(6,96870): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-border-radius'
(6,97067): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-border-width'
(6,97207): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-border-width'
(6,97260): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-border-width'
(6,97462): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-border-radius'
(6,97619): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-border-radius'
(6,97822): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-border-width'
(6,97965): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-border-width'
(6,98018): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-border-width'
(6,98221): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-border-radius'
(6,98378): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-border-radius'
(6,98581): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-border-width'
(6,98724): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-border-width'
(6,98777): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-border-width'
(6,98980): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-border-radius'
(6,99137): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-border-radius'
(6,99340): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-border-width'
(6,99483): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-border-width'
(6,99536): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-border-width'
(6,99740): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-border-radius'
(6,99897): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-border-radius'
(6,100100): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-border-width'
(6,100243): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-border-width'
(6,100296): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-border-width'
(6,100502): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-border-radius'
(6,100660): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-border-radius'
(6,100865): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-border-width'
(6,101009): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-border-width'
(6,101062): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-border-width'
(6,101183): run-time error CSS1039: Token not allowed after unary operator: '-bs-list-group-border-width'
(6,104688): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,104711): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,104740): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,104768): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,104794): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,104821): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,104851): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,104870): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,104910): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,104938): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,104997): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,105031): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,105087): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,105119): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,105166): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,105228): run-time error CSS1039: Token not allowed after unary operator: '-bs-toast-max-width'
(6,105279): run-time error CSS1039: Token not allowed after unary operator: '-bs-toast-font-size'
(6,105311): run-time error CSS1039: Token not allowed after unary operator: '-bs-toast-color'
(6,105370): run-time error CSS1039: Token not allowed after unary operator: '-bs-toast-bg'
(6,105424): run-time error CSS1039: Token not allowed after unary operator: '-bs-toast-border-width'
(6,105459): run-time error CSS1039: Token not allowed after unary operator: '-bs-toast-border-color'
(6,105499): run-time error CSS1039: Token not allowed after unary operator: '-bs-toast-box-shadow'
(6,105540): run-time error CSS1039: Token not allowed after unary operator: '-bs-toast-border-radius'
(6,105638): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,105692): run-time error CSS1039: Token not allowed after unary operator: '-bs-toast-zindex'
(6,105866): run-time error CSS1039: Token not allowed after unary operator: '-bs-toast-spacing'
(6,105944): run-time error CSS1039: Token not allowed after unary operator: '-bs-toast-padding-y'
(6,105970): run-time error CSS1039: Token not allowed after unary operator: '-bs-toast-padding-x'
(6,106002): run-time error CSS1039: Token not allowed after unary operator: '-bs-toast-header-color'
(6,106048): run-time error CSS1039: Token not allowed after unary operator: '-bs-toast-header-bg'
(6,106116): run-time error CSS1039: Token not allowed after unary operator: '-bs-toast-border-width'
(6,106151): run-time error CSS1039: Token not allowed after unary operator: '-bs-toast-header-border-color'
(6,106215): run-time error CSS1039: Token not allowed after unary operator: '-bs-toast-border-radius'
(6,106247): run-time error CSS1039: Token not allowed after unary operator: '-bs-toast-border-width'
(6,106306): run-time error CSS1039: Token not allowed after unary operator: '-bs-toast-border-radius'
(6,106338): run-time error CSS1039: Token not allowed after unary operator: '-bs-toast-border-width'
(6,106417): run-time error CSS1039: Token not allowed after unary operator: '-bs-toast-padding-x'
(6,106456): run-time error CSS1039: Token not allowed after unary operator: '-bs-toast-padding-x'
(6,106502): run-time error CSS1039: Token not allowed after unary operator: '-bs-toast-padding-x'
(6,106551): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,106574): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,106597): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,106621): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,106646): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,106665): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,106684): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,106743): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,106771): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,106803): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,106865): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,106915): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,106948): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,106981): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,107017): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,107071): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,107106): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,107139): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,107168): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,107191): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,107245): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,107321): run-time error CSS1039: Token not allowed after unary operator: '-bs-modal-zindex'
(6,107474): run-time error CSS1039: Token not allowed after unary operator: '-bs-modal-margin'
(6,107829): run-time error CSS1039: Token not allowed after unary operator: '-bs-modal-margin'
(6,108060): run-time error CSS1039: Token not allowed after unary operator: '-bs-modal-margin'
(6,108173): run-time error CSS1039: Token not allowed after unary operator: '-bs-modal-color'
(6,108232): run-time error CSS1039: Token not allowed after unary operator: '-bs-modal-bg'
(6,108286): run-time error CSS1039: Token not allowed after unary operator: '-bs-modal-border-width'
(6,108321): run-time error CSS1039: Token not allowed after unary operator: '-bs-modal-border-color'
(6,108364): run-time error CSS1039: Token not allowed after unary operator: '-bs-modal-border-radius'
(6,108415): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,108441): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,108463): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,108530): run-time error CSS1039: Token not allowed after unary operator: '-bs-backdrop-zindex'
(6,108598): run-time error CSS1039: Token not allowed after unary operator: '-bs-backdrop-bg'
(6,108680): run-time error CSS1039: Token not allowed after unary operator: '-bs-backdrop-opacity'
(6,108805): run-time error CSS1039: Token not allowed after unary operator: '-bs-modal-header-padding'
(6,108850): run-time error CSS1039: Token not allowed after unary operator: '-bs-modal-header-border-width'
(6,108892): run-time error CSS1039: Token not allowed after unary operator: '-bs-modal-header-border-color'
(6,108951): run-time error CSS1039: Token not allowed after unary operator: '-bs-modal-inner-border-radius'
(6,109011): run-time error CSS1039: Token not allowed after unary operator: '-bs-modal-inner-border-radius'
(6,109085): run-time error CSS1039: Token not allowed after unary operator: '-bs-modal-header-padding-y'
(6,109129): run-time error CSS1039: Token not allowed after unary operator: '-bs-modal-header-padding-x'
(6,109186): run-time error CSS1039: Token not allowed after unary operator: '-bs-modal-header-padding-y'
(6,109231): run-time error CSS1039: Token not allowed after unary operator: '-bs-modal-header-padding-x'
(6,109276): run-time error CSS1039: Token not allowed after unary operator: '-bs-modal-header-padding-y'
(6,109356): run-time error CSS1039: Token not allowed after unary operator: '-bs-modal-title-line-height'
(6,109442): run-time error CSS1039: Token not allowed after unary operator: '-bs-modal-padding'
(6,109579): run-time error CSS1039: Token not allowed after unary operator: '-bs-modal-padding'
(6,109605): run-time error CSS1039: Token not allowed after unary operator: '-bs-modal-footer-gap'
(6,109655): run-time error CSS1039: Token not allowed after unary operator: '-bs-modal-footer-bg'
(6,109692): run-time error CSS1039: Token not allowed after unary operator: '-bs-modal-footer-border-width'
(6,109734): run-time error CSS1039: Token not allowed after unary operator: '-bs-modal-footer-border-color'
(6,109797): run-time error CSS1039: Token not allowed after unary operator: '-bs-modal-inner-border-radius'
(6,109859): run-time error CSS1039: Token not allowed after unary operator: '-bs-modal-inner-border-radius'
(6,109923): run-time error CSS1039: Token not allowed after unary operator: '-bs-modal-footer-gap'
(6,109983): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,110009): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,110094): run-time error CSS1039: Token not allowed after unary operator: '-bs-modal-width'
(6,110156): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,110225): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,110285): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,112243): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,112268): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,112297): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,112327): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,112358): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,112380): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,112412): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,112436): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,112457): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,112493): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,112518): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,112550): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,112596): run-time error CSS1039: Token not allowed after unary operator: '-bs-tooltip-zindex'
(6,112643): run-time error CSS1039: Token not allowed after unary operator: '-bs-tooltip-arrow-height'
(6,112681): run-time error CSS1039: Token not allowed after unary operator: '-bs-tooltip-margin'
(6,112718): run-time error CSS1039: Token not allowed after unary operator: '-bs-font-sans-serif'
(6,112990): run-time error CSS1039: Token not allowed after unary operator: '-bs-tooltip-font-size'
(6,113071): run-time error CSS1039: Token not allowed after unary operator: '-bs-tooltip-opacity'
(6,113141): run-time error CSS1039: Token not allowed after unary operator: '-bs-tooltip-arrow-width'
(6,113178): run-time error CSS1039: Token not allowed after unary operator: '-bs-tooltip-arrow-height'
(6,113543): run-time error CSS1039: Token not allowed after unary operator: '-bs-tooltip-arrow-height'
(6,113579): run-time error CSS1039: Token not allowed after unary operator: '-bs-tooltip-arrow-width'
(6,113634): run-time error CSS1039: Token not allowed after unary operator: '-bs-tooltip-bg'
(6,113761): run-time error CSS1039: Token not allowed after unary operator: '-bs-tooltip-arrow-height'
(6,113799): run-time error CSS1039: Token not allowed after unary operator: '-bs-tooltip-arrow-width'
(6,113967): run-time error CSS1039: Token not allowed after unary operator: '-bs-tooltip-arrow-width'
(6,114003): run-time error CSS1039: Token not allowed after unary operator: '-bs-tooltip-arrow-height'
(6,114039): run-time error CSS1039: Token not allowed after unary operator: '-bs-tooltip-arrow-width'
(6,114096): run-time error CSS1039: Token not allowed after unary operator: '-bs-tooltip-bg'
(6,114365): run-time error CSS1039: Token not allowed after unary operator: '-bs-tooltip-arrow-width'
(6,114401): run-time error CSS1039: Token not allowed after unary operator: '-bs-tooltip-arrow-height'
(6,114452): run-time error CSS1039: Token not allowed after unary operator: '-bs-tooltip-bg'
(6,114581): run-time error CSS1039: Token not allowed after unary operator: '-bs-tooltip-arrow-height'
(6,114619): run-time error CSS1039: Token not allowed after unary operator: '-bs-tooltip-arrow-width'
(6,114787): run-time error CSS1039: Token not allowed after unary operator: '-bs-tooltip-arrow-width'
(6,114830): run-time error CSS1039: Token not allowed after unary operator: '-bs-tooltip-arrow-width'
(6,114866): run-time error CSS1039: Token not allowed after unary operator: '-bs-tooltip-arrow-height'
(6,114915): run-time error CSS1039: Token not allowed after unary operator: '-bs-tooltip-bg'
(6,114961): run-time error CSS1039: Token not allowed after unary operator: '-bs-tooltip-max-width'
(6,114997): run-time error CSS1039: Token not allowed after unary operator: '-bs-tooltip-padding-y'
(6,115025): run-time error CSS1039: Token not allowed after unary operator: '-bs-tooltip-padding-x'
(6,115059): run-time error CSS1039: Token not allowed after unary operator: '-bs-tooltip-color'
(6,115118): run-time error CSS1039: Token not allowed after unary operator: '-bs-tooltip-bg'
(6,115153): run-time error CSS1039: Token not allowed after unary operator: '-bs-tooltip-border-radius'
(6,115189): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,115214): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,115243): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,115275): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,115296): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,115326): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,115387): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,115421): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,115473): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,115531): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,115566): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,115603): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,115638): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,115666): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,115697): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,115730): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,115763): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,115795): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,115825): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,115858): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,115928): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-zindex'
(6,115977): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-max-width'
(6,116017): run-time error CSS1039: Token not allowed after unary operator: '-bs-font-sans-serif'
(6,116289): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-font-size'
(6,116355): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-bg'
(6,116411): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-border-width'
(6,116448): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-border-color'
(6,116493): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-border-radius'
(6,116569): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-arrow-width'
(6,116606): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-arrow-height'
(6,116911): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-arrow-height'
(6,116945): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-border-width'
(6,117202): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-arrow-height'
(6,117238): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-arrow-width'
(6,117409): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-arrow-border'
(6,117552): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-border-width'
(6,117600): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-bg'
(6,117730): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-arrow-height'
(6,117764): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-border-width'
(6,117802): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-arrow-height'
(6,117840): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-arrow-width'
(6,118104): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-arrow-width'
(6,118140): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-arrow-height'
(6,118176): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-arrow-width'
(6,118349): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-arrow-border'
(6,118492): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-border-width'
(6,118542): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-bg'
(6,118675): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-arrow-height'
(6,118709): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-border-width'
(6,118985): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-arrow-width'
(6,119021): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-arrow-height'
(6,119191): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-arrow-border'
(6,119337): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-border-width'
(6,119388): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-bg'
(6,119577): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-arrow-width'
(6,119630): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-arrow-width'
(6,119686): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-border-width'
(6,119723): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-header-bg'
(6,119862): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-arrow-height'
(6,119896): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-border-width'
(6,119934): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-arrow-height'
(6,119972): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-arrow-width'
(6,120238): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-arrow-width'
(6,120281): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-arrow-width'
(6,120317): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-arrow-height'
(6,120484): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-arrow-border'
(6,120629): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-border-width'
(6,120678): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-bg'
(6,120723): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-header-padding-y'
(6,120758): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-header-padding-x'
(6,120819): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-header-font-size'
(6,120860): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-header-color'
(6,120908): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-header-bg'
(6,120950): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-border-width'
(6,120987): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-border-color'
(6,121041): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-inner-border-radius'
(6,121103): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-inner-border-radius'
(6,121198): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-body-padding-y'
(6,121231): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-body-padding-x'
(6,121270): run-time error CSS1039: Token not allowed after unary operator: '-bs-popover-body-color'
(6,124993): run-time error CSS1039: Token not allowed after unary operator: '-bs-spinner-width'
(6,125024): run-time error CSS1039: Token not allowed after unary operator: '-bs-spinner-height'
(6,125064): run-time error CSS1039: Token not allowed after unary operator: '-bs-spinner-vertical-align'
(6,125125): run-time error CSS1039: Token not allowed after unary operator: '-bs-spinner-animation-speed'
(6,125175): run-time error CSS1039: Token not allowed after unary operator: '-bs-spinner-animation-name'
(6,125274): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,125298): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,125323): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,125360): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,125393): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,125428): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,125483): run-time error CSS1039: Token not allowed after unary operator: '-bs-spinner-border-width'
(6,125578): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,125602): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,125627): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,125749): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,125773): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,125798): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,125835): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,125870): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,125968): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,125992): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,126086): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,126203): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,126230): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,126257): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,126284): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,126314): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,126344): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,126367): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,126390): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,126422): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,126485): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,126630): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-zindex'
(6,126713): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-color'
(6,126774): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-bg'
(6,127045): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-width'
(6,127084): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-width'
(6,127123): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-color'
(6,127261): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-width'
(6,127299): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-width'
(6,127338): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-color'
(6,127483): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-height'
(6,127540): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-width'
(6,127579): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-color'
(6,127722): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-height'
(6,127776): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-width'
(6,127815): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-color'
(6,128118): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,128145): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,128462): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-zindex'
(6,128545): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-color'
(6,128606): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-bg'
(6,128877): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-width'
(6,128916): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-width'
(6,128955): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-color'
(6,129093): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-width'
(6,129131): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-width'
(6,129170): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-color'
(6,129315): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-height'
(6,129372): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-width'
(6,129411): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-color'
(6,129554): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-height'
(6,129608): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-width'
(6,129647): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-color'
(6,129950): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,129977): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,130294): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-zindex'
(6,130377): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-color'
(6,130438): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-bg'
(6,130709): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-width'
(6,130748): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-width'
(6,130787): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-color'
(6,130925): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-width'
(6,130963): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-width'
(6,131002): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-color'
(6,131147): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-height'
(6,131204): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-width'
(6,131243): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-color'
(6,131386): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-height'
(6,131440): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-width'
(6,131479): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-color'
(6,131782): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,131809): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,132127): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-zindex'
(6,132210): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-color'
(6,132271): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-bg'
(6,132544): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-width'
(6,132583): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-width'
(6,132622): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-color'
(6,132761): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-width'
(6,132799): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-width'
(6,132838): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-color'
(6,132984): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-height'
(6,133041): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-width'
(6,133080): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-color'
(6,133224): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-height'
(6,133278): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-width'
(6,133317): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-color'
(6,133623): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,133650): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,133969): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-zindex'
(6,134052): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-color'
(6,134113): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-bg'
(6,134388): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-width'
(6,134427): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-width'
(6,134466): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-color'
(6,134606): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-width'
(6,134644): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-width'
(6,134683): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-color'
(6,134830): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-height'
(6,134887): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-width'
(6,134926): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-color'
(6,135071): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-height'
(6,135125): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-width'
(6,135164): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-color'
(6,135476): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,135503): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,135791): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-zindex'
(6,135874): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-color'
(6,135935): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-bg'
(6,136146): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-width'
(6,136185): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-width'
(6,136224): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-color'
(6,136330): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-width'
(6,136368): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-width'
(6,136407): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-color'
(6,136520): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-height'
(6,136577): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-width'
(6,136616): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-color'
(6,136727): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-height'
(6,136781): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-width'
(6,136820): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-border-color'
(6,137282): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-padding-y'
(6,137312): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-padding-x'
(6,137384): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-padding-y'
(6,137425): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-padding-x'
(6,137483): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-padding-y'
(6,137538): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-padding-x'
(6,137594): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-padding-y'
(6,137710): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-padding-y'
(6,137740): run-time error CSS1039: Token not allowed after unary operator: '-bs-offcanvas-padding-x'
(6,138668): run-time error CSS1039: Token not allowed after unary operator: '-bs-bg-opacity'
(6,138776): run-time error CSS1039: Token not allowed after unary operator: '-bs-bg-opacity'
(6,138880): run-time error CSS1039: Token not allowed after unary operator: '-bs-bg-opacity'
(6,138982): run-time error CSS1039: Token not allowed after unary operator: '-bs-bg-opacity'
(6,139086): run-time error CSS1039: Token not allowed after unary operator: '-bs-bg-opacity'
(6,139189): run-time error CSS1039: Token not allowed after unary operator: '-bs-bg-opacity'
(6,139293): run-time error CSS1039: Token not allowed after unary operator: '-bs-bg-opacity'
(6,139393): run-time error CSS1039: Token not allowed after unary operator: '-bs-bg-opacity'
(6,140299): run-time error CSS1039: Token not allowed after unary operator: '-bs-aspect-ratio'
(6,140402): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,140436): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,140470): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,140507): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,144543): run-time error CSS1039: Token not allowed after unary operator: '-bs-border-width'
(6,144566): run-time error CSS1039: Token not allowed after unary operator: '-bs-border-style'
(6,144589): run-time error CSS1039: Token not allowed after unary operator: '-bs-border-color'
(6,144674): run-time error CSS1039: Token not allowed after unary operator: '-bs-border-width'
(6,144697): run-time error CSS1039: Token not allowed after unary operator: '-bs-border-style'
(6,144720): run-time error CSS1039: Token not allowed after unary operator: '-bs-border-color'
(6,144815): run-time error CSS1039: Token not allowed after unary operator: '-bs-border-width'
(6,144838): run-time error CSS1039: Token not allowed after unary operator: '-bs-border-style'
(6,144861): run-time error CSS1039: Token not allowed after unary operator: '-bs-border-color'
(6,144962): run-time error CSS1039: Token not allowed after unary operator: '-bs-border-width'
(6,144985): run-time error CSS1039: Token not allowed after unary operator: '-bs-border-style'
(6,145008): run-time error CSS1039: Token not allowed after unary operator: '-bs-border-color'
(6,145110): run-time error CSS1039: Token not allowed after unary operator: '-bs-border-width'
(6,145133): run-time error CSS1039: Token not allowed after unary operator: '-bs-border-style'
(6,145156): run-time error CSS1039: Token not allowed after unary operator: '-bs-border-color'
(6,145240): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,145285): run-time error CSS1039: Token not allowed after unary operator: '-bs-primary-rgb'
(6,145307): run-time error CSS1039: Token not allowed after unary operator: '-bs-border-opacity'
(6,145356): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,145401): run-time error CSS1039: Token not allowed after unary operator: '-bs-secondary-rgb'
(6,145425): run-time error CSS1039: Token not allowed after unary operator: '-bs-border-opacity'
(6,145472): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,145517): run-time error CSS1039: Token not allowed after unary operator: '-bs-success-rgb'
(6,145539): run-time error CSS1039: Token not allowed after unary operator: '-bs-border-opacity'
(6,145583): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,145628): run-time error CSS1039: Token not allowed after unary operator: '-bs-info-rgb'
(6,145647): run-time error CSS1039: Token not allowed after unary operator: '-bs-border-opacity'
(6,145694): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,145739): run-time error CSS1039: Token not allowed after unary operator: '-bs-warning-rgb'
(6,145761): run-time error CSS1039: Token not allowed after unary operator: '-bs-border-opacity'
(6,145807): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,145852): run-time error CSS1039: Token not allowed after unary operator: '-bs-danger-rgb'
(6,145873): run-time error CSS1039: Token not allowed after unary operator: '-bs-border-opacity'
(6,145918): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,145963): run-time error CSS1039: Token not allowed after unary operator: '-bs-light-rgb'
(6,145983): run-time error CSS1039: Token not allowed after unary operator: '-bs-border-opacity'
(6,146027): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,146072): run-time error CSS1039: Token not allowed after unary operator: '-bs-dark-rgb'
(6,146091): run-time error CSS1039: Token not allowed after unary operator: '-bs-border-opacity'
(6,146136): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,146181): run-time error CSS1039: Token not allowed after unary operator: '-bs-white-rgb'
(6,146201): run-time error CSS1039: Token not allowed after unary operator: '-bs-border-opacity'
(6,146242): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,146274): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,146306): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,146338): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,146370): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,146411): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,146454): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,146498): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,146541): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,146586): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,153043): run-time error CSS1039: Token not allowed after unary operator: '-bs-font-monospace'
(6,154395): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,154431): run-time error CSS1039: Token not allowed after unary operator: '-bs-primary-rgb'
(6,154453): run-time error CSS1039: Token not allowed after unary operator: '-bs-text-opacity'
(6,154498): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,154534): run-time error CSS1039: Token not allowed after unary operator: '-bs-secondary-rgb'
(6,154558): run-time error CSS1039: Token not allowed after unary operator: '-bs-text-opacity'
(6,154601): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,154637): run-time error CSS1039: Token not allowed after unary operator: '-bs-success-rgb'
(6,154659): run-time error CSS1039: Token not allowed after unary operator: '-bs-text-opacity'
(6,154699): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,154735): run-time error CSS1039: Token not allowed after unary operator: '-bs-info-rgb'
(6,154754): run-time error CSS1039: Token not allowed after unary operator: '-bs-text-opacity'
(6,154797): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,154833): run-time error CSS1039: Token not allowed after unary operator: '-bs-warning-rgb'
(6,154855): run-time error CSS1039: Token not allowed after unary operator: '-bs-text-opacity'
(6,154897): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,154933): run-time error CSS1039: Token not allowed after unary operator: '-bs-danger-rgb'
(6,154954): run-time error CSS1039: Token not allowed after unary operator: '-bs-text-opacity'
(6,154995): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,155031): run-time error CSS1039: Token not allowed after unary operator: '-bs-light-rgb'
(6,155051): run-time error CSS1039: Token not allowed after unary operator: '-bs-text-opacity'
(6,155091): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,155127): run-time error CSS1039: Token not allowed after unary operator: '-bs-dark-rgb'
(6,155146): run-time error CSS1039: Token not allowed after unary operator: '-bs-text-opacity'
(6,155187): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,155223): run-time error CSS1039: Token not allowed after unary operator: '-bs-black-rgb'
(6,155243): run-time error CSS1039: Token not allowed after unary operator: '-bs-text-opacity'
(6,155284): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,155320): run-time error CSS1039: Token not allowed after unary operator: '-bs-white-rgb'
(6,155340): run-time error CSS1039: Token not allowed after unary operator: '-bs-text-opacity'
(6,155380): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,155416): run-time error CSS1039: Token not allowed after unary operator: '-bs-body-color-rgb'
(6,155441): run-time error CSS1039: Token not allowed after unary operator: '-bs-text-opacity'
(6,155482): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,155541): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,155607): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,155676): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,155737): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,155777): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,155816): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,155857): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,155889): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,155934): run-time error CSS1039: Token not allowed after unary operator: '-bs-primary-rgb'
(6,155956): run-time error CSS1039: Token not allowed after unary operator: '-bs-bg-opacity'
(6,155997): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,156042): run-time error CSS1039: Token not allowed after unary operator: '-bs-secondary-rgb'
(6,156066): run-time error CSS1039: Token not allowed after unary operator: '-bs-bg-opacity'
(6,156105): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,156150): run-time error CSS1039: Token not allowed after unary operator: '-bs-success-rgb'
(6,156172): run-time error CSS1039: Token not allowed after unary operator: '-bs-bg-opacity'
(6,156208): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,156253): run-time error CSS1039: Token not allowed after unary operator: '-bs-info-rgb'
(6,156272): run-time error CSS1039: Token not allowed after unary operator: '-bs-bg-opacity'
(6,156311): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,156356): run-time error CSS1039: Token not allowed after unary operator: '-bs-warning-rgb'
(6,156378): run-time error CSS1039: Token not allowed after unary operator: '-bs-bg-opacity'
(6,156416): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,156461): run-time error CSS1039: Token not allowed after unary operator: '-bs-danger-rgb'
(6,156482): run-time error CSS1039: Token not allowed after unary operator: '-bs-bg-opacity'
(6,156519): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,156564): run-time error CSS1039: Token not allowed after unary operator: '-bs-light-rgb'
(6,156584): run-time error CSS1039: Token not allowed after unary operator: '-bs-bg-opacity'
(6,156620): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,156665): run-time error CSS1039: Token not allowed after unary operator: '-bs-dark-rgb'
(6,156684): run-time error CSS1039: Token not allowed after unary operator: '-bs-bg-opacity'
(6,156721): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,156766): run-time error CSS1039: Token not allowed after unary operator: '-bs-black-rgb'
(6,156786): run-time error CSS1039: Token not allowed after unary operator: '-bs-bg-opacity'
(6,156823): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,156868): run-time error CSS1039: Token not allowed after unary operator: '-bs-white-rgb'
(6,156888): run-time error CSS1039: Token not allowed after unary operator: '-bs-bg-opacity'
(6,156924): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,156969): run-time error CSS1039: Token not allowed after unary operator: '-bs-body-bg-rgb'
(6,156991): run-time error CSS1039: Token not allowed after unary operator: '-bs-bg-opacity'
(6,157034): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,157106): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,157141): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,157177): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,157212): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,157249): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6,157302): run-time error CSS1039: Token not allowed after unary operator: '-bs-gradient'
(6,157764): run-time error CSS1039: Token not allowed after unary operator: '-bs-border-radius'
(6,157860): run-time error CSS1039: Token not allowed after unary operator: '-bs-border-radius-sm'
(6,157922): run-time error CSS1039: Token not allowed after unary operator: '-bs-border-radius'
(6,157981): run-time error CSS1039: Token not allowed after unary operator: '-bs-border-radius-lg'
(6,158043): run-time error CSS1039: Token not allowed after unary operator: '-bs-border-radius-xl'
(6,158105): run-time error CSS1039: Token not allowed after unary operator: '-bs-border-radius-2xl'
(6,158215): run-time error CSS1039: Token not allowed after unary operator: '-bs-border-radius-pill'
(6,158290): run-time error CSS1039: Token not allowed after unary operator: '-bs-border-radius'
(6,158348): run-time error CSS1039: Token not allowed after unary operator: '-bs-border-radius'
(6,158419): run-time error CSS1039: Token not allowed after unary operator: '-bs-border-radius'
(6,158480): run-time error CSS1039: Token not allowed after unary operator: '-bs-border-radius'
(6,158557): run-time error CSS1039: Token not allowed after unary operator: '-bs-border-radius'
(6,158617): run-time error CSS1039: Token not allowed after unary operator: '-bs-border-radius'
(6,158692): run-time error CSS1039: Token not allowed after unary operator: '-bs-border-radius'
(6,158749): run-time error CSS1039: Token not allowed after unary operator: '-bs-border-radius'
(25,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(39,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(51,39): run-time error CSS1039: Token not allowed after unary operator: '-color-save-btn'
(53,45): run-time error CSS1039: Token not allowed after unary operator: '-color-save-btn-hover'
(54,38): run-time error CSS1039: Token not allowed after unary operator: '-color-delete-btn'
(55,44): run-time error CSS1039: Token not allowed after unary operator: '-color-delete-btn-hover'
(64,19): run-time error CSS1039: Token not allowed after unary operator: '-btn-padding-sm'
(65,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(70,43): run-time error CSS1039: Token not allowed after unary operator: '-color-delete-btn'
(71,49): run-time error CSS1039: Token not allowed after unary operator: '-color-delete-btn-hover'
(83,21): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(84,25): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(95,24): run-time error CSS1039: Token not allowed after unary operator: '-color-border-focus'
(100,28): run-time error CSS1039: Token not allowed after unary operator: '-color-bg'
(115,29): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(120,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(145,28): run-time error CSS1039: Token not allowed after unary operator: '-color-save-btn'
(147,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(149,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(153,28): run-time error CSS1039: Token not allowed after unary operator: '-color-save-btn-hover'
(199,32): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(210,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(215,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(250,25): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(267,29): run-time error CSS1039: Token not allowed after unary operator: '-color-border-focus'
(282,25): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(312,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(320,22): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(322,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(323,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-lg'
(340,35): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(347,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(359,35): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(360,17): run-time error CSS1039: Token not allowed after unary operator: '-color-info'
(361,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(364,43): run-time error CSS1039: Token not allowed after unary operator: '-color-info-bg'
(367,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(394,49): run-time error CSS1039: Token not allowed after unary operator: '-color-text-light'
(399,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(437,33): run-time error CSS1039: Token not allowed after unary operator: '-color-text-light'
(458,30): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(460,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(461,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(471,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(473,32): run-time error CSS1039: Token not allowed after unary operator: '-color-text-light'
(483,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(484,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(509,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(512,28): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(517,32): run-time error CSS1039: Token not allowed after unary operator: '-color-bg'
(522,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg'
(524,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(525,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(570,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(571,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(572,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius'
(575,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(579,24): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(580,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-hover'
(580,44): run-time error CSS1039: Token not allowed after unary operator: '-color-bg'
(582,37): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(585,24): run-time error CSS1039: Token not allowed after unary operator: '-color-success-border'
(586,17): run-time error CSS1039: Token not allowed after unary operator: '-color-success-text'
(660,22): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(661,33): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(664,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(675,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(715,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(716,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(718,28): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(724,42): run-time error CSS1039: Token not allowed after unary operator: '-color-success'
(725,42): run-time error CSS1039: Token not allowed after unary operator: '-color-danger'
(726,42): run-time error CSS1039: Token not allowed after unary operator: '-color-warning'
(727,42): run-time error CSS1039: Token not allowed after unary operator: '-color-info'
(728,42): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(739,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(744,39): run-time error CSS1039: Token not allowed after unary operator: '-color-danger'
(744,73): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(745,38): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(751,17): run-time error CSS1039: Token not allowed after unary operator: '-color-danger'
(752,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(769,43): run-time error CSS1039: Token not allowed after unary operator: '-color-danger'
(784,28): run-time error CSS1039: Token not allowed after unary operator: '-color-save-btn'
(789,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-md'
(791,42): run-time error CSS1039: Token not allowed after unary operator: '-color-save-btn-hover'
(795,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(796,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(799,47): run-time error CSS1039: Token not allowed after unary operator: '-color-danger'
(799,81): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(821,28): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(822,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(824,46): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(825,46): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(889,39): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(907,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(908,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(909,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-lg'
(910,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-sm'
(954,42): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(963,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(973,35): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(976,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(1019,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(1020,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(1021,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-lg'
(1024,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-sm'
(1026,29): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xl'
(1026,63): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(1027,29): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(1085,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(1086,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(1101,45): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(1120,46): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(1133,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-base'
(1134,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(1137,25): run-time error CSS1039: Token not allowed after unary operator: '-btn-radius'
(1140,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(1156,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-md'
(1157,24): run-time error CSS1039: Token not allowed after unary operator: '-color-border-focus'
(1213,42): run-time error CSS1039: Token not allowed after unary operator: '-color-save-btn'
(1242,17): run-time error CSS1039: Token not allowed after unary operator: '-color-link'
(1243,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(1246,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(1247,39): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(1247,69): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(1250,28): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(1251,17): run-time error CSS1039: Token not allowed after unary operator: '-color-link-hover'
(1259,33): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(1290,24): run-time error CSS1039: Token not allowed after unary operator: '-color-warning'
(1300,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(1301,28): run-time error CSS1039: Token not allowed after unary operator: '-color-bg'
(1302,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(1304,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(1314,28): run-time error CSS1039: Token not allowed after unary operator: '-color-bg'
(1315,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(1316,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(1318,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(1327,32): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(1357,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(1358,33): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(1359,28): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(1365,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(1382,44): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(1384,29): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(1387,52): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(1389,28): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(1390,36): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(1394,37): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(1401,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(1404,39): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(1423,32): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(1434,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(1442,17): run-time error CSS1039: Token not allowed after unary operator: '-color-link'
(1445,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(1449,22): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(1453,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(1454,22): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(1496,28): run-time error CSS1039: Token not allowed after unary operator: '-color-danger'
(1514,28): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-input'
(1515,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(1516,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(1522,28): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(1523,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(1591,24): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(1598,29): run-time error CSS1039: Token not allowed after unary operator: '-color-border-focus'
(1616,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(1618,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(1657,32): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(1677,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(1691,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(1692,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(1710,32): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(1764,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(1775,32): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(1854,29): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(1854,53): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(1866,33): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(1866,57): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(1867,27): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(1965,25): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xl'
(2011,29): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(2035,25): run-time error CSS1039: Token not allowed after unary operator: '-font-size-lg'
(2183,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(2200,35): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(2203,32): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(2204,38): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(2214,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(2215,41): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(2217,40): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(2218,51): run-time error CSS1039: Token not allowed after unary operator: '-color-success'
(2225,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(2233,22): run-time error CSS1039: Token not allowed after unary operator: '-color-warning'
(2254,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(2255,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(2256,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(2257,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(2259,96): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(2280,44): run-time error CSS1039: Token not allowed after unary operator: '-nav-height'
(2294,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(2295,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(2296,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(2297,41): run-time error CSS1039: Token not allowed after unary operator: '-color-bg'
(2298,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(2302,29): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(2304,17): run-time error CSS1039: Token not allowed after unary operator: '-color-danger'
(2305,22): run-time error CSS1039: Token not allowed after unary operator: '-color-danger-bg'
(2306,24): run-time error CSS1039: Token not allowed after unary operator: '-color-danger-border'
(2309,17): run-time error CSS1039: Token not allowed after unary operator: '-color-info'
(2310,22): run-time error CSS1039: Token not allowed after unary operator: '-color-info-bg'
(2311,24): run-time error CSS1039: Token not allowed after unary operator: '-color-info-border'
(2313,32): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(2330,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(2331,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(2332,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(2335,28): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(2336,24): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(2337,17): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-dark'
(2349,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xl'
(2350,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(2351,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(2353,37): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(2364,41): run-time error CSS1039: Token not allowed after unary operator: '-color-bg'
(2365,47): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(2366,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(2377,17): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(2383,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-light'
(2386,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(2387,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(2414,41): run-time error CSS1039: Token not allowed after unary operator: '-color-bg'
(2415,47): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(2416,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(2419,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(2422,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(2423,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(2428,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(2443,54): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(2448,17): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(2450,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(2454,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(2455,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(2581,58): run-time error CSS1039: Token not allowed after unary operator: '-font-size-base'
(2589,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(2600,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-base'
(2606,35): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(2611,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(2612,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(2615,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(2616,35): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(2639,17): run-time error CSS1039: Token not allowed after unary operator: '-color-danger'
(2640,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(2645,32): run-time error CSS1039: Token not allowed after unary operator: '-color-delete-btn-hover'
(2661,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(2662,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(2665,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(2678,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(2679,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(2680,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(2681,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(2683,35): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(2684,39): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(2687,24): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(2688,41): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(2688,66): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(2693,24): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(2694,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-focus'
(2704,22): run-time error CSS1039: Token not allowed after unary operator: '-color-save-btn'
(2715,34): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(2717,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(2718,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(2725,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(2726,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(2729,17): run-time error CSS1039: Token not allowed after unary operator: '-color-warning'
(2730,22): run-time error CSS1039: Token not allowed after unary operator: '-color-warning-bg'
(2731,28): run-time error CSS1039: Token not allowed after unary operator: '-color-warning-border'
(2820,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(2824,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(2832,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(2834,28): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(2835,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(2836,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(2854,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(2858,65): run-time error CSS1039: Token not allowed after unary operator: '-color-danger'
(2863,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(2864,17): run-time error CSS1039: Token not allowed after unary operator: '-color-link'
(2864,35): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(2873,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(3027,32): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(3028,29): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(3031,26): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(3034,40): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(3046,21): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(3047,25): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(3156,52): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(3157,42): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(3160,34): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(3160,62): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(3161,41): run-time error CSS1039: Token not allowed after unary operator: '-color-danger'
(3163,33): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(3165,27): run-time error CSS1039: Token not allowed after unary operator: '-color-danger'
(3168,36): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(3257,17): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(3260,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-lg'
(3262,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(3280,32): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(3282,40): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(3282,68): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(3300,24): run-time error CSS1039: Token not allowed after unary operator: '-color-warning-border'
(3301,47): run-time error CSS1039: Token not allowed after unary operator: '-color-warning-bg'
(3301,85): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-input'
(3313,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(3314,28): run-time error CSS1039: Token not allowed after unary operator: '-color-warning-bg'
(3315,28): run-time error CSS1039: Token not allowed after unary operator: '-color-warning-border'
(3316,17): run-time error CSS1039: Token not allowed after unary operator: '-color-warning'
(3317,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(3346,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(3367,35): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(3369,39): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(3370,30): run-time error CSS1039: Token not allowed after unary operator: '-transition-mid'
(3398,62): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(3406,59): run-time error CSS1039: Token not allowed after unary operator: '-color-danger-bg'
(3407,65): run-time error CSS1039: Token not allowed after unary operator: '-color-danger-bg'
(3417,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(3418,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(3419,28): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-input'
(3422,39): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(3423,35): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(3425,41): run-time error CSS1039: Token not allowed after unary operator: '-color-save-btn'
(3428,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-focus-ring'
(3431,28): run-time error CSS1039: Token not allowed after unary operator: '-color-save-btn'
(3432,24): run-time error CSS1039: Token not allowed after unary operator: '-color-save-btn'
(3450,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-base'
(3454,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(3455,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(3470,33): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(3471,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(3481,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(3487,47): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(3490,124): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(3491,122): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(3492,124): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(3495,32): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(3505,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(3509,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(3516,28): run-time error CSS1039: Token not allowed after unary operator: '-color-danger-bg'
(3517,24): run-time error CSS1039: Token not allowed after unary operator: '-color-danger-border'
(3518,17): run-time error CSS1039: Token not allowed after unary operator: '-color-danger'
(3525,28): run-time error CSS1039: Token not allowed after unary operator: '-color-danger-border'
(3527,28): run-time error CSS1039: Token not allowed after unary operator: '-color-danger-bg'
(3528,17): run-time error CSS1039: Token not allowed after unary operator: '-color-danger'
(3529,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(3533,36): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(3549,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(3551,17): run-time error CSS1039: Token not allowed after unary operator: '-color-link'
(3551,35): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(3556,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-focus-ring'
(3557,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(3562,32): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(3569,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(3570,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(3571,28): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(3571,49): run-time error CSS1039: Token not allowed after unary operator: '-color-bg'
(3575,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(3576,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(3585,35): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(3591,63): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(3596,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(3600,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(3601,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(3606,33): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(3607,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(3618,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(3619,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(3620,28): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-input'
(3623,39): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(3624,35): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(3626,42): run-time error CSS1039: Token not allowed after unary operator: '-color-save-btn'
(3629,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-focus-ring'
(3632,28): run-time error CSS1039: Token not allowed after unary operator: '-color-save-btn'
(3633,24): run-time error CSS1039: Token not allowed after unary operator: '-color-save-btn'
(3672,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(3677,35): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(3682,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(3683,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(3684,35): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(3693,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(3700,26): run-time error CSS1039: Token not allowed after unary operator: '-color-text-light'
(3701,51): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(3704,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(3705,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(3706,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-normal'
(3714,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(3715,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-base'
(3716,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(3723,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(3724,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-base'
(3725,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(3749,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(3750,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-light'
(3754,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(3755,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-light'
(3796,32): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(3797,29): run-time error CSS1039: Token not allowed after unary operator: '-radius-md'
(3804,39): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(3822,27): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(3823,21): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(3843,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(3844,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(3846,41): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(3847,33): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(3848,27): run-time error CSS1039: Token not allowed after unary operator: '-color-success'
(3848,62): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(3849,27): run-time error CSS1039: Token not allowed after unary operator: '-color-danger'
(3849,62): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(3850,27): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(3850,65): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(3862,54): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(3903,25): run-time error CSS1039: Token not allowed after unary operator: '-section-gap'
(3906,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(3907,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(3908,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius'
(3909,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-sm'
(3919,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xl'
(3920,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(3921,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(3925,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(3926,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(3949,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(3950,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(3951,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius'
(3952,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-sm'
(3954,25): run-time error CSS1039: Token not allowed after unary operator: '-section-gap'
(3957,40): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(3957,68): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(3968,34): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(3968,62): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(3990,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(3991,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(4007,15): run-time error CSS1039: Token not allowed after unary operator: '-qf2-gap'
(4009,35): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(4019,39): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(4021,54): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(4040,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(4041,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(4050,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(4051,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(4052,29): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(4053,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(4074,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(4076,32): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(4082,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(4083,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(4084,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-normal'
(4096,35): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(4101,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(4104,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(4105,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(4106,35): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(4110,65): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(4112,17): run-time error CSS1039: Token not allowed after unary operator: '-color-link'
(4113,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(4124,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(4133,41): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(4140,22): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(4150,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(4152,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(4192,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(4193,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(4194,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius'
(4195,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(4196,23): run-time error CSS1039: Token not allowed after unary operator: '-font-family'
(4197,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(4200,35): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(4200,70): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(4200,104): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(4203,24): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(4205,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-card-hover'
(4208,29): run-time error CSS1039: Token not allowed after unary operator: '-color-border-focus'
(4212,24): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(4213,32): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(4218,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(4222,38): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(4234,59): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(4242,22): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(4252,22): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(4253,28): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(4254,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-sm'
(4261,22): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(4262,28): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(4263,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-sm'
(4266,45): run-time error CSS1039: Token not allowed after unary operator: '-shadow-focus-ring'
(4275,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(4276,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(4285,39): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(4285,69): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(4293,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(4313,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(4330,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(4331,32): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(4350,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(4351,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(4352,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-input'
(4379,22): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(4390,22): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(4391,47): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(4391,72): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(4402,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(4403,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-base'
(4404,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(4436,44): run-time error CSS1039: Token not allowed after unary operator: '-nav-height'
(4459,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(4460,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(4461,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(4462,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(4463,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(4468,17): run-time error CSS1039: Token not allowed after unary operator: '-color-success'
(4473,22): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(4474,24): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(4475,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(4498,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius'
(4502,38): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(4505,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(4506,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-normal'
(4507,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(4517,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(4518,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(4528,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(4529,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(4532,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(4550,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(4551,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(4552,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius'
(4553,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-sm'
(4556,35): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(4557,33): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(4558,30): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(4560,38): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(4562,24): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(4563,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-focus'
(4567,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(4568,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(4569,28): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(4569,74): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(4580,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(4582,33): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(4603,22): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(4603,57): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(4618,22): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(4618,57): run-time error CSS1039: Token not allowed after unary operator: '-color-accent-dark'
(4618,82): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(4619,43): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(4619,77): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(4633,33): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(4644,30): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(4646,42): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(4650,59): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(4658,52): run-time error CSS1039: Token not allowed after unary operator: '-be2-accent'
(4660,41): run-time error CSS1039: Token not allowed after unary operator: '-color-bg'
(4661,33): run-time error CSS1039: Token not allowed after unary operator: '-be2-accent'
(4661,51): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(4665,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(4666,48): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(4666,76): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(4678,41): run-time error CSS1039: Token not allowed after unary operator: '-color-bg'
(4680,32): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(4688,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(4689,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(4694,40): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(4695,40): run-time error CSS1039: Token not allowed after unary operator: '-color-success'
(4695,84): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(4696,40): run-time error CSS1039: Token not allowed after unary operator: '-color-danger'
(4696,84): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(4701,75): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(4702,75): run-time error CSS1039: Token not allowed after unary operator: '-color-success'
(4704,38): run-time error CSS1039: Token not allowed after unary operator: '-color-danger'
(4705,41): run-time error CSS1039: Token not allowed after unary operator: '-color-danger'
(4718,52): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(4722,82): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(4743,45): run-time error CSS1039: Token not allowed after unary operator: '-nav-height'
(4743,87): run-time error CSS1039: Token not allowed after unary operator: '-section-gap'
(4747,42): run-time error CSS1039: Token not allowed after unary operator: '-nav-height'
(4763,22): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(4770,28): run-time error CSS1039: Token not allowed after unary operator: '-color-warning'
(4771,24): run-time error CSS1039: Token not allowed after unary operator: '-color-warning'
(4781,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(4782,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(4783,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius'
(4784,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-sm'
(4785,19): run-time error CSS1039: Token not allowed after unary operator: '-card-padding'
(4786,35): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(4786,70): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(4790,43): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(4790,68): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(4791,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-card-hover'
(4791,47): run-time error CSS1039: Token not allowed after unary operator: '-shadow-md'
(4795,52): run-time error CSS1039: Token not allowed after unary operator: '-color-warning'
(4806,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-base'
(4807,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(4809,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(4812,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(4813,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-normal'
(4814,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(4820,37): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(4834,45): run-time error CSS1039: Token not allowed after unary operator: '-nav-height'
(4853,32): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(4862,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(4863,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(4868,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(4881,17): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(4882,17): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(4883,17): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(4884,17): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(4885,17): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(4892,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(4893,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(4894,36): run-time error CSS1039: Token not allowed after unary operator: '-hrz2-color'
(4894,54): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(4895,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius'
(4896,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-sm'
(4908,41): run-time error CSS1039: Token not allowed after unary operator: '-hrz2-color'
(4908,64): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(4909,28): run-time error CSS1039: Token not allowed after unary operator: '-hrz2-color'
(4910,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(4911,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(4925,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(4926,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(4929,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(4930,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(4931,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(4932,41): run-time error CSS1039: Token not allowed after unary operator: '-hrz2-color'
(4932,64): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(4933,47): run-time error CSS1039: Token not allowed after unary operator: '-hrz2-color'
(4939,46): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(4940,44): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(4940,72): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(4943,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(4944,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(4945,17): run-time error CSS1039: Token not allowed after unary operator: '-color-success'
(4955,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(4956,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(4984,48): run-time error CSS1039: Token not allowed after unary operator: '-color-delete-btn'
(4990,22): run-time error CSS1039: Token not allowed after unary operator: '-color-warning-bg'
(4991,28): run-time error CSS1039: Token not allowed after unary operator: '-color-warning-border'
(4992,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius'
(5002,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg'
(5003,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(5004,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius'
(5035,50): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(5047,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(5047,57): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(5048,43): run-time error CSS1039: Token not allowed after unary operator: '-shadow-xl'
(5053,69): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(5064,35): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(5119,28): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(5122,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(5123,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(5126,50): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(5130,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(5132,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(5139,35): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(5142,34): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(5145,45): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(5162,32): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(5165,43): run-time error CSS1039: Token not allowed after unary operator: '-color-success'
(5166,46): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(5172,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(5173,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(5176,24): run-time error CSS1039: Token not allowed after unary operator: '-color-success'
(5177,17): run-time error CSS1039: Token not allowed after unary operator: '-color-success'
(5180,24): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(5181,22): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(5186,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(5189,50): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(5207,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(5210,70): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(5211,32): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(5232,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius'
(5240,39): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(5300,28): run-time error CSS1039: Token not allowed after unary operator: '-color-info-bg'
(5301,28): run-time error CSS1039: Token not allowed after unary operator: '-color-info-border'
(5303,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius'
(5304,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(5305,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(5323,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(5328,28): run-time error CSS1039: Token not allowed after unary operator: '-color-warning-bg'
(5329,24): run-time error CSS1039: Token not allowed after unary operator: '-color-warning-border'
(5342,52): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(5343,48): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(5344,68): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(5374,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(5376,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(5379,53): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(5403,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(5405,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(5408,44): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(5409,52): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(5458,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-normal'
(5467,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-normal'
(5495,31): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(5501,22): run-time error CSS1039: Token not allowed after unary operator: '-ap-c'
(5501,34): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(5506,15): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5507,15): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5508,15): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5509,15): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5526,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(5529,35): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(5537,33): run-time error CSS1039: Token not allowed after unary operator: '-ap-c'
(5537,45): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(5546,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(5561,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(5563,17): run-time error CSS1039: Token not allowed after unary operator: '-color-link'
(5567,66): run-time error CSS1039: Token not allowed after unary operator: '-color-link-hover'
(5574,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(5575,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(5581,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(5594,35): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5595,35): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5596,35): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5597,35): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5648,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(5656,29): run-time error CSS1039: Token not allowed after unary operator: '-color-link'
(5657,22): run-time error CSS1039: Token not allowed after unary operator: '-color-hover-wash'
(5661,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(5663,17): run-time error CSS1039: Token not allowed after unary operator: '-color-link'
(5667,66): run-time error CSS1039: Token not allowed after unary operator: '-color-link-hover'
(5681,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(5719,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5720,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5721,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5722,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5723,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5724,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5725,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5731,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5734,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5735,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5736,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5737,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5738,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5739,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5740,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5741,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5742,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5743,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5744,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5745,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5746,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5747,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5748,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5749,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5752,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5753,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5754,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5755,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5756,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5759,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5760,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5761,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5762,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5765,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5766,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5769,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5770,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5771,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5774,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5775,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5776,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5777,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5778,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5779,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5780,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5781,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5782,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5783,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5784,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5785,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5788,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5789,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5790,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5793,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5794,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5795,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5796,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5797,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5798,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5799,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5800,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5801,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5802,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5803,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5806,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5807,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5810,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5811,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5812,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5813,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5814,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5815,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5818,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5819,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5820,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5823,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5824,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5825,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5826,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5827,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5828,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5831,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5832,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5838,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5839,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5840,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5842,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5843,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5844,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5845,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5847,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5848,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5849,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5851,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5852,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5853,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5854,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5855,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5856,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5857,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5858,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5860,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5861,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5862,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5863,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5864,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5865,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5866,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5867,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5868,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5869,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5871,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5873,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5887,24): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5888,24): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5889,24): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5890,24): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5891,24): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5892,24): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5893,24): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5894,24): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5895,24): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5896,24): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5897,24): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5898,24): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5899,24): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5905,43): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5906,43): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5907,43): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5908,43): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5909,43): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5910,43): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5911,43): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5912,43): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5913,43): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5914,43): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5915,43): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5916,43): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5917,43): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5929,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5930,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5931,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5932,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5933,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5935,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5936,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5937,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5938,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5939,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5941,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5942,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5943,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5944,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5945,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5947,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5948,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5949,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5950,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5951,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5953,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5954,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5955,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5956,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5957,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5959,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5960,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5961,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5962,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5963,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5965,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5966,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5967,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5968,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5969,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5971,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5972,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5973,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5974,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5975,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5977,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5978,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5979,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5980,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5981,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5983,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5984,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5985,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5986,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5987,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5989,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5990,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5991,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5992,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5993,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5995,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5996,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5997,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5998,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(5999,31): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6007,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6008,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6009,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6010,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6012,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6013,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6014,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6015,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6017,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6018,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6019,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6020,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6022,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6023,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6024,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6025,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6027,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6028,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6029,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6030,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6032,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6033,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6034,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6035,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6037,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6038,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6039,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6040,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6042,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6043,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6044,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6045,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6047,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6048,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6049,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6050,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6052,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6053,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6054,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6055,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6057,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6058,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6059,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6060,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6062,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6063,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6064,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6065,50): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6082,44): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6091,24): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6092,24): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6093,24): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6094,24): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6095,24): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6096,24): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6098,42): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6099,42): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6100,42): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6101,42): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6102,42): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6103,42): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6115,42): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(6154,37): run-time error CSS1039: Token not allowed after unary operator: '-selection-bg'
(6154,65): run-time error CSS1039: Token not allowed after unary operator: '-selection-color'
(6155,37): run-time error CSS1039: Token not allowed after unary operator: '-selection-bg'
(6155,65): run-time error CSS1039: Token not allowed after unary operator: '-selection-color'
(6170,35): run-time error CSS1039: Token not allowed after unary operator: '-nav-height'
(6175,23): run-time error CSS1039: Token not allowed after unary operator: '-font-family'
(6176,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-base'
(6177,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(6178,28): run-time error CSS1039: Token not allowed after unary operator: '-color-bg'
(6179,23): run-time error CSS1039: Token not allowed after unary operator: '-line-height'
(6187,46): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(6192,41): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(6198,41): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(6209,41): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(6210,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(6212,47): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(6216,41): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(6216,67): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-input'
(6222,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(6223,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(6224,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(6234,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xxl'
(6235,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(6236,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(6245,39): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(6248,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(6249,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(6255,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(6256,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(6261,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(6262,17): run-time error CSS1039: Token not allowed after unary operator: '-color-info'
(6263,28): run-time error CSS1039: Token not allowed after unary operator: '-color-info-bg'
(6264,33): run-time error CSS1039: Token not allowed after unary operator: '-color-info-border'
(6266,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(6271,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(6272,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(6279,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(6280,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(6286,17): run-time error CSS1039: Token not allowed after unary operator: '-color-link'
(6286,35): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(6288,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(6290,28): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(6294,17): run-time error CSS1039: Token not allowed after unary operator: '-color-link-hover'
(6294,41): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-dark'
(6308,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(6317,29): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(6318,29): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(6318,73): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(6337,17): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(6343,28): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(6344,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(6345,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius'
(6346,19): run-time error CSS1039: Token not allowed after unary operator: '-card-padding'
(6348,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-sm'
(6362,15): run-time error CSS1039: Token not allowed after unary operator: '-card-padding'
(6363,17): run-time error CSS1039: Token not allowed after unary operator: '-card-padding'
(6374,28): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(6375,25): run-time error CSS1039: Token not allowed after unary operator: '-btn-radius'
(6376,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-sm'
(6381,28): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-dark'
(6384,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-btn-active'
(6388,28): run-time error CSS1039: Token not allowed after unary operator: '-color-info-bg'
(6389,28): run-time error CSS1039: Token not allowed after unary operator: '-color-info-border'
(6390,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius'
(6391,19): run-time error CSS1039: Token not allowed after unary operator: '-card-padding'
(6413,28): run-time error CSS1039: Token not allowed after unary operator: '-color-info-bg'
(6414,28): run-time error CSS1039: Token not allowed after unary operator: '-color-info-border'
(6415,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius'
(6416,19): run-time error CSS1039: Token not allowed after unary operator: '-card-padding'
(6425,28): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(6426,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(6427,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius'
(6428,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-card'
(6429,19): run-time error CSS1039: Token not allowed after unary operator: '-card-padding'
(6430,25): run-time error CSS1039: Token not allowed after unary operator: '-section-gap'
(6431,33): run-time error CSS1039: Token not allowed after unary operator: '-transition-mid'
(6431,69): run-time error CSS1039: Token not allowed after unary operator: '-transition-mid'
(6433,26): run-time error CSS1039: Token not allowed after unary operator: '-card-padding-lg'
(6435,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-lg'
(6436,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(6438,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(6440,35): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(6457,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(6460,32): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(6472,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(6491,32): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(6503,17): run-time error CSS1039: Token not allowed after unary operator: '-color-link'
(6509,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(6512,40): run-time error CSS1039: Token not allowed after unary operator: '-color-link-hover'
(6515,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-focus'
(6516,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(6523,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(6531,32): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(6539,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(6544,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-card-hover'
(6545,43): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(6545,68): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(6548,32): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(6549,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius'
(6590,22): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(6594,45): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(6597,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-lg'
(6598,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(6599,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(6605,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(6606,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(6627,17): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(6628,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(6629,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(6636,29): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(6653,18): run-time error CSS1039: Token not allowed after unary operator: '-input-height'
(6654,19): run-time error CSS1039: Token not allowed after unary operator: '-input-padding'
(6656,31): run-time error CSS1039: Token not allowed after unary operator: '-font-size-base'
(6657,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(6658,28): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-input'
(6659,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(6660,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(6663,35): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(6664,33): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(6665,39): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(6670,27): run-time error CSS1039: Token not allowed after unary operator: '-input-height'
(6694,43): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(6694,81): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(6705,24): run-time error CSS1039: Token not allowed after unary operator: '-color-border-focus'
(6705,50): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(6706,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-focus'
(6718,28): run-time error CSS1039: Token not allowed after unary operator: '-color-bg'
(6726,24): run-time error CSS1039: Token not allowed after unary operator: '-color-danger'
(6736,24): run-time error CSS1039: Token not allowed after unary operator: '-color-danger'
(6737,51): run-time error CSS1039: Token not allowed after unary operator: '-color-danger'
(6752,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(6763,24): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(6810,24): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(6839,19): run-time error CSS1039: Token not allowed after unary operator: '-btn-padding'
(6841,21): run-time error CSS1039: Token not allowed after unary operator: '-btn-font-size'
(6842,23): run-time error CSS1039: Token not allowed after unary operator: '-btn-font-weight'
(6847,28): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(6849,25): run-time error CSS1039: Token not allowed after unary operator: '-btn-radius'
(6851,39): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(6852,28): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(6853,33): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(6854,30): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(6856,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-btn'
(6863,28): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-dark'
(6869,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-btn'
(6870,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-focus-ring'
(6874,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-btn-active'
(6885,28): run-time error CSS1039: Token not allowed after unary operator: '-color-save-btn'
(6886,24): run-time error CSS1039: Token not allowed after unary operator: '-color-save-btn'
(6890,28): run-time error CSS1039: Token not allowed after unary operator: '-color-save-btn-hover'
(6891,24): run-time error CSS1039: Token not allowed after unary operator: '-color-save-btn-hover'
(6896,28): run-time error CSS1039: Token not allowed after unary operator: '-color-delete-btn'
(6897,24): run-time error CSS1039: Token not allowed after unary operator: '-color-delete-btn'
(6901,28): run-time error CSS1039: Token not allowed after unary operator: '-color-delete-btn-hover'
(6902,24): run-time error CSS1039: Token not allowed after unary operator: '-color-delete-btn-hover'
(6908,17): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(6909,28): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(6913,28): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(6914,17): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-dark'
(6915,24): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-dark'
(6920,28): run-time error CSS1039: Token not allowed after unary operator: '-color-warning'
(6921,24): run-time error CSS1039: Token not allowed after unary operator: '-color-warning'
(6931,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-btn'
(6934,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-btn'
(6939,19): run-time error CSS1039: Token not allowed after unary operator: '-btn-padding-sm'
(6945,40): run-time error CSS1039: Token not allowed after unary operator: '-color-success'
(6947,28): run-time error CSS1039: Token not allowed after unary operator: '-color-delete-btn'
(6952,35): run-time error CSS1039: Token not allowed after unary operator: '-color-delete-btn'
(6953,35): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(6967,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(6971,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(6972,28): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(6973,39): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(6977,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(6978,28): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(6982,29): run-time error CSS1039: Token not allowed after unary operator: '-color-border-focus'
(6982,55): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(7009,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(7010,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(7011,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(7012,28): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(7013,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(7018,39): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(7019,35): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(7020,28): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(7023,34): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(7026,28): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(7028,24): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(7032,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(7052,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius'
(7053,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(7063,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(7160,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xl'
(7162,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(7168,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-lg'
(7169,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(7170,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(7179,32): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(7180,18): run-time error CSS1039: Token not allowed after unary operator: '-section-gap'
(7185,17): run-time error CSS1039: Token not allowed after unary operator: '-color-danger'
(7203,28): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(7225,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(7226,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(7261,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(7262,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(7270,28): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(7287,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(7288,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(7294,40): run-time error CSS1039: Token not allowed after unary operator: '-color-warning'
(7294,75): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(7295,40): run-time error CSS1039: Token not allowed after unary operator: '-color-danger'
(7295,75): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(7302,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(7303,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(7308,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(7309,28): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(7310,39): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(7313,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(7315,28): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(7319,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-focus'
(7320,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(7346,25): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(7362,29): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(7363,29): run-time error CSS1039: Token not allowed after unary operator: '-color-danger'
(7364,29): run-time error CSS1039: Token not allowed after unary operator: '-color-success'
(7424,29): run-time error CSS1039: Token not allowed after unary operator: '-color-border-focus'
(7440,37): run-time error CSS1039: Token not allowed after unary operator: '-ease-out-quint'
(7445,28): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(7446,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(7447,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-lg'
(7448,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-xl'
(7453,36): run-time error CSS1039: Token not allowed after unary operator: '-ease-out-back'
(7465,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-lg'
(7466,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(7484,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(7485,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(7493,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-light'
(7497,34): run-time error CSS1039: Token not allowed after unary operator: '-color-link'
(7499,39): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(7499,71): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(7627,32): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(7639,22): run-time error CSS1039: Token not allowed after unary operator: '-color-accent-bg'
(7639,45): run-time error CSS1039: Token not allowed after unary operator: '-color-info-bg'
(7640,17): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(7643,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(7646,52): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(7652,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(7653,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(7692,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg'
(7693,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(7694,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(7698,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(7703,48): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(7704,61): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(7708,22): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(7709,24): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(7716,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(7719,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg'
(7720,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(7721,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(7727,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(7730,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(7736,50): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(7736,88): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-normal'
(7738,68): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(7772,28): run-time error CSS1039: Token not allowed after unary operator: '-color-warning-bg'
(7773,35): run-time error CSS1039: Token not allowed after unary operator: '-color-warning-border'
(7774,17): run-time error CSS1039: Token not allowed after unary operator: '-color-warning'
(7776,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(7778,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(7781,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(7813,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(7831,30): run-time error CSS1039: Token not allowed after unary operator: '-pill-cluster-right'
(7856,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(7899,32): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(7926,28): run-time error CSS1039: Token not allowed after unary operator: '-color-warning-bg'
(7927,32): run-time error CSS1039: Token not allowed after unary operator: '-color-warning-border'
(7928,17): run-time error CSS1039: Token not allowed after unary operator: '-color-warning'
(7930,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(7931,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(7936,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(7967,28): run-time error CSS1039: Token not allowed after unary operator: '-color-warning-border'
(7969,28): run-time error CSS1039: Token not allowed after unary operator: '-color-warning-bg'
(7970,17): run-time error CSS1039: Token not allowed after unary operator: '-color-warning'
(7971,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(7972,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(7985,28): run-time error CSS1039: Token not allowed after unary operator: '-color-danger-bg'
(7986,35): run-time error CSS1039: Token not allowed after unary operator: '-color-danger-border'
(7987,17): run-time error CSS1039: Token not allowed after unary operator: '-color-danger'
(7989,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(7991,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(7993,41): run-time error CSS1039: Token not allowed after unary operator: '-ease-out-quint'
(8006,17): run-time error CSS1039: Token not allowed after unary operator: '-color-danger'
(8007,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(8022,22): run-time error CSS1039: Token not allowed after unary operator: '-color-danger'
(8053,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-light'
(8057,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(8058,28): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(8059,39): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(8078,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(8079,28): run-time error CSS1039: Token not allowed after unary operator: '-color-hover-wash'
(8082,29): run-time error CSS1039: Token not allowed after unary operator: '-color-border-focus'
(8082,55): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(8098,28): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(8101,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(8103,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(8104,24): run-time error CSS1039: Token not allowed after unary operator: '-nav-z'
(8117,37): run-time error CSS1039: Token not allowed after unary operator: '-ease-out-quint'
(8135,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(8140,35): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(8141,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(8142,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(8150,35): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(8152,39): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(8155,85): run-time error CSS1039: Token not allowed after unary operator: '-color-bg'
(8156,50): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(8159,15): run-time error CSS1039: Token not allowed after unary operator: '-nav-height'
(8161,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(8166,28): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-nav'
(8168,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(8182,67): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(8220,54): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(8239,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(8248,22): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(8249,17): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(8252,47): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(8255,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(8256,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-lg'
(8257,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(8262,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(8289,22): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(8290,17): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(8293,47): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(8301,28): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(8302,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(8303,24): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(8306,31): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(8309,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(8324,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(8330,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(8331,28): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(8331,69): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(8333,39): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(8333,70): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(8334,66): run-time error CSS1039: Token not allowed after unary operator: '-shadow-focus'
(8334,94): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(8340,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(8341,17): run-time error CSS1039: Token not allowed after unary operator: '-color-warning'
(8342,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(8397,27): run-time error CSS1039: Token not allowed after unary operator: '-font-family'
(8404,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-btn'
(8404,70): run-time error CSS1039: Token not allowed after unary operator: '-color-save-btn'
(8415,32): run-time error CSS1039: Token not allowed after unary operator: '-color-save-btn'
(8416,39): run-time error CSS1039: Token not allowed after unary operator: '-ease-in-out'
(8461,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(8463,39): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(8463,76): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(8466,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(8474,24): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(8475,22): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(8483,41): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(8484,17): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-dark'
(8485,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(8486,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-lg'
(8487,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(8500,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(8525,35): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(8526,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(8530,30): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(8531,31): run-time error CSS1039: Token not allowed after unary operator: '-color-danger'
(8537,37): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(8539,38): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(8539,60): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(8544,37): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(8546,38): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(8546,60): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(8554,19): run-time error CSS1039: Token not allowed after unary operator: '-nav-z'
(8555,28): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-nav'
(8559,48): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-nav'
(8560,29): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-nav'
(8561,18): run-time error CSS1039: Token not allowed after unary operator: '-nav-height'
(8564,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-md'
(8583,30): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(8586,33): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(8607,15): run-time error CSS1039: Token not allowed after unary operator: '-nav-height'
(8611,28): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-nav'
(8613,24): run-time error CSS1039: Token not allowed after unary operator: '-nav-z'
(8647,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(8648,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(8649,28): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(8649,69): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(8656,28): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(8657,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(8662,28): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(8663,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(8665,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(8689,26): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(8690,32): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(8690,61): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(8704,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-base'
(8740,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(8741,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg'
(8742,29): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(8752,17): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(8755,38): run-time error CSS1039: Token not allowed after unary operator: '-ease-in-out'
(8774,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(8778,28): run-time error CSS1039: Token not allowed after unary operator: '-color-danger'
(8781,38): run-time error CSS1039: Token not allowed after unary operator: '-ease-in-out'
(8788,64): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-nav-dropdown'
(8795,32): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(8797,27): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(8808,32): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-nav-dropdown'
(8812,29): run-time error CSS1039: Token not allowed after unary operator: '-border-radius'
(8813,26): run-time error CSS1039: Token not allowed after unary operator: '-shadow-lg'
(8818,43): run-time error CSS1039: Token not allowed after unary operator: '-ease-out-quint'
(8831,39): run-time error CSS1039: Token not allowed after unary operator: '-nav-height'
(8882,32): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(8886,32): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(8888,27): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(8904,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(8961,35): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(8964,84): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(8968,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-base'
(8976,32): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(9007,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(9010,39): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(9012,29): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(9014,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(9021,22): run-time error CSS1039: Token not allowed after unary operator: '-color-info-bg'
(9022,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(9023,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius'
(9036,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-lg'
(9037,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(9038,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(9042,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(9043,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(9057,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-light'
(9058,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(9059,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-normal'
(9063,39): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(9065,29): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(9067,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(9072,28): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(9073,29): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(9074,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(9075,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(9076,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(9087,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(9088,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-light'
(9100,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xl'
(9134,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(9150,22): run-time error CSS1039: Token not allowed after unary operator: '-color-success-bg'
(9151,17): run-time error CSS1039: Token not allowed after unary operator: '-color-success'
(9152,28): run-time error CSS1039: Token not allowed after unary operator: '-color-success-border'
(9155,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-sm'
(9156,38): run-time error CSS1039: Token not allowed after unary operator: '-ease-out-back'
(9179,23): run-time error CSS1039: Token not allowed after unary operator: '-font-family'
(9187,34): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(9189,40): run-time error CSS1039: Token not allowed after unary operator: '-color-text-light'
(9193,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(9195,41): run-time error CSS1039: Token not allowed after unary operator: '-color-success'
(9196,41): run-time error CSS1039: Token not allowed after unary operator: '-color-danger'
(9199,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(9202,45): run-time error CSS1039: Token not allowed after unary operator: '-color-success'
(9203,45): run-time error CSS1039: Token not allowed after unary operator: '-color-danger'
(9206,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(9207,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(9211,42): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(9213,64): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(9213,100): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(9218,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(9219,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(9220,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(9222,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(9227,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(9234,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(9240,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(9244,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-light'
(9246,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(9248,44): run-time error CSS1039: Token not allowed after unary operator: '-color-success'
(9249,44): run-time error CSS1039: Token not allowed after unary operator: '-color-danger'
(9255,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(9261,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(9262,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(9270,41): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(9283,28): run-time error CSS1039: Token not allowed after unary operator: '-color-save-btn'
(9297,33): run-time error CSS1039: Token not allowed after unary operator: '-ease-out-quint'
(9312,14): run-time error CSS1039: Token not allowed after unary operator: '-color-save-btn'
(9313,33): run-time error CSS1039: Token not allowed after unary operator: '-color-save-btn'
(9316,49): run-time error CSS1039: Token not allowed after unary operator: '-color-save-btn'
(9327,15): run-time error CSS1039: Token not allowed after unary operator: '-section-gap'
(9337,35): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(9339,39): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(9339,76): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(9340,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(9344,49): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(9345,50): run-time error CSS1039: Token not allowed after unary operator: '-color-border-focus'
(9347,28): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(9348,33): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(9350,57): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(9353,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(9354,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(9357,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(9358,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(9368,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(9369,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(9377,28): run-time error CSS1039: Token not allowed after unary operator: '-color-bg'
(9378,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(9379,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(9382,28): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(9383,17): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(9458,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(9459,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(9460,28): run-time error CSS1039: Token not allowed after unary operator: '-color-warning-bg'
(9461,17): run-time error CSS1039: Token not allowed after unary operator: '-color-warning'
(9462,28): run-time error CSS1039: Token not allowed after unary operator: '-color-warning-border'
(9463,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(9480,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-lg'
(9482,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-lg'
(9504,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(9506,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(9509,47): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(9510,47): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(9511,47): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-dark'
(9533,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(9568,32): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(9576,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(9578,39): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(9578,76): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(9579,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(9584,22): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(9585,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(9590,29): run-time error CSS1039: Token not allowed after unary operator: '-color-border-focus'
(9594,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(9620,22): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(9629,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(9659,43): run-time error CSS1039: Token not allowed after unary operator: '-font-size-lg'
(9659,77): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(9661,58): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(9661,86): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(9663,45): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(9664,58): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(9666,92): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(9669,109): run-time error CSS1039: Token not allowed after unary operator: '-font-size-base'
(9670,45): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(9672,43): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(9672,71): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(9682,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg'
(9683,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(9684,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(9694,44): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(9728,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(9729,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(9730,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(9737,28): run-time error CSS1039: Token not allowed after unary operator: '-color-success'
(9738,24): run-time error CSS1039: Token not allowed after unary operator: '-color-success'
(9742,42): run-time error CSS1039: Token not allowed after unary operator: '-color-success'
(9755,57): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(9756,64): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(9756,105): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(9757,69): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(9764,41): run-time error CSS1039: Token not allowed after unary operator: '-color-info-bg'
(9764,69): run-time error CSS1039: Token not allowed after unary operator: '-color-info'
(9766,41): run-time error CSS1039: Token not allowed after unary operator: '-color-success-bg'
(9766,72): run-time error CSS1039: Token not allowed after unary operator: '-color-success'
(9767,41): run-time error CSS1039: Token not allowed after unary operator: '-color-warning-bg'
(9767,72): run-time error CSS1039: Token not allowed after unary operator: '-color-warning'
(9769,41): run-time error CSS1039: Token not allowed after unary operator: '-color-danger-bg'
(9769,71): run-time error CSS1039: Token not allowed after unary operator: '-color-danger'
(9779,29): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(9780,37): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(9781,37): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(9782,37): run-time error CSS1039: Token not allowed after unary operator: '-color-warning'
(9782,71): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(9783,37): run-time error CSS1039: Token not allowed after unary operator: '-color-danger'
(9783,71): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(9802,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg'
(9803,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(9804,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(9812,57): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(9813,38): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(9815,38): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(9822,44): run-time error CSS1039: Token not allowed after unary operator: '-color-danger-bg'
(9824,44): run-time error CSS1039: Token not allowed after unary operator: '-color-warning-bg'
(9826,44): run-time error CSS1039: Token not allowed after unary operator: '-color-info-bg'
(9856,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(9860,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(9861,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(9867,32): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(9872,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(9874,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(9876,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(9898,40): run-time error CSS1039: Token not allowed after unary operator: '-color-success-bg'
(9898,72): run-time error CSS1039: Token not allowed after unary operator: '-color-success'
(9899,40): run-time error CSS1039: Token not allowed after unary operator: '-color-warning-bg'
(9899,72): run-time error CSS1039: Token not allowed after unary operator: '-color-warning'
(9900,40): run-time error CSS1039: Token not allowed after unary operator: '-color-danger-bg'
(9900,72): run-time error CSS1039: Token not allowed after unary operator: '-color-danger'
(9903,40): run-time error CSS1039: Token not allowed after unary operator: '-color-info-bg'
(9903,72): run-time error CSS1039: Token not allowed after unary operator: '-color-info'
(9914,42): run-time error CSS1039: Token not allowed after unary operator: '-color-bg'
(9923,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(9935,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(9936,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(9945,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(9946,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(9947,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(9948,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(9968,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(9979,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(9987,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-light'
(10018,25): run-time error CSS1039: Token not allowed after unary operator: '-btn-radius'
(10019,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-btn'
(10039,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(10040,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius'
(10055,35): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(10056,39): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(10056,76): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(10063,54): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(10064,54): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(10065,55): run-time error CSS1039: Token not allowed after unary operator: '-color-border-focus'
(10086,28): run-time error CSS1039: Token not allowed after unary operator: '-color-text-light'
(10087,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(10088,35): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(10088,70): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(10090,61): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(10092,24): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(10094,38): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(10103,22): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(10105,24): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(10135,28): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(10136,33): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(10144,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(10145,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(10149,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(10150,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(10151,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-base'
(10154,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(10155,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(10169,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg'
(10170,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(10171,29): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(10175,47): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(10177,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(10178,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(10183,35): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(10197,23): run-time error CSS1039: Token not allowed after unary operator: '-font-family'
(10198,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(10199,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(10200,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(10203,39): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(10204,51): run-time error CSS1039: Token not allowed after unary operator: '-color-border-focus'
(10215,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(10216,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(10224,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(10225,32): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(10244,30): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(10245,28): run-time error CSS1039: Token not allowed after unary operator: '-color-bg'
(10246,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(10247,23): run-time error CSS1039: Token not allowed after unary operator: '-font-family'
(10248,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(10249,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-normal'
(10253,39): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(10254,38): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(10255,38): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(10256,38): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(10257,38): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(10261,24): run-time error CSS1039: Token not allowed after unary operator: '-color-save-btn'
(10262,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(10264,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-sm'
(10268,28): run-time error CSS1039: Token not allowed after unary operator: '-color-save-btn'
(10269,28): run-time error CSS1039: Token not allowed after unary operator: '-color-save-btn'
(10271,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(10272,56): run-time error CSS1039: Token not allowed after unary operator: '-color-save-btn'
(10275,28): run-time error CSS1039: Token not allowed after unary operator: '-color-save-btn-hover'
(10276,28): run-time error CSS1039: Token not allowed after unary operator: '-color-save-btn-hover'
(10280,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-focus-ring'
(10286,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(10301,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(10303,22): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(10304,43): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(10304,69): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(10308,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(10313,22): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(10314,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(10317,41): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(10317,67): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-input'
(10323,22): run-time error CSS1039: Token not allowed after unary operator: '-input-height'
(10334,30): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(10341,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(10344,28): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(10344,65): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(10347,38): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(10347,74): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(10348,50): run-time error CSS1039: Token not allowed after unary operator: '-color-border-focus'
(10400,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(10401,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(10415,35): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(10420,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(10421,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius'
(10430,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(10434,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg'
(10436,35): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(10438,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(10442,35): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(10446,49): run-time error CSS1039: Token not allowed after unary operator: '-color-bg'
(10473,17): run-time error CSS1039: Token not allowed after unary operator: '-color-warning'
(10505,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(10506,28): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(10509,62): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(10510,70): run-time error CSS1039: Token not allowed after unary operator: '-shadow-focus'
(10518,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(10520,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(10529,43): run-time error CSS1039: Token not allowed after unary operator: '-ease-out-quint'
(10545,34): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(10546,35): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(10548,32): run-time error CSS1039: Token not allowed after unary operator: '-transition-mid'
(10548,68): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(10554,69): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(10556,71): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(10564,36): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(10567,17): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(10573,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(10587,35): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(10593,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(10597,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(10607,33): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(10611,27): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(10611,51): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(10625,38): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(10632,31): run-time error CSS1039: Token not allowed after unary operator: '-card-padding-lg'
(10632,71): run-time error CSS1039: Token not allowed after unary operator: '-card-padding-lg'
(10641,22): run-time error CSS1039: Token not allowed after unary operator: '-color-success-bg'
(10642,17): run-time error CSS1039: Token not allowed after unary operator: '-color-success'
(10643,28): run-time error CSS1039: Token not allowed after unary operator: '-color-success-border'
(10646,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-sm'
(10647,39): run-time error CSS1039: Token not allowed after unary operator: '-ease-out-back'
(10680,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg'
(10682,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(10683,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(10701,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(10722,20): run-time error CSS1039: Token not allowed after unary operator: '-nav-height'
(10738,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius'
(10739,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(10740,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-lg'
(10742,35): run-time error CSS1039: Token not allowed after unary operator: '-ease-out-quint'
(10768,32): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(10784,30): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(10784,71): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(10813,22): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(10818,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-lg'
(10823,28): run-time error CSS1039: Token not allowed after unary operator: '-ease-out-quint'
(10824,30): run-time error CSS1039: Token not allowed after unary operator: '-ease-out-quint'
(10836,22): run-time error CSS1039: Token not allowed after unary operator: '-color-accent-dark'
(10837,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-xl'
(10843,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-lg'
(10843,40): run-time error CSS1039: Token not allowed after unary operator: '-shadow-focus-ring'
(10857,45): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(10857,66): run-time error CSS1039: Token not allowed after unary operator: '-color-accent-dark'
(10870,80): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(10870,114): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(10870,150): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(10871,76): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(10872,36): run-time error CSS1039: Token not allowed after unary operator: '-color-delete-btn'
(10876,32): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(10876,88): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(10877,59): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(10878,41): run-time error CSS1039: Token not allowed after unary operator: '-color-bg'
(10879,33): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(10888,107): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(10891,59): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(10891,102): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(10908,31): run-time error CSS1039: Token not allowed after unary operator: '-color-danger'
(10909,31): run-time error CSS1039: Token not allowed after unary operator: '-color-success'
(10910,35): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(10912,68): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(10913,40): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(10914,31): run-time error CSS1039: Token not allowed after unary operator: '-color-warning-bg'
(10927,37): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(10929,38): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(10929,60): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(10934,37): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(10936,38): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(10936,60): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(10949,41): run-time error CSS1039: Token not allowed after unary operator: '-color-bg'
(10950,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(10951,47): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(10954,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(10955,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(10958,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(10963,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(10990,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(10991,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(10999,33): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(11008,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(11009,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(11010,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(11023,51): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(11031,41): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(11036,29): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(11041,39): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(11062,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(11072,50): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(11072,82): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(11073,50): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(11073,86): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(11074,50): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(11074,86): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(11078,35): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(11080,39): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(11081,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(11084,46): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(11085,47): run-time error CSS1039: Token not allowed after unary operator: '-color-border-focus'
(11087,28): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(11088,33): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(11098,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(11099,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(11105,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(11106,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(11110,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(11111,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(11116,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(11125,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(11126,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(11132,22): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(11133,17): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(11151,22): run-time error CSS1039: Token not allowed after unary operator: '-color-warning-bg'
(11152,17): run-time error CSS1039: Token not allowed after unary operator: '-color-warning'
(11153,28): run-time error CSS1039: Token not allowed after unary operator: '-color-warning-border'
(11156,22): run-time error CSS1039: Token not allowed after unary operator: '-color-danger-bg'
(11157,17): run-time error CSS1039: Token not allowed after unary operator: '-color-danger'
(11158,28): run-time error CSS1039: Token not allowed after unary operator: '-color-danger-border'
(11161,22): run-time error CSS1039: Token not allowed after unary operator: '-color-success-bg'
(11162,17): run-time error CSS1039: Token not allowed after unary operator: '-color-success'
(11163,28): run-time error CSS1039: Token not allowed after unary operator: '-color-success-border'
(11167,22): run-time error CSS1039: Token not allowed after unary operator: '-color-info-bg'
(11168,17): run-time error CSS1039: Token not allowed after unary operator: '-color-info'
(11169,28): run-time error CSS1039: Token not allowed after unary operator: '-color-info-border'
(11176,29): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(11189,17): run-time error CSS1039: Token not allowed after unary operator: '-color-link'
(11190,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(11191,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(11194,42): run-time error CSS1039: Token not allowed after unary operator: '-color-link-hover'
(11206,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-lg'
(11207,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-md'
(11210,56): run-time error CSS1039: Token not allowed after unary operator: '-border-radius'
(11221,22): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(11222,17): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(11224,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(11225,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(11234,22): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(11236,39): run-time error CSS1039: Token not allowed after unary operator: '-ease-in-out'
(11250,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(11264,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(11267,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(11268,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(11282,22): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(11283,17): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(11289,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(11291,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(11293,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg'
(11294,33): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(11295,27): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(11295,51): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(11298,38): run-time error CSS1039: Token not allowed after unary operator: '-ease-out-quint'
(11328,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(11329,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(11330,17): run-time error CSS1039: Token not allowed after unary operator: '-color-link'
(11330,35): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(11336,28): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(11339,40): run-time error CSS1039: Token not allowed after unary operator: '-color-link-hover'
(11339,64): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-dark'
(11352,22): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(11353,17): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(11360,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(11362,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(11364,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg'
(11365,33): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(11366,27): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(11366,51): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(11367,38): run-time error CSS1039: Token not allowed after unary operator: '-ease-out-quint'
(11388,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(11389,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(11391,41): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(11413,22): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(11415,39): run-time error CSS1039: Token not allowed after unary operator: '-transition-mid'
(11417,45): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(11418,45): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(11418,108): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(11453,44): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(11485,22): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(11487,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(11488,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(11495,67): run-time error CSS1039: Token not allowed after unary operator: '-color-accent-dark'
(11511,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(11512,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(11513,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-lg'
(11514,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-lg'
(11519,36): run-time error CSS1039: Token not allowed after unary operator: '-font-size-lg'
(11519,70): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(11527,35): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(11538,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(11539,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg'
(11540,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(11577,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(11578,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(11579,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(11580,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-lg'
(11581,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-lg'
(11589,47): run-time error CSS1039: Token not allowed after unary operator: '-color-danger'
(11591,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-lg'
(11592,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(11631,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(11632,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(11633,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(11634,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg'
(11635,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(11636,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(11638,39): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(11638,69): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(11640,37): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(11641,44): run-time error CSS1039: Token not allowed after unary operator: '-color-border-focus'
(11642,37): run-time error CSS1039: Token not allowed after unary operator: '-color-success-bg'
(11642,69): run-time error CSS1039: Token not allowed after unary operator: '-color-success'
(11642,105): run-time error CSS1039: Token not allowed after unary operator: '-color-success-border'
(11660,32): run-time error CSS1039: Token not allowed after unary operator: '-ease-in-out'
(11678,15): run-time error CSS1039: Token not allowed after unary operator: '-section-gap'
(11679,25): run-time error CSS1039: Token not allowed after unary operator: '-section-gap'
(11695,37): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(11697,38): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(11697,60): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(11702,37): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(11704,38): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(11704,60): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(11717,17): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(11723,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(11733,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(11734,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-lg'
(11735,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(11737,62): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(11742,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(11743,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(11765,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(11766,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(11767,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(11769,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(11770,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(11773,39): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(11773,76): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(11773,106): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(11773,140): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(11776,22): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(11777,24): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(11778,17): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-dark'
(11784,29): run-time error CSS1039: Token not allowed after unary operator: '-color-border-focus'
(11809,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(11810,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(11811,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius'
(11812,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-sm'
(11816,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xl'
(11817,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(11819,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(11824,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(11825,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(11830,59): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(11830,84): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(11831,50): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(11847,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(11849,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(11850,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(11851,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(11852,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(11855,39): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(11855,69): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(11855,106): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(11856,23): run-time error CSS1039: Token not allowed after unary operator: '-font-family'
(11859,22): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(11860,17): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-dark'
(11861,24): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(11864,29): run-time error CSS1039: Token not allowed after unary operator: '-color-border-focus'
(11868,22): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(11869,24): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(11874,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(11893,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(11894,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(11898,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-md'
(11899,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(11904,28): run-time error CSS1039: Token not allowed after unary operator: '-ease-out-quint'
(11905,30): run-time error CSS1039: Token not allowed after unary operator: '-ease-out-quint'
(11914,35): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(11914,77): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(11915,50): run-time error CSS1039: Token not allowed after unary operator: '-color-border-focus'
(11929,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(11930,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(11931,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-lg'
(11932,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-lg'
(11941,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-lg'
(11942,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(11953,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(11954,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(11956,39): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(11956,69): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(11960,22): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(11961,17): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-dark'
(11976,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(11977,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(11980,60): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-dark'
(11981,17): run-time error CSS1030: Expected identifier, found '.'
(11981,25): run-time error CSS1031: Expected selector, found ')'
(11981,25): run-time error CSS1025: Expected comma or open brace, found ')'
(11984,17): run-time error CSS1030: Expected identifier, found '.'
(11984,25): run-time error CSS1031: Expected selector, found ')'
(11984,25): run-time error CSS1025: Expected comma or open brace, found ')'
(12003,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(12004,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(12009,43): run-time error CSS1039: Token not allowed after unary operator: '-color-info-bg'
(12009,75): run-time error CSS1039: Token not allowed after unary operator: '-color-info'
(12009,115): run-time error CSS1039: Token not allowed after unary operator: '-color-info-border'
(12010,43): run-time error CSS1039: Token not allowed after unary operator: '-color-warning-bg'
(12010,75): run-time error CSS1039: Token not allowed after unary operator: '-color-warning'
(12010,115): run-time error CSS1039: Token not allowed after unary operator: '-color-warning-border'
(12011,43): run-time error CSS1039: Token not allowed after unary operator: '-color-success-bg'
(12011,75): run-time error CSS1039: Token not allowed after unary operator: '-color-success'
(12011,115): run-time error CSS1039: Token not allowed after unary operator: '-color-success-border'
(12012,43): run-time error CSS1039: Token not allowed after unary operator: '-color-bg'
(12012,75): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(12012,118): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(12026,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(12027,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(12031,40): run-time error CSS1039: Token not allowed after unary operator: '-color-info'
(12031,74): run-time error CSS1039: Token not allowed after unary operator: '-color-info-bg'
(12031,113): run-time error CSS1039: Token not allowed after unary operator: '-color-info-border'
(12032,40): run-time error CSS1039: Token not allowed after unary operator: '-color-warning'
(12032,74): run-time error CSS1039: Token not allowed after unary operator: '-color-warning-bg'
(12032,113): run-time error CSS1039: Token not allowed after unary operator: '-color-warning-border'
(12032,171): run-time error CSS1039: Token not allowed after unary operator: '-ease-in-out'
(12033,40): run-time error CSS1039: Token not allowed after unary operator: '-color-success'
(12033,74): run-time error CSS1039: Token not allowed after unary operator: '-color-success-bg'
(12033,113): run-time error CSS1039: Token not allowed after unary operator: '-color-success-border'
(12034,40): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(12034,77): run-time error CSS1039: Token not allowed after unary operator: '-color-bg'
(12034,108): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(12037,60): run-time error CSS1039: Token not allowed after unary operator: '-color-warning'
(12080,25): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(12291,25): run-time error CSS1039: Token not allowed after unary operator: '-font-size-base'
(12311,25): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(12339,32): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(12370,54): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(12384,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(12384,54): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(12388,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(12389,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(12390,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(12394,28): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(12395,39): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(12400,17): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(12401,47): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(12407,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-focus-ring'
(12411,17): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(12412,28): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(12413,43): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(12414,35): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(12415,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(12423,28): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(12512,35): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(12514,39): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(12517,43): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(12518,52): run-time error CSS1039: Token not allowed after unary operator: '-color-border-focus'
(12520,28): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(12521,33): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(12531,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(12532,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(12537,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(12553,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg'
(12554,35): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(12555,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(12556,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(12557,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(12562,57): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(12565,43): run-time error CSS1039: Token not allowed after unary operator: '-color-success-bg'
(12565,75): run-time error CSS1039: Token not allowed after unary operator: '-color-success'
(12567,43): run-time error CSS1039: Token not allowed after unary operator: '-color-success-bg'
(12567,75): run-time error CSS1039: Token not allowed after unary operator: '-color-success'
(12570,40): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(12570,76): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(12574,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(12575,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(12576,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(12633,35): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(12637,51): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(12653,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(12684,25): run-time error CSS1039: Token not allowed after unary operator: '-radius-md'
(12685,22): run-time error CSS1039: Token not allowed after unary operator: '-color-warning-bg'
(12686,28): run-time error CSS1039: Token not allowed after unary operator: '-color-warning-border'
(12687,17): run-time error CSS1039: Token not allowed after unary operator: '-color-warning'
(12692,17): run-time error CSS1039: Token not allowed after unary operator: '-color-warning'
(12694,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(12704,22): run-time error CSS1039: Token not allowed after unary operator: '-color-danger-bg'
(12705,24): run-time error CSS1039: Token not allowed after unary operator: '-color-danger-border'
(12706,17): run-time error CSS1039: Token not allowed after unary operator: '-color-danger'
(12708,46): run-time error CSS1039: Token not allowed after unary operator: '-color-danger'
(12723,32): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(12726,41): run-time error CSS1039: Token not allowed after unary operator: '-color-hover-bg'
(12742,28): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(12756,28): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(12757,24): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(12765,28): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(12766,24): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(12769,38): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(12771,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(12772,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(12790,33): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(12925,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(12926,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(12945,32): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(12952,29): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(12956,32): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(12956,64): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(12980,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(12981,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(12982,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(12983,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(12984,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(12985,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(12986,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(12987,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(12991,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(12994,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(12998,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(12999,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(13000,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(13001,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(13002,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(13003,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(13004,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(13005,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(13010,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(13011,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(13012,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(13013,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(13016,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(13017,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(13018,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(13019,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '-'
(13027,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-btn'
(13028,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-focus-warning'
(13031,32): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(13032,32): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(13065,69): run-time error CSS1031: Expected selector, found '/'
(13065,69): run-time error CSS1025: Expected comma or open brace, found '/'
(13114,32): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-normal'
(13115,32): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(13116,32): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(13118,28): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(13119,28): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(13120,28): run-time error CSS1039: Token not allowed after unary operator: '-font-size-base'
(13121,28): run-time error CSS1039: Token not allowed after unary operator: '-font-size-lg'
(13122,28): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xl'
(13123,28): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xxl'
(13132,29): run-time error CSS1039: Token not allowed after unary operator: '-color-info'
(13133,29): run-time error CSS1039: Token not allowed after unary operator: '-color-warning'
(13146,36): run-time error CSS1039: Token not allowed after unary operator: '-border-radius'
(13147,36): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(13148,36): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-lg'
(13151,40): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(13152,44): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(13153,47): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(13155,34): run-time error CSS1039: Token not allowed after unary operator: '-shadow-sm'
(13156,34): run-time error CSS1039: Token not allowed after unary operator: '-shadow-md'
(13157,34): run-time error CSS1039: Token not allowed after unary operator: '-shadow-lg'
(13193,32): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-nav'
(13263,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(13264,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(13268,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(13269,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(13277,22): run-time error CSS1039: Token not allowed after unary operator: '-color-text-light'
(13283,50): run-time error CSS1039: Token not allowed after unary operator: '-color-warning'
(13294,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(13306,22): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(13309,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(13336,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(13337,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(13342,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(13364,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(13378,42): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(13454,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(13467,45): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-hover'
(13475,62): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(13491,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(13517,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-hover'
(13554,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(13554,57): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(13555,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(13555,64): run-time error CSS1039: Token not allowed after unary operator: '-border-radius'
(13562,56): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(13565,42): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-input'
(13565,72): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(13566,31): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xl'
(13566,73): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(13567,33): run-time error CSS1039: Token not allowed after unary operator: '-font-size-lg'
(13567,75): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(13568,58): run-time error CSS1039: Token not allowed after unary operator: '-line-height'
(13570,57): run-time error CSS1039: Token not allowed after unary operator: '-line-height'
(13583,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(13584,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(13585,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(13586,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-lg'
(13592,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(13593,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(13594,23): run-time error CSS1039: Token not allowed after unary operator: '-line-height'
(13598,22): run-time error CSS1039: Token not allowed after unary operator: '-color-accent-light'
(13599,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(13603,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-input'
(13605,35): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(13607,53): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(13608,40): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(13611,36): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(13658,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(13662,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(13663,28): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(13664,39): run-time error CSS1039: Token not allowed after unary operator: '-transition-fast'
(13667,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(13668,28): run-time error CSS1039: Token not allowed after unary operator: '-color-primary-light'
(13671,29): run-time error CSS1039: Token not allowed after unary operator: '-color-border-focus'
(13671,55): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(13695,40): run-time error CSS1039: Token not allowed after unary operator: '-ease-out-quint'
(13710,22): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-card'
(13711,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(13712,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(13713,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius'
(13717,38): run-time error CSS1039: Token not allowed after unary operator: '-ease-out-quint'
(13732,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(13738,42): run-time error CSS1039: Token not allowed after unary operator: '-color-bg-input'
(13738,72): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(13751,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(13752,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(13753,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(13757,35): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(13774,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(13775,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(13783,22): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(13787,22): run-time error CSS1039: Token not allowed after unary operator: '-color-accent'
(13787,42): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(13800,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xl'
(13801,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(13804,57): run-time error CSS1039: Token not allowed after unary operator: '-line-height'
(13806,57): run-time error CSS1039: Token not allowed after unary operator: '-line-height'
(13813,28): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(13828,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(13842,32): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(13862,32): run-time error CSS1039: Token not allowed after unary operator: '-color-warning'
(13868,32): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(13889,32): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(13890,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(13892,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(13897,35): run-time error CSS1039: Token not allowed after unary operator: '-font-size-lg'
(13920,17): run-time error CSS1039: Token not allowed after unary operator: '-pill-cluster-right'
(13930,22): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(13935,22): run-time error CSS1039: Token not allowed after unary operator: '-shadow-lg'
(13968,22): run-time error CSS1039: Token not allowed after unary operator: '-color-primary'
(13980,39): run-time error CSS1039: Token not allowed after unary operator: '-pill-cluster-right'
(14033,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(14063,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(14076,22): run-time error CSS1039: Token not allowed after unary operator: '-color-warning-bg'
(14077,24): run-time error CSS1039: Token not allowed after unary operator: '-color-warning-border'
(14078,29): run-time error CSS1039: Token not allowed after unary operator: '-color-warning'
(14081,41): run-time error CSS1039: Token not allowed after unary operator: '-color-warning'
(14082,43): run-time error CSS1039: Token not allowed after unary operator: '-color-warning'
(14083,17): run-time error CSS1039: Token not allowed after unary operator: '-color-warning'
(14085,73): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(14089,41): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(14090,43): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(14091,48): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(14094,41): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(14095,43): run-time error CSS1039: Token not allowed after unary operator: '-color-border'
(14096,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(14159,28): run-time error CSS1039: Token not allowed after unary operator: '-color-info-border'
(14161,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(14162,22): run-time error CSS1039: Token not allowed after unary operator: '-color-info-bg'
(14163,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(14164,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(14172,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-semibold'
(14173,17): run-time error CSS1039: Token not allowed after unary operator: '-color-info'
(14180,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(14214,28): run-time error CSS1039: Token not allowed after unary operator: '-color-info-border'
(14217,22): run-time error CSS1039: Token not allowed after unary operator: '-color-info-bg'
(14218,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(14265,28): run-time error CSS1039: Token not allowed after unary operator: '-color-info-bg'
(14266,28): run-time error CSS1039: Token not allowed after unary operator: '-color-info-border'
(14268,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius'
(14269,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(14270,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(14284,42): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-bold'
(14299,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-xs'
(14300,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-normal'
(14302,54): run-time error CSS1039: Token not allowed after unary operator: '-color-text-muted'
(14321,28): run-time error CSS1039: Token not allowed after unary operator: '-color-info-border'
(14323,25): run-time error CSS1039: Token not allowed after unary operator: '-border-radius-sm'
(14324,28): run-time error CSS1039: Token not allowed after unary operator: '-color-info-bg'
(14325,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(14326,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(14341,28): run-time error CSS1039: Token not allowed after unary operator: '-color-warning-border'
(14343,28): run-time error CSS1039: Token not allowed after unary operator: '-color-warning-bg'
(14344,17): run-time error CSS1039: Token not allowed after unary operator: '-color-text'
(14345,21): run-time error CSS1039: Token not allowed after unary operator: '-font-size-sm'
(14346,23): run-time error CSS1039: Token not allowed after unary operator: '-font-weight-medium'
(14352,53): run-time error CSS1039: Token not allowed after unary operator: '-color-warning'
(14362,29): run-time error CSS1039: Token not allowed after unary operator: '-color-warning'
(14369,67): run-time error CSS1039: Token not allowed after unary operator: '-ease-out-quint'
 */
@charset "UTF-8";/*!
 * Bootstrap  v5.2.3 (https://getbootstrap.com/)
 * Copyright 2011-2022 The Bootstrap Authors
 * Copyright 2011-2022 Twitter, Inc.
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 */:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-body-color-rgb:33,37,41;--bs-body-bg-rgb:255,255,255;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-bg:#fff;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-2xl:2rem;--bs-border-radius-pill:50rem;--bs-link-color:#0d6efd;--bs-link-hover-color:#0a58ca;--bs-code-color:#d63384;--bs-highlight-bg:#fff3cd}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;border:0;border-top:1px solid;opacity:.25}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.1875em;background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:var(--bs-link-color);text-decoration:underline}a:hover{color:var(--bs-link-hover-color)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid var(--bs-border-color);border-radius:.375rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:#6c757d}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.table{--bs-table-color:var(--bs-body-color);--bs-table-bg:transparent;--bs-table-border-color:var(--bs-border-color);--bs-table-accent-bg:transparent;--bs-table-striped-color:var(--bs-body-color);--bs-table-striped-bg:rgba(0, 0, 0, 0.05);--bs-table-active-color:var(--bs-body-color);--bs-table-active-bg:rgba(0, 0, 0, 0.1);--bs-table-hover-color:var(--bs-body-color);--bs-table-hover-bg:rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;color:var(--bs-table-color);vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem .5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:2px solid currentcolor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-accent-bg:var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-striped-columns>:not(caption)>tr>:nth-child(2n){--bs-table-accent-bg:var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg:var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover>*{--bs-table-accent-bg:var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-color:#000;--bs-table-bg:#cfe2ff;--bs-table-border-color:#bacbe6;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color:#000;--bs-table-bg:#e2e3e5;--bs-table-border-color:#cbccce;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color:#000;--bs-table-bg:#d1e7dd;--bs-table-border-color:#bcd0c7;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color:#000;--bs-table-bg:#cff4fc;--bs-table-border-color:#badce3;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color:#000;--bs-table-bg:#fff3cd;--bs-table-border-color:#e6dbb9;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color:#000;--bs-table-bg:#f8d7da;--bs-table-border-color:#dfc2c4;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color:#000;--bs-table-bg:#f8f9fa;--bs-table-border-color:#dfe0e1;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color:#fff;--bs-table-bg:#212529;--bs-table-border-color:#373b3e;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:#6c757d}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#212529;background-color:#fff;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled{background-color:#e9ecef;opacity:1}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#dde0e3}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;border-radius:.25rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + 2px)}textarea.form-control-sm{min-height:calc(1.5em + .5rem + 2px)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}.form-control-color{width:3rem;height:calc(1.5em + .75rem + 2px);padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0!important;border-radius:.375rem}.form-control-color::-webkit-color-swatch{border-radius:.375rem}.form-control-color.form-control-sm{height:calc(1.5em + .5rem + 2px)}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + 2px)}.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(0.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#e9ecef}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #212529}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem;border-radius:.25rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:.5rem}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-reverse{padding-right:1.5em;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:-1.5em;margin-left:0}.form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;print-color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{cursor:default;opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0d6efd;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;width:100%;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control-plaintext::-moz-placeholder,.form-floating>.form-control::-moz-placeholder{color:transparent}.form-floating>.form-control-plaintext::placeholder,.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control-plaintext:not(:-moz-placeholder-shown),.form-floating>.form-control:not(:-moz-placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:-webkit-autofill,.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-moz-placeholder-shown)~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control-plaintext~label,.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control-plaintext~label{border-width:1px 0}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-floating,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-floating:focus-within,.input-group>.form-select:focus{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.375rem}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:.25rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select,.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select,.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(25,135,84,.9);border-radius:.375rem}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#198754;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:#198754}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-control-color.is-valid,.was-validated .form-control-color:valid{width:calc(3rem + calc(1.5em + .75rem))}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:#198754}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:#198754}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#198754}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-valid,.input-group>.form-floating:not(:focus-within).is-valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-control:not(:focus):valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.was-validated .input-group>.form-select:not(:focus):valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.375rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:#dc3545}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-control-color.is-invalid,.was-validated .form-control-color:invalid{width:calc(3rem + calc(1.5em + .75rem))}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:#dc3545}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:#dc3545}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-invalid,.input-group>.form-floating:not(:focus-within).is-invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-control:not(:focus):invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.was-validated .input-group>.form-select:not(:focus):invalid{z-index:4}.btn{--bs-btn-padding-x:0.75rem;--bs-btn-padding-y:0.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight:400;--bs-btn-line-height:1.5;--bs-btn-color:#212529;--bs-btn-bg:transparent;--bs-btn-border-width:1px;--bs-btn-border-color:transparent;--bs-btn-border-radius:0.375rem;--bs-btn-hover-border-color:transparent;--bs-btn-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.15),0 1px 1px rgba(0, 0, 0, 0.075);--bs-btn-disabled-opacity:0.65;--bs-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,.btn.active,.btn.show,.btn:first-child:active,:not(.btn-check)+.btn:active{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible,.btn:first-child:active:focus-visible,:not(.btn-check)+.btn:active:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color:#fff;--bs-btn-bg:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0b5ed7;--bs-btn-hover-border-color:#0a58ca;--bs-btn-focus-shadow-rgb:49,132,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0a58ca;--bs-btn-active-border-color:#0a53be;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#0d6efd;--bs-btn-disabled-border-color:#0d6efd}.btn-secondary{--bs-btn-color:#fff;--bs-btn-bg:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#5c636a;--bs-btn-hover-border-color:#565e64;--bs-btn-focus-shadow-rgb:130,138,145;--bs-btn-active-color:#fff;--bs-btn-active-bg:#565e64;--bs-btn-active-border-color:#51585e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#6c757d;--bs-btn-disabled-border-color:#6c757d}.btn-success{--bs-btn-color:#fff;--bs-btn-bg:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#157347;--bs-btn-hover-border-color:#146c43;--bs-btn-focus-shadow-rgb:60,153,110;--bs-btn-active-color:#fff;--bs-btn-active-bg:#146c43;--bs-btn-active-border-color:#13653f;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#198754;--bs-btn-disabled-border-color:#198754}.btn-info{--bs-btn-color:#000;--bs-btn-bg:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#31d2f2;--bs-btn-hover-border-color:#25cff2;--bs-btn-focus-shadow-rgb:11,172,204;--bs-btn-active-color:#000;--bs-btn-active-bg:#3dd5f3;--bs-btn-active-border-color:#25cff2;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#0dcaf0;--bs-btn-disabled-border-color:#0dcaf0}.btn-warning{--bs-btn-color:#000;--bs-btn-bg:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffca2c;--bs-btn-hover-border-color:#ffc720;--bs-btn-focus-shadow-rgb:217,164,6;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffcd39;--bs-btn-active-border-color:#ffc720;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#ffc107;--bs-btn-disabled-border-color:#ffc107}.btn-danger{--bs-btn-color:#fff;--bs-btn-bg:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#bb2d3b;--bs-btn-hover-border-color:#b02a37;--bs-btn-focus-shadow-rgb:225,83,97;--bs-btn-active-color:#fff;--bs-btn-active-bg:#b02a37;--bs-btn-active-border-color:#a52834;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#dc3545;--bs-btn-disabled-border-color:#dc3545}.btn-light{--bs-btn-color:#000;--bs-btn-bg:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#d3d4d5;--bs-btn-hover-border-color:#c6c7c8;--bs-btn-focus-shadow-rgb:211,212,213;--bs-btn-active-color:#000;--bs-btn-active-bg:#c6c7c8;--bs-btn-active-border-color:#babbbc;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#f8f9fa;--bs-btn-disabled-border-color:#f8f9fa}.btn-dark{--bs-btn-color:#fff;--bs-btn-bg:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#424649;--bs-btn-hover-border-color:#373b3e;--bs-btn-focus-shadow-rgb:66,70,73;--bs-btn-active-color:#fff;--bs-btn-active-bg:#4d5154;--bs-btn-active-border-color:#373b3e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#212529;--bs-btn-disabled-border-color:#212529}.btn-outline-primary{--bs-btn-color:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0d6efd;--bs-btn-hover-border-color:#0d6efd;--bs-btn-focus-shadow-rgb:13,110,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0d6efd;--bs-btn-active-border-color:#0d6efd;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#0d6efd;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0d6efd;--bs-gradient:none}.btn-outline-secondary{--bs-btn-color:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#6c757d;--bs-btn-hover-border-color:#6c757d;--bs-btn-focus-shadow-rgb:108,117,125;--bs-btn-active-color:#fff;--bs-btn-active-bg:#6c757d;--bs-btn-active-border-color:#6c757d;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#6c757d;--bs-gradient:none}.btn-outline-success{--bs-btn-color:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#198754;--bs-btn-hover-border-color:#198754;--bs-btn-focus-shadow-rgb:25,135,84;--bs-btn-active-color:#fff;--bs-btn-active-bg:#198754;--bs-btn-active-border-color:#198754;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#198754;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#198754;--bs-gradient:none}.btn-outline-info{--bs-btn-color:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#0dcaf0;--bs-btn-hover-border-color:#0dcaf0;--bs-btn-focus-shadow-rgb:13,202,240;--bs-btn-active-color:#000;--bs-btn-active-bg:#0dcaf0;--bs-btn-active-border-color:#0dcaf0;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#0dcaf0;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0dcaf0;--bs-gradient:none}.btn-outline-warning{--bs-btn-color:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffc107;--bs-btn-hover-border-color:#ffc107;--bs-btn-focus-shadow-rgb:255,193,7;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffc107;--bs-btn-active-border-color:#ffc107;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#ffc107;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#ffc107;--bs-gradient:none}.btn-outline-danger{--bs-btn-color:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#dc3545;--bs-btn-hover-border-color:#dc3545;--bs-btn-focus-shadow-rgb:220,53,69;--bs-btn-active-color:#fff;--bs-btn-active-bg:#dc3545;--bs-btn-active-border-color:#dc3545;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#dc3545;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#dc3545;--bs-gradient:none}.btn-outline-light{--bs-btn-color:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#f8f9fa;--bs-btn-hover-border-color:#f8f9fa;--bs-btn-focus-shadow-rgb:248,249,250;--bs-btn-active-color:#000;--bs-btn-active-bg:#f8f9fa;--bs-btn-active-border-color:#f8f9fa;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#f8f9fa;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#f8f9fa;--bs-gradient:none}.btn-outline-dark{--bs-btn-color:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#212529;--bs-btn-hover-border-color:#212529;--bs-btn-focus-shadow-rgb:33,37,41;--bs-btn-active-color:#fff;--bs-btn-active-bg:#212529;--bs-btn-active-border-color:#212529;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#212529;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#212529;--bs-gradient:none}.btn-link{--bs-btn-font-weight:400;--bs-btn-color:var(--bs-link-color);--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:var(--bs-link-hover-color);--bs-btn-hover-border-color:transparent;--bs-btn-active-color:var(--bs-link-hover-color);--bs-btn-active-border-color:transparent;--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-border-color:transparent;--bs-btn-box-shadow:none;--bs-btn-focus-shadow-rgb:49,132,253;text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-group-lg>.btn,.btn-lg{--bs-btn-padding-y:0.5rem;--bs-btn-padding-x:1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius:0.5rem}.btn-group-sm>.btn,.btn-sm{--bs-btn-padding-y:0.25rem;--bs-btn-padding-x:0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius:0.25rem}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.dropdown,.dropdown-center,.dropend,.dropstart,.dropup,.dropup-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex:1000;--bs-dropdown-min-width:10rem;--bs-dropdown-padding-x:0;--bs-dropdown-padding-y:0.5rem;--bs-dropdown-spacer:0.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color:#212529;--bs-dropdown-bg:#fff;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-border-radius:0.375rem;--bs-dropdown-border-width:1px;--bs-dropdown-inner-border-radius:calc(0.375rem - 1px);--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y:0.5rem;--bs-dropdown-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-dropdown-link-color:#212529;--bs-dropdown-link-hover-color:#1e2125;--bs-dropdown-link-hover-bg:#e9ecef;--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:#adb5bd;--bs-dropdown-item-padding-x:1rem;--bs-dropdown-item-padding-y:0.25rem;--bs-dropdown-header-color:#6c757d;--bs-dropdown-header-padding-x:1rem;--bs-dropdown-header-padding-y:0.5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color:#dee2e6;--bs-dropdown-bg:#343a40;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color:#dee2e6;--bs-dropdown-link-hover-color:#fff;--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg:rgba(255, 255, 255, 0.15);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:#adb5bd;--bs-dropdown-header-color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:.375rem}.btn-group>.btn-group:not(:first-child),.btn-group>:not(.btn-check:first-child)+.btn{margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x:1rem;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-link-color);--bs-nav-link-hover-color:var(--bs-link-hover-color);--bs-nav-link-disabled-color:#6c757d;display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--bs-nav-link-hover-color)}.nav-link.disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width:1px;--bs-nav-tabs-border-color:#dee2e6;--bs-nav-tabs-border-radius:0.375rem;--bs-nav-tabs-link-hover-border-color:#e9ecef #e9ecef #dee2e6;--bs-nav-tabs-link-active-color:#495057;--bs-nav-tabs-link-active-bg:#fff;--bs-nav-tabs-link-active-border-color:#dee2e6 #dee2e6 #fff;border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1 * var(--bs-nav-tabs-border-width));background:0 0;border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-link.disabled,.nav-tabs .nav-link:disabled{color:var(--bs-nav-link-disabled-color);background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius:0.375rem;--bs-nav-pills-link-active-color:#fff;--bs-nav-pills-link-active-bg:#0d6efd}.nav-pills .nav-link{background:0 0;border:0;border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link:disabled{color:var(--bs-nav-link-disabled-color);background-color:transparent;border-color:transparent}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x:0;--bs-navbar-padding-y:0.5rem;--bs-navbar-color:rgba(0, 0, 0, 0.55);--bs-navbar-hover-color:rgba(0, 0, 0, 0.7);--bs-navbar-disabled-color:rgba(0, 0, 0, 0.3);--bs-navbar-active-color:rgba(0, 0, 0, 0.9);--bs-navbar-brand-padding-y:0.3125rem;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:1.25rem;--bs-navbar-brand-color:rgba(0, 0, 0, 0.9);--bs-navbar-brand-hover-color:rgba(0, 0, 0, 0.9);--bs-navbar-nav-link-padding-x:0.5rem;--bs-navbar-toggler-padding-y:0.25rem;--bs-navbar-toggler-padding-x:0.75rem;--bs-navbar-toggler-font-size:1.25rem;--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color:rgba(0, 0, 0, 0.1);--bs-navbar-toggler-border-radius:0.375rem;--bs-navbar-toggler-focus-width:0.25rem;--bs-navbar-toggler-transition:box-shadow 0.15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x:0;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-navbar-color);--bs-nav-link-hover-color:var(--bs-navbar-hover-color);--bs-nav-link-disabled-color:var(--bs-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .show>.nav-link{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:focus,.navbar-text a:hover{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-dark{--bs-navbar-color:rgba(255, 255, 255, 0.55);--bs-navbar-hover-color:rgba(255, 255, 255, 0.75);--bs-navbar-disabled-color:rgba(255, 255, 255, 0.25);--bs-navbar-active-color:#fff;--bs-navbar-brand-color:#fff;--bs-navbar-brand-hover-color:#fff;--bs-navbar-toggler-border-color:rgba(255, 255, 255, 0.1);--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y:1rem;--bs-card-spacer-x:1rem;--bs-card-title-spacer-y:0.5rem;--bs-card-border-width:1px;--bs-card-border-color:var(--bs-border-color-translucent);--bs-card-border-radius:0.375rem;--bs-card-box-shadow: ;--bs-card-inner-border-radius:calc(0.375rem - 1px);--bs-card-cap-padding-y:0.5rem;--bs-card-cap-padding-x:1rem;--bs-card-cap-bg:rgba(0, 0, 0, 0.03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg:#fff;--bs-card-img-overlay-padding:1rem;--bs-card-group-margin:0.75rem;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y)}.card-subtitle{margin-top:calc(-.5 * var(--bs-card-title-spacer-y));margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-bottom:calc(-1 * var(--bs-card-cap-padding-y));margin-left:calc(-.5 * var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-left:calc(-.5 * var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion{--bs-accordion-color:#212529;--bs-accordion-bg:#fff;--bs-accordion-transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,border-radius 0.15s ease;--bs-accordion-border-color:var(--bs-border-color);--bs-accordion-border-width:1px;--bs-accordion-border-radius:0.375rem;--bs-accordion-inner-border-radius:calc(0.375rem - 1px);--bs-accordion-btn-padding-x:1.25rem;--bs-accordion-btn-padding-y:1rem;--bs-accordion-btn-color:#212529;--bs-accordion-btn-bg:var(--bs-accordion-bg);--bs-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width:1.25rem;--bs-accordion-btn-icon-transform:rotate(-180deg);--bs-accordion-btn-icon-transition:transform 0.2s ease-in-out;--bs-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-focus-border-color:#86b7fe;--bs-accordion-btn-focus-box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-accordion-body-padding-x:1.25rem;--bs-accordion-body-padding-y:1rem;--bs-accordion-active-color:#0c63e4;--bs-accordion-active-bg:#e7f1ff}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed)::after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button::after{flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media (prefers-reduced-motion:reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:var(--bs-accordion-btn-focus-border-color);outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button,.accordion-flush .accordion-item .accordion-button.collapsed{border-radius:0}.breadcrumb{--bs-breadcrumb-padding-x:0;--bs-breadcrumb-padding-y:0;--bs-breadcrumb-margin-bottom:1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color:#6c757d;--bs-breadcrumb-item-padding-x:0.5rem;--bs-breadcrumb-item-active-color:#6c757d;display:flex;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x:0.75rem;--bs-pagination-padding-y:0.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color:var(--bs-link-color);--bs-pagination-bg:#fff;--bs-pagination-border-width:1px;--bs-pagination-border-color:#dee2e6;--bs-pagination-border-radius:0.375rem;--bs-pagination-hover-color:var(--bs-link-hover-color);--bs-pagination-hover-bg:#e9ecef;--bs-pagination-hover-border-color:#dee2e6;--bs-pagination-focus-color:var(--bs-link-hover-color);--bs-pagination-focus-bg:#e9ecef;--bs-pagination-focus-box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-pagination-active-color:#fff;--bs-pagination-active-bg:#0d6efd;--bs-pagination-active-border-color:#0d6efd;--bs-pagination-disabled-color:#6c757d;--bs-pagination-disabled-bg:#fff;--bs-pagination-disabled-border-color:#dee2e6;display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.active>.page-link,.page-link.active{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.disabled>.page-link,.page-link.disabled{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x:1.5rem;--bs-pagination-padding-y:0.75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius:0.5rem}.pagination-sm{--bs-pagination-padding-x:0.5rem;--bs-pagination-padding-y:0.25rem;--bs-pagination-font-size:0.875rem;--bs-pagination-border-radius:0.25rem}.badge{--bs-badge-padding-x:0.65em;--bs-badge-padding-y:0.35em;--bs-badge-font-size:0.75em;--bs-badge-font-weight:700;--bs-badge-color:#fff;--bs-badge-border-radius:0.375rem;display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg:transparent;--bs-alert-padding-x:1rem;--bs-alert-padding-y:1rem;--bs-alert-margin-bottom:1rem;--bs-alert-color:inherit;--bs-alert-border-color:transparent;--bs-alert-border:1px solid var(--bs-alert-border-color);--bs-alert-border-radius:0.375rem;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{--bs-alert-color:#084298;--bs-alert-bg:#cfe2ff;--bs-alert-border-color:#b6d4fe}.alert-primary .alert-link{color:#06357a}.alert-secondary{--bs-alert-color:#41464b;--bs-alert-bg:#e2e3e5;--bs-alert-border-color:#d3d6d8}.alert-secondary .alert-link{color:#34383c}.alert-success{--bs-alert-color:#0f5132;--bs-alert-bg:#d1e7dd;--bs-alert-border-color:#badbcc}.alert-success .alert-link{color:#0c4128}.alert-info{--bs-alert-color:#055160;--bs-alert-bg:#cff4fc;--bs-alert-border-color:#b6effb}.alert-info .alert-link{color:#04414d}.alert-warning{--bs-alert-color:#664d03;--bs-alert-bg:#fff3cd;--bs-alert-border-color:#ffecb5}.alert-warning .alert-link{color:#523e02}.alert-danger{--bs-alert-color:#842029;--bs-alert-bg:#f8d7da;--bs-alert-border-color:#f5c2c7}.alert-danger .alert-link{color:#6a1a21}.alert-light{--bs-alert-color:#636464;--bs-alert-bg:#fefefe;--bs-alert-border-color:#fdfdfe}.alert-light .alert-link{color:#4f5050}.alert-dark{--bs-alert-color:#141619;--bs-alert-bg:#d3d3d4;--bs-alert-border-color:#bcbebf}.alert-dark .alert-link{color:#101214}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{--bs-progress-height:1rem;--bs-progress-font-size:0.75rem;--bs-progress-bg:#e9ecef;--bs-progress-border-radius:0.375rem;--bs-progress-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-progress-bar-color:#fff;--bs-progress-bar-bg:#0d6efd;--bs-progress-bar-transition:width 0.6s ease;display:flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color:#212529;--bs-list-group-bg:#fff;--bs-list-group-border-color:rgba(0, 0, 0, 0.125);--bs-list-group-border-width:1px;--bs-list-group-border-radius:0.375rem;--bs-list-group-item-padding-x:1rem;--bs-list-group-item-padding-y:0.5rem;--bs-list-group-action-color:#495057;--bs-list-group-action-hover-color:#495057;--bs-list-group-action-hover-bg:#f8f9fa;--bs-list-group-action-active-color:#212529;--bs-list-group-action-active-bg:#e9ecef;--bs-list-group-disabled-color:#6c757d;--bs-list-group-disabled-bg:#fff;--bs-list-group-active-color:#fff;--bs-list-group-active-bg:#0d6efd;--bs-list-group-active-border-color:#0d6efd;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#084298;background-color:#cfe2ff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#084298;background-color:#bacbe6}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}.list-group-item-secondary{color:#41464b;background-color:#e2e3e5}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#41464b;background-color:#cbccce}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}.list-group-item-success{color:#0f5132;background-color:#d1e7dd}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#0f5132;background-color:#bcd0c7}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}.list-group-item-info{color:#055160;background-color:#cff4fc}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#055160;background-color:#badce3}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}.list-group-item-warning{color:#664d03;background-color:#fff3cd}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#664d03;background-color:#e6dbb9}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}.list-group-item-danger{color:#842029;background-color:#f8d7da}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#842029;background-color:#dfc2c4}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}.list-group-item-light{color:#636464;background-color:#fefefe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#636464;background-color:#e5e5e5}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#636464;border-color:#636464}.list-group-item-dark{color:#141619;background-color:#d3d3d4}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#141619;background-color:#bebebf}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#141619;border-color:#141619}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:#000;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:.5}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25);opacity:1}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{--bs-toast-zindex:1090;--bs-toast-padding-x:0.75rem;--bs-toast-padding-y:0.5rem;--bs-toast-spacing:1.5rem;--bs-toast-max-width:350px;--bs-toast-font-size:0.875rem;--bs-toast-color: ;--bs-toast-bg:rgba(255, 255, 255, 0.85);--bs-toast-border-width:1px;--bs-toast-border-color:var(--bs-border-color-translucent);--bs-toast-border-radius:0.375rem;--bs-toast-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-toast-header-color:#6c757d;--bs-toast-header-bg:rgba(255, 255, 255, 0.85);--bs-toast-header-border-color:rgba(0, 0, 0, 0.05);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex:1090;position:absolute;z-index:var(--bs-toast-zindex);width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-.5 * var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex:1055;--bs-modal-width:500px;--bs-modal-padding:1rem;--bs-modal-margin:0.5rem;--bs-modal-color: ;--bs-modal-bg:#fff;--bs-modal-border-color:var(--bs-border-color-translucent);--bs-modal-border-width:1px;--bs-modal-border-radius:0.5rem;--bs-modal-box-shadow:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-modal-inner-border-radius:calc(0.5rem - 1px);--bs-modal-header-padding-x:1rem;--bs-modal-header-padding-y:1rem;--bs-modal-header-padding:1rem 1rem;--bs-modal-header-border-color:var(--bs-border-color);--bs-modal-header-border-width:1px;--bs-modal-title-line-height:1.5;--bs-modal-footer-gap:0.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color:var(--bs-border-color);--bs-modal-footer-border-width:1px;position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin) * 2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - var(--bs-modal-margin) * 2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex:1050;--bs-backdrop-bg:#000;--bs-backdrop-opacity:0.5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y) * .5) calc(var(--bs-modal-header-padding-x) * .5);margin:calc(-.5 * var(--bs-modal-header-padding-y)) calc(-.5 * var(--bs-modal-header-padding-x)) calc(-.5 * var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * .5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap) * .5)}@media (min-width:576px){.modal{--bs-modal-margin:1.75rem;--bs-modal-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{--bs-modal-width:800px}}@media (min-width:1200px){.modal-xl{--bs-modal-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-footer,.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-footer,.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-footer,.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-footer,.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-footer,.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-footer,.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex:1080;--bs-tooltip-max-width:200px;--bs-tooltip-padding-x:0.5rem;--bs-tooltip-padding-y:0.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:0.875rem;--bs-tooltip-color:#fff;--bs-tooltip-bg:#000;--bs-tooltip-border-radius:0.375rem;--bs-tooltip-opacity:0.9;--bs-tooltip-arrow-width:0.8rem;--bs-tooltip-arrow-height:0.4rem;z-index:var(--bs-tooltip-zindex);display:block;padding:var(--bs-tooltip-arrow-height);margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:0;width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:0;width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.popover{--bs-popover-zindex:1070;--bs-popover-max-width:276px;--bs-popover-font-size:0.875rem;--bs-popover-bg:#fff;--bs-popover-border-width:1px;--bs-popover-border-color:var(--bs-border-color-translucent);--bs-popover-border-radius:0.5rem;--bs-popover-inner-border-radius:calc(0.5rem - 1px);--bs-popover-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-popover-header-padding-x:1rem;--bs-popover-header-padding-y:0.5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color: ;--bs-popover-header-bg:#f0f0f0;--bs-popover-body-padding-x:1rem;--bs-popover-body-padding-y:1rem;--bs-popover-body-color:#212529;--bs-popover-arrow-width:1rem;--bs-popover-arrow-height:0.5rem;--bs-popover-arrow-border:var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow::after,.popover .popover-arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid;border-width:0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::after,.bs-popover-top>.popover-arrow::before{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-top>.popover-arrow::after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::after,.bs-popover-end>.popover-arrow::before{border-width:calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-end>.popover-arrow::after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::before{border-width:0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-.5 * var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::after,.bs-popover-start>.popover-arrow::before{border-width:calc(var(--bs-popover-arrow-width) * .5) 0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-start>.popover-arrow::after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}.spinner-border,.spinner-grow{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-0.125em;--bs-spinner-border-width:0.25em;--bs-spinner-animation-speed:0.75s;--bs-spinner-animation-name:spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:transparent}.spinner-border-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem;--bs-spinner-border-width:0.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-0.125em;--bs-spinner-animation-speed:0.75s;--bs-spinner-animation-name:spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed:1.5s}}.offcanvas,.offcanvas-lg,.offcanvas-md,.offcanvas-sm,.offcanvas-xl,.offcanvas-xxl{--bs-offcanvas-zindex:1045;--bs-offcanvas-width:400px;--bs-offcanvas-height:30vh;--bs-offcanvas-padding-x:1rem;--bs-offcanvas-padding-y:1rem;--bs-offcanvas-color: ;--bs-offcanvas-bg:#fff;--bs-offcanvas-border-width:1px;--bs-offcanvas-border-color:var(--bs-border-color-translucent);--bs-offcanvas-box-shadow:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075)}@media (max-width:575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width:575.98px) and (prefers-reduced-motion:reduce){.offcanvas-sm{transition:none}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width:575.98px){.offcanvas-sm.show:not(.hiding),.offcanvas-sm.showing{transform:none}}@media (max-width:575.98px){.offcanvas-sm.hiding,.offcanvas-sm.show,.offcanvas-sm.showing{visibility:visible}}@media (min-width:576px){.offcanvas-sm{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width:767.98px) and (prefers-reduced-motion:reduce){.offcanvas-md{transition:none}}@media (max-width:767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}}@media (max-width:767.98px){.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}}@media (max-width:767.98px){.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width:767.98px){.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width:767.98px){.offcanvas-md.show:not(.hiding),.offcanvas-md.showing{transform:none}}@media (max-width:767.98px){.offcanvas-md.hiding,.offcanvas-md.show,.offcanvas-md.showing{visibility:visible}}@media (min-width:768px){.offcanvas-md{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width:991.98px) and (prefers-reduced-motion:reduce){.offcanvas-lg{transition:none}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width:991.98px){.offcanvas-lg.show:not(.hiding),.offcanvas-lg.showing{transform:none}}@media (max-width:991.98px){.offcanvas-lg.hiding,.offcanvas-lg.show,.offcanvas-lg.showing{visibility:visible}}@media (min-width:992px){.offcanvas-lg{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width:1199.98px) and (prefers-reduced-motion:reduce){.offcanvas-xl{transition:none}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width:1199.98px){.offcanvas-xl.show:not(.hiding),.offcanvas-xl.showing{transform:none}}@media (max-width:1199.98px){.offcanvas-xl.hiding,.offcanvas-xl.show,.offcanvas-xl.showing{visibility:visible}}@media (min-width:1200px){.offcanvas-xl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width:1399.98px) and (prefers-reduced-motion:reduce){.offcanvas-xxl{transition:none}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width:1399.98px){.offcanvas-xxl.show:not(.hiding),.offcanvas-xxl.showing{transform:none}}@media (max-width:1399.98px){.offcanvas-xxl.hiding,.offcanvas-xxl.show,.offcanvas-xxl.showing{visibility:visible}}@media (min-width:1400px){.offcanvas-xxl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.show:not(.hiding),.offcanvas.showing{transform:none}.offcanvas.hiding,.offcanvas.show,.offcanvas.showing{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;justify-content:space-between;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y) * .5) calc(var(--bs-offcanvas-padding-x) * .5);margin-top:calc(-.5 * var(--bs-offcanvas-padding-y));margin-right:calc(-.5 * var(--bs-offcanvas-padding-x));margin-bottom:calc(-.5 * var(--bs-offcanvas-padding-y))}.offcanvas-title{margin-bottom:0;line-height:1.5}.offcanvas-body{flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.text-bg-primary{color:#fff!important;background-color:RGBA(13,110,253,var(--bs-bg-opacity,1))!important}.text-bg-secondary{color:#fff!important;background-color:RGBA(108,117,125,var(--bs-bg-opacity,1))!important}.text-bg-success{color:#fff!important;background-color:RGBA(25,135,84,var(--bs-bg-opacity,1))!important}.text-bg-info{color:#000!important;background-color:RGBA(13,202,240,var(--bs-bg-opacity,1))!important}.text-bg-warning{color:#000!important;background-color:RGBA(255,193,7,var(--bs-bg-opacity,1))!important}.text-bg-danger{color:#fff!important;background-color:RGBA(220,53,69,var(--bs-bg-opacity,1))!important}.text-bg-light{color:#000!important;background-color:RGBA(248,249,250,var(--bs-bg-opacity,1))!important}.text-bg-dark{color:#fff!important;background-color:RGBA(33,37,41,var(--bs-bg-opacity,1))!important}.link-primary{color:#0d6efd!important}.link-primary:focus,.link-primary:hover{color:#0a58ca!important}.link-secondary{color:#6c757d!important}.link-secondary:focus,.link-secondary:hover{color:#565e64!important}.link-success{color:#198754!important}.link-success:focus,.link-success:hover{color:#146c43!important}.link-info{color:#0dcaf0!important}.link-info:focus,.link-info:hover{color:#3dd5f3!important}.link-warning{color:#ffc107!important}.link-warning:focus,.link-warning:hover{color:#ffcd39!important}.link-danger{color:#dc3545!important}.link-danger:focus,.link-danger:hover{color:#b02a37!important}.link-light{color:#f8f9fa!important}.link-light:focus,.link-light:hover{color:#f9fafb!important}.link-dark{color:#212529!important}.link-dark:focus,.link-dark:hover{color:#1a1e21!important}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:75%}.ratio-16x9{--bs-aspect-ratio:56.25%}.ratio-21x9{--bs-aspect-ratio:42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:1px;min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translateX(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-0{border:0!important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-0{border-top:0!important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-start-0{border-left:0!important}.border-primary{--bs-border-opacity:1;border-color:rgba(var(--bs-primary-rgb),var(--bs-border-opacity))!important}.border-secondary{--bs-border-opacity:1;border-color:rgba(var(--bs-secondary-rgb),var(--bs-border-opacity))!important}.border-success{--bs-border-opacity:1;border-color:rgba(var(--bs-success-rgb),var(--bs-border-opacity))!important}.border-info{--bs-border-opacity:1;border-color:rgba(var(--bs-info-rgb),var(--bs-border-opacity))!important}.border-warning{--bs-border-opacity:1;border-color:rgba(var(--bs-warning-rgb),var(--bs-border-opacity))!important}.border-danger{--bs-border-opacity:1;border-color:rgba(var(--bs-danger-rgb),var(--bs-border-opacity))!important}.border-light{--bs-border-opacity:1;border-color:rgba(var(--bs-light-rgb),var(--bs-border-opacity))!important}.border-dark{--bs-border-opacity:1;border-color:rgba(var(--bs-dark-rgb),var(--bs-border-opacity))!important}.border-white{--bs-border-opacity:1;border-color:rgba(var(--bs-white-rgb),var(--bs-border-opacity))!important}.border-1{--bs-border-width:1px}.border-2{--bs-border-width:2px}.border-3{--bs-border-width:3px}.border-4{--bs-border-width:4px}.border-5{--bs-border-width:5px}.border-opacity-10{--bs-border-opacity:0.1}.border-opacity-25{--bs-border-opacity:0.25}.border-opacity-50{--bs-border-opacity:0.5}.border-opacity-75{--bs-border-opacity:0.75}.border-opacity-100{--bs-border-opacity:1}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.fw-lighter{font-weight:lighter!important}.fw-normal{font-weight:400!important}.fw-bold{font-weight:700!important}.fw-semibold{font-weight:600!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:#6c757d!important}.text-black-50{--bs-text-opacity:1;color:rgba(0,0,0,.5)!important}.text-white-50{--bs-text-opacity:1;color:rgba(255,255,255,.5)!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.text-opacity-25{--bs-text-opacity:0.25}.text-opacity-50{--bs-text-opacity:0.5}.text-opacity-75{--bs-text-opacity:0.75}.text-opacity-100{--bs-text-opacity:1}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important}.bg-opacity-10{--bs-bg-opacity:0.1}.bg-opacity-25{--bs-bg-opacity:0.25}.bg-opacity-50{--bs-bg-opacity:0.5}.bg-opacity-75{--bs-bg-opacity:0.75}.bg-opacity-100{--bs-bg-opacity:1}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:var(--bs-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--bs-border-radius-sm)!important}.rounded-2{border-radius:var(--bs-border-radius)!important}.rounded-3{border-radius:var(--bs-border-radius-lg)!important}.rounded-4{border-radius:var(--bs-border-radius-xl)!important}.rounded-5{border-radius:var(--bs-border-radius-2xl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--bs-border-radius-pill)!important}.rounded-top{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-end{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}
/*# sourceMappingURL=bootstrap.min.css.map */
/* ============================================================
   qFIT - styles.css
   Central stylesheet. Control the entire site from here.
   Mobile-first. CSS variables used for every token.
   ============================================================ */

/* §§ 1, 2 (root + dark-mode variables) live in Shared/styles_shared.css.
   §§ 3, 4, 6, 9, 10, 12, 15, 21, 23, 24, 28 were retired during the
   2026-05-30 cross-site CSS consolidation; numbering preserved for
   traceability against the original layout. */

/* ── 5. Links ────────────────────────────────────────────────── */
/* White-text link for use on a colored / dark cell background (category-color rows, etc.). */
.link-on-color,
a.link-on-color {
    color: #ffffff;
    text-decoration: none;
    font-weight: var(--font-weight-bold);
    cursor: pointer;
}
.link-on-color:hover,
a.link-on-color:hover { color: #ffffff; text-decoration: underline; }

/* ── 7. Buttons (legacy aliases only — base + variants in shared) ──────── */
/* ConfigureTemplates dynamic grid — replaces legacy <table border=1> markup. */
.configure-templates-table {
    border-collapse: collapse;
    width: 100%;
}
.configure-templates-table th,
.configure-templates-table td {
    border: 1px solid var(--color-border);
    padding: 0.375rem 0.5rem;
    vertical-align: top;
}


/* ── Legacy class aliases ─────────────────────────────────────────────────
   Old pages use class="button green", class="button red", class="button lime",
   class="button main", etc. These aliases make them render with the canonical
   colors without forcing every page to be rewritten. New code should use
   .button-save / .button-delete / .button-secondary directly. */
.button.green,
.button.lime { background-color: var(--color-save-btn); color: #fff; }
.button.green:hover,
.button.lime:hover { background-color: var(--color-save-btn-hover); color: #fff; }
.button.red { background-color: var(--color-delete-btn); color: #fff; }
.button.red:hover { background-color: var(--color-delete-btn-hover); color: #fff; }
.button.orange { background-color: #f59e0b; color: #fff; }
.button.orange:hover { background-color: #d97706; color: #fff; }
.button.yellow,
.button.gold { background-color: #fbbf24; color: #1f2937; }
.button.yellow:hover,
.button.gold:hover { background-color: #f59e0b; color: #1f2937; }
.button.main { /* primary — already styled by .button itself */ }
.button.tiny {
    padding: var(--btn-padding-sm);
    font-size: var(--font-size-sm);
    min-height: 36px;
    min-width: 36px;
}
/* "Main red" is the legacy combo for a destructive primary action */
.button.main.red { background-color: var(--color-delete-btn); color: #fff; }
.button.main.red:hover { background-color: var(--color-delete-btn-hover); color: #fff; }

/* ── Legacy typography / link aliases ──────────────────────────────────
   .text / .graytext kept per memory/feedback_legacy_css_migration.md
   ("kept aliases — do NOT touch"). The legacy heading aliases
   (.smallheading / .mediumheading) and the per-color link aliases
   (.linkblack / .linkblue / .linkgreen / .linkwhite / .linkred /
   .linkgray / .linkyellow / .linkorange) were retired 2026-06-06 —
   the May 2026 migration sweep replaced every active-code reference
   with the canonical .link / .link-on-color (see Shared/styles_shared.css)
   and standard typography. Confirmed zero live references across
   .aspx / .ascx / .vb / .master / .js / .html before removal. */
.text { color: var(--color-text); }
.graytext { color: var(--color-text-muted); }

/* ── 8. Form inputs (qFIT2-specific type-selector additions; shared has base) ── */
.textbox,
input.textbox,
textarea.textbox,
.textbox:focus,
input.textbox:focus,
textarea.textbox:focus,
select.textbox:focus {
    outline: none;
    border-color: var(--color-border-focus);
    box-shadow: 0 0 0 3px rgba(33,150,243,0.18);
}
.textbox:disabled {
    opacity: 0.6;
    background-color: var(--color-bg);
    cursor: not-allowed;
}

/* Search-box clear (X): the × is now always visible, so the old
   :not(:placeholder-shown) reveal rule that used to live here was removed.
   The component is styled entirely in Shared/styles_shared.css. */

/* §11 (Cards), §17 (modal site-specific overrides — post-login install/push
   modal styles live in Shared/styles_shared.css), §18 (Banners), §19 (Toast
   notifications), §20 (Tables), §22 (Footer), §25 (Back-to-top FAB) are all
   handled by the canonical Shared/styles_shared.css now. Their section
   headers used to sit here as empty placeholders. */

/* ── 13. Navigation ──────────────────────────────────────────── */
.nav-brand .q { color: var(--color-accent); font-weight: 900; }
.nav-brand .rest { font-weight: 900; }

.nav-title {
    color: rgba(255,255,255,0.65);
    font-size: var(--font-size-sm);
    max-width: 50vw;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    flex: 1 1 auto;
    text-align: center;
    pointer-events: none;
}

/* Nav menu — all nav styling defers to styles_shared.css */

/* Skip-to-content link (WCAG 2.4.1): canonical .skip-link rule lives in
   Shared/styles_shared.css (shared across all 4 sites). qFIT's local
   .skip-to-content rule was removed 2026-06-25 when the markup was renamed
   to class="skip-link" for cross-site parity. */

/* Footer markup/styling now mirrors PacklistPRO via Shared/styles_shared.css
   (.site-footer-links/-copy/-sep, .linklike-btn); the old footer-copyright /
   footer-links / footer-sep / footer-status / site-tagline rules were retired
   with the 2026-06-07 footer replacement. */


/* "Sign Up" CTA — distinct from Login so first-time visitors see a clear action. */
.nav-link.nav-cta {
    background-color: var(--color-save-btn);
    color: #fff !important;
    border-radius: var(--border-radius-sm);
    margin-left: 0.25rem;
    font-weight: var(--font-weight-bold);
}
.nav-link.nav-cta:hover,
.nav-link.nav-cta:focus {
    background-color: var(--color-save-btn-hover);
    color: #fff;
}

/* ── 14. Page layout ─────────────────────────────────────────── */
@media (min-width: 768px) { .page-wrapper { padding: 1.5rem; } }
@media (min-width: 1200px) { .page-wrapper { padding: 2rem 1.5rem; } }

/* Page title with no bottom margin (when sitting next to a right-aligned
   action button — collapses the gap below for a tighter header). */
/* Page header title row: Back button + page title on one line. */
/* When the page-header has 3 direct flex children (back-btn + h1 + ⓘ),
   justify-content: space-between would awkwardly center the title.
   Make the title grab the available space so back-btn + title stay
   left-grouped and the ⓘ button ends up all the way in the upper-right. */
.page-header > .page-title,
.page-header > .page-title-flush {
    margin-right: auto;
    min-width: 0;
}

/* .page-header-actions wraps the ⓘ (tip) trigger on most pages so the page
   header has a consistent right-edge "actions slot". Half the pages emit the
   tip button as a bare child of .page-header instead; this rule normalizes
   both shapes so the trigger sits flush right with consistent gap from the
   title, regardless of which markup pattern the page uses. Defined locally
   because the class is referenced in 39 .aspx pages but not yet present in
   the canonical shared sheet. */
.page-header > .page-header-actions {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    flex: 0 0 auto;
    margin-left: 0.5rem;
}

/* ── 16. Tips panel (legacy alias for .vb code + .tips-row site-specific) ── */

/* Row that wraps the ⓘ Tips trigger, right-aligned at the top of a content page. */
.tips-row {
    display: flex;
    justify-content: flex-end;
    padding: .25rem 0;
}

/* ── 26. Site-specific utility classes (extras not in shared) ── */
.font-bold { font-weight: var(--font-weight-bold); }
.font-italic { font-style: italic; }

/* Category color table used by EditColors.aspx — each row is a single colored
   cell whose background is the user's chosen GroupColor (validated server-side). */
.qfit-colors-table {
    width: 100%;
    border-collapse: collapse;
}
.qfit-colors-table td {
    padding: 0.5rem 0.75rem;
    border: 1px solid var(--color-border);
}
.qfit-colors-table a {
    color: #fff;
    text-decoration: none;
    font-weight: var(--font-weight-bold);
}

/* QuickStart "Show / Toggle / Hidden" explainer table — capped narrower than
   the page so the short rows don't span the full width on desktop. */
.data-table-narrow { max-width: 480px; }

/* NOTE: the ApiUsage admin page (.au-*) rules live in ONE place — the
   "API Usage admin page" block near the end of this file (search ".au-stats").
   That copy is the canonical, cross-site-aligned version (matches PLP/qMeet);
   a divergent earlier duplicate that used to sit here was removed 2026-06-16. */

/* EditMethod UpdatePanel wrapper utility — prevents the auto-generated <div>
   from inheriting left indentation rules elsewhere on the page. */
.qfit-up-noindent {
    margin-left: 0 !important;
    padding-left: 0 !important;
    text-indent: 0 !important;
    white-space: normal !important;
}

/* HeartRateZones zone table — replaces legacy cellpadding="5" cellspacing="0". */
.hrz-table { border-collapse: collapse; }
.hrz-table td,
.hrz-table th { padding: 5px; }
/* The zone-name cells are <th scope="row"> (row headers). Neutralize the UA
   defaults (bold + centered) so the colored bands render exactly as before —
   the inner spans (.largeheading, .font-bold) set their own weight. */
.hrz-table th { font-weight: normal; text-align: left; }

/* .u-mx-auto lives with the other .u-* utilities below (search ".u-mx-auto"). */

/* ── 27. Focus visible (dark-mode override only — base in shared) ── */
/* Inputs inside dark cards / nav need a higher-contrast focus ring. */
[data-theme="dark"] :focus-visible {
    outline-color: var(--color-accent);
}

/* Accessibility: ensure interactive controls without a more specific focus
   rule still get a clearly visible focus ring. Belt-and-braces in case a
   page-level CSS rule strips the default browser outline without supplying
   a replacement. Uses :focus-visible so mouse users don't see the ring on
   click while keyboard users still see it on Tab. */
.button:focus-visible,
.tip-icon-button:focus-visible,
.password-toggle:focus-visible,
.tips-close:focus-visible,
.back-btn:focus-visible,
.nav-toggle:focus-visible,
.nav-link:focus-visible,
.link:focus-visible,
a.link:focus-visible {
    outline: 2px solid var(--color-border-focus, #00B0F0);
    outline-offset: 2px;
    border-radius: 3px;
}

/* High-contrast focus ring for dark mode on the same controls. */
[data-theme="dark"] .button:focus-visible,
[data-theme="dark"] .tip-icon-button:focus-visible,
[data-theme="dark"] .password-toggle:focus-visible,
[data-theme="dark"] .tips-close:focus-visible,
[data-theme="dark"] .back-btn:focus-visible,
[data-theme="dark"] .nav-toggle:focus-visible,
[data-theme="dark"] .nav-link:focus-visible,
[data-theme="dark"] .link:focus-visible,
[data-theme="dark"] a.link:focus-visible {
    outline-color: var(--color-accent);
}

/* Honour the user's reduced-motion preference. The early-paint script and a
   handful of small transitions (toast slide-in, expand-icon rotate, button
   press feedback) can be uncomfortable for users with vestibular disorders.
   Reducing these to near-zero keeps the UI usable without animation. */
@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 0.001ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.001ms !important;
        scroll-behavior: auto !important;
    }
}


/* ── 29. qFIT-specific: hierarchical checklist styling ──────────
   The qFIT domain hierarchy is:
     Category  →  Target  →  Method
   Each level needs to look visually distinct so the structure is obvious.
   ─────────────────────────────────────────────────────────────── */

.qfit-checklist { margin-top: 0.5rem; }

/* Category header (top level, dark) */
.qfit-category {
    margin-bottom: 0.75rem;
    border-radius: var(--border-radius-sm);
    overflow: hidden;
}
.qfit-category-header {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.625rem 0.875rem;
    background: var(--color-text);
    color: #fff;
    font-weight: var(--font-weight-bold);
    font-size: var(--font-size-lg);
    cursor: pointer;
    user-select: none;
}
.qfit-category-header:hover { filter: brightness(0.92); }
.qfit-expand-icon {
    display: inline-block;
    transition: transform 0.15s;
    font-style: normal;
    font-size: 0.7rem;
    flex-shrink: 0;
}
.qfit-category[aria-expanded="true"] > .qfit-category-header > .qfit-expand-icon { transform: rotate(90deg); }

/* Target header (mid level, gray) */
.qfit-target {
    background: #f3f4f6;
    border-bottom: 1px solid var(--color-border);
}
.qfit-target-header {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 0.75rem 0.5rem 1.5rem;
    font-weight: var(--font-weight-medium);
    cursor: pointer;
}
[data-theme="dark"] .qfit-target { background: #1a1a1a; }
.qfit-target[aria-expanded="true"] > .qfit-target-header > .qfit-expand-icon { transform: rotate(90deg); }

/* Method row (leaf, blue) */
.qfit-method-row {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 0.75rem 0.5rem 2.5rem;
    border-bottom: 1px solid var(--color-border);
    color: var(--color-info);
    background: var(--color-bg-card);
}
.qfit-method-row:last-child { border-bottom: none; }
.qfit-method-row:hover { background: var(--color-info-bg); }
.qfit-method-name {
    flex: 1;
    font-weight: var(--font-weight-medium);
    word-break: break-word;
}
.qfit-method-actions {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-shrink: 0;
}

/* Importance — high (yellow checkbox), low (gray name) */
.importance-high input[type="checkbox"].qfit-cb {
    appearance: none;
    -webkit-appearance: none;
    width: 1.125rem;
    height: 1.125rem;
    background-color: #ffff00;
    border: 1px solid #000;
    border-radius: 2px;
    cursor: pointer;
}
.importance-high input[type="checkbox"].qfit-cb:checked {
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M3.5 8.5 L6.5 11.5 L12.5 5' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/></svg>");
    background-repeat: no-repeat;
    background-position: center;
    background-size: 100% 100%;
}
.importance-low .qfit-method-name { color: var(--color-text-light); }

/* Strikethrough for completed methods */
.method-done .qfit-method-name {
    text-decoration: line-through;
    color: var(--color-text-muted);
}

/* "Template/seed default" field marker on admin-facing Edit pages. These fields
   write to the BASE qFIT* tables (template/seed defaults that get cloned into new
   accounts), not the user's customizations. The pink tint is a visual cue for the
   admin user — only admins see this panel; standard users have CssClass="textinput"
   without this modifier, so it has no effect for them.

   Replaces inline BackColor="Pink" on EditCategory / EditTarget / EditMethod. */
.field-template,
input.field-template,
textarea.field-template,
span.field-template,   /* <asp:CheckBox> wrapper span */
.field-template > input,
.field-template > label {
    background-color: #fdecef; /* soft pink that works in both light + dark theme */
}
[data-theme="dark"] .field-template,
[data-theme="dark"] input.field-template,
[data-theme="dark"] textarea.field-template,
[data-theme="dark"] span.field-template,
[data-theme="dark"] .field-template > input,
[data-theme="dark"] .field-template > label {
    background-color: #4a1d2a;
    color: #fbd9e1;
}

/* ── 30b. Auth pages (Login / ForgotLogin / AccountCreated / Join wizard) ─
   Shared layout: centered card on a roomy page background. Avoids per-page
   inline <style> blocks for the same three layout rules.
   ───────────────────────────────────────────────────────────── */

/* Login.aspx layout — Tips card sits OUTSIDE the login card, above it, with the
   ⓘ trigger right-aligned to the card's right edge. Mirrors PacklistPRO's pattern. */
.login-tips-area .tip-card { margin-bottom: 0.75rem; }
/* Bold the form labels on Login per UX preference. Scoped so other pages aren't affected. */
.login-page .input-label { font-weight: 700; }
.login-links .sep { color: var(--color-text-light); user-select: none; }

.auth-page {
    display: flex;
    justify-content: center;
    padding: 1rem;
}
.auth-card {
    width: 100%;
    max-width: 480px;
    padding: 1.5rem;
}
.auth-card.auth-card-narrow { max-width: 440px; }
.auth-card.auth-card-wide   { max-width: 560px; }
.auth-brand {
    text-align: center;
    margin-bottom: 1.25rem;
    font-weight: 900;
    font-size: 2.5rem;
    letter-spacing: 0.02em;
}
.auth-brand .q { color: var(--color-accent); }
.auth-ip {
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
    margin: 0.75rem 0 0;
    text-align: center;
}
.auth-links {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 0.5rem 0.4rem;
    margin-top: 1rem;
    font-size: var(--font-size-sm);
}
.auth-links .sep { color: var(--color-text-light); user-select: none; }
/* Password visibility toggle — mirrors PacklistPRO's pattern. */

/* Caps Lock warning (.caps-lock-warning) moved to Shared/styles_shared.css
   (2026-05-30 cross-site consolidation) so PacklistPRO + qMeet share the same
   rule. site.js initCapsLockWarning() auto-injects the element under a focused
   password input when Caps Lock is detected. */

/* Wizard step indicator: "Step 3 of 7" muted-and-small. */
.wizard-step {
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
    text-align: center;
    margin: 0 0 0.25rem;
}
.wizard-back-link {
    text-align: center;
    margin-top: 0.75rem;
}

/* Help page numbered-steps list — light spacing, bold lead. */
.help-steps > li { margin: 0 0 0.875rem 0; line-height: 1.5; }
.help-steps strong { display: inline-block; margin-bottom: 0.15rem; }

/* Day-nav: prev/next arrows on detail pages, centered around a date label. */
.qfit-daynav {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
}
.qfit-daynav .daynav-arrow {
    font-size: 1.75rem;
    line-height: 1;
    text-decoration: none;
    padding: 0.25rem 0.15rem;
    border-radius: var(--border-radius-sm);
}
.qfit-daynav .daynav-arrow:hover {
    background-color: var(--color-primary-light);
    text-decoration: none;
}

/* ── 30. Error page (used by Error.aspx) ─────────────────────── */
.error-body { background: var(--color-bg); }
.error-cid {
    font-size: 1rem;
    user-select: all;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    background: var(--color-bg);
    padding: 0.125rem 0.375rem;
    border-radius: var(--border-radius-sm);
    border: 1px solid var(--color-border);
}

/* ── 31. Search bars / filter toolbars ─────────────────────────
   Standardized layout for "🔍 search box + clear + button" combos.
   Use:  <div class="search-bar">
            <div class="input-clearable">
                <input class="textbox" placeholder="Search..." />
                <button class="input-clear-btn">×</button>
            </div>
            <button class="button button-sm">🔍</button>
         </div>
   ───────────────────────────────────────────────────────────── */
.search-bar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
    margin-bottom: 0.75rem;
}
.search-bar .input-clearable {
    flex: 1 1 200px;
    min-width: 0;
}
.search-bar .input-clearable .textbox { width: 100%; }
.search-bar .button { flex-shrink: 0; }

/* ── 31b. QuickAdd search results ──────────────────────────────
   Client-rendered rows (SearchActivities WebMethod). Each row is a
   <button class="qa-result"> that toggles the activity on/off via
   the SetVisibility WebMethod — the pill shows the current state. */
.qa-section-heading { margin-top: 1rem; }
.qa-result-list {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
}
.qa-result {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.125rem;
    width: 100%;
    text-align: left;
    padding: 0.5rem 0.75rem;
    background: var(--color-bg-card);
    border: 1px solid var(--color-border);
    border-radius: var(--border-radius);
    cursor: pointer;
    font: inherit;
    color: var(--color-text);
}
.qa-result:hover,
.qa-result:focus-visible {
    border-color: var(--color-primary);
    background: var(--color-bg-hover, var(--color-bg));
}
.qa-result-name { font-weight: var(--font-weight-bold); }
.qa-result .qa-state { pointer-events: none; }
.qa-result .qa-state-on {
    border-color: var(--color-success-border, #28a745);
    color: var(--color-success-text, #1e7e34);
}

/* ── 31b3. QuickAdd2 — PLP-look search/add list ───────────────────
   QuickAdd2.aspx (PacklistPRO-look redesign of QuickAdd.aspx). Builds on
   the .qa-result base above; .qa2-row turns each result into a horizontal
   row (name + path on the left, the add/remove state pill on the right).
   The suggestion chips, filter toolbar, stat strip, and empty states all
   reuse shared classes (.pill / .stat-strip / .empty-state). The original
   QuickAdd.aspx keeps the vertical .qa-result layout and is untouched. */
.qa2-toolbar { justify-content: space-between; align-items: center; }
.qa2-row {
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
}
.qa2-row .qa-result-main {
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
    min-width: 0;
    flex: 1 1 auto;
}
.qa2-row .qa-result-name { white-space: normal; }
.qa2-row .qa-result-action { flex-shrink: 0; }
/* [hidden] needs class+attr specificity to beat the display:flex these carry
   (.qa-result / .toolbar-row-spaced / .qa-result-list), or JS can't hide them. */
.qa2-row[hidden] { display: none; }
.qa2-toolbar[hidden] { display: none; }
.qa-result-list[hidden] { display: none; }
.qa2-suggest {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 0.4rem;
    margin-top: 0.75rem;
}

/* ── 31b2. Admin bulk-operations stack — one full-width danger
   button per row (replaces the legacy <br>-separated Width=98% list). */
.admin-btn-stack {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}
.admin-btn-stack .button { width: 100%; }

/* ── 31c. BulkEdit options — grouped checkbox columns ──────────── */
.bulk-options {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem 2rem;
}
.bulk-options fieldset {
    border: 0;
    padding: 0;
    margin: 0;
    min-width: 220px;
}
.bulk-options legend {
    padding: 0;
    margin-bottom: 0.25rem;
}
.bulk-options .check-row { min-height: 36px; }

/* BulkEdit — row-count summary shown above the editable grid. Helps the user
   gauge how much they're about to render/save, and nudges them toward the
   search box once the list gets large. */
.bulk-edit-summary {
    display: block;
    margin: 0.5rem 0 0.75rem 0;
    padding: 0.5rem 0.75rem;
    background: var(--color-primary-light, #f4f4f4);
    border-left: 3px solid var(--color-accent, #888);
    border-radius: 4px;
    font-size: 0.9rem;
    color: var(--color-text, #222);
}
.bulk-edit-summary:empty {
    display: none;
}
.bulk-edit-summary-count {
    font-weight: 700;
}
.bulk-edit-summary-hint {
    display: inline-block;
    margin-top: 0.25rem;
    color: var(--color-text-muted, #666);
}

/* ── 32. Section header — heading row with right-side actions ─
   Use:  <div class="section-header">
            <h2 class="heading">Categories</h2>
            <div class="section-actions">
              <button class="button button-save">＋ Add</button>
            </div>
         </div>
   ───────────────────────────────────────────────────────────── */
.section-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin: 1rem 0 0.5rem;
}
.section-header .heading,
.section-header .largeheading,
.section-header .page-title { margin: 0; }
.section-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    align-items: center;
}

/* ── 33. Empty-state message ───────────────────────────────────
   Shown when no records / no results / nothing yet. Soft styling
   so it doesn't look like an error. Pages can put icon + CTA inside.
   ───────────────────────────────────────────────────────────── */

/* ── 34. Pills / badges / tags ─────────────────────────────────
   Small inline pill labels for counts, statuses, tags.
   ───────────────────────────────────────────────────────────── */
.badge {
    display: inline-block;
    padding: 0.125rem 0.5rem;
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-bold);
    line-height: 1.4;
    background-color: var(--color-text-muted);
    color: #fff;
    border-radius: 999px;
    white-space: nowrap;
    vertical-align: middle;
}
.badge-success  { background-color: var(--color-success); }
.badge-danger   { background-color: var(--color-danger); }
.badge-warning  { background-color: var(--color-warning); color: #fff; }
.badge-info     { background-color: var(--color-info); }
.badge-cyan     { background-color: var(--color-accent); color: #003a44; }

/* ── 35. Inline field validation message ───────────────────────
   Use <span class="field-error">message</span> right after an input.
   Pairs with the .field-validation-error class set by ASP.NET
   RequiredFieldValidator / RegularExpressionValidator markup.
   ───────────────────────────────────────────────────────────── */
.field-error,
.field-hint,
.field-validation-error {
    display: block;
    font-size: var(--font-size-sm);
    margin-top: 0.2rem;
    line-height: 1.35;
}
.field-error,
.field-validation-error { color: var(--color-danger); font-weight: var(--font-weight-bold); }
.field-hint            { color: var(--color-text-muted); }

/* Standalone required-field indicator — used as <span class="required-star">*</span>
   next to the field label. The legend nested rule below (Sec 38) keeps its existing
   override for the page-top legend. */
.required-star {
    color: var(--color-danger);
    font-weight: var(--font-weight-bold);
    margin-left: 0.15rem;
    speak: none;
}

/* Confirm-delete checkbox placed immediately before a danger button. Pull the
   checkbox close to the button so the tick-then-click pairing reads as a unit
   and doesn't wrap awkwardly between unrelated actions on small screens. */
.confirm-delete-cb {
    margin-left: 0.5rem;
}
.confirm-delete-cb + .button.danger,
.confirm-delete-cb + .button-delete {
    margin-left: 0.25rem;
}

/* ── 36. Confirm modal (generic, used by data-confirm buttons) ── */
.confirm-modal .modal-title { color: var(--color-danger); }
.confirm-modal p { margin: 0 0 0.75rem; }

/* ── 37. Floating action button (FAB) — used for "＋ Add" on long lists ──
   Anchored bottom-right above the back-to-top button.
   ───────────────────────────────────────────────────────────── */
.qfit-fab {
    position: fixed;
    right: 1rem;
    bottom: 4rem;
    z-index: 1499;
    width: 56px;
    height: 56px;
    border-radius: 50%;
    border: none;
    background-color: var(--color-save-btn);
    color: #fff;
    font-size: 1.75rem;
    line-height: 1;
    cursor: pointer;
    box-shadow: var(--shadow-md);
}
.qfit-fab:hover { background-color: var(--color-save-btn-hover); }

/* ── 38. Required-fields legend (above a long form) ───────────── */
.required-legend {
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
    margin: 0 0 0.5rem;
}
.required-legend .required-star { color: var(--color-danger); font-weight: var(--font-weight-bold); }

/* ── 39. Two-column form helper ────────────────────────────────
   Mobile: stacked. Desktop ≥ 768px: 2 columns inside a .form-grid.
   ───────────────────────────────────────────────────────────── */
.form-grid {
    display: grid;
    gap: 1rem;
    grid-template-columns: 1fr;
}
@media (min-width: 768px) {
    .form-grid { grid-template-columns: 1fr 1fr; }
    .form-grid .span-2 { grid-column: span 2; }
}

/* ── 40. Dark-mode rules for legacy color classes ──────────────
   The styles_universal.css color classes (.green/.red/.cyan/.yellow etc.)
   hard-code light backgrounds. Override the most common offenders so
   dark mode doesn't render an unreadable white-on-white surface.
   ───────────────────────────────────────────────────────────── */
[data-theme="dark"] .whitediv,
[data-theme="dark"] .white {
    background-color: var(--color-bg-card);
    color: var(--color-text);
}
[data-theme="dark"] .blacktext { color: var(--color-text); }
[data-theme="dark"] .graytext  { color: var(--color-text-muted); }
[data-theme="dark"] .card-subtle { background-color: #161616; }

/* ── 41. Print styles (so emailed-PDF style printouts look clean) ── */
@media print {
    .site-nav,
    .site-footer,
    .banner-offline,
    .tips-row,
    .tips-panel,
    .back-to-top,
    .qfit-fab { display: none !important; }
    .card, .card { box-shadow: none; border-color: #ccc; }
    a { color: #000; text-decoration: underline; }
}

/* ── Donate page ───────────────────────────────────────────────
   Payment-method row: handle on the left, donate CTA on the right.
   Above it: a suggested-amount picker that rewrites the CTA href
   on the fly (see Donate.aspx <script>).
   ───────────────────────────────────────────────────────────── */
.donate-method {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 1rem;
}
.donate-method-body { flex: 1 1 220px; min-width: 0; word-break: break-word; }
.donate-method-handle {
    margin: 0.15rem 0 0;
    font-variant-numeric: tabular-nums;
    word-break: break-all;
}
.donate-method .button { flex: 0 0 auto; }
/* The suggested-amount picker (.donate-amount-*) and .donate-cta now live in
   Shared/styles_shared.css so all four sites render the same picker. The old
   local version set the pill background from var(--color-surface-2,…) — a token
   that doesn't exist — so it fell back to a hard-coded near-white and was
   unreadable in dark mode. The shared version is theme-aware. */

/* ── Invite page ───────────────────────────────────────────────
   MOVED 2026-07-28 → Shared/styles_shared.css §43b (.invite-qr,
   .invite-link-row, .invite-label-row) when Invite.aspx was unified across all
   five sites. Do NOT re-add local copies: styles_shared.css loads LAST here, so
   anything defined at this specificity would be silently out-ranked by the
   shared rule and would only drift out of sync.
   ───────────────────────────────────────────────────────────── */

/* ── 42. Reduced-motion accessibility ──────────────────────────
   Honor prefers-reduced-motion so users with vestibular sensitivity
   don't see expand/collapse animations or smooth scroll.
   ───────────────────────────────────────────────────────────── */


/* ════════════════════════════════════════════════════════════════════════
   43. MIGRATED FROM styles_universal.css (May 2026 audit consolidation)
   ──────────────────────────────────────────────────────────────────────
   Classes that are still referenced from active markup but were previously
   only present in the legacy stylesheet. Now in the canonical sheet so
   styles_universal.css can be retired in a future pass.
   ════════════════════════════════════════════════════════════════════════ */

/* Page wrappers */
.page-shell { min-height: 100vh; }
.qfit-modern { background-color: var(--color-bg-card); }
.qfit-page { padding: 6px 4px; }
@media (min-width: 768px) { .qfit-page { padding: 10px 8px; } }

.card-subtle { background: rgba(0,0,0,0.03); }

/* Detail-page action bars */
.qfit-actionbar {
    margin: 0.75rem auto;
    max-width: 900px;
}
.qfit-actions {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.625rem;
    flex-wrap: wrap;
    padding: 0.5rem 0.625rem;
    border: 1px solid var(--color-border);
    background: var(--color-bg-card);
    border-radius: var(--border-radius-lg);
    box-shadow: var(--shadow-sm);
}


/* The legacy `.qfit-page .dash-wrap …` family — the Dashboard / ToDo cards
   layout (.dash-header .dash-sub .cards .card .card-head .card-title
   .card-range .two-col .metrics .metric .value .priority-label .todo-options
   .todo-ddl .todo-refresh .todo-empty .todo-list .todo-row .todo-left
   .todo-name .todo-meta .todo-progress .todo-chevron .pill* .error
   .todo-day-nav-group, three nested @media blocks, the whole of §48m, and the
   dash-wrap arms of §49i/§49j) — was DELETED 2026-08-05, 206 lines in all.
   Nothing in the live tree emits `dash-wrap`: its only two emitters are
   Unused/qFIT/Dashboard_OLD.aspx and Unused/qFIT/ToDo_OLD.aspx, both retired.
   Today's ToDo.aspx is the .todo2-* redesign (§53) and Dashboard.aspx has its
   own vocabulary; neither could ever match these rules.
   ⚠ `.dash` / `.dash .controls` (Charts page layout, just below) is a
   DIFFERENT class and is LIVE — don't confuse the two when sweeping. */

/* The .todo-page "different day" highlight rules (.todo-date / .todo-box /
   .todo-cell-box / .todo-row, all .todo-nondefault) were DELETED 2026-08-05.
   They styled the original ToDo page, whose markup emitted `todo-page` and whose
   script was Scripts/todo-page.js -- that page is now Unused/qFIT/ToDo_OLD.aspx
   and the script was deleted the same day. Nothing in the live tree emits
   `todo-page` as a class, so none of these could ever match. Today's ToDo.aspx
   is the .todo2-* redesign and carries its own day-highlight styling. */

/* Charts page layout */
.dash {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0.5rem 0.25rem;
}
.dash .controls {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    padding: 0.75rem;
}
.dash .control {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    min-width: 240px;
}
.dash .control label { font-weight: var(--font-weight-bold); }
.dash .summary-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 0.75rem;
    margin-top: 0.75rem;
}
.dash .summary-meta {
    padding: 0.5rem 0.75rem;
    font-size: var(--font-size-sm);
    opacity: 0.85;
}
.dash .summary-table {
    width: 100%;
    border-collapse: collapse;
}
.dash .summary-table th,
.dash .summary-table td {
    padding: 0.5rem 0.625rem;
    border-bottom: 1px solid var(--color-border);
}
.dash .summary-table th {
    font-weight: var(--font-weight-bold);
    text-align: left;
    background: rgba(0,0,0,0.03);
}

/* Search-input wrapper + clear button (legacy + canonical) */
.search-inputwrap {
    position: relative;
    width: 98%;
    max-width: 520px;
}
.search-inputwrap .textbox,
.search-inputwrap input[type="text"],
.search-inputwrap input[type="search"],
.search-inputwrap textarea {
    width: 100%;
    box-sizing: border-box;
    padding-right: 42px;
}
/* .search-clear removed — EditRoutines/BulkEdit clear buttons now use the shared
   .input-clear-btn component (styled in styles_shared.css); .search-inputwrap keeps
   its wrapper sizing. */
.qe-search { max-width: 98%; }

/* Larger checkboxes / radio lists */
.bigcheckbox input[type="checkbox"] {
    width: 22px;
    height: 22px;
    vertical-align: middle;
}
.bigcheckbox label {
    margin-left: 0.375rem;
    vertical-align: middle;
}
.rbl input[type="radio"] {
    transform: scale(1.2);
    margin-right: 0.375rem;
}
.rbl label { margin-right: 0.875rem; }

/* Cookie/Test helper */
.ct-wrap { max-width: 900px; margin: 0 auto; padding: 0.625rem; }
.ct-card {
    border: 1px solid var(--color-border);
    background: var(--color-bg-card);
    border-radius: var(--border-radius-lg);
    padding: 0.875rem;
    margin: 0.625rem 0;
    box-shadow: var(--shadow-sm);
}
.ct-title { font-size: var(--font-size-xl); font-weight: var(--font-weight-bold); margin-bottom: 0.5rem; }
.ct-small { font-size: var(--font-size-sm); opacity: 0.85; }
.ct-mono {
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono","Courier New", monospace;
    white-space: pre-wrap;
}
.ct-btn { margin-right: 0.5rem; }

/* Utility classes (margins/widths/spacing) used in cross-cutting markup */
.u-bg-white-50 { background-color: rgba(255,255,255,0.5); }
.u-h-25 { height: 25px; }
.u-h-32 { height: 32px; }
.u-ml-80 { margin-left: 80px; }
.u-mx-auto { margin-left: auto; margin-right: auto; }
.u-p-1 { padding: 1px; }
.u-pos-rel-top-6 { position: relative; top: 6px; }
.u-text-left { text-align: left; }
.u-text-left-h-18 { text-align: left; height: 18px; }
.u-text-left-va-top { text-align: left; vertical-align: top; }
.u-w-97 { width: 97%; }
.u-w-99 { width: 99%; }
.u-w-100 { width: 100%; }
.u-w-150 { width: 150px; }
.u-mt-8 { margin-top: 8px; }
.u-spacer-32-1 { width: 32px; height: 1px; }
.u-spacer-32-10 { width: 32px; height: 10px; }

/* Recreated inline-style classes (extracted from old markup at audit time) */
.inl-79a56a10, .inl-a9efa544 {
    text-align: right;
    white-space: nowrap;
    width: 70px;
}
.inl-93e2d771 { padding: 0; }
.inl-7006b2a9 {
    white-space: nowrap;
    vertical-align: top;
    padding-right: 12px;
}
.inl-61e1dd05 {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    padding: 8px 0;
}
.inl-9374e842 {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    margin-top: 10px;
}
.inl-b305c5e0 { font-weight: bold; text-decoration: underline; }
.inl-fd386784 { width: 98%; max-width: 360px; }
/* HeartRateZones — zone color bands (semantic; replaced the auto-extracted
   inl-XXXX hash classes). Each zone row = description band | thin spacer
   (same gradient) | white value box. */
.hrz-value {
    background: var(--color-bg-card);
    border: 1px solid var(--color-border);
    text-align: center;
    white-space: nowrap;
    min-width: 120px;
}
.hrz-spacer { width: 10px; }
.hrz-head { background: linear-gradient(90deg, #404040, #808080 100%); }
.hrz-z5 { background: linear-gradient(90deg, #800000, #ff0000 100%); }
.hrz-z4 { background: linear-gradient(90deg, #8b4000, #ffa500 100%); }
.hrz-z3 { background: linear-gradient(90deg, #AAAA00, #dddd00 100%); }
.hrz-z2 { background: linear-gradient(90deg, #008000, #00cc00 100%); }
.hrz-z1 { background: linear-gradient(90deg, #000080, #0000ff 100%); }
/* The narrow spacer column matches the value column (card bg), not the colored
   band. `td.hrz-spacer` (specificity 0,1,1) overrides the .hrz-zN gradient
   (0,1,0) the cell also carries. Theme-safe via the same var as .hrz-value. */
.hrz-table td.hrz-spacer { background: var(--color-bg-card); }

/* Legacy button color helper kept for older walkthrough markup */
.button.blue1, .blue1.button {
    background-color: #00B0F0;
    border-color: #00B0F0;
    color: #fff;
}

/* Legacy color-text helpers — kept because HeartRateZones and detail pages
   still rely on them. New code should use --color-text / --color-text-muted
   or a semantic class like .label / .heading. */
.whitetext { color: #ffffff; }
.blacktext { color: #000000; }
/* .graytext is defined canonically near the top of this file (search ".graytext")
   as var(--color-text-muted) so it tracks the theme in both light and dark mode.
   The former hardcoded #808080 here was a divergent duplicate that shadowed the
   themed value in light mode only — removed 2026-06-21. */
.blue1text { color: #00B0F0; }
[data-theme="dark"] .blacktext { color: var(--color-text); }

/* Charts.aspx chart-container wrapper */
.chart-container {
    width: 100%;
    max-width: 100%;
    height: auto;
    overflow-x: auto;
}

/* Legacy fileupload styling — used by ContactUs.aspx for the multi-file picker */
.fileupload {
    height: 40px;
    font-size: var(--font-size-base);
    color: var(--color-text);
    display: inline-block;
    padding: 0.1875rem;
    border-radius: var(--btn-radius);
    box-sizing: border-box;
    text-decoration: none;
    font-weight: var(--font-weight-bold);
    -webkit-appearance: none;
    appearance: none;
}

/* ════════════════════════════════════════════════════════════════════════
   44. POLISH PASS — additive refinements
   ──────────────────────────────────────────────────────────────────────
   Added in the formatting/UI polish pass. Tightens spacing rhythm, gives
   inputs/cards subtle elevation, and adds utility classes that make the
   br/br-heavy legacy markup look less cramped without touching that markup.
   ════════════════════════════════════════════════════════════════════════ */

/* Card: subtle elevation on hover for clickable cards; smooth transitions. */
.card.is-hoverable:hover,
a.card:hover {
    box-shadow: var(--shadow-md);
    border-color: var(--color-border-focus);
    text-decoration: none;
}

/* Custom select chevron — gives every select.textbox a consistent
   browser-independent dropdown arrow without disabling native rendering. */
select.textbox:disabled { cursor: not-allowed; }

/* Vertical-rhythm helper. Old markup has lots of standalone <br /> tags
   that occasionally land where a div boundary would be cleaner. .stack
   adds consistent vertical gaps between direct children without needing
   to touch the surrounding markup. */
.stack > * + * { margin-top: 0.75rem; }
.stack-sm > * + * { margin-top: 0.375rem; }
.stack-lg > * + * { margin-top: 1.25rem; }

/* Cluster: horizontal flow of buttons / links with consistent spacing. */
.cluster {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
}

/* Tighter label/control spacing inside legacy forms.
   When a label is immediately followed by an input/textarea/select/button,
   collapse the inter-element <br /> to a small visible gap. */
.card .label + br + .textbox,
.card .label + br + select.textbox,
.card .label + br + textarea.textbox,
.card .label + br + .textbox,
.card .label + br + select.textbox,
.card .label + br + textarea.textbox {
    margin-top: 0.125rem;
}

/* Cap textbox max-width on desktop so 100%-width inputs in long edit forms
   don't span an absurd line length. Mobile stays 100% width. */
@media (min-width: 768px) {
    .card .textbox:not(.textbox-full),
    .card textarea.textbox:not(.textbox-full),
    .card select.textbox:not(.textbox-full) {
        max-width: 640px;
    }
}

/* Inputs: smoother focus glow that respects dark mode. */
[data-theme="dark"] .textbox:focus,
[data-theme="dark"] select.textbox:focus,
[data-theme="dark"] textarea.textbox:focus {
    box-shadow: 0 0 0 3px rgba(33,150,243,0.30);
}

/* Buttons: gentler press feedback and clearer hover. */
/* Save-button gets a slightly brighter focus ring (lime-green theme) so it
   stands out visually as the primary action. */
.button.save:focus { outline-color: var(--color-save-btn); }

/* Form-actions: pad the top so it visually separates from the form body. */
[data-theme="dark"] .card .form-actions {
    border-top-color: rgba(255,255,255,0.05);
    margin-top: 0.75rem;
}


/* Page header: align tips-trigger button vertically with the page title. */
.page-header .tips-trigger {
    margin-top: 0.25rem;
}

/* Tighter heading rhythm inside cards — multiple consecutive p.heading
   blocks were spaced too widely. */
.card .heading + p,
.card .largeheading + p,
.card .heading + p {
    margin-top: 0.125rem;
}

/* Small visual treat: subtly tint hyperlinks-as-text-buttons on hover so
   they feel pressable. */
.link-button,
a.link-button {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    color: var(--color-link);
    font-weight: var(--font-weight-medium);
    text-decoration: none;
    padding: 0.25rem 0.5rem;
    border-radius: var(--border-radius-sm);
    transition: background-color var(--transition-fast), color var(--transition-fast);
}
.link-button:hover {
    background-color: var(--color-primary-light);
    color: var(--color-link-hover);
    text-decoration: none;
}

/* Subtle separator between sections inside a card */
.card hr.section-sep,
.card hr.section-sep {
    border: none;
    border-top: 1px dashed var(--color-border);
    margin: 1rem 0;
}

/* Mobile: edge-to-edge cards (saves horizontal space on tiny screens) */


/* Skip-to-content: canonical rule lives in §13 (line ~783). A regression copy
   that used `left: -9999px` was previously here — removed so the slide-down
   animation from the canonical rule isn't clobbered by the cascade. */

/* Animation utility: fade-in pages so initial paint isn't jarring after a
   navigation. Honours prefers-reduced-motion via the @media block in §42. */
@keyframes qfit-fade-in {
}

/* Tight-spacing flag for compact admin tables / dense pages */
.compact .form-group { margin-bottom: 0.5rem; }
.compact .card { padding: 0.625rem; margin-bottom: 0.75rem; }

/* Anchor styling: ensure links inside cards always have visible underlines
   on hover for affordance, even when surrounded by text. */
.card a:not(.button):not(.link-button):hover { text-decoration: underline; }


/* Polish: subtle accent on inputs when value differs from default
   (data-dirty="true" can be set by JS for the optional filter-changed indicator) */
.textbox[data-dirty="true"],
select.textbox[data-dirty="true"],
.textarea[data-dirty="true"],
.dropdown[data-dirty="true"] {
    border-color: var(--color-warning);
    background-color: rgba(229,81,0,0.04);
}

/* Polish: kbd-style code for keyboard shortcuts in tips/help */
kbd {
    display: inline-block;
    padding: 0.1rem 0.4rem;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: 0.8125rem;
    color: var(--color-text);
    background-color: var(--color-bg);
    border: 1px solid var(--color-border);
    border-bottom-width: 2px;
    border-radius: var(--border-radius-sm);
    line-height: 1;
    vertical-align: baseline;
}

/* Polish: improve `<code>` inline rendering inside content cards */
.card code,
.card code {
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: 0.875em;
    background-color: var(--color-bg);
    border: 1px solid var(--color-border);
    border-radius: var(--border-radius-sm);
    padding: 0.05rem 0.35rem;
    color: var(--color-text);
}

/* Polish: visual separator between the form body and the form-actions row
   inside cards (was just whitespace before). */
.card > .form-actions:last-child,
.main-card > .form-actions:last-child {
    margin-top: 1rem;
    padding-top: 0.75rem;
    border-top: 1px solid var(--color-border);
}

/* ============================================================
   45. Contact-Us Status / Viewer / Changes page styles
   ============================================================
   Used by ContactUsStatus.aspx (and read-shared by Changes.aspx).
   The class names mirror PacklistPRO so the page logic ports
   verbatim, but the actual styling here is sourced from qFIT's
   CSS variables so it adapts to light + dark mode automatically. */

/* Status badges (Open/Resolved/Queued/etc.) — small pills.
   Colors are intentionally constant across themes so the same
   badge means the same thing regardless of theme. */

/* Submissions table: same as .data-table but adds row-click highlight. */
.cuv-table { /* base styling inherited from .data-table */ }

/* ContactUsViewer bulk-action bar — shown only when one or more row
   checkboxes are ticked. Lives just inside the results card, above the
   summary line. The narrow first column holds the per-row checkbox. */
.cuv-col-select { width: 2.25rem; }
.cuv-col-select input[type="checkbox"] { margin: 0; vertical-align: middle; cursor: pointer; }
.cuv-bulk-bar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem 1rem;
    padding: 0.5rem 0.75rem;
    margin-bottom: 0.5rem;
    border: 1px solid var(--color-border);
    border-left: 3px solid var(--color-accent);
    background-color: var(--color-primary-light);
    border-radius: 4px;
}
.cuv-bulk-bar[hidden] { display: none !important; }
.cuv-bulk-bar-info {
    font-size: 0.95rem;
    color: var(--color-text);
    white-space: nowrap;
}
.cuv-bulk-bar-info strong { font-size: 1.05rem; margin-right: 0.2rem; }
.cuv-bulk-bar-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.4rem 0.6rem;
    flex: 1 1 auto;
}
.cuv-bulk-bar-actions .cuv-bulk-inline {
    margin: 0;
    white-space: nowrap;
}

.cuv-row { cursor: pointer; }
.cuv-row:hover td { background-color: var(--color-primary-light); }
.cuv-row:focus-visible {
    outline: 2px solid var(--color-accent);
    outline-offset: -2px;
}
.cuv-row:focus-visible td { background-color: var(--color-primary-light); }
.cuv-row.cuv-selected td {
    background-color: var(--color-primary-light);
    box-shadow: inset 3px 0 0 var(--color-accent);
}

/* Detail panel — info chips at top, sectioned content below. */
.cuv-info-item strong { color: var(--color-text); margin-right: 0.25rem; }

.cus-detail-close {
    background: none;
    border: none;
    cursor: pointer;
    font-size: 1.25rem;
    color: var(--color-text-muted);
    line-height: 1;
}
.cus-detail-close:hover { color: var(--color-text); }
.cus-reply-date {
    margin-bottom: 0.5rem;
    font-style: italic;
}

/* Pager row used by Changes.aspx and ContactUsStatus.aspx. */
.log-pager,
.log-pager .button,
.changes-pager-row .button {
    flex: 0 0 auto;
}

/* GridView pager (Charts.aspx summary tables). Rendered by ASP.NET as a
   single <tr> with one <td> wrapping <a> page numbers and inactive <span>
   for the current page. Style consistently with the rest of the site;
   wraps on narrow viewports so it stays usable on mobile. */
.gv-pager td {
    padding: 0.75rem 0.5rem;
    border-top: 1px solid var(--color-border, #d0d0d0);
}
.gv-pager td > table {
    margin: 0 auto;
}
.gv-pager a,
.gv-pager span {
    display: inline-block;
    min-width: 2rem;
    padding: 0.25rem 0.55rem;
    margin: 0 0.15rem 0.25rem 0.15rem;
    border: 1px solid var(--color-border, #d0d0d0);
    border-radius: 4px;
    text-align: center;
    font-size: 0.9rem;
    line-height: 1.2;
    text-decoration: none;
}
.gv-pager a {
    color: var(--color-link, #3366cc);
    /* Use --color-bg-card (theme-aware) not the undefined --color-surface, whose
       #fff fallback gave the pager links a white background in dark mode. */
    background: var(--color-bg-card, #fff);
}
.gv-pager a:hover,
.gv-pager a:focus {
    background: var(--color-primary-light, #eef);
    text-decoration: none;
}
.gv-pager span {
    color: var(--color-text, #222);
    background: var(--color-primary-light, #eef);
    font-weight: 600;
    cursor: default;
}

/* Changes.aspx — client-side filter row above the changelog.
   (.visually-hidden ships with Bootstrap utilities already.) */
.changes-filter-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
    margin: 0 0 1rem 0;
}
.changes-filter-row #changesFilter {
    flex: 1 1 18rem;
    min-width: 0;
}

/* Changes.aspx — app + feedback-type section headings. */

/* Utility: hidden via Bootstrap-style display-none class used by the
   detail-card show/hide JS. */

/* Utility: column-width hint for date columns in admin tables. */

/* Utility: nowrap for short cells (date stamps, etc.). */

/* Utility: tighter table-responsive wrapper for overflow-x scroll on
   narrow viewports. */

/* ============================================================
   46. Dark-mode top-up for legacy + page-inline patterns
   ============================================================
   The page-inline styles in Checklist.aspx, ul.aspx, etc. are
   already overridden in their respective files. This block
   covers patterns scattered across styles_universal.css that
   the existing dark-mode section (around line 1700) doesn't
   already cover. */

[data-theme="dark"] .badge.badge-danger,
[data-theme="dark"] .badge-danger {
    background-color: var(--color-danger);
    color: #fff;
}
/* Generic <code> highlight reads cleanly in both themes. */
code {
    background-color: rgba(0,0,0,0.06);
    padding: 0.1em 0.35em;
    border-radius: 3px;
    font-family: Consolas, "SF Mono", Monaco, "Cascadia Code", monospace;
    font-size: 0.92em;
}
[data-theme="dark"] code {
    background-color: rgba(255,255,255,0.10);
}
/* Bootstrap <kbd> rendered on Troubleshooting.aspx (was Help.aspx until
   2026-08-05) — make sure it doesn't stay
   black-on-white in dark mode. */
[data-theme="dark"] kbd {
    background-color: var(--color-bg-input);
    color: var(--color-text);
    border: 1px solid var(--color-border);
}
/* Cards rendered via .stub-card (placeholder pages) inherit .card's
   variable-driven background, but a few legacy "coming soon" pages
   use Bootstrap's well/alert-info backgrounds that aren't themed. */
[data-theme="dark"] .stub-card {
    background-color: var(--color-bg-card);
    color: var(--color-text);
}

/* ============================================================
   47. VISUAL CONSISTENCY PASS — spacing, alignment, typography
   ============================================================
   Targeted CSS-only fixes for legacy markup patterns (label → <br> →
   input → <br>) so Edit pages, BulkEdit, and other older forms get
   consistent vertical rhythm, color-picker alignment, and card
   section spacing without touching .aspx markup.
   ============================================================ */

/* ── 47a. Form-field rhythm for label → br → input patterns ──────
   Edit pages (EditCategory, EditTarget, EditMethod) and BulkEdit
   use <label class="input-label"> followed by <br /> then an input.
   This selector chain creates proper form-group-style spacing so
   the <br /> acts as a small gap instead of a jarring line break. */
.input-label + br { line-height: 0.25; }
.input-label + br + .textbox,
.input-label + br + select.textbox,
.input-label + br + textarea.textbox {
    margin-top: 0.25rem;
    margin-bottom: 0.75rem;
}

/* When a textbox/dropdown is followed by <br /> then another label,
   add consistent spacing between form field groups. */
.textbox + br + .input-label,
select.textbox + br + .input-label,
.textarea + br + .input-label,
.dropdown + br + .input-label {
    margin-top: 0.5rem;
    display: inline-block;
}

/* ── 47b. Checkbox + label rows (BulkEdit "Show:" section) ────────
   Pattern: <checkbox> <label class="input-label"> <br />
   Give each row consistent min-height and vertical alignment. */
.checkbox + .input-label {
    vertical-align: middle;
    line-height: 1.4;
}
input[type="checkbox"] + br {
    line-height: 0.5;
}

/* ── 47c. Color picker grid ──────────────────────────────────────
   EditCategory/EditTarget/EditMethod color swatch buttons have
   Width="20px" set inline by ASP.NET. These rules make them flow
   in a tight grid with consistent sizing and touch targets. */
.card input[type="submit"].button[style*="width:20px"],
.card input[type="submit"].button[style*="width: 20px"],
input[type="submit"].button[style*="width:20px"],
input[type="submit"].button[style*="width: 20px"] {
    width: 28px !important;
    height: 28px;
    min-width: 28px;
    min-height: 28px;
    padding: 0;
    margin: 2px 1px;
    border: 2px solid transparent;
    border-radius: 4px;
    cursor: pointer;
    vertical-align: middle;
    transition: border-color 0.15s, transform 0.1s;
}
input[type="submit"].button[style*="width:20px"]:hover,
input[type="submit"].button[style*="width: 20px"]:hover {
    border-color: var(--color-text);
    transform: scale(1.15);
    z-index: 1;
    position: relative;
}
input[type="submit"].button[style*="width:20px"]:focus-visible,
input[type="submit"].button[style*="width: 20px"]:focus-visible {
    outline: 2px solid var(--color-border-focus);
    outline-offset: 1px;
}
@media (max-width: 480px) {
    input[type="submit"].button[style*="width:20px"],
    input[type="submit"].button[style*="width: 20px"] {
        width: 32px !important;
        height: 32px;
        min-width: 32px;
        min-height: 32px;
        margin: 2px;
    }
}

/* Full-width color preview button (the "currently selected" swatch) */
input[type="submit"].button[style*="width:97%"],
input[type="submit"].button[style*="width: 97%"] {
    height: 36px;
    border-radius: var(--border-radius-sm);
    margin: 0.25rem 0 0.5rem;
    border: 2px solid var(--color-border);
}

/* ── 47d. card form section spacing ─────────────────────────
   Inside card and card-subtle, add vertical rhythm
   between consecutive form fields that use <br /> separation. */
.card > br:first-child,
.card-subtle > br:first-child {
    display: none;
}
.card .input-label {
    margin-top: 0.625rem;
    display: inline-block;
}
.card .input-label:first-child,
.card .heading + .input-label,
.card .form-grid + .input-label,
.card-subtle .input-label:first-child {
    margin-top: 0;
}

/* ── 47e. panelAdditionalOptions rhythm ──────────────────────────
   The collapsed "Additional Options" panels use the same
   label → br → dropdown → br pattern. Give them card-like padding
   and consistent field gaps. */
.card-subtle .input-label + br + .textbox,
.card-subtle .input-label + br + select.textbox {
    margin-top: 0.25rem;
    margin-bottom: 0.625rem;
}

/* ── 47f. Heading inside cards — top spacing after first section ──
   When a .heading is not the first child inside a card, add a
   visual section break so multi-section cards read clearly. */
.card .heading:not(:first-child),
.main-card .heading:not(:first-child),
.card .heading:not(:first-child) {
    margin-top: 1.25rem;
    padding-top: 0.75rem;
    border-top: 1px solid var(--color-border);
}

/* ── 47g. Action bar bottom spacing ──────────────────────────────
   The .qfit-actionbar at the bottom of Edit pages needs a bit more
   visual breathing room above and below. */
.qfit-actionbar {
    margin-top: 1.25rem;
    margin-bottom: 0.5rem;
}
.qfit-actions {
    padding: 0.625rem 0.875rem;
}

/* ── 47h. Inline-tip links beside labels — consistent alignment ──
   "(proper case)", "(tips)", "hmm?" links that sit next to labels.
   Base .inline-tip is in shared; this scopes alignment to the
   Edit-page label context only. */
.input-label + .inline-tip,
.input-label + * + .inline-tip {
    font-size: var(--font-size-sm);
    vertical-align: baseline;
}

/* ── 47i. Form-group improvements ─────────────────────────────────
   Pages using the modern .form-group pattern (User, Preferences,
   ContactUs) get a small rhythm tune-up so label→input spacing is
   identical everywhere. */
.form-group .input-label {
    margin-bottom: 0.25rem;
    display: block;
}
.form-group .note {
    margin-top: 0.25rem;
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
}

/* ── 47j. Card-title section spacing ──────────────────────────────
   When multiple .card-title elements appear in a single card
   (e.g. Preferences "Display" then "Site behavior"), add a visible
   section break between them. .heading is the older alias for the
   same concept (About.aspx, EditCategory.aspx, Dashboard.aspx all
   use <h2 class="heading">); apply the same section-break rule to
   .heading children so legacy and modern pages have identical
   visual rhythm. Base font/size/weight of .heading is intentionally
   left to the browser default + shared sheet so this change is
   purely additive. */
.card-title:not(:first-child),
.main-card .heading:not(:first-child),
.card .heading:not(:first-child) {
    margin-top: 1.5rem;
    padding-top: 1rem;
    border-top: 1px solid var(--color-border);
}

/* ── 47k. back-btn alignment ──────────────────────────────────────
   Ensure the ← Back link in page-header aligns to baseline with
   the page title across all pages. */

/* ── 47l. Tip card spacing refinement ─────────────────────────────
   Ensure tip cards have consistent bottom margin when visible
   so they don't crowd the content below. Scoped to page-wrapper
   so it doesn't conflict with the shared stylesheet's base .tip-card. */
.page-wrapper > .tip-card,
.page-wrapper > [data-dirty-watch] + .tip-card {
    margin-bottom: 1rem;
}

/* ── 47m. LinkButton toggle links ─────────────────────────────────
   "Show Additional Options" / "Hide Additional Options" and similar
   toggle links — give them some breathing room and make them look
   like inline action buttons. */
a.link[id*="link"] + br + .card,
a.link + br + .card {
    margin-top: 0.5rem;
}

/* ── 47n. Responsive form-actions alignment ───────────────────────
   Ensure form-actions with multiple buttons wrap cleanly on mobile
   and have consistent gap between buttons. */

/* ── 47o. Alert panel spacing ─────────────────────────────────────
   The pnlMessage alert panels appear above content when visible.
   Scoped to page-wrapper so it doesn't conflict with shared's base.
   The previous rule only matched a fragile inline-style edge case;
   broaden so every visible alert-panel under the page wrapper gets
   consistent breathing room from whatever it sits next to. */
.page-wrapper > .alert-panel,
.page-wrapper .main-card > .alert-panel:first-child {
    margin-bottom: 1rem;
}
.page-wrapper > .alert-panel:not(:first-child) {
    margin-top: 1rem;
}

/* ── 47p. Data table alignment in BulkEdit ────────────────────────
   BulkEdit's main data table mixes checkboxes, dropdowns, and text
   in tight columns. Ensure vertical alignment stays consistent. */
.data-table td input[type="checkbox"] {
    vertical-align: middle;
}
.data-table td select.textbox {
    margin: 0;
    height: auto;
    min-height: 34px;
    padding: 0.25rem 1.75rem 0.25rem 0.375rem;
    font-size: var(--font-size-sm);
}

/* ── 47q. Consistent hr styling ───────────────────────────────────
   Preferences and other pages use <hr class="hr" /> as a section
   divider inside cards. Normalize its appearance. */
hr.hr,
.card > hr,
.main-card > hr,
.card > hr {
    border: none;
    border-top: 1px solid var(--color-border);
    margin: 1rem 0;
}

/* ── 47r. Width attribute overrides ───────────────────────────────
   ASP.NET controls with Width="98%" or Width="100%" render as
   inline style. Ensure they respect max-width on desktop. */
@media (min-width: 768px) {
    .card input[type="text"][style*="width:98%"],
    .card input[type="text"][style*="width: 98%"],
    .card select[style*="width:98%"],
    .card select[style*="width: 98%"],
    input[type="text"].textbox[style*="width:98%"],
    select.textbox[style*="width:98%"] {
        max-width: 640px;
    }
}

/* ── 47s. Link toggle spacing ─────────────────────────────────────
   Toggle links like "Show Additional Options" need vertical space
   so they don't touch the element above/below. */
a.link[id*="linkShow"],
a.link[id*="linkHide"] {
    display: inline-block;
    margin: 0.5rem 0;
}

/* ============================================================
   48. MOBILE RESPONSIVENESS
   ============================================================
   Targeted fixes for tables, forms, fixed-width controls, and
   page-specific layouts that overflow or render poorly on narrow
   screens (≤ 480px phones, ≤ 768px tablets).
   ============================================================ */

/* ── 48a. Table-responsive wrapper ────────────────────────────────
   Wrap any table that might overflow in <div class="table-responsive">
   to get horizontal scroll on narrow viewports. Also auto-applied
   to summary tables and data tables below their natural width. */

/* ── 48b. Data tables: horizontal scroll on narrow screens ─────── */
@media (max-width: 600px) {
    .data-table,
    .summary-table,
    .configure-templates-table {
        display: block;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }
    .data-table th,
    .data-table td,
    .summary-table th,
    .summary-table td {
        white-space: nowrap;
    }
}

/* ── 48c. HeartRateZones — zone table responsive ──────────────────
   The zone table has 3 columns: color band (description) | spacer |
   HR value. On mobile, hide the spacer column, let the color band
   fill width, and stack the HR value below. */
@media (max-width: 600px) {
    .hrz-table {
        display: block;
    }
    .hrz-table tr {
        display: flex;
        flex-wrap: wrap;
        margin-bottom: 0.5rem;
    }
    /* Color-band description column (now a <th scope="row">): full width */
    .hrz-table .hrz-head:not(.hrz-spacer),
    .hrz-table .hrz-z5:not(.hrz-spacer),
    .hrz-table .hrz-z4:not(.hrz-spacer),
    .hrz-table .hrz-z3:not(.hrz-spacer),
    .hrz-table .hrz-z2:not(.hrz-spacer),
    .hrz-table .hrz-z1:not(.hrz-spacer) {
        flex: 1 1 100%;
        padding: 0.5rem 0.75rem;
        border-radius: var(--border-radius-sm) var(--border-radius-sm) 0 0;
    }
    /* Spacer columns: hide */
    .hrz-table td.hrz-spacer {
        display: none;
    }
    /* HR value column: full width below the color band */
    .hrz-table td.hrz-value {
        flex: 1 1 100%;
        min-width: 0;
        text-align: left;
        padding: 0.375rem 0.75rem;
        border-radius: 0 0 var(--border-radius-sm) var(--border-radius-sm);
        font-weight: var(--font-weight-bold);
    }
}

/* ── 48e. ASP.NET fixed-width controls — cap on mobile ────────────
   Server controls with Width="350px" (HeartRateZones dropdowns,
   etc.) render as inline style="width:350px". Override on mobile
   so they don't overflow the viewport. */
@media (max-width: 480px) {
    select[style*="width:350px"],
    select[style*="width: 350px"],
    input[style*="width:350px"],
    input[style*="width: 350px"],
    select[style*="width:300px"],
    select[style*="width: 300px"] {
        width: 100% !important;
        max-width: 100% !important;
    }
}

/* ── 48h. Charts — summary grid & tables: mobile-friendly layout ─ */
@media (max-width: 600px) {
    .dash .summary-grid {
        grid-template-columns: 1fr;
    }
    .dash .summary-table {
        display: table;
        overflow-x: visible;
    }
    .dash .summary-table th,
    .dash .summary-table td {
        white-space: normal;
        word-break: break-word;
    }
    .dash .summary-table th:first-child,
    .dash .summary-table td:first-child {
        width: auto;
    }
    .dash .summary-table th:nth-child(2),
    .dash .summary-table td:nth-child(2),
    .dash .summary-table th:nth-child(3),
    .dash .summary-table td:nth-child(3) {
        width: 70px;
        min-width: 60px;
        text-align: right;
    }
    .dash .control {
        min-width: 0;
        flex: 1 1 100%;
    }
    .dash .controls {
        gap: 0.5rem;
    }
    .chart-container img {
        max-width: 100%;
        height: auto;
    }
}

/* ── 48i. Buttons — prevent overflow on mobile ────────────────────
   Buttons with fixed widths or long text can overflow on phones.
   Cap width and allow text wrapping for wide buttons. */
@media (max-width: 480px) {
    /* "Apply Selected Templates" button has Width="98%" which is fine,
       but ensure long text doesn't create horizontal scroll. */
    input[type="submit"].button[style*="width:98%"],
    input[type="submit"].button[style*="width: 98%"] {
        width: 100% !important;
        white-space: normal;
        word-wrap: break-word;
    }
    .u-w-150 {
        width: auto;
        min-width: 120px;
    }
}

/* ── 48j. Form-actions — stack vertically on small phones ─────────
   When multiple buttons sit side-by-side, stack them on very narrow
   screens so they don't overflow or get clipped. */
@media (max-width: 380px) {
    .form-actions .button {
        width: 100%;
        text-align: center;
    }
}

/* ── 48k. Page header — wrap gracefully on narrow screens ─────────
   The page-header has back-btn + title + tips trigger. On very
   narrow screens, the title can get squeezed between them; allow
   the row to wrap so the title can drop to its own line. */
@media (max-width: 380px) {
    .page-header {
        flex-wrap: wrap;
        row-gap: 0.25rem;
    }
    .page-header > .page-title,
    .page-header > .page-title-flush {
        font-size: var(--font-size-xl);
        line-height: 1.2;
    }
}

/* ── 48l. Checklist search — tighter min-widths on mobile ─────────
   The checklist search pack and options have min-widths that can
   overflow on phones under 360px wide. */
@media (max-width: 400px) {
    .chk-search-pack {
        min-width: 0 !important;
        flex: 1 1 100%;
    }
    .chk-searchbox {
        min-width: 0 !important;
    }
}

/* ── 48n. Nav title — hide on very narrow screens ─────────────────
   The centered page title in the nav bar can get squeezed and
   create an odd layout on phones under 360px. */
@media (max-width: 360px) {
    .nav-title {
        display: none;
    }
}

/* ── 48o. Auth pages — tighter padding on small phones ────────────
   Login and Join pages have generous padding that wastes space on
   small screens. */
@media (max-width: 380px) {
    .auth-card {
        padding: 1rem;
    }
}

/* ── 48p. Action bar — full width on mobile ───────────────────────
   The floating action bar at the bottom of Edit pages has
   max-width: 900px which is fine for desktop, but on mobile it
   needs full-width buttons. */
@media (max-width: 600px) {
    .qfit-actionbar {
        margin-left: -0.25rem;
        margin-right: -0.25rem;
    }
    .qfit-actions {
        border-radius: var(--border-radius-sm);
    }
    .qfit-actions .button {
        flex: 1 1 auto;
        text-align: center;
        min-width: 0;
    }
}

/* ── 48q. Invite / Donate — tighter on narrow screens ─────────── */
@media (max-width: 480px) {
    .donate-method {
        gap: 0.5rem;
    }
    .donate-method-body {
        flex: 1 1 100%;
    }
    /* .invite-link-row .textbox moved to Shared/styles_shared.css §43b. */
}

/* ── 48r. HeartRateZones — largeheading size on mobile ────────────
   .largeheading is too big inside the color-band zones on phones. */
@media (max-width: 480px) {
    .hrz-table .largeheading {
        font-size: var(--font-size-lg);
    }
}

/* ============================================================
   49. MOBILE RESPONSIVENESS — gap-filling pass
   ============================================================
   Additive complements to section 48. Targets remaining patterns
   that break or feel poor on phones: iOS auto-zoom on focused
   inputs, accidental viewport-wide overflow from any single oversize
   child, fixed-position controls colliding with iOS home indicator,
   under-sized tap targets, ul.aspx admin upload widget, generic
   GridView tables that don't carry a .data-table/.summary-table
   class but still render as a <table>, and modal sizing on tiny
   screens.
   ============================================================ */

/* ── 49a. Prevent iOS Safari auto-zoom on input focus ────────────
   iOS zooms the page when a focused text input renders smaller
   than 16px. Bumping to exactly 16px on phones keeps fields legible
   without retriggering the zoom-out gesture. Desktop / tablet
   unaffected; user-controlled font-size scale (html.font-large)
   still wins on larger viewports. */
@media (max-width: 768px) {
    input[type="text"],
    input[type="email"],
    input[type="password"],
    input[type="search"],
    input[type="tel"],
    input[type="url"],
    input[type="number"],
    input[type="date"],
    input[type="datetime-local"],
    input[type="time"],
    select,
    textarea,
    .textbox,
    select.textbox,
    textarea.textbox {
        font-size: 16px;
    }
}

/* ── 49b. Defensive viewport overflow clip ───────────────────────
   Any single legacy element (rogue inline width:9999px, an extra-
   wide GridView, a long unbreakable string) can introduce a
   horizontal scroll on the whole page. Clip at the body so a stray
   wide child never offers users a sideways scroll. `overflow-x: clip`
   doesn't create a scroll container the way `hidden` does, so it
   doesn't break position:sticky inside the page. */
html, body {
    overflow-x: clip;
}

/* ── 49c. Generic GridView fallback — horizontal scroll wrap ─────
   ASP.NET <asp:GridView> always renders as <table>. The named
   tables (.data-table / .summary-table / .configure-templates-table)
   are covered by §48b; this catches any future GridView whose
   developer forgot to add a CssClass — it still gets horizontal
   scroll instead of pushing the whole page wider than the viewport. */
@media (max-width: 600px) {
    .page-wrapper table:not(.hrz-table):not(.qfit-colors-table) {
        display: block;
        max-width: 100%;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }
}

/* ── 49d. Minimum tap targets on phones (WCAG 2.5.5) ─────────────
   Apple HIG and WCAG 2.5.5 recommend a 44×44 px minimum target.
   Base buttons are already comfortably sized; this floors the small
   variants (.button.tiny / .button-sm / .button.small) and bare
   icon links on phones so they stay reliably tappable. Scoped to
   ≤480px so desktop's denser admin grids aren't affected. */
@media (max-width: 480px) {
    .button.tiny,
    .button-sm,
    .button.small,
    .button.button-sm {
        min-height: 40px;
        min-width: 40px;
    }
    /* Tip / icon-only buttons that live in page headers and action
       rows — keep them visually compact but tappable. */
    .tip-icon-button,
    .input-clear-btn,
    .cus-detail-close {
        min-width: 40px;
        min-height: 40px;
    }
}

/* ── 49e. iOS safe-area insets for fixed-position controls ───────
   On notched phones (iPhone X+) and Android edge-to-edge displays,
   `position: fixed` elements need to add the safe-area inset so they
   don't sit under the home indicator / rounded corner. Honoured only
   when the platform reports a non-zero inset; older browsers ignore
   the variable. */
.qfit-fab {
    right: max(1rem, env(safe-area-inset-right, 0px));
    bottom: max(4rem, calc(env(safe-area-inset-bottom, 0px) + 4rem));
}

/* ── 49f. ul.aspx file-upload row — flex-shrink past 280px on phones
   The admin file uploader sets `.ul-file-input { min-width: 280px }`
   in its page-scoped <style>. On the very narrowest devices that
   forces horizontal scroll. Override at ≤480px so the input flows
   the full row width and wraps cleanly. */
@media (max-width: 480px) {
    .ul-file-input {
        min-width: 0 !important;
        flex: 1 1 100%;
    }
    .ul-row { gap: 8px; }
    .ul-file-item {
        flex-wrap: wrap;
        gap: 6px;
    }
}

/* ============================================================
   50. "HOW TO:" SEARCH-ENGINE LOGO LINKS (Target/MethodDetails)
   ============================================================
   Emitted from AddLink() in the Details code-behinds. Centered
   flex row; each logo sits on a white chip so dark marks (the
   black ChatGPT wordmark, Gemini's gradient) stay visible in
   dark mode. In light mode the chip blends into the card. */
.howto-links {
    /* Two-column matrix of equal-size logo tiles (TargetDetails / MethodDetails). */
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 12px;
    margin: 10px 0 16px;
}
.howto-links > a {
    display: flex;
    align-items: center;
    justify-content: center;
}
.howto-links .howto-logo {
    /* Fill the grid cell as a uniform tile; object-fit keeps the logo art
       undistorted within the fixed tile height. width:100% overrides the
       per-logo width attribute from markup so every tile matches. */
    width: 100%;
    height: 60px;
    object-fit: contain;
    background: #fff;
    border: 1px solid var(--color-border, #e0e0e0);
    border-radius: 10px;
    padding: 5px 8px;
    box-sizing: border-box;
}

/* ── Goals card + goal-status banner (TargetDetails / MethodDetails) ────────
   Shared by GoalHelpers.vb. Unmet goals + the top banner use magenta (#FF00FF,
   same cue the Checklist uses for "goal not met"); the softer "goal-alert-due"
   nudge (complete today / N more to go) uses the warning amber. */
.goals { display: flex; flex-direction: column; gap: 6px; }
.goal-fact {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 12px;
    padding: 4px 0;
    border-bottom: 1px solid var(--color-border);
}
.goal-fact:last-child { border-bottom: 0; }
.goal-fact-label { color: var(--color-text-muted); }
.goal-fact-value { font-weight: var(--font-weight-bold, 700); }

.goal-status {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    padding: 8px 12px;
    border-radius: 8px;
    margin-top: 6px;
    font-weight: var(--font-weight-medium, 600);
    background: color-mix(in srgb, var(--color-text) 6%, transparent);
}
.goal-status-label { font-weight: var(--font-weight-bold, 700); }
.goal-status.met .goal-status-value { color: var(--color-success, #1a7f37); }
.goal-status.unmet { background: #FF00FF; color: #fff; }

.goal-alert {
    display: block;
    background: #FF00FF;
    color: #fff;
    font-weight: var(--font-weight-bold, 700);
    text-align: center;
    padding: 9px 12px;
    border-radius: 8px;
    margin: 0 0 12px;
}
/* Softer "on track but act now" nudge — amber, not the magenta "missed" cue. */
.goal-alert-due {
    background: var(--color-warning, #b26a00);
    color: #fff;
}
/* ── Met-goal green cue (#00FF00) — TargetDetails / MethodDetails ──────────
   A goal that's MET renders green on its stat box, its pill, and its progress
   line; not-met stays the default neutral colour (never red/magenta). >=2
   classes so these beat the shared single-class .stat-tile / .pill bases. */
.stat-tile.metgreen { background: #00FF00; border-color: #00FF00; }
.stat-tile.metgreen .stat-tile-value,
.stat-tile.metgreen .stat-tile-label { color: #003300; }

.pill.goal-met { background: #00FF00; border-color: #00FF00; color: #003300; }

/* Goal-status lines (primary then secondary). Default = a card-surface bar so it
   reads as a solid dark panel in dark mode (and a bordered light panel in light
   mode); met = green #00FF00. */
.goal-line {
    display: block;
    padding: 8px 12px;
    border-radius: 8px;
    margin: 0 0 8px;
    font-weight: var(--font-weight-medium, 600);
    background: var(--color-bg-card);
    border: 1px solid var(--color-border);
    color: var(--color-text);
}
.goal-line.met { background: #00FF00; border-color: #00FF00; color: #003300; font-weight: var(--font-weight-bold, 700); }

/* Day stepper: bright-yellow box around the date when viewing a day other than
   today, so it's obvious you're not on the current day. */
.td2-pastday {
    display: inline-block;
    background: #FFFF00;
    color: #000;
    padding: 0.05em 0.45em;
    border-radius: 6px;
}

/* ── TargetDetails2.aspx — PacklistPRO-look target detail + daily tracking ──
   Page-scoped redesign classes. Everything structural reuses shared classes
   (.main-card / .card-title / .td-quicknav / .empty-state / .button /
   .form-group / .note / .heading / .cluster); only the bespoke context chips,
   day navigator, completion control, facts grid and history list live here.
   All colors are design tokens (+ color-mix on --color-bg) so dark mode is
   automatic. */

/* Anchor target offset so the sticky nav doesn't hide the History card. */
.td2-anchor { scroll-margin-top: calc(var(--nav-height, 56px) + 0.75rem); }

/* Context chips under the page title (category / priority / points / cadence). */
.td2-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    margin: 0 0 0.85rem;
}
.td2-chip {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    padding: 0.2rem 0.65rem;
    font-size: var(--font-size-xs, 0.75rem);
    font-weight: var(--font-weight-medium, 500);
    color: var(--color-text-muted, #6c757d);
    background: color-mix(in srgb, var(--color-bg) 60%, transparent);
    border: 1px solid var(--color-border, #e0e0e0);
    border-radius: 999px;
    white-space: nowrap;
}
.td2-chip-cat { color: var(--color-text); }
.td2-chip.is-high {
    color: var(--color-danger);
    background: var(--color-danger-bg);
    border-color: var(--color-danger-border);
}
.td2-chip.is-normal {
    color: var(--color-info);
    background: var(--color-info-bg);
    border-color: var(--color-info-border);
}
.td2-chip.is-low { color: var(--color-text-muted); }

/* Primary tracking card — day navigator. */
.td2-track .td2-daynav {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    margin-bottom: 1rem;
}
.td2-daynav-arrow {
    font-size: 1.4rem;
    line-height: 1;
    text-decoration: none;
    padding: 0.3rem 0.7rem;
    min-width: 44px;
    text-align: center;
    border: 1px solid var(--color-border, #e0e0e0);
    border-radius: var(--border-radius-sm, 6px);
    color: var(--color-text);
}
.td2-daynav-arrow:hover {
    background-color: var(--color-primary-light);
    border-color: var(--color-primary);
    color: var(--color-primary-dark);
    text-decoration: none;
}
.td2-daynav-label {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.1rem;
    text-align: center;
    flex: 1 1 auto;
}
.td2-daynav-date {
    font-size: var(--font-size-xl, 1.375rem);
    font-weight: var(--font-weight-bold, 600);
    color: var(--color-text);
}
.td2-daynav-today { font-size: var(--font-size-sm, 0.875rem); }

/* Completion summary strip (big count + the two primary action buttons). */
.td2-complete {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 0.75rem;
    padding: 0.8rem 1rem;
    margin-bottom: 0.85rem;
    background: color-mix(in srgb, var(--color-bg) 55%, transparent);
    border: 1px solid color-mix(in srgb, var(--color-border) 70%, transparent);
    border-radius: var(--border-radius-sm, 6px);
}
.td2-complete-count {
    display: flex;
    align-items: baseline;
    gap: 0.5rem;
}
.td2-complete-num {
    font-size: 1.7rem;
    font-weight: 700;
    line-height: 1;
    color: var(--color-primary);
    font-variant-numeric: tabular-nums;
    min-width: 1.4ch;
}
.td2-complete-num:empty::before {
    content: "0";
    color: var(--color-text-light, #9aa0a8);
}
.td2-complete-label {
    font-size: var(--font-size-sm, 0.875rem);
    color: var(--color-text-muted);
}
.td2-complete-actions {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
}

/* Completion tally checkboxes. */
.td2-checks { margin-bottom: 1.1rem; }
.td2-checks-hint { display: block; margin-bottom: 0.45rem; }

/* Amount input spans the full card width, matching the Notes textarea. */
.td2-daynote input[type="number"] { width: 100%; max-width: none; }

/* Read-only facts grid (Target Settings card). */
.td2-facts {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr));
    gap: 0.6rem 1rem;
    margin: 0.25rem 0 0;
}
.td2-fact {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
    padding: 0.55rem 0.75rem;
    background: color-mix(in srgb, var(--color-bg) 60%, transparent);
    border: 1px solid color-mix(in srgb, var(--color-border) 60%, transparent);
    border-radius: var(--border-radius-sm, 6px);
}
.td2-fact-label {
    font-size: var(--font-size-xs, 0.75rem);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    font-weight: var(--font-weight-medium, 500);
    color: var(--color-text-muted);
}
.td2-fact-value {
    font-size: 1.05rem;
    font-weight: 600;
    color: var(--color-text);
}

/* Completion history list. */
.td2-history-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.td2-history-list li {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.25rem 0.6rem;
    padding: 0.5rem 0;
    border-bottom: 1px solid color-mix(in srgb, var(--color-border) 60%, transparent);
}
.td2-history-list li:last-child { border-bottom: 0; }
.td2-history-date { font-weight: 600; }
.td2-history-times {
    color: var(--color-primary);
    font-weight: 600;
    font-size: var(--font-size-sm, 0.875rem);
    font-variant-numeric: tabular-nums;
}
.td2-history-note {
    color: var(--color-text-muted);
    font-size: var(--font-size-sm, 0.875rem);
}

/* Stack the completion strip on the smallest screens. */
@media (max-width: 480px) {
    .td2-complete { flex-direction: column; align-items: stretch; }
    .td2-complete-actions { justify-content: stretch; }
    .td2-complete-actions .button { flex: 1 1 auto; }
}

/* ── 49g. Modal box — fill narrow viewports ──────────────────────
   Modal dialogs (.modal-box) default to a centered card with
   intrinsic max-width. On tiny phones this can leave them visually
   stranded with thin side margins. Cap the gutter so they read
   edge-to-edge. */
@media (max-width: 480px) {
    .modal-box {
        width: calc(100vw - 1.5rem);
        max-width: calc(100vw - 1.5rem);
        margin: 0.75rem;
    }
    .modal-overlay {
        padding: 0;
    }
    .modal-footer {
        flex-wrap: wrap;
        gap: 0.5rem;
    }
    .modal-footer .button {
        flex: 1 1 auto;
    }
}

/* ── 49h. EditRoutines inline search override — restore mobile width
   EditRoutines.aspx ships the search wrapper with
   `style="display:inline-block; max-width: 250px"` which is sensible
   on desktop but cramped on phones where the field is the only thing
   in the row. Let it grow to full width when the viewport is narrow. */
@media (max-width: 480px) {
    .search-inputwrap[style*="max-width: 250px"],
    .search-inputwrap[style*="max-width:250px"] {
        max-width: 100% !important;
        display: block !important;
    }
}

/* ── 49i. Long unbreakable strings inside content cards ──────────
   User-entered names, URLs, and email addresses can lack word-break
   opportunities and force their parent card wider than the viewport.
   Scope to the readable text inside cards/lists so layout elements
   themselves aren't affected. */
.qfit-method-name,
.todo-name,
.cuv-info-item,
.cuv-info-item strong {
    overflow-wrap: anywhere;
    word-break: break-word;
}

/* ── 49j. Horizontal control rows — graceful wrap on phones ──────
   The charts rows that pack a dropdown + refresh button + extras into a
   flex row currently wrap, but their children can still bottom-align
   awkwardly. Force a full-width stretch on phones so wrapping looks
   intentional. (The parallel .qfit-page .dash-wrap .todo-options/.todo-refresh
   arms of this rule went with that dead family on 2026-08-05.) */
@media (max-width: 480px) {
    .dash .controls > .control {
        flex: 1 1 100%;
        min-width: 0;
    }
}

/* ============================================================
   50. TABLE / LIST-VIEW HELPERS  (qFIT-local, additive)
   ============================================================
   Small alignment + empty-state helpers that build on the shared
   .data-table / .summary-table / .empty-state vocabulary in
   styles_shared.css. Kept local so we don't touch the cross-site
   shared sheet until the same vocabulary is wanted in MeetUp /
   PacklistPRO too.
   ============================================================ */

/* Right-aligned numeric columns (Checkboxes / Points / counts).
   Apply class to <th> and <td>, or via HeaderStyle/ItemStyle on
   ASP.NET BoundFields. */
.data-table .col-num,
.summary-table .col-num,
.dash .summary-table .col-num,
th.col-num, td.col-num {
    text-align: right;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}
.data-table .col-center,
.summary-table .col-center,
th.col-center, td.col-center { text-align: center; }

/* Action column: end-aligned, no-wrap container for Edit/Delete/etc.
   Use on the last <td> of a list-view row. */
.data-table .row-actions,
.summary-table .row-actions,
td.row-actions {
    text-align: right;
    white-space: nowrap;
}
.data-table .row-actions > .button,
.summary-table .row-actions > .button,
td.row-actions > .button { margin-left: 0.25rem; }

/* Action-column header — right-aligned to sit above its .row-actions cell.
   Pairs with a visually-hidden label so screen readers still announce the
   column while sighted users see the row's Edit/Remove control instead. */
.data-table th.col-actions,
.summary-table th.col-actions,
th.col-actions { text-align: right; white-space: nowrap; }

/* Inline empty-state — slimmer padding so it fits under a filter
   row without dwarfing the card. Used when a filter yields no
   matches (vs. the full-page "you have nothing yet" panel). */
.empty-state.inline { padding: 1rem 0.5rem; }
.empty-state.inline .empty-state-icon {
    width: 2.25rem;
    height: 2.25rem;
    font-size: 1rem;
    margin-bottom: 0.4rem;
}
.empty-state.inline .empty-state-title { font-size: var(--font-size-base); }

/* GridView EmptyDataText cell — ASP.NET wraps the empty-data message
   in a single full-width <td>. Center it and let it breathe. */
.data-table > tbody > tr > td[colspan],
.summary-table > tbody > tr > td[colspan],
.dash .summary-table > tbody > tr > td[colspan] {
    text-align: center;
    color: var(--color-text-muted);
    font-style: italic;
    padding: 1.25rem 0.5rem;
}

/* qFIT-specific edit-list table — used by EditCategoryOrder /
   EditRoutines / BulkEdit. Stretches to the card width, gives the
   reorder dropdown a sensible gutter, and aligns the order column. */
.qfit-edit-list {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--font-size-base);
}
.qfit-edit-list th,
.qfit-edit-list td {
    padding: 0.45rem 0.5rem;
    vertical-align: middle;
    border-bottom: 1px solid var(--color-border);
}
.qfit-edit-list tr:last-child td { border-bottom: none; }
.qfit-edit-list th {
    text-align: left;
    color: var(--color-text-muted);
    font-weight: var(--font-weight-bold);
    text-transform: uppercase;
    letter-spacing: 0.03em;
    font-size: var(--font-size-xs);
    border-bottom: 2px solid var(--color-border);
}
.qfit-edit-list th.col-order,
.qfit-edit-list td.col-order {
    width: 80px;
    white-space: nowrap;
}
.qfit-edit-list td.col-order select,
.qfit-edit-list td.col-order .textbox { min-width: 60px; }

/* ── 49j-2. Edit Routines 2 — remove column + Add pick-list ────────────────
   The in-routine list reuses .qfit-edit-list; these add the trailing "× Remove"
   column and the clickable "Add Targets & Methods" rows. All colors come from
   design tokens / color-mix so the host [data-theme="dark"] vars theme it for
   free (no separate dark rules needed). Page-specific, qFIT-only. */

/* Trailing, right-aligned cell holding the per-row remove link. */
.qfit-edit-list td.col-remove {
    width: 1%;
    text-align: right;
    white-space: nowrap;
}
.er-remove {
    color: var(--color-danger);
    font-weight: var(--font-weight-medium, 500);
    text-decoration: none;
    white-space: nowrap;
    cursor: pointer;
}
.er-remove:hover { color: var(--color-delete-btn-hover, #b71c1c); text-decoration: underline; }
.er-act { line-height: 1.35; }
.qfit-edit-list td.col-order .er-order { width: auto; min-width: 64px; }

/* Push a trailing button to the right of a .form-actions flex row. qFIT lacked
   this utility that PacklistPRO / NobodyHasTHIS already ship. */
.btn-trailing { margin-left: auto; }

/* Pick-list groups (Methods, then Targets). */
.er-group { margin-bottom: 1.1rem; }
.er-group:last-child { margin-bottom: 0; }
.er-group-label {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    margin: 0 0 0.5rem;
    font-weight: var(--font-weight-bold, 600);
    font-size: var(--font-size-sm, 0.875rem);
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--color-text-muted);
}
.er-add-list {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
}
/* Each pick row is a LinkButton (renders <a>) styled as a clickable card. */
.er-add-item {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    padding: 0.5rem 0.7rem;
    border: 1px solid var(--color-border);
    border-radius: var(--border-radius-sm, 6px);
    background: var(--color-bg-card);
    color: var(--color-text);
    text-decoration: none;
    transition: border-color var(--transition-fast, 0.15s),
                background-color var(--transition-fast, 0.15s);
}
.er-add-item:hover {
    border-color: var(--color-accent);
    background: color-mix(in srgb, var(--color-accent) 12%, var(--color-bg-card));
    text-decoration: none;
}
.er-add-item:focus-visible {
    outline: none;
    border-color: var(--color-accent);
    box-shadow: var(--shadow-focus);
}
.er-add-plus {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.6rem;
    height: 1.6rem;
    border-radius: 50%;
    background: var(--color-save-btn, #32cd32);
    color: #fff;
    font-weight: 700;
    line-height: 1;
}
.er-add-body {
    display: flex;
    flex-direction: column;
    gap: 0.05rem;
    min-width: 0;
}
.er-add-name { font-weight: var(--font-weight-medium, 500); line-height: 1.3; }
.er-add-path {
    font-size: var(--font-size-xs, 0.75rem);
    color: var(--color-text-muted);
    line-height: 1.3;
}
.er-add-toggle {
    display: inline-block;
    margin-left: 0.35rem;
    padding: 0.05rem 0.4rem;
    font-size: var(--font-size-xs, 0.75rem);
    font-weight: var(--font-weight-medium, 500);
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--color-warning, #e65100);
    background: var(--color-warning-bg, #fff3e0);
    border: 1px solid var(--color-warning-border, #ffcc80);
    border-radius: 999px;
    vertical-align: middle;
}

/* ── 49k. Detail-page day-nav — tighter gap on phones ────────────
   The prev/today/next arrows row uses 0.75rem gap which makes the
   arrows feel disconnected from the date label on very narrow
   screens. Tighten and keep the arrows comfortably tappable. */
@media (max-width: 480px) {
    .qfit-daynav {
        gap: 0.5rem;
    }
    .qfit-daynav .daynav-arrow {
        min-width: 44px;
        min-height: 44px;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        padding: 0;
    }
}
/* ── Details pages: prose cards ────────────────────────────────
   CategoryDetails/TargetDetails/MethodDetails build their info + Completion
   History panels as inline spans/links separated by <br> (prose flow).
   Bootstrap's .card component sets display:flex/column, which stacks EVERY
   inline child (each span, link, even each <br>) on its own row — that was
   the "all spaced out" Completion History. card-prose restores block flow.
   ───────────────────────────────────────────────────────────── */
.card.card-prose { display: block; }

/* ── List filter widgets (search + active-filter chips) ────────
   Small reusable vocabulary used by list pages (ToDo, ContactUsStatus)
   to render a compact search input and a row of "active filter" chips
   with per-chip clear buttons. Designed to drop into a flex toolbar
   alongside the existing dropdowns and to stay tappable on phones. */
/* ContactUsStatus' detail panel: populateDetail() injects the Comment and Admin
   Reply blocks into #detailContent, which carries the shared .cuv-readonly-info
   class — a flex row built for the small Submitted/Type/Status chips. As flex
   items those blocks shrink to fit their content (measured 955px and 456px in a
   1118px panel), leaving the two stacked sections ragged and arbitrarily narrow.
   Give each its own full-width line. The (0,2,0) child selector outranks the
   shared (0,1,0) .cuv-readonly-info rule regardless of load order, so this stays
   a qFIT-local fix. PacklistPRO + NobodyHasTHIS have the identical markup and
   the same defect — see qfit_enhancemnts.md D43 before promoting to shared. */
.cuv-readonly-info > .cus-section { flex: 1 1 100%; min-width: 0; }

/* The toolbar itself. ContactUsStatus is the only page with one, and it used to
   borrow ToDo's .todo-options/.todo-ddl names — but those rules were scoped
   ".qfit-page .dash-wrap .todo-options" and this page has no .dash-wrap
   ancestor, so the flex row never applied and all five controls stacked
   full-width. Renamed into this page's own .cus- namespace and scoped here.
   (That dash-wrap family was itself deleted as dead code on 2026-08-05 — no
   page emitted `dash-wrap` any more. This .cus- namespace is unaffected.) */
.cus-filters {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.375rem;
    margin-bottom: 0.5rem;
}
/* styles_shared.css gives .dropdown/.textbox width:100%. On a flex child that
   becomes the flex-basis, so each control claims a full line and wrap puts it
   on its own row — the toolbar would still break even inside a flex parent.
   Give the dropdowns an intrinsic basis instead. The (0,2,0) child selector
   outranks the shared (0,1,0) .dropdown rule regardless of load order. */
.cus-filters > .cus-ddl {
    width: auto;
    flex: 1 1 190px;
    min-width: 190px;
}
@media (max-width: 520px) {
    .cus-filters > .cus-ddl { flex: 1 1 150px; min-width: 150px; }
}
@media (max-width: 480px) {
    .cus-filters > .button { flex: 1 1 auto; }
}

/* Clearable list-search boxes now use the shared .input-clearable component
   (standard in-field × wired by site.js). These rules only carry the toolbar
   flex sizing the old bespoke .qfit-list-search wrapper used to provide. */
.cus-search { flex: 1 1 220px; min-width: 180px; max-width: 320px; }

.qfit-active-filters {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.375rem;
    margin: 0.25rem 0 0.5rem;
    font-size: var(--font-size-sm);
}
.qfit-active-filters[hidden] { display: none; }
.qfit-active-filters .qfit-filter-label {
    color: var(--color-text-muted);
    margin-right: 0.25rem;
}
.qfit-filter-chip {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    padding: 0.125rem 0.5rem 0.125rem 0.625rem;
    border: 1px solid var(--color-border);
    border-radius: 999px;
    background-color: var(--color-bg-card, rgba(0,0,0,0.04));
    color: var(--color-text);
    font-size: var(--font-size-xs);
    line-height: 1.4;
    max-width: 100%;
}
.qfit-filter-chip > .qfit-filter-chip-label {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 14em;
}
.qfit-filter-chip > .qfit-filter-chip-clear {
    border: none;
    background: transparent;
    padding: 0 0.125rem;
    margin-left: 0.125rem;
    font-size: 1rem;
    line-height: 1;
    cursor: pointer;
    color: var(--color-text-muted);
    min-width: 22px;
    min-height: 22px;
}
.qfit-filter-chip > .qfit-filter-chip-clear:hover { color: var(--color-danger); }
.qfit-filter-clear-all {
    border: none;
    background: transparent;
    padding: 0 0.25rem;
    font-size: var(--font-size-xs);
    color: var(--color-link, var(--color-accent));
    text-decoration: underline;
    cursor: pointer;
    min-height: 28px;
}
.qfit-filter-clear-all:hover { text-decoration: none; }

.qfit-list-empty-filtered {
    padding: 0.75rem 0;
    color: var(--color-text-muted);
    font-style: italic;
    text-align: center;
}

@media (max-width: 520px) {
    .todo2-search,
    .cus-search {
        flex: 1 1 100%;
        max-width: 100%;
    }
}

/* ── Nav "due today" dot ─────────────────────────────────────────────
   Small status indicator next to "My Day" / "To-Do" in the top nav
   when high-priority Categories/Targets/Methods haven't been checked
   off yet today. Sibling to .nav-badge-new (in styles_shared.css) but
   uses a warm amber so the eye distinguishes "needs your attention
   now" from "new content available". Set by Site.Master.vb
   SetMyDayBadge — see there for the gating query + cache. */
.nav-badge-due {
    display: inline-block;
    margin-left: 0.3em;
    color: #f59e0b; /* amber-500 */
    font-size: 0.7em;
    line-height: 1;
    vertical-align: middle;
}
[data-theme="dark"] .nav-badge-due { color: #fbbf24; /* amber-400 */ }

/* ── Activity / history snapshots ──────────────────────────────────
   Rendered by App_Code/Helpers/ActivitySummary.vb. Two surfaces:

   .activity-summary  — inline, per-record summary on
                        EditCategory/EditTarget/EditMethod. Shows last-completed
                        date + total/last-30 counts so the editor sees recency
                        before changing settings.

   .admin-activity-snapshot — full-width card on Admin.aspx with the
                        last-7-days site pulse (active users, logins, new
                        accounts, feedback). */
.activity-summary {
    display: block;
    margin: 0.25rem 0 0.75rem;
}
.activity-summary strong { font-weight: 600; }

.admin-activity-snapshot .activity-snapshot-list {
    list-style: disc;
    margin: 0.5rem 0 0.5rem 1.25rem;
    padding: 0;
    line-height: 1.6;
}
.admin-activity-snapshot .activity-snapshot-list strong { font-weight: 600; }

/* .account-activity — read-only "Account activity" card on MyProfile.aspx
   (member since / profile last updated / last sign-in). Same compact list
   look as the admin snapshot, scoped to the profile card so it's easy to scan. */
.account-activity .account-activity-list {
    list-style: disc;
    margin: 0.25rem 0 0 1.25rem;
    padding: 0;
    line-height: 1.7;
}
.account-activity .account-activity-list strong { font-weight: 600; }

/* ============================================================
   51. MOBILE RESPONSIVENESS — June 2026 polish pass
   ============================================================
   Additive complements to §§48–49. Targets remaining gaps that
   showed up under field testing on phones (320–414 px) and small
   tablets (600–991 px): tap-target floor for the hamburger menu,
   form-actions wrap, card-style fallback for the qfit-edit-list
   table on phones, monospace push-ID column break, and a softer
   tablet breakpoint for the dashboard / charts toolbar.
   ============================================================ */

/* ── 51a. Hamburger nav — guarantee 44 px tap targets in stack ──
   Below 992 px the nav-menu becomes a vertical stack. The shared
   sheet's base padding can render some links shorter than 44 px on
   compressed font scales (html.font-small users + dense rows).
   Floor every collapsed menu link so they're reliably tappable. */
@media (max-width: 991.98px) {
    .site-nav .nav-menu .nav-link {
        min-height: 44px;
        display: flex;
        align-items: center;
        padding-top: 0.55rem;
        padding-bottom: 0.55rem;
    }
    /* Dropdown items inside the stack are slightly tighter but still
       comfortably tappable. */
    .site-nav .nav-menu .nav-dropdown .nav-link {
        min-height: 40px;
    }
    /* Hamburger toggle: ensure it's never smaller than the 44 px floor
       even when the brand pushes it tight against the right edge. */
    .site-nav .nav-toggle {
        min-width: 44px;
        min-height: 44px;
    }
}

/* ── 51b. Form-actions — wrap & even spacing on mobile ─────────
   Some forms (Login, Join, Edit*) put 2–3 buttons in .form-actions
   side by side. The shared base lets them wrap, but on a borderline
   width (≈420 px) a third button can drop and look orphaned. Even
   spacing + flex-wrap keeps each row visually balanced, and the
   row gap stops stacked buttons from kissing. */
@media (max-width: 600px) {
    .form-actions {
        flex-wrap: wrap;
        row-gap: 0.5rem;
    }
    .form-actions .button {
        flex: 1 1 auto;
        min-width: 0;
    }
    /* A single-button form-actions row should still be left-aligned,
       not full-width, on mobile — avoid stretching a lonely save btn
       across the whole card. */
    .form-actions > .button:only-child {
        flex: 0 1 auto;
    }
}

/* ── 51c. qfit-edit-list — card-style rows on phones ────────────
   EditCategoryOrder / EditRoutines / BulkEdit render dense tables
   with header columns and a reorder dropdown. §49c gives them
   horizontal scroll on phones, but that hides labels and feels
   awkward on a touch screen. On ≤480 px, drop the table layout,
   stack each row as a labelled card, and let cells flow vertically.
   Uses data-label="…" hints when present; otherwise the cell flows
   on its own line. */
@media (max-width: 480px) {
    .qfit-edit-list,
    .qfit-edit-list thead,
    .qfit-edit-list tbody,
    .qfit-edit-list tr,
    .qfit-edit-list td {
        display: block;
        width: 100%;
    }
    /* Hide the original column headers — each cell carries its own
       label via ::before (or the visual context speaks for itself). */
    .qfit-edit-list thead {
        position: absolute;
        clip: rect(0 0 0 0);
        height: 1px;
        width: 1px;
        overflow: hidden;
        white-space: nowrap;
    }
    .qfit-edit-list tr {
        border: 1px solid var(--color-border);
        border-radius: var(--border-radius-sm);
        padding: 0.5rem 0.75rem;
        margin-bottom: 0.5rem;
        background: var(--color-bg-card, transparent);
    }
    .qfit-edit-list td {
        border-bottom: 1px dashed var(--color-border);
        padding: 0.375rem 0;
    }
    .qfit-edit-list tr td:last-child {
        border-bottom: none;
    }
    .qfit-edit-list td.col-order {
        width: 100%;
    }
    .qfit-edit-list td[data-label]::before {
        content: attr(data-label);
        display: block;
        color: var(--color-text-muted);
        font-size: var(--font-size-xs);
        text-transform: uppercase;
        letter-spacing: 0.03em;
        margin-bottom: 0.125rem;
    }
}

/* ── 51d. Subscribe details Push ID — break long ID on mobile ──
   Notifications.aspx renders the OneSignal Push ID — a UUID-ish
   string ~36 chars long — in a single table cell. Without a break
   rule it can push the card wider than the viewport on phones. */
.subscribe-details-value-id,
.subscribe-details-value {
    overflow-wrap: anywhere;
    word-break: break-word;
}

/* ── 51e. Tip card — tighter padding on phones ─────────────────
   The shared .tip-card has comfortable desktop padding. On phones
   the tip-card-text bullets can take a lot of vertical space; pull
   the side padding in a touch so the tip card doesn't dwarf the
   first card of content. */
@media (max-width: 480px) {
    .tip-card {
        padding: 0.75rem 0.875rem;
    }
    .tip-card .tip-card-text {
        padding-left: 1.25rem;
    }
    .tip-card .tip-card-text li {
        margin-bottom: 0.375rem;
    }
}

/* ── 51f. Dashboard / Charts toolbar — softer tablet breakpoint ─
   The .dash .controls toolbar wraps cleanly on phones (≤480) and
   stays inline on desktop, but in the 600–991 px tablet band the
   row can leave its last control orphaned. Force each control to a
   half-width minimum so they pair up cleanly in two columns. */
@media (min-width: 601px) and (max-width: 991px) {
    .dash .controls > .control {
        flex: 1 1 calc(50% - 0.5rem);
        min-width: 0;
    }
}

/* ── 51g. Page-wrapper bottom safe-area on iOS ─────────────────
   On iOS Safari with the bottom toolbar visible, sticky action
   bars (.qfit-actionbar) can collide with the home indicator on
   phones without bottom safe-area handling. Lift the action bar
   above the inset. Complements §49e for fixed FAB. */
.qfit-actionbar {
    padding-bottom: max(0.5rem, env(safe-area-inset-bottom, 0px));
}

/* ── 51h. Pre / code blocks — never trigger horizontal scroll ──
   Help, ChangeLog, and admin pages occasionally render <pre>/<code>
   blocks with long literal strings (URLs, SQL, JSON). Wrap on phones
   so a single long word doesn't widen the viewport. */
@media (max-width: 600px) {
    pre, code {
        white-space: pre-wrap;
        overflow-wrap: anywhere;
        word-break: break-word;
    }
}

/* ── 51i. Search rows — prevent button orphaning ───────────────
   The Search/Clear button pair on EditRoutines and similar pages
   was made narrow by `style="max-width: 250px"` (handled in §49h).
   But on the 480–600 px band the trailing 🔍 button can wrap to
   its own line below an otherwise empty row. Let the search wrap
   flex to grow so the row fills cleanly. */
@media (max-width: 600px) {
    .search-inputwrap {
        flex: 1 1 auto;
        min-width: 0;
    }
}

/* ── 51j. Page-wrapper horizontal padding on tiny phones ───────
   The shared sheet pads .page-wrapper to give content side gutters.
   On the very narrowest phones (≤360 px) the gutter eats real
   estate without earning much. Trim slightly. */
@media (max-width: 360px) {
    .page-wrapper {
        padding-left: 0.5rem;
        padding-right: 0.5rem;
    }
}

/* ── 51k. Generic long anchor/email text inside cards ──────────
   User-entered email addresses and URLs (Contact-Us viewer, About,
   admin diagnostics) can sit in raw <a> or <span> with no class.
   Break them inside cards so a single email doesn't widen the row. */
.card a[href^="mailto:"],
.card a[href^="http"],
.main-card a[href^="mailto:"],
.main-card a[href^="http"] {
    overflow-wrap: anywhere;
    word-break: break-word;
}

/* ── API Usage admin page (.au-*) ──────────────────────────────────
   ApiUsage.aspx: traffic stat chips, top-source mini tables, recent-call
   filter row, and the block-management form. Cross-site (same on PLP/qMeet/qFIT). */
.au-stats { display: flex; flex-wrap: wrap; gap: 0.75rem; }
.au-stat {
    display: flex; flex-direction: column; min-width: 9rem;
    padding: 0.6rem 0.9rem; border: 1px solid var(--color-border);
    border-radius: 8px; background: var(--color-bg-card);
}
.au-stat-num { font-size: 1.5rem; font-weight: 700; line-height: 1.2; }
.au-stat-label { font-size: var(--font-size-xs); color: var(--color-text-muted); }
.au-stat-bad .au-stat-num { color: var(--color-danger, #c0392b); }
.au-tops { display: grid; grid-template-columns: repeat(auto-fit, minmax(290px, 1fr)); gap: 1rem; }
.au-top-table { font-size: var(--font-size-sm); width: 100%; }
.au-top-table td:first-child { word-break: break-all; }
.au-refused { color: var(--color-danger, #c0392b); font-weight: 600; }
.au-filter-row { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem; margin-bottom: 0.75rem; }
.au-filter-row .textbox { flex: 1 1 16rem; min-width: 0; width: auto; }
.au-recent-table { font-size: var(--font-size-xs); width: 100%; }
.au-recent-table code { word-break: break-all; }
.au-block-form {
    display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 0 1rem; align-items: end; margin-bottom: 1rem;
}
.au-block-form .form-actions { grid-column: 1 / -1; }
.au-config { margin: 0; padding-left: 1.2rem; }

/* ============================================================
   52. MOBILE RESPONSIVENESS — June 2026 follow-up pass
   ============================================================
   Additive complements to §§48–51. Closes the last gaps found in a
   field sweep on 320–414 px phones — both on the admin surface, the
   only place a still-present overflow / unstyled-layout risk remained
   after the earlier passes.
   ============================================================ */

/* ── 52a. ApiUsage admin auto-fit grids — collapse on phones ──────
   `.au-tops` (minmax 290px) and `.au-block-form` (minmax 240px) use
   `repeat(auto-fit, minmax(Npx, 1fr))`. When the surrounding card is
   narrower than the min track — true on ≤360 px phones inside a padded
   .main-card — the single column is still forced to Npx and overflows
   the card (clipped by the §49b body `overflow-x: clip`). Collapse to a
   single full-width column on phones; identical fix to the one §48h
   applies to the Charts / Dashboard `.summary-grid`. */
@media (max-width: 600px) {
    .au-tops,
    .au-block-form {
        grid-template-columns: 1fr;
    }
}

/* ── 52b. AskAI response header — responsive flex row ─────────────
   AskAI.aspx (admin) renders `.ai-response-header` — the "Response"
   heading plus an `.ai-response-actions` group (cache-status label +
   Copy button) — but no rule ever styled either class, so they fell
   back to plain stacked blocks. Lay them out as a space-between row
   that wraps: the actions sit beside the heading on wider screens and
   drop below it on phones, staying tappable either way. */
.ai-response-header {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.5rem;
}
.ai-response-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
}

/* ── 53. ToDo.aspx — PacklistPRO-look To-Do redesign ──────────────
   Local visual vocabulary for the redesigned smart To-Do page. Built on
   the shared design system (.main-card, .page-header, .td-quicknav, .pill,
   .empty-state, tokens) — these classes only add the To-Do-specific layout
   and the per-type colour accents. Everything is token-driven so dark mode
   is automatic. This was once kept separate from the legacy
   .qfit-page .dash-wrap .todo-* family "still used by ToDo.aspx" — that
   ceased to be true when this redesign took the page over, and the whole
   dead family was deleted 2026-08-05. These are now the ONLY To-Do rules.

   NOTE on specificity: qFIT loads Content/styles.css BEFORE Shared/
   styles_shared.css, so shared single-class rules (e.g. .pill) win on tie.
   Pill colour overrides below therefore use >=2 classes (.pill.todo2-*) so
   they beat the shared .pill base. */

.todo2-page { margin-top: 0.25rem; }

/* ── Summary hero ─────────────────────────────────────────────── */
.todo2-hero-top {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 0.75rem;
}
.todo2-hero-count-wrap {
    display: flex;
    align-items: baseline;
    gap: 0.5rem;
    min-width: 0;
}
.todo2-hero-count {
    font-size: 2.6rem;
    font-weight: 700;
    line-height: 1;
    color: var(--color-accent);
}
.todo2-hero-unit {
    font-size: var(--font-size-lg);
    font-weight: 600;
    color: var(--color-text-muted);
}
.todo2-hero-meta {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 0.35rem;
    text-align: right;
}

.todo2-hero-date {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-top: 1rem;
    padding-top: 0.85rem;
    border-top: 1px solid var(--color-border);
}
.todo2-hero-dateline { font-size: var(--font-size-sm); color: var(--color-text); }

.todo2-daynav {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.4rem;
}
.todo2-day-nav-group {
    display: inline-flex;
    gap: 0.3rem;
}
.todo2-date {
    width: 11rem;
    max-width: 100%;
}
/* Subtle cue + dimmed "Today" button when viewing a non-today date. */
.todo2-date-other {
    border-color: var(--color-warning-border, #ffcc80) !important;
    background-color: color-mix(in srgb, var(--color-warning-bg, #fff3e0) 60%, var(--color-bg-input)) !important;
}
.todo2-day-nav.is-noop { opacity: 0.55; }

/* "Viewing a different day" banner. */
.todo2-otherday {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-top: 0.85rem;
    padding: 0.5rem 0.75rem;
    border-radius: var(--border-radius-sm);
    background-color: var(--color-warning-bg, #fff3e0);
    border: 1px solid var(--color-warning-border, #ffcc80);
    color: var(--color-warning, #e65100);
    font-size: var(--font-size-sm);
}
.todo2-otherday-back {
    border: none;
    background: transparent;
    padding: 0;
    margin: 0;
    font: inherit;
    color: inherit;
    text-decoration: underline;
    cursor: pointer;
    min-height: 28px;
}
.todo2-otherday-back:hover { text-decoration: none; }

/* ── Options & Filters (collapsible) ──────────────────────────── */
.todo2-filters-summary { width: 100%; }
.todo2-filters-hint {
    margin-left: auto;
    font-weight: 400;
}

/* ── List card + toolbar ──────────────────────────────────────── */
/* Results-shown count at the top of the list card (updated live by search). */
.todo2-listhead {
    margin-bottom: 0.5rem;
}
.todo2-listcount {
    font-weight: 700;
    color: var(--color-text);
}

.todo2-toolbar {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-bottom: 0.5rem;
}
/* Standard clearable search box grows in the toolbar (was the bespoke
   .qfit-list-search sizing before the shared .input-clearable conversion). */
.todo2-search { flex: 1 1 220px; min-width: 180px; max-width: 320px; }

/* ── The list ─────────────────────────────────────────────────── */
.todo2-list { display: flex; flex-direction: column; }
.todo2-row {
    display: flex;
    align-items: flex-start;
    gap: 0.8rem;
    padding: 0.7rem 0.4rem 0.7rem 0.7rem;
    border-bottom: 1px solid var(--color-border);
    border-left: 4px solid transparent;
    transition: background-color var(--transition-fast, 0.15s ease),
                opacity var(--transition-mid, 0.25s ease);
}
.todo2-row:last-child { border-bottom: none; }
/* Save-confirmation pulse for ToDo rows — reused for .todo2-mrow (Method rows).
   Mirrors Checklist.aspx's .chk-row flash so both pages give the same "it saved"
   feedback; applied by flashRow() in todo2-page.js on the SetCompleted result. */
.todo2-row.flash-ok, .todo2-mrow.flash-ok { animation: todo2FlashOk 650ms ease; }
.todo2-row.flash-err, .todo2-mrow.flash-err { animation: todo2FlashErr 800ms ease; }
@keyframes todo2FlashOk {
    0%   { filter: brightness(2.0); }
    75%  { filter: brightness(1.0); }
    100% { filter: brightness(1.0); }
}
@keyframes todo2FlashErr {
    0%   { filter: brightness(0.0); }
    75%  { filter: brightness(2.0); }
    100% { filter: brightness(1.0); }
}
@media (prefers-reduced-motion: reduce) {
    .todo2-row.flash-ok, .todo2-mrow.flash-ok,
    .todo2-row.flash-err, .todo2-mrow.flash-err { animation: none; }
}
/* An accent WASH, not --color-accent-light: that token has no dark-mode override
   (it stays #e0f6fe), so hovering painted pale blue under the row's inherited
   near-white --color-text and the row read as blank. The rule's own fallback
   (rgba(0,176,240,0.06)) was already the right idea — it just never applied,
   because the token exists. color-mix keeps it theme-agnostic and matches how
   .todo2-row-hi:hover below tints. */
.todo2-row:hover { background-color: color-mix(in srgb, var(--color-accent) 12%, transparent); }

/* Per-type left accent (mirrors the type-pill colours). */
.todo2-type-g { border-left-color: rgba(0,176,240,0.65); }
.todo2-type-i { border-left-color: rgba(0,170,0,0.65); }
.todo2-type-e { border-left-color: rgba(255,140,0,0.7); }

/* High-priority row gets a faint warm wash so it stands out. */
.todo2-row-hi { background-color: color-mix(in srgb, var(--color-danger-bg, #ffebee) 45%, transparent); }
.todo2-row-hi:hover { background-color: color-mix(in srgb, var(--color-danger-bg, #ffebee) 70%, transparent); }

/* Custom check control (appearance:none + CSS checkmark — no image asset). */
.todo2-check {
    appearance: none;
    -webkit-appearance: none;
    flex: 0 0 auto;
    width: 1.6rem;
    height: 1.6rem;
    margin: 0.1rem 0 0 0;
    border: 2px solid var(--color-border);
    border-radius: var(--border-radius-sm, 6px);
    background-color: var(--color-bg-input, #fff);
    cursor: pointer;
    position: relative;
    transition: background-color var(--transition-fast, 0.15s ease),
                border-color var(--transition-fast, 0.15s ease);
}
.todo2-check:hover { border-color: var(--color-save-btn, #32cd32); }
.todo2-check:focus-visible {
    outline: none;
    box-shadow: var(--shadow-focus-ring, 0 0 0 3px rgba(0,176,240,0.35));
}
.todo2-check:checked {
    background-color: var(--color-save-btn, #32cd32);
    border-color: var(--color-save-btn, #32cd32);
}
.todo2-check:checked::after {
    content: "";
    position: absolute;
    left: 0.5rem;
    top: 0.18rem;
    width: 0.34rem;
    height: 0.66rem;
    border: solid #fff;
    border-width: 0 0.18rem 0.18rem 0;
    transform: rotate(45deg);
}

.todo2-body { flex: 1 1 auto; min-width: 0; }
.todo2-headline { display: flex; align-items: baseline; gap: 0.5rem; }
.todo2-name {
    font-weight: 600;
    font-size: var(--font-size-base);
    word-break: break-word;
}
.todo2-sub {
    color: var(--color-text-muted);
    font-size: var(--font-size-sm);
    margin-top: 0.1rem;
}
.todo2-pills {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
    margin-top: 0.45rem;
}

/* Completed state: smooth strikethrough + dim (respects reduced-motion via
   the shared transition tokens being overridden globally). */
.todo2-done { opacity: 0.65; }
.todo2-done .todo2-name {
    text-decoration: line-through;
    text-decoration-color: var(--color-text-muted);
    color: var(--color-text-muted);
}

/* ── Pills (meta labels — non-interactive; >=2 classes to beat .pill) ── */
.pill.todo2-typepill,
.pill.todo2-goal,
.pill.todo2-last,
.pill.todo2-hipill {
    cursor: default;
    padding: 0.12rem 0.6rem;
    font-size: var(--font-size-xs);
    font-weight: 600;
}
.pill.todo2-typepill:hover,
.pill.todo2-goal:hover,
.pill.todo2-last:hover,
.pill.todo2-hipill:hover { border-color: var(--color-border); }

.pill.todo2-typepill { text-transform: capitalize; }
.pill.todo2-typepill.pill-type-g { background-color: rgba(0,176,240,0.14); border-color: rgba(0,176,240,0.45); color: var(--color-text); }
.pill.todo2-typepill.pill-type-i { background-color: rgba(0,170,0,0.14);   border-color: rgba(0,170,0,0.45); color: var(--color-text); }
.pill.todo2-typepill.pill-type-e { background-color: rgba(255,140,0,0.16); border-color: rgba(255,140,0,0.55); color: var(--color-text); }

.pill.todo2-goal,
.pill.todo2-last { color: var(--color-text-muted); }

/* "Why is this here" reason badge — amber attention accent so the urgency that
   floated the row up is legible at a glance. Self-contained (>=2 classes to beat
   .pill). Text comes from TodoRow.ReasonText (Behind / 1 to go / Overdue / Due
   today / Never done / Done today). */
.pill.todo2-why,
.pill.todo2-why:hover {
    cursor: default;
    padding: 0.12rem 0.6rem;
    font-size: var(--font-size-xs);
    font-weight: 600;
    background-color: rgba(255, 176, 32, 0.16);
    border-color: rgba(255, 176, 32, 0.55);
    color: var(--color-text);
}

/* High-priority chip — used inline as .pill.todo2-hipill (row) and standalone
   as .todo2-hipill (hero, no .pill). */
.pill.todo2-hipill,
.pill.todo2-hipill:hover {
    background-color: var(--color-danger-bg, #ffebee);
    border-color: var(--color-danger-border, #ef9a9a);
    color: var(--color-danger, #c62828);
}
.todo2-hipill {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    padding: 0.15rem 0.6rem;
    border: 1px solid var(--color-danger-border, #ef9a9a);
    border-radius: 999px;
    background-color: var(--color-danger-bg, #ffebee);
    color: var(--color-danger, #c62828);
    font-size: var(--font-size-xs);
    font-weight: 600;
    white-space: nowrap;
}
.todo2-hipill-lg { font-size: var(--font-size-sm); padding: 0.25rem 0.7rem; }

/* ── On-demand "Exercises" panel under each Target row ─────────────
   Expands a muscle (Target) to its Methods so the user can tick off the
   exercise they actually did. Loaded on demand by todo2-page.js via
   ToDo.aspx/GetMethodsForTarget; checking a Method never auto-completes
   the Target. */
.todo2-methods { margin-top: 0.5rem; }
.todo2-methods-toggle {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    padding: 0.1rem 0.15rem;
    background: none;
    border: none;
    cursor: pointer;
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--color-link, var(--color-accent, #00b0f0));
}
.todo2-methods-toggle:hover { text-decoration: underline; }
.todo2-methods-toggle:focus-visible {
    outline: none;
    box-shadow: var(--shadow-focus-ring, 0 0 0 3px rgba(0,176,240,0.35));
    border-radius: var(--border-radius-sm, 6px);
}
.todo2-methods-caret {
    display: inline-block;
    font-size: 0.8em;
    transition: transform var(--transition-fast, 0.15s ease);
}
.todo2-methods-toggle[aria-expanded="true"] .todo2-methods-caret { transform: rotate(90deg); }

.todo2-methods-panel {
    margin-top: 0.5rem;
    padding: 0.5rem 0.6rem;
    border: 1px solid var(--color-border);
    border-radius: var(--border-radius-sm, 8px);
    background-color: var(--color-bg-card, var(--color-bg));
}
.todo2-mfilter { margin-bottom: 0.5rem; }
.todo2-mnote {
    color: var(--color-text-muted);
    font-size: var(--font-size-sm);
    padding: 0.25rem 0.1rem;
}
.todo2-mlist { display: flex; flex-direction: column; }
.todo2-mrow {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    padding: 0.4rem 0.2rem;
    border-bottom: 1px solid var(--color-border);
    cursor: pointer;
    margin: 0;
}
.todo2-mrow:last-child { border-bottom: none; }
/* Theme-agnostic accent wash — see the .todo2-row:hover note above. */
.todo2-mrow:hover { background-color: color-mix(in srgb, var(--color-accent) 12%, transparent); }
.todo2-mname {
    flex: 1 1 auto;
    min-width: 0;
    word-break: break-word;
    font-size: var(--font-size-sm);
}
.todo2-mlast {
    flex: 0 0 auto;
    color: var(--color-text-muted);
    font-size: var(--font-size-xs);
    white-space: nowrap;
}
.todo2-mrow-done .todo2-mname {
    text-decoration: line-through;
    text-decoration-color: var(--color-text-muted);
    color: var(--color-text-muted);
}

/* Method checkbox — mirrors .todo2-check (appearance:none + CSS check), smaller. */
.todo2-mcheck {
    appearance: none;
    -webkit-appearance: none;
    flex: 0 0 auto;
    width: 1.4rem;
    height: 1.4rem;
    margin: 0;
    border: 2px solid var(--color-border);
    border-radius: var(--border-radius-sm, 6px);
    background-color: var(--color-bg-input, #fff);
    cursor: pointer;
    position: relative;
    transition: background-color var(--transition-fast, 0.15s ease),
                border-color var(--transition-fast, 0.15s ease);
}
.todo2-mcheck:hover { border-color: var(--color-save-btn, #32cd32); }
.todo2-mcheck:focus-visible {
    outline: none;
    box-shadow: var(--shadow-focus-ring, 0 0 0 3px rgba(0,176,240,0.35));
}
.todo2-mcheck:checked {
    background-color: var(--color-save-btn, #32cd32);
    border-color: var(--color-save-btn, #32cd32);
}
.todo2-mcheck:checked::after {
    content: "";
    position: absolute;
    left: 0.42rem;
    top: 0.13rem;
    width: 0.3rem;
    height: 0.58rem;
    border: solid #fff;
    border-width: 0 0.16rem 0.16rem 0;
    transform: rotate(45deg);
}

/* ── Explainer card lists ─────────────────────────────────────── */
.todo2-explain ul,
.todo2-explain ol { padding-left: 1.25rem; margin: 0.4rem 0 0.75rem; }
.todo2-explain li { margin-bottom: 0.3rem; }

/* ── Small screens ────────────────────────────────────────────── */
@media (max-width: 560px) {
    .todo2-hero-count { font-size: 2.1rem; }
    .todo2-hero-meta { align-items: flex-start; text-align: left; }
    .todo2-hero-date { align-items: flex-start; }
    .todo2-daynav { width: 100%; }
    .todo2-date { flex: 1 1 auto; }
}

/* ── 54. Dashboard2.aspx — PacklistPRO-look Dashboard redesign ────────
   Page-scoped helpers for the redesigned Dashboard. The page leans on the
   shared design system (.main-card / .td-readiness / .td-quicknav /
   .progress-* / .table-responsive / .empty-state); these rules only cover
   what the shared sheet doesn't: the period comparison tables, numeric
   alignment, the goals breakdown, and the pace-trend coloring. Everything
   is token-driven so dark mode is automatic (with two arrow-color lifts). */

.dash2-table {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--font-size-sm);
}
.dash2-table th,
.dash2-table td {
    padding: 0.5rem 0.6rem;
    border-bottom: 1px solid var(--color-border);
    vertical-align: top;
}
.dash2-table thead th {
    text-align: left;
    font-weight: var(--font-weight-bold);
    color: var(--color-text-muted);
    border-bottom: 2px solid var(--color-border);
    /* normal (not nowrap) so a longer header like "Avg checkboxes" can wrap
       to two lines instead of forcing the column wide. */
    white-space: normal;
}
.dash2-table tbody tr:last-child th,
.dash2-table tbody tr:last-child td { border-bottom: none; }
.dash2-table th[scope="row"] {
    text-align: left;
    font-weight: var(--font-weight-medium);
}
.dash2-num {
    text-align: right;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}
.dash2-dim { color: var(--color-text-light); }
.dash2-period { display: block; font-weight: var(--font-weight-bold); }
.dash2-range {
    display: block;
    font-size: var(--font-size-xs);
    color: var(--color-text-muted);
    font-weight: var(--font-weight-normal);
}

/* Readiness hero: the goal count lines (litReadinessHeadline). Normally a small
   table (.dash2-goal-table) of "<Label>: <met> of <total> met" rows; .dash2-goal-line
   is the no-goals "Today's Activity" fallback. */
.dash2-goal-line {
    margin: 0;
    font-weight: var(--font-weight-bold);
    font-size: var(--font-size-base);
    color: var(--color-text);
}
.dash2-goal-line + .dash2-goal-line { margin-top: 0.15rem; }

.dash2-goal-table {
    border-collapse: collapse;
    margin: 0;
    font-weight: var(--font-weight-bold);
    font-size: var(--font-size-base);
    color: var(--color-text);
}
/* Only set vertical padding here — leave horizontal to the per-column rules below.
   (A shorthand `padding: x 0` would zero their horizontal padding because this
   class+element selector outranks a single-class selector.) */
.dash2-goal-table td {
    padding-top: 0.1rem;
    padding-bottom: 0.1rem;
    vertical-align: baseline;
}
/* met / "of" / total are separate columns so the figures line up vertically;
   the small horizontal paddings give a little breathing room between columns.
   Scoped under .dash2-goal-table so they outrank the `td` rule above. */
.dash2-goal-table .dash2-goal-cat { padding-right: 0.7rem; }
.dash2-goal-table .dash2-goal-met,
.dash2-goal-table .dash2-goal-tot {
    text-align: right;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}
.dash2-goal-table .dash2-goal-of {
    padding-left: 0.4rem;
    padding-right: 0.4rem;
    text-align: center;
    font-weight: var(--font-weight-medium);
    color: var(--color-text-light);
}
.dash2-goal-table .dash2-goal-suffix {
    padding-left: 0.5rem;
    font-weight: var(--font-weight-medium);
    color: var(--color-text-light);
}

/* Today goals-not-met breakdown, inside the readiness card */
.dash2-breakdown { margin-top: 1rem; }
.dash2-breakdown-label { margin: 0 0 0.35rem; }
.dash2-table-goals { max-width: 32rem; }
/* Center the High / Medium / Low priority columns (header + data) in this table
   only — the wide period tables keep their right-aligned .dash2-num figures. */
.dash2-table-goals th.dash2-num,
.dash2-table-goals td.dash2-num { text-align: center; }

/* ── Mobile: stack the wide period tables into labelled cards (≤640px) ──────
   The six-column "Activity by Period" / "Longer Ranges" tables can't fit a
   phone, so below 640px each row becomes a card: the period (the row header)
   is the title, and every figure sits on its own "Label  value" line. The
   labels are generated from each cell's column position (td:nth-of-type), so
   no per-cell markup is needed. The narrow 3-column goals table is excluded
   (it stays tabular) via :not(.dash2-table-goals). */
@media (max-width: 640px) {
    .dash2-table:not(.dash2-table-goals),
    .dash2-table:not(.dash2-table-goals) tbody,
    .dash2-table:not(.dash2-table-goals) tr,
    .dash2-table:not(.dash2-table-goals) th,
    .dash2-table:not(.dash2-table-goals) td {
        display: block;
        width: auto;
    }

    /* Visually hide the header row (its labels are re-emitted per card below)
       while keeping it for assistive tech. */
    .dash2-table:not(.dash2-table-goals) thead {
        position: absolute;
        width: 1px;
        height: 1px;
        overflow: hidden;
        clip: rect(0 0 0 0);
        white-space: nowrap;
    }

    .dash2-table:not(.dash2-table-goals) tr {
        border: 1px solid var(--color-border);
        border-radius: var(--radius-md, 8px);
        padding: 0.4rem 0.8rem 0.55rem;
        margin-bottom: 0.6rem;
    }

    /* Card title = the period + its date range (already stacked spans). */
    .dash2-table:not(.dash2-table-goals) th[scope="row"] {
        border-bottom: 1px solid var(--color-border);
        padding: 0.15rem 0 0.4rem;
        margin-bottom: 0.35rem;
    }

    /* Each figure on its own line: label left, value right. */
    .dash2-table:not(.dash2-table-goals) td {
        display: flex;
        justify-content: space-between;
        align-items: baseline;
        gap: 1rem;
        border: none;
        padding: 0.22rem 0;
        text-align: right;
    }
    .dash2-table:not(.dash2-table-goals) td::before {
        content: "";
        text-align: left;
        font-weight: var(--font-weight-medium);
        color: var(--color-text-muted);
    }
    /* Column labels by position — must match the <thead> order AND its wording.
       These duplicate the <th> text (Charts.aspx "Activity by Period" / "Longer
       Ranges"): the stacked card has no visible header row, so the label is
       re-stated here. Change a <th> and you MUST change its twin below, or
       mobile silently disagrees with desktop. Only Charts uses this variant —
       Dashboard's table is .dash2-table-goals and is excluded above. */
    .dash2-table:not(.dash2-table-goals) td:nth-of-type(1)::before { content: "Checkboxes"; }
    .dash2-table:not(.dash2-table-goals) td:nth-of-type(2)::before { content: "Pts"; }
    .dash2-table:not(.dash2-table-goals) td:nth-of-type(3)::before { content: "Avg Checkboxes/Day"; }
    .dash2-table:not(.dash2-table-goals) td:nth-of-type(4)::before { content: "Avg Pts/Day"; }
    .dash2-table:not(.dash2-table-goals) td:nth-of-type(5)::before { content: "Unique"; }
}

.dash2-updated { margin-top: 0.85rem; margin-bottom: 0; }

/* Pace-trend line under the recent table */
.dash2-trends {
    margin-top: 0.85rem;
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
}
.dash2-trends-label { font-weight: var(--font-weight-bold); }
.dash2-trends-sep { color: var(--color-border); }
.dash2-up   { color: var(--color-success); font-weight: var(--font-weight-bold); }
.dash2-down { color: var(--color-danger);  font-weight: var(--font-weight-bold); }
.dash2-flat { color: var(--color-text-muted); font-weight: var(--font-weight-bold); }
/* The success/danger tokens are tuned for light cards; lift them on dark so the
   small up/down arrows stay legible against the dark card surface. */
[data-theme="dark"] .dash2-up   { color: #5ed17a; }
[data-theme="dark"] .dash2-down { color: #f08a82; }

/* "Longer Ranges" collapsible card */
.dash2-details > .dash2-summary {
    cursor: pointer;
    margin-bottom: 0;
}
.dash2-details[open] > .dash2-summary { margin-bottom: 0.75rem; }
.dash2-summary::-webkit-details-marker { color: var(--color-text-muted); }

/* ============================================================================
   Charts2.aspx — PacklistPRO-look charts page (page-local components)
   ----------------------------------------------------------------------------
   Everything structural reuses shared classes (.main-card, .pill, .button,
   .form-*, .td-quicknav, .empty-state, table .col-num). These .qf2-* rules
   cover only the bits the shared sheet has no component for: the CSS stacked
   bar chart, the overview stat strip, and the per-row magnitude meter. All
   colors come from shared theme tokens, so dark mode is automatic — only the
   three fixed series hues (cat/tgt/mtd, shared by legend swatch + bar segment)
   are literal, and they read on both light and dark card surfaces.
   ========================================================================= */

/* Series colors — one source for the legend swatch and the matching segment. */
.qf2-cat { background-color: #00b0f0; } /* Categories — accent cyan */
.qf2-tgt { background-color: #19b36b; } /* Targets — green          */
.qf2-mtd { background-color: #f5961a; } /* Methods — amber          */

/* ── Filters row ─────────────────────────────────────────────── */
.qf2-filters {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    align-items: flex-end;
}
.qf2-filter {
    flex: 1 1 180px;
    min-width: 0;
    margin-bottom: 0;
}
.qf2-filter .dropdown { width: 100%; }
.qf2-filter-action { flex: 0 0 auto; }
.qf2-filter-action .button { white-space: nowrap; }
.qf2-custom-range { margin-top: 1rem; }

/* ── Overview stat strip ─────────────────────────────────────── */
.qf2-stats {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 0.75rem;
    margin-bottom: var(--section-gap);
}
.qf2-stat {
    background: var(--color-bg-card);
    border: 1px solid var(--color-border);
    border-radius: var(--border-radius);
    box-shadow: var(--shadow-sm);
    padding: 0.85rem 0.75rem;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.1rem;
    text-align: center;
}
.qf2-stat-icon { font-size: 1.15rem; line-height: 1; }
.qf2-stat-val {
    font-size: var(--font-size-xl);
    font-weight: var(--font-weight-bold);
    color: var(--color-text);
    font-variant-numeric: tabular-nums;
}
.qf2-stat-label {
    font-size: var(--font-size-xs);
    color: var(--color-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.03em;
}
@media (max-width: 640px) {
    .qf2-stats { grid-template-columns: repeat(2, 1fr); }
}

/* ── "Points are off" notice ─────────────────────────────────────
   Shown in place of a Points total when nothing in the user's library is both
   tickable and worth points (PointsHelper.UserHasScoreablePoints). A bare 0 there
   reads as "you earned nothing" rather than "nothing here scores".

   Charts drops the ⭐ tile out of the stat strip and reflows it to 3 columns, then
   states it once at full width — the sentence is far too long for one 1fr cell.
   The 640px rule above already collapses the strip to 2 columns, so this override
   only needs to beat the 4-column default. */
.qf2-stats-3 { grid-template-columns: repeat(3, 1fr); }

.qf2-points-off {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    background: var(--color-bg-card);
    border: 1px solid var(--color-border);
    border-radius: var(--border-radius);
    box-shadow: var(--shadow-sm);
    padding: 0.7rem 0.85rem;
    margin-bottom: var(--section-gap);
}
.qf2-points-off-icon { font-size: 1.15rem; line-height: 1; flex: none; }
.qf2-points-off-text { font-size: var(--font-size-sm); color: var(--color-text-muted); }
/* Inside the chart panel it stands alone, so give it the chart's vertical presence
   instead of sitting as a thin strip above empty space. */
.qf2-points-off-chart {
    justify-content: center;
    text-align: center;
    padding: 2rem 1rem;
    margin-bottom: 0;
}

/* Dashboard hero: sits inline in the breakdown row beside "Checkboxes today". */
.td-points-off { font-size: var(--font-size-sm); color: var(--color-text-muted); }

/* ── Chart card head + metric toggle + legend ────────────────── */
.qf2-chart-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
}
.qf2-chart-head .card-title { margin-bottom: 0.15rem; }
.qf2-metric-toggle {
    display: inline-flex;
    gap: 0.4rem;
    flex-wrap: wrap;
}
.qf2-metric-toggle .pill { font-family: inherit; cursor: pointer; }
.qf2-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 0.25rem 1rem;
    margin: 0.5rem 0;
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
}
.qf2-legend-item { display: inline-flex; align-items: center; gap: 0.4rem; }
.qf2-swatch {
    width: 0.8rem;
    height: 0.8rem;
    border-radius: 3px;
    display: inline-block;
    flex: 0 0 auto;
}

/* ── CSS stacked bar chart ───────────────────────────────────── */
.qf2-chart { margin-top: 0.25rem; }
.qf2-plot {
    display: flex;
    align-items: flex-end;
    gap: var(--qf2-gap, 3px);
    height: 220px;
    border-bottom: 1px solid var(--color-border);
    padding-bottom: 1px;
}
.qf2-col {
    flex: 1 1 0;
    min-width: 0;
    height: 100%;
    display: flex;
    align-items: flex-end;
    border-radius: 3px 3px 0 0;
    transition: background-color var(--transition-fast);
}
.qf2-col:hover { background: color-mix(in srgb, var(--color-accent) 10%, transparent); }
.qf2-stack {
    width: 100%;
    display: flex;
    flex-direction: column-reverse; /* first segment (cat) sits at the bottom */
    border-radius: 3px 3px 0 0;
    overflow: hidden;
}
.qf2-seg {
    display: block;
    width: 100%;
    flex-basis: 0;
    flex-shrink: 1;
    min-height: 2px; /* keep a one-completion day visible */
}
.qf2-axis {
    display: flex;
    justify-content: space-between;
    margin-top: 0.35rem;
    font-size: var(--font-size-xs);
    color: var(--color-text-muted);
}
.qf2-chart-empty {
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    height: 180px;
    padding: 1rem;
    color: var(--color-text-muted);
    font-size: var(--font-size-sm);
    border: 1px dashed var(--color-border);
    border-radius: var(--border-radius-sm);
}
@media (max-width: 560px) {
    .qf2-plot { height: 170px; }
}
@media (prefers-reduced-motion: reduce) {
    .qf2-col { transition: none; }
}

/* ── Collapsible summary cards ───────────────────────────────── */
.qf2-summary > .qf2-summary-head {
    cursor: pointer;
    list-style: none;
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 0.35rem 0.75rem;
}
.qf2-summary-head::-webkit-details-marker { display: none; }
.qf2-summary-head::before {
    content: "\25B8"; /* ▸ */
    color: var(--color-text-muted);
    font-size: 0.85em;
    transition: transform var(--transition-fast);
    flex: 0 0 auto;
}
.qf2-summary[open] > .qf2-summary-head::before { transform: rotate(90deg); }
.qf2-summary-head .card-title { margin: 0; }
.qf2-summary-meta {
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
    font-weight: var(--font-weight-normal);
}
.qf2-summary > .table-responsive { margin-top: 0.85rem; }
@media (prefers-reduced-motion: reduce) {
    .qf2-summary-head::before { transition: none; }
}

/* ── Summary table ───────────────────────────────────────────── */
.qf2-table { width: 100%; border-collapse: collapse; }
.qf2-table th,
.qf2-table td {
    padding: 0.5rem 0.6rem;
    border-bottom: 1px solid var(--color-border);
    text-align: left;
    vertical-align: middle;
}
.qf2-table th {
    font-size: var(--font-size-xs);
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--color-text-muted);
    font-weight: var(--font-weight-bold);
    border-bottom: 2px solid var(--color-border);
    white-space: nowrap;
}
.qf2-table tbody tr:last-child td { border-bottom: none; }
.qf2-table tbody tr:hover { background: color-mix(in srgb, var(--color-accent) 6%, transparent); }
.qf2-row-name {
    color: var(--color-link);
    font-weight: var(--font-weight-medium);
    text-decoration: none;
}
.qf2-row-name:hover { text-decoration: underline; }

/* Checkbox-symbol column header (replaces the wide "Checkboxes" label so the
   Points column isn't pushed off-screen on mobile). Sits in a th that is
   uppercased/letter-spaced for text labels — neither affects the glyph. */
.qf2-col-icon {
    font-size: 1.05rem;
    line-height: 1;
    color: var(--color-text);
}

/* Per-row magnitude meter (relative to the table's busiest row) */
.qf2-meter {
    display: block;
    height: 4px;
    margin-top: 0.3rem;
    max-width: 240px;
    background: color-mix(in srgb, var(--color-border) 60%, transparent);
    border-radius: 999px;
    overflow: hidden;
}
.qf2-meter > span {
    display: block;
    height: 100%;
    background: var(--color-accent);
    border-radius: 999px;
}

/* Category whose checkbox is hidden: it can't be checked off, so we show this
   note in place of a (history-only, misleading) magnitude meter. */
.qf2-untracked-note {
    display: block;
    margin-top: 0.3rem;
    max-width: 320px;
    font-size: var(--font-size-xs);
    font-style: italic;
    color: var(--color-text-muted);
    line-height: 1.3;
}

/* Narrow screens: keep the Categories/Targets/Methods summary tables inside the
   card so the Points column isn't cut off. Trim cell padding, flush the edge
   columns, shrink the meter, and let long names wrap hard. (.table-responsive
   still scrolls as a safety net for very long content.) */
@media (max-width: 560px) {
    .qf2-table th,
    .qf2-table td { padding: 0.45rem 0.35rem; }
    .qf2-table th:first-child,
    .qf2-table td:first-child { padding-left: 0.1rem; }
    .qf2-table th:last-child,
    .qf2-table td:last-child { padding-right: 0.1rem; }
    .qf2-meter { max-width: 150px; }
    .qf2-row-name { overflow-wrap: anywhere; }
}

/* ===================================================================
   QuickColors2.aspx (.qc2-*) — scheme gallery, fine-tune sliders, and
   the recolorable Category preview. Page-local; everything else on the
   page uses shared classes (.main-card / .stat-strip / .color-picker-grid
   / .button / .form-*). Tokens keep it dark-mode-correct automatically.
   =================================================================== */

/* Scheme gallery — gradient-swatch chips that wrap responsively. */
.qc2-schemes {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: 0.6rem;
    margin-top: 0.6rem;
}
.qc2-scheme {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    padding: 0.55rem;
    min-height: 44px;
    background: var(--color-bg-card);
    border: 1px solid var(--color-border);
    border-radius: var(--border-radius);
    color: var(--color-text);
    font-family: var(--font-family);
    font-size: var(--font-size-sm);
    text-align: left;
    cursor: pointer;
    transition: border-color var(--transition-fast), box-shadow var(--transition-fast), transform var(--transition-fast);
}
.qc2-scheme:hover {
    border-color: var(--color-primary);
    transform: translateY(-1px);
    box-shadow: var(--shadow-card-hover);
}
.qc2-scheme:focus-visible {
    outline: 2px solid var(--color-border-focus);
    outline-offset: 2px;
}
.qc2-scheme[aria-pressed="true"] {
    border-color: var(--color-accent);
    box-shadow: 0 0 0 2px var(--color-accent);
}
.qc2-scheme-swatch {
    display: block;
    height: 30px;
    border-radius: var(--border-radius-sm);
    border: 1px solid rgba(0, 0, 0, 0.15);
}
[data-theme="dark"] .qc2-scheme-swatch { border-color: rgba(255, 255, 255, 0.18); }
.qc2-scheme-name { font-weight: var(--font-weight-medium); }
.qc2-scheme-badge {
    position: absolute;
    top: 0.4rem;
    right: 0.5rem;
    font-size: 0.8rem;
    line-height: 1;
    filter: drop-shadow(0 1px 1px rgba(0, 0, 0, 0.45));
}

/* Fine-tune card + accent-themed range sliders (no shared range style exists). */
.qc2-tune > summary { cursor: pointer; }
.qc2-tune > summary::-webkit-details-marker { color: var(--color-text-muted); }
.qc2-range {
    -webkit-appearance: none;
    appearance: none;
    width: 100%;
    max-width: 420px;
    height: 8px;
    border-radius: 999px;
    background: var(--color-border);
    outline: none;
    cursor: pointer;
}
.qc2-range::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    background: var(--color-accent);
    border: 2px solid var(--color-bg-card);
    box-shadow: var(--shadow-sm);
    cursor: pointer;
}
.qc2-range::-moz-range-thumb {
    width: 22px;
    height: 22px;
    border-radius: 50%;
    background: var(--color-accent);
    border: 2px solid var(--color-bg-card);
    box-shadow: var(--shadow-sm);
    cursor: pointer;
}
.qc2-range:focus-visible { box-shadow: var(--shadow-focus-ring, 0 0 0 3px rgba(0,176,240,0.35)); }

/* Category preview — full-width colored bars, recolorable in place. */
.qc2-preview {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
}
.qc2-cat {
    border: 1px solid var(--color-border);
    border-radius: var(--border-radius-sm);
    overflow: hidden;
}
.qc2-cat-bar {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    min-height: 44px;
    padding: 0.55rem 0.75rem;
    transition: background-color var(--transition-fast), color var(--transition-fast);
}
.qc2-cat-name {
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-weight: var(--font-weight-bold);
    text-transform: uppercase;
    letter-spacing: 0.02em;
}
.qc2-cat-tools {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
}
/* Tools tint themselves from the bar's (already-legible) text color, so they
   stay visible whether the swatch resolved to light or dark text. */
.qc2-recolor,
.qc2-edit {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    border: none;
    border-radius: var(--border-radius-sm);
    background: color-mix(in srgb, currentColor 16%, transparent);
    color: inherit;
    font-size: 1rem;
    line-height: 1;
    text-decoration: none;
    cursor: pointer;
}
.qc2-recolor:hover,
.qc2-edit:hover { background: color-mix(in srgb, currentColor 30%, transparent); }
.qc2-recolor:focus-visible,
.qc2-edit:focus-visible {
    outline: 2px solid currentColor;
    outline-offset: 1px;
}
.qc2-cat-picker {
    padding: 0.65rem 0.75rem;
    background: var(--color-bg-card);
    border-top: 1px solid var(--color-border);
}
.qc2-cat-picker[hidden] { display: none; }
.qc2-custom-row {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-top: 0.5rem;
}
.qc2-custom-row label {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
}
.qc2-native-color {
    width: 2.5rem;
    height: 2.25rem;
    padding: 0;
    border: 1px solid var(--color-border);
    border-radius: var(--border-radius-sm);
    background: var(--color-bg-input);
    cursor: pointer;
}

/* ============================================================================
   MyWeek2.aspx — PacklistPRO-look "A Week with qFIT" guide (page-local)
   ----------------------------------------------------------------------------
   Structure reuses shared classes (.main-card, .card-title, .td-quicknav,
   .about-grid / -3, .empty-state, .form-*). The only bespoke pieces the shared
   sheet has no component for are the day "timeline" (an emoji-badged vertical
   rail) and the magenta must-do sample chip. Colors come from theme tokens, so
   dark mode is automatic — except .mw2-magenta, which deliberately mirrors the
   Checklist's theme-frozen #FF00FF "goal-not-met" brand cue.
   ========================================================================= */

/* Day-part timeline */
.mw2-timeline { list-style: none; margin: 0.5rem 0 0; padding: 0; }
.mw2-phase { position: relative; display: flex; gap: 0.9rem; padding: 0 0 1.4rem; }
.mw2-phase:last-child { padding-bottom: 0; }
/* Vertical rail connecting the badges. */
.mw2-phase::before {
    content: "";
    position: absolute;
    left: 17px;
    top: 2.4rem;
    bottom: -0.2rem;
    width: 2px;
    background: var(--color-border);
}
.mw2-phase:last-child::before { display: none; }
.mw2-phase-badge {
    flex: 0 0 auto;
    width: 36px;
    height: 36px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 999px;
    background: var(--color-primary-light);
    border: 1px solid color-mix(in srgb, var(--color-accent) 35%, var(--color-border));
    font-size: 1.15rem;
    line-height: 1;
    position: relative;
    z-index: 1;
}
.mw2-phase-body { flex: 1 1 auto; min-width: 0; }
.mw2-phase-body > p { margin: 0 0 0.5rem; }
.mw2-phase-body > p:last-child { margin-bottom: 0; }
.mw2-phase-body > .mw2-phase-title {
    margin: 0.35rem 0 0.3rem;
    font-weight: var(--font-weight-bold);
    font-size: var(--font-size-base);
    color: var(--color-text);
}

/* Magenta sample badge on My Week — a picture of the Checklist's goal-not-met cue,
   so it has to LOOK like one. Values copied from .chk-pill-progress.not-met in
   checklist-page.css (pill radius, the same hairline border, weight 600) rather
   than approximated: this used to be a rounded rect at --border-radius-sm with
   bold text, which read as a generic highlight instead of the badge it depicts.
   Font-size stays relative on purpose — the real badge is a fixed 12px, but this
   one sits inside a sentence and must scale with the reader's font setting.
   ⚠ If the Checklist badge is restyled, restyle this with it. */
.mw2-magenta {
    display: inline-block;
    padding: 2px 8px;
    border: 1px solid rgba(0, 0, 0, .18);
    border-radius: 999px;
    background: #FF00FF;
    color: #fff;
    font-weight: 600;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

/* Gym quick-search row. */
.mw2-search { display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center; }
/* Search box sits in an .input-clearable wrapper (in-field × clear button), so the
   row's flex sizing rides on the wrapper; the input fills it. */
.mw2-search .input-clearable { flex: 1 1 14rem; min-width: 0; }
.mw2-search .input-clearable .textbox { width: 100%; min-width: 0; margin: 0; }
.mw2-search .button { flex: 0 0 auto; white-space: nowrap; }

/* Quick-nav chips / collapsed cheat-sheet land clear of the sticky nav (§6.1). */
.mw2-anchor { scroll-margin-top: calc(var(--nav-height) + 1rem); }

/* ===================================================================
   §50  QuickFilters2.aspx (.qfl-*) — equipment filter tiles + the Quick
   Setup wizard stepper. Page-local; everything else on the page uses
   shared components (.main-card / .tip-card / .pill / .checkbox / .button
   / .form-*). All colors come from design tokens so dark mode is automatic.
   =================================================================== */

/* Wizard progress — a compact, non-interactive orientation row. */
.qfl-steps {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.4rem;
    margin: 0 0 1.1rem;
    padding: 0;
}
.qfl-step {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    padding: 0.25rem 0.7rem;
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-medium);
    color: var(--color-text-muted);
    background: var(--color-bg-card);
    border: 1px solid var(--color-border);
    border-radius: 999px;
}
.qfl-step.is-done::before {
    content: "\2713";                 /* ✓ */
    color: var(--color-success, #2e7d32);
    font-weight: 700;
}
.qfl-step.is-current {
    color: #fff;
    background: var(--color-accent);
    border-color: var(--color-accent);
    font-weight: var(--font-weight-bold);
}

/* Quick presets — the buttons themselves are shared .pill; this just lays them out. */
.qfl-presets {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin: 0 0 0.6rem;
}

/* A preset button states its own effect on a second line ("Turns all 12 off"),
   because one tap rewrites every tile instantly.
   🔴 Selector is .pill.qfl-preset (0,2,0) ON PURPOSE: Shared/styles_shared.css
   loads AFTER this file, so a bare .qfl-preset (0,1,0) would LOSE every property
   .pill also sets — align-items, padding, border-radius, font-size — and the
   sub-label would render inline beside the name. Keep the double class on any
   rule here that overrides a .pill property. */
.pill.qfl-preset {
    flex-direction: column;
    align-items: flex-start;
    gap: 0.05rem;
    padding: 0.45rem 0.95rem;
    border-radius: var(--border-radius);
    line-height: 1.3;
    text-align: left;
}
.qfl-preset-name { font-weight: var(--font-weight-bold); }
.qfl-preset-icon { margin-right: 0.3rem; }
.qfl-preset-sub {
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-normal);
    color: var(--color-text-muted);
}
/* These pills are momentary actions, never a selected state — but if one ever
   gets .active/[aria-pressed], keep the sub-label legible on the accent fill. */
.pill.qfl-preset.active .qfl-preset-sub,
.pill.qfl-preset[aria-pressed="true"] .qfl-preset-sub { color: inherit; opacity: 0.85; }

/* Live summary line at the top of the card. */
.qfl-summary {
    margin: 0 0 0.9rem;
    font-weight: var(--font-weight-bold);
    color: var(--color-text);
}

/* Equipment groups. */
.qfl-group + .qfl-group { margin-top: 1.3rem; }
.qfl-group-label {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    margin: 0 0 0.55rem;
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-bold);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--color-text-muted);
}
.qfl-group-icon { font-size: 1rem; line-height: 1; }

/* Tile grid — fills the row with as many ~11rem columns as fit, 1 col on phones. */
.qfl-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(11rem, 1fr));
    gap: 0.6rem;
}

/* A tile is a <label> wrapping a checkbox — clicking anywhere toggles it. */
.qfl-tile {
    display: flex;
    align-items: center;
    gap: 0.55rem;
    min-height: 44px;
    padding: 0.6rem 0.8rem;
    background: var(--color-bg-card);
    border: 1px solid var(--color-border);
    border-radius: var(--border-radius);
    box-shadow: var(--shadow-sm);
    cursor: pointer;
    user-select: none;
    transition: border-color var(--transition-fast),
                box-shadow var(--transition-fast),
                opacity var(--transition-fast);
}
.qfl-tile:hover { border-color: var(--color-accent); }
.qfl-tile:focus-within {
    border-color: var(--color-accent);
    box-shadow: var(--shadow-focus);
}
.qfl-tile .qfl-cb { margin: 0; flex-shrink: 0; }
.qfl-tile-name {
    font-weight: var(--font-weight-medium);
    color: var(--color-text);
    transition: color var(--transition-fast), text-decoration-color var(--transition-fast);
}

/* Off (hidden) tile — dimmed + struck through, mirroring the completed/excluded
   transition in requirements §3.6. The dashed border reads as "set aside". */
.qfl-tile.is-off {
    opacity: 0.6;
    border-style: dashed;
    box-shadow: none;
}
.qfl-tile.is-off .qfl-tile-name {
    color: var(--color-text-muted);
    text-decoration: line-through;
    text-decoration-color: var(--color-text-muted);
}

@media (prefers-reduced-motion: reduce) {
    .qfl-tile, .qfl-tile-name { transition: none; }
}

/* ============================================================================
   BulkEdit2.aspx  (.be2-*)  —  PacklistPRO-look bulk editor
   Page-specific layer over the shared design system: cards, .data-table,
   .stat-strip, .td-quicknav and .empty-state all come from styles_shared.css.
   The user's per-category colour rides in on an inline --be2-accent custom
   property (set on each <tr>), which children read for a left-border accent —
   theme-safe, unlike the legacy full-colour row backgrounds.
   ============================================================================ */

/* ── Overview / how-it-works card ───────────────────────────────────── */
.be2-overview-head { display: flex; align-items: center; gap: 0.6rem; margin-bottom: 0.5rem; }
.be2-overview-icon {
    display: inline-flex; align-items: center; justify-content: center;
    width: 2.25rem; height: 2.25rem; flex-shrink: 0;
    background: var(--color-primary-light); color: var(--color-primary);
    border-radius: 50%; font-size: 1.15rem;
}
.be2-overview-title { margin: 0; }
.be2-overview-text { margin: 0 0 0.5rem; }
.be2-overview-list { margin: 0 0 0.85rem; padding-left: 1.25rem; }
.be2-overview-list li { margin-bottom: 0.15rem; }

/* ── Collapsible cards: readable <summary> + body breathing room ────── */
details.be2-card[open] > summary.card-title { margin-bottom: 0.85rem; }
.be2-options-body, .be2-highlight-body { padding-top: 0.25rem; }

/* Count chip in a section summary (Categories 12, Targets 84, …) */
.be2-count {
    display: inline-block; margin-left: 0.3rem; padding: 0.05rem 0.5rem;
    background: var(--color-primary-light); color: var(--color-accent-dark, var(--color-primary));
    border-radius: 999px; font-size: var(--font-size-xs); font-weight: var(--font-weight-bold);
    vertical-align: middle;
}

/* ── Options & Filters layout ───────────────────────────────────────── */
.be2-opt-grid {
    display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
    gap: 0.4rem 1.25rem;
}
.be2-fieldset { border: 0; margin: 0; padding: 0.2rem 0; min-width: 0; }
.be2-fieldset > legend.input-label { padding: 0; margin-bottom: 0.3rem; }
.be2-fieldset-wide { grid-column: 1 / -1; }
.be2-fieldset-admin {
    grid-column: 1 / -1;
    border-top: 1px dashed var(--color-border); padding-top: 0.55rem; margin-top: 0.2rem;
}
.be2-checks { display: flex; flex-wrap: wrap; gap: 0.1rem 1.1rem; }
.be2-checks .check-row { flex: 0 1 auto; }
.be2-options-hint { align-self: center; }

/* ── Grid toolbar (expand / collapse all) ───────────────────────────── */
.be2-grid-toolbar { display: flex; flex-wrap: wrap; gap: 0.4rem; margin-bottom: 0.5rem; }
.be2-grid-toolbar:empty { display: none; }

/* ── The editable grid ──────────────────────────────────────────────── */
.be2-table { font-size: var(--font-size-sm); }
.be2-table th, .be2-table td { padding: 0.4rem 0.55rem; }
.be2-table .be2-name { font-weight: var(--font-weight-medium); min-width: 8rem; }
.be2-table .be2-name .link { word-break: break-word; }
.be2-table select.textbox {
    width: auto; min-width: 4.25rem; height: auto;
    padding: 0.3rem 1.5rem 0.3rem 0.5rem; font-size: var(--font-size-sm);
}
.be2-cell { text-align: center; white-space: nowrap; }
.be2-table thead th.be2-th-v, .be2-table thead th.be2-th-p, .be2-table thead th.be2-th-o,
.be2-table thead th.be2-th-h, .be2-table thead th.be2-th-r, .be2-table thead th.be2-th-n,
.be2-table thead th.be2-th-u, .be2-table thead th.be2-th-d { text-align: center; }

/* Per-category colour as a left-border accent (carried by --be2-accent) */
.be2-row > .be2-name { border-left: 4px solid var(--be2-accent, transparent); }
.be2-grouprow > .be2-groupcell {
    background: color-mix(in srgb, var(--color-bg) 55%, transparent);
    border-left: 4px solid var(--be2-accent, var(--color-border));
    padding-top: 0.5rem; padding-bottom: 0.5rem;
}
.be2-groupname {
    font-weight: var(--font-weight-bold); letter-spacing: 0.02em;
    text-transform: uppercase; font-size: var(--font-size-xs); color: var(--color-text-muted);
}

/* Compact S / T / H visibility control (rendered as a RadioButtonList) */
.be2-vis { white-space: nowrap; display: inline-flex; align-items: center; }
.be2-vis label { margin: 0 0.5rem 0 0.1rem; }
.be2-vis label:last-of-type { margin-right: 0; }

/* ── Sticky save bar ────────────────────────────────────────────────── */
.be2-savebar {
    position: sticky; bottom: 0; z-index: 5;
    margin-top: 1rem; padding: 0.6rem 0;
    background: color-mix(in srgb, var(--color-bg) 90%, transparent);
    backdrop-filter: blur(4px);
    border-top: 1px solid var(--color-border);
}

/* Autosave status. There is no Save button — this is the whole feedback
   channel, so it has to be legible at rest, not only mid-transition. Colours
   come from the semantic tokens so dark mode follows automatically. */
.be2-savestate {
    align-self: center;
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
    display: inline-flex; align-items: center; gap: 0.35rem;
    min-height: 1.5rem;                 /* reserve the row so the bar can't jump */
    transition: color 0.15s ease-in-out;
}
.be2-savestate.is-saving { color: var(--color-text-muted); }
.be2-savestate.is-saved  { color: var(--color-success, #2e7d32); font-weight: var(--font-weight-medium); }
.be2-savestate.is-error  { color: var(--color-danger, #c62828);  font-weight: var(--font-weight-bold); }

/* Per-cell state. The ring is drawn with box-shadow rather than border so the
   cell never changes size mid-edit and the column stops shifting under the
   pointer. */
.be2-cell.is-saving { box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--color-text-muted) 45%, transparent); }
.be2-cell.is-saved  { box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--color-success, #2e7d32) 55%, transparent); }
.be2-cell.is-error  {
    box-shadow: inset 0 0 0 2px var(--color-danger, #c62828);
    background: color-mix(in srgb, var(--color-danger, #c62828) 10%, transparent);
}
/* The saved ring fades out on its own; error stays until the retry succeeds. */
.be2-cell.is-saved { transition: box-shadow 0.6s ease-in-out 1.2s; }
.be2-cell.is-saved:not(:hover) { box-shadow: inset 0 0 0 2px transparent; }

/* A parent row the server lifted (Category/Target raised to match a child).
   Flashed so the user sees a row they didn't touch has legitimately changed. */
.be2-cell.is-promoted {
    animation: be2PromoteFlash 1.2s ease-in-out;
}
@keyframes be2PromoteFlash {
    0%, 100% { background: transparent; }
    25%      { background: color-mix(in srgb, var(--color-accent, #00B0F0) 28%, transparent); }
}

@media (prefers-reduced-motion: reduce) {
    .be2-cell.is-promoted { animation: none; background: color-mix(in srgb, var(--color-accent, #00B0F0) 18%, transparent); }
    .be2-cell.is-saved { transition: none; }
}

@media (max-width: 575px) {
    .be2-savebar { padding: 0.5rem 0.25rem; }
    .be2-savebar .button { flex: 1 1 auto; }
    .be2-savestate { flex: 1 1 100%; order: 3; }
    .be2-table th, .be2-table td { padding: 0.35rem 0.4rem; }
}

/* ===================================================================
   §56  Muscles2.aspx (.mus-*) — PacklistPRO-look muscle guide.
   Page-local chrome only: the filter bar, the region section headings,
   and the per-muscle card (with an amber treatment for the commonly-
   overlooked stabilizers). Everything else — hero, stat strip, quick-nav
   chips, grids, pills, badges, tips card — reuses the shared design
   system, so dark mode is automatic and there are no inline styles.
   =================================================================== */

/* ── Region sections + headings ─────────────────────────────────────── */
.mus-section { scroll-margin-top: calc(var(--nav-height) + 1rem); margin-bottom: var(--section-gap); }
.mus-section[hidden] { display: none; }
.mus-region-title { margin: 0 0 0.15rem; }
.mus-region-sub { margin: 0 0 0.85rem; }
#mus-find { scroll-margin-top: calc(var(--nav-height) + 1rem); }

/* ── Filter bar (region pills + "Often missed" toggle) ──────────────── */
.mus-filterbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.4rem;
    margin-top: 0.75rem;
}
/* Thin divider between the region group and the standalone toggle. Collapses
   to a full-width break on narrow screens so the toggle starts a new row. */
.mus-filter-sep {
    width: 1px;
    align-self: stretch;
    min-height: 1.5rem;
    background: var(--color-border);
    margin: 0 0.25rem;
}
/* The "Often missed only" toggle adopts the amber theme when active, tying it
   to the flagged cards instead of the default accent fill. */
.mus-pill-flag.active,
.mus-pill-flag[aria-pressed="true"] {
    background-color: var(--color-warning);
    border-color: var(--color-warning);
    color: #fff;
}
.mus-noresults { margin-top: 0.85rem; }

/* ── Muscle cards ───────────────────────────────────────────────────── */
/* Slightly tighter than the default .about-grid so the directory stays dense
   and scannable rather than sprawling. */
.mus-grid { gap: 0.85rem; }
.mus-card {
    background: var(--color-bg-card);
    border: 1px solid var(--color-border);
    border-radius: var(--border-radius);
    box-shadow: var(--shadow-sm);
    padding: var(--card-padding);
    transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
}
.mus-card[hidden] { display: none; }
.mus-card:hover {
    border-color: color-mix(in srgb, var(--color-accent) 25%, var(--color-border));
    box-shadow: var(--shadow-card-hover, var(--shadow-md));
}
/* Commonly-overlooked muscles get an amber left edge so they read as a group
   wherever they appear, and so the "Often missed" filter has a visual payoff. */
.mus-card.overlooked { border-left: 3px solid var(--color-warning); }

.mus-card-head {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 0.35rem 0.5rem;
    margin-bottom: 0.35rem;
}
.mus-name {
    margin: 0;
    font-size: var(--font-size-base);
    font-weight: var(--font-weight-bold);
    line-height: 1.25;
    color: var(--color-text);
}
.mus-alias {
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-normal);
    color: var(--color-text-muted);
}
/* Push the "Often missed" badge to the right edge of the card head. */
.mus-flag { margin-left: auto; flex: 0 0 auto; align-self: center; }

.mus-where { margin: 0 0 0.5rem; }
.mus-train { margin: 0; color: var(--color-text); }

/* ===================================================================
   §57  HeartRateZones2.aspx (.hrz2-*) — PacklistPRO-look redesign of
   the Heart Rate Zones calculator. Page-local chrome only: the three-up
   birthday row, the collapsible "Fine-Tune" sub-section, and the five
   color-coded training-zone cards (left rail + number badge + BPM
   value). The hero stat tiles, calculator form, and reference
   <details> reuse shared components (Shared/styles_shared.css).
   Each zone exposes its own --hrz2-color; the badge tint, ring, percent
   pill, and left rail are color-mixed from it, while the number/percent
   text stays on a theme token — so every zone is legible in both light
   and dark mode without per-zone overrides.
   =================================================================== */
.hrz2-anchor { scroll-margin-top: calc(var(--nav-height) + 1rem); }

/* ── Birthday: month / day / year share one row, wrap on tiny screens ── */
.hrz2-bday {
    display: flex;
    flex-wrap: wrap;
    gap: 0.6rem;
}
.hrz2-bday .form-group {
    flex: 1 1 6rem;
    min-width: 0;
    margin-bottom: 0;
}
.hrz2-bday .dropdown { width: 100%; }

/* ── "Fine-Tune (Optional)" disclosure inside the calculator card ────── */
.hrz2-details {
    margin-top: 1rem;
    padding-top: 0.25rem;
    border-top: 1px solid var(--color-border);
}
.hrz2-subsummary {
    cursor: pointer;
    list-style: none;
    display: flex;
    align-items: center;
    gap: 0.45rem;
    padding: 0.6rem 0 0.2rem;
    font-weight: var(--font-weight-bold);
    color: var(--color-text);
}
.hrz2-subsummary::-webkit-details-marker { display: none; }
.hrz2-subsummary::before {
    content: "\25B8";                 /* ▸ */
    color: var(--color-text-muted);
    font-size: 0.85em;
}
.hrz2-details[open] > .hrz2-subsummary::before { content: "\25BE"; }   /* ▾ */

/* ── The five zone cards ────────────────────────────────────────────── */
.hrz2-zones {
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
}

/* cool → hot; mid-bright hues read well as a rail/ring in both themes */
.hrz2-zone.z1 { --hrz2-color: #6b7a90; }   /* warm-up   — slate  */
.hrz2-zone.z2 { --hrz2-color: #2f80ed; }   /* easy      — blue   */
.hrz2-zone.z3 { --hrz2-color: #27ae60; }   /* aerobic   — green  */
.hrz2-zone.z4 { --hrz2-color: #f2994a; }   /* threshold — orange */
.hrz2-zone.z5 { --hrz2-color: #eb5757; }   /* maximum   — red    */

.hrz2-zone {
    display: flex;
    align-items: center;
    gap: 0.85rem;
    padding: 0.75rem 0.9rem;
    background: var(--color-bg-card);
    border: 1px solid var(--color-border);
    border-left: 0.4rem solid var(--hrz2-color, var(--color-border));
    border-radius: var(--border-radius);
    box-shadow: var(--shadow-sm);
}

/* number badge — colored ring + tint, text on a theme token for contrast */
.hrz2-num {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.5rem;
    height: 2.5rem;
    border-radius: 50%;
    background: color-mix(in srgb, var(--hrz2-color) 16%, var(--color-bg-card));
    border: 2px solid var(--hrz2-color);
    color: var(--color-text);
    font-weight: var(--font-weight-bold);
    font-size: 1.25rem;
    line-height: 1;
}

.hrz2-zone-body { flex: 1 1 auto; min-width: 0; }
.hrz2-zone-head {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 0.35rem 0.55rem;
    margin-bottom: 0.15rem;
}
.hrz2-zone-name {
    font-weight: var(--font-weight-bold);
    color: var(--color-text);
}
.hrz2-pct {
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-bold);
    color: var(--color-text);
    background: color-mix(in srgb, var(--hrz2-color) 16%, var(--color-bg-card));
    border: 1px solid color-mix(in srgb, var(--hrz2-color) 35%, transparent);
    border-radius: 999px;
    padding: 0.05rem 0.5rem;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}
.hrz2-feel { margin: 0 0 0.1rem; color: var(--color-text); }
.hrz2-benefit { margin: 0; font-size: var(--font-size-sm); color: var(--color-text-muted); }
.hrz2-tag {
    margin: 0.25rem 0 0;
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-bold);
    color: var(--color-success);
}

/* the calculated BPM range, right-aligned */
.hrz2-zone-value {
    flex: 0 0 auto;
    text-align: right;
    min-width: 7.5rem;
}
.hrz2-bpm {
    font-weight: var(--font-weight-bold);
    color: var(--color-text);
    font-variant-numeric: tabular-nums;
}

/* On phones the BPM value drops below the text, aligned under the body. */
@media (max-width: 575px) {
    .hrz2-zone { flex-wrap: wrap; }
    .hrz2-zone-value {
        flex-basis: 100%;
        text-align: left;
        min-width: 0;
        padding-left: 3.35rem;        /* clears the number badge + gap */
    }
}

/* ── 56. Admin.aspx — PacklistPRO-look admin console ──────────────────
   Operator's toolbox. Everything structural rides shared classes:
   .stat-strip, .td-quicknav, .main-card + summary.card-title (collapsible
   chevron), .badge, .button*, .form-*, .about-grid (the action grid),
   .heading (auto-divided sub-section labels), .small-dim-text (tile
   descriptions). These three page-scoped rules only add what shared
   doesn't cover: a danger-tinted maintenance card, a warning-tinted
   server-confirm box, and the action-tile shell that lets a long
   destructive button label wrap instead of overflowing. All colors are
   theme tokens, so dark mode is automatic. */

/* Maintenance card — accent the top edge in the delete color so its danger
   is obvious even while collapsed. */
.adm2-card-danger { border-top: 3px solid var(--color-delete-btn); }

/* Server-side consent box — amber/warning surface it can't be missed. */
.adm2-consent {
    margin: 0.25rem 0 1rem;
    padding: 0.7rem 0.85rem;
    background: var(--color-warning-bg);
    border: 1px solid var(--color-warning-border);
    border-radius: var(--border-radius);
}

/* Each action = a bordered tile (sits in a shared .about-grid cell): a
   full-width, wrapping button above its one-line .small-dim-text caption. */
.adm2-op {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    padding: 0.75rem;
    background: var(--color-bg);
    border: 1px solid var(--color-border);
    border-radius: var(--border-radius);
}
.adm2-op > .button {
    width: 100%;
    white-space: normal;          /* let long labels wrap instead of overflow */
    text-align: center;
}

/* Center the Google Sign-In (GIS) button — its rendered button is otherwise left-aligned. */
.g-signin-center { display: flex; justify-content: center; }

/* Home "Did you log everything?" card — two columns so the "N items logged"
   counts line up vertically regardless of how wide each day label is. */
.home-lightdays { border-collapse: collapse; }
.home-lightdays td { padding: 2px 0; vertical-align: baseline; }
/* Buffer before the count column. Compound selector (td.home-lightdays-count) so it
   outranks ".home-lightdays td" above — whose "padding: 2px 0" shorthand would
   otherwise zero out this left padding. */
.home-lightdays td.home-lightdays-count { padding-left: 3rem; white-space: nowrap; }
/* ============================================================================
   Per-page "lightbulb" feedback panel (page-feedback.js).
   The icon sits just after the .page-title; the panel is a centered modal that
   (by spec) does NOT close on outside click. Ported from qMEET.
   ============================================================================ */
.pf-bulb {
    background: none; border: none; cursor: pointer;
    font-size: 1.05rem; line-height: 1; padding: 2px 6px; margin-left: 6px;
    vertical-align: middle; border-radius: 6px; opacity: .8;
    transition: opacity .15s ease, transform .15s ease, background-color .15s ease;
}
.pf-bulb:hover { opacity: 1; transform: scale(1.12); background-color: rgba(127,127,127,.15); }
.pf-bulb:focus-visible { outline: 2px solid var(--color-primary, #4a90d9); outline-offset: 2px; }

.pf-overlay {
    position: fixed; inset: 0; background-color: rgba(0,0,0,.45);
    z-index: 9995; display: flex; align-items: flex-start; justify-content: center;
    padding: 5vh 1rem; overflow-y: auto;
}
.pf-overlay[hidden] { display: none; }
body.pf-open { overflow: hidden; }

.pf-panel {
    position: relative; width: 100%; max-width: 520px;
    background: var(--color-bg-card, #fff); color: var(--color-text, #222);
    border-radius: 12px; box-shadow: var(--shadow-xl, 0 10px 40px rgba(0,0,0,.4));
    padding: 1.25rem 1.25rem 1rem; box-sizing: border-box;
}
.pf-close {
    position: absolute; top: .5rem; right: .6rem; background: none; border: none;
    font-size: 1.5rem; line-height: 1; cursor: pointer; color: var(--color-text, #222);
    opacity: .7; padding: 2px 6px; border-radius: 6px;
}
.pf-close:hover { opacity: 1; background-color: rgba(127,127,127,.15); }
.pf-heading { margin: 0 1.5rem .75rem 0; font-size: 1.2rem; }
.pf-text { width: 100%; box-sizing: border-box; resize: vertical; min-height: 5rem; }
.pf-screens-label { margin-top: .75rem; }
.pf-existing { margin: .25rem 0 .5rem; }
.pf-none { font-style: italic; }
.pf-shot {
    display: flex; align-items: center; gap: .5rem; padding: .25rem 0;
    border-bottom: 1px solid var(--color-border, rgba(127,127,127,.2));
}
.pf-shot .link { flex: 1 1 auto; word-break: break-all; }
.pf-shot .pf-del { flex: 0 0 auto; line-height: 1; padding: 2px 8px; }
.pf-uploadrow { display: flex; align-items: center; gap: .5rem; flex-wrap: nowrap; margin-top: .25rem; }
/* Let the input grow to fit its native "Choose Files" button (the fixed 2.5rem
   shared height clipped the button's bottom edge); keep the Upload button beside
   it on the same row when there's room. */
.pf-uploadrow .file-picker { flex: 1 1 auto; min-width: 0; height: auto; }
.pf-uploadrow .pf-upload { flex: 0 0 auto; white-space: nowrap; }
.pf-filecount { min-height: 1.1em; margin: .35rem 0 0; }
.pf-actions {
    display: flex; justify-content: space-between; align-items: center;
    gap: .5rem; margin-top: 1rem;
}

/* ── Duplicate-name warning (EditTarget / EditMethod Add pages) ───────────────
   Rendered by Scripts/dup-check.js and the server-side backstop; reuses the
   shared .alert-panel.warning skin, with a little list styling + an attention
   flash when the user tries to Add past an unconfirmed possible duplicate. */
#dupWarnHost { margin: .75rem 0; }
#dupWarnHost:empty { display: none; margin: 0; }
.dup-warn .dup-warn-head { margin: 0 0 .4rem; }
.dup-warn-list { margin: .25rem 0 .5rem 1.25rem; padding: 0; }
.dup-warn-list li { margin: .15rem 0; }
.dup-warn-foot { margin: .4rem 0 .6rem; }
.dup-warn [data-dup-confirm] { margin-top: .25rem; }
.dup-warn-flash { animation: qfitDupFlash .9s ease-in-out 2; }
@keyframes qfitDupFlash {
    0%, 100% { box-shadow: 0 0 0 0 rgba(220, 150, 20, 0); }
    50%      { box-shadow: 0 0 0 4px rgba(220, 150, 20, .45); }
}

/* ── Email-verification nudge modal (Site.Master #email-verify-modal) ──────────
   Reuses the shared .modal-overlay/.modal-box + .post-login-close shell; these
   rules just center the envelope glyph/title and space the inline status line.
   Ported from qMEET's Content/styles.css 2026-07-29. */
.email-verify-box { max-width: 460px; text-align: center; }
.email-verify-box .modal-title { text-align: center; }
.email-verify-box p { margin: 0 0 0.75rem; }
.email-verify-icon { font-size: 2.6rem; line-height: 1; margin: 0.25rem 0 0.6rem; }
.email-verify-status { margin: 0.75rem 0 0; text-align: left; }
.email-verify-box .modal-footer { justify-content: center; }

/* ============================================================================
   §58  Onboarding wizard chrome — "Step N of 5" bar + the "<page> is waiting"
   note. Rendered by Site.Master.vb ConfigureSetupWizardBar into a single
   Literal at the top of <main>, so these rules apply on all five wizard pages
   (plus EditGoals, which shows the bar with no step marked current).
   Uses the shared design tokens only — dark mode follows automatically from
   the [data-theme="dark"] variable block; no separate dark rules needed.
   ============================================================================ */
.setup-return-note {
    display: flex; align-items: flex-start; gap: 0.6rem;
    margin: 0 0 0.75rem; padding: 0.7rem 0.9rem;
    border: 1px solid var(--color-accent, #00B0F0);
    border-left-width: 4px;
    border-radius: 8px;
    background: var(--color-bg-card, #fff);
    color: var(--color-text, #222);
    font-size: 0.95rem; line-height: 1.4;
}
.setup-return-icon { flex: 0 0 auto; color: var(--color-accent, #00B0F0); font-weight: 700; }

.setup-wizard-bar {
    margin: 0 0 1rem; padding: 0.7rem 0.9rem;
    border: 1px solid var(--color-border, #ddd);
    border-radius: 8px;
    background: var(--color-bg-card, #fff);
}
.swb-head {
    display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.5rem;
    margin: 0 0 0.6rem;
}
.swb-step {
    font-weight: 700; color: var(--color-accent, #00B0F0);
    text-transform: uppercase; letter-spacing: .04em; font-size: 0.8rem;
}
.swb-step-optional { color: var(--color-text-muted, #666); }
.swb-name { font-weight: 600; }
/* Pushed right on wide screens, wraps under on narrow ones. */
.swb-count { margin-left: auto; color: var(--color-text-muted, #666); font-size: 0.85rem; }

/* Equal-width columns so the row reads as a progress track, not a list. */
.swb-steps {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: 0.35rem;
    list-style: none; margin: 0; padding: 0;
    counter-reset: none;
}
/* The accent bullets styles_shared.css puts on every <ol>/<ul> via ::marker would
   show through the grid layout — suppress them for this list only. */
.swb-steps > li::marker { content: none; }

.swb-dot {
    display: flex; flex-direction: column; align-items: center; gap: 0.3rem;
    padding: 0.4rem 0.2rem 0.3rem;
    border-top: 3px solid var(--color-border, #ddd);
    text-align: center;
}
.swb-dot.is-done { border-top-color: var(--color-success, #28a745); }
.swb-dot.is-current { border-top-color: var(--color-accent, #00B0F0); }

.swb-dot-num {
    display: inline-flex; align-items: center; justify-content: center;
    width: 1.6rem; height: 1.6rem; border-radius: 50%;
    font-size: 0.8rem; font-weight: 700; line-height: 1;
    border: 1px solid var(--color-border, #ddd);
    color: var(--color-text-muted, #666);
}
.swb-dot.is-done .swb-dot-num {
    border-color: var(--color-success, #28a745);
    color: var(--color-success, #28a745);
}
.swb-dot.is-current .swb-dot-num {
    border-color: var(--color-accent, #00B0F0);
    background: var(--color-accent, #00B0F0);
    color: #fff;
}
.swb-dot-label {
    font-size: 0.72rem; line-height: 1.2;
    color: var(--color-text-muted, #666);
    overflow-wrap: anywhere;
}
.swb-dot.is-current .swb-dot-label { color: var(--color-text, #222); font-weight: 600; }

/* Phones: the five labels can't sit side by side legibly, so drop to numbers
   only and let .swb-head carry the current step's name. */
@media (max-width: 520px) {
    .swb-dot-label { display: none; }
    .swb-dot { padding: 0.35rem 0.1rem 0.25rem; }
    .swb-count { margin-left: 0; flex-basis: 100%; }
}

/* "Skip setup for now" escape, rendered under the wizard bar on the five wizard
   pages while any step is unconfirmed. Deliberately quiet — it is an escape hatch,
   not a competing call to action against the step's own Next button. */
.setup-skip-row {
    display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.5rem;
    margin: -0.5rem 0 1rem; padding: 0 0.2rem;
}
.setup-skip-link {
    color: var(--color-text-muted, #666);
    text-decoration: underline; font-size: 0.9rem; cursor: pointer;
}
.setup-skip-link:hover, .setup-skip-link:focus-visible { color: var(--color-accent, #00B0F0); }
.setup-skip-note { color: var(--color-text-muted, #666); font-size: 0.82rem; }

/* ---- Toast action button (the "Undo" on an un-tick) ----------------------
   The toast component itself lives in Shared/styles_shared.css (.site-toast,
   .site-toast-msg, .site-toast-close). Only qFIT's showToast() renders an action
   button inside a toast, so this one part is kept LOCAL rather than pushed into
   the cross-site sheet -- move it there if a sister site grows the same affordance.
   qFIT loads Content/styles.css BEFORE styles_shared.css, so a local rule loses
   the cascade on a tie; this class is new and unique, so there is no tie.

   Colors are deliberately currentColor: the toast palette is fixed and
   theme-independent (lime / red / orange / cyan backgrounds with #111 or #fff
   text), so inheriting the parent's color is the only way to stay legible on all
   four without restating the palette. The toast sets padding-right: 2.25rem for
   the absolutely-positioned close button, so this flex sibling never overlaps it. */
.site-toast-action {
    flex: 0 0 auto;
    align-self: center;
    margin: -0.15rem 0;
    padding: 0.15rem 0.6rem;
    border: 1px solid currentColor;
    border-radius: var(--border-radius, 6px);
    background: transparent;
    color: currentColor;
    font: inherit;
    font-weight: 700;
    line-height: 1.4;
    cursor: pointer;
    white-space: nowrap;
    transition: background-color var(--transition-fast, 0.15s);
}
.site-toast-action:hover { background: rgba(0, 0, 0, 0.12); }
.site-toast-action:focus-visible { outline: 2px solid currentColor; outline-offset: 2px; }
/* Disabled after one click so a double-tap can't fire the undo twice. */
.site-toast-action:disabled { opacity: 0.5; cursor: default; }

/* ── Save-model notice — MOVED OUT OF THIS FILE 2026-07-31 ────────────────
   `.save-model` and its five children now live in Shared/styles_shared.css, and
   the markup comes from Shared\SaveModelNotice.vb (linked into all three .vbproj).
   The component stopped being qFIT-only: PacklistPRO had grown its own rival
   version of the same idea (`.options-save-model`, a different look in a different
   sheet) and qMEET had none at all, which is precisely the inconsistency the line
   is supposed to cure — so it could not go on living in one site's sheet.

   ⚠ DO NOT RE-ADD A LOCAL `.save-model*` RULE HERE. Shared/styles_shared.css loads
   AFTER this file on qFIT, so a local copy would lose the cascade at equal
   specificity and read as "my edit did nothing"; raise the specificity to win and
   you have silently un-shared the one component whose entire job is being identical
   on all three sites. Style it in the shared sheet or not at all.

   The old variant slugs changed with the move: [data-save-model="tap"] → "auto",
   ["apply"] → "deferred". Anything keyed off the old values needs updating. */

/* ===================================================================
   §60  "Which day does this checkbox write to?" notice (.logdate)
   ===================================================================
   ONE line directly above any group of checkboxes that writes a completion
   row, naming the day that group logs to. Rendered ONLY by
   App_Code/Helpers/LogDateNotice.Render — if you find this markup hand-built
   in an .aspx, that copy is the bug.

   qFIT has FOUR independent date rules (Checklist's own picker; "always
   today" on Dashboard + Home; ToDo's own picker; Session("Day") on the
   Category/Target/Method detail pages) and a checkbox on every one of them.
   Only the Checklist ever said so. This is the sentence the other three were
   missing.

   TWO VARIANTS, and unlike .save-model (now in the shared sheet) they are NOT the
   same colour. The plain variant is a standing fact ("this logs to today")
   and must stay quiet enough to live on a page permanently. `.is-warn` fires
   only when the user's Checklist is genuinely parked on a different day —
   a state they chose, that these controls ignore, and that silently sends
   their tick to the wrong date. That is a warning, and it has to out-rank
   the surrounding card at a glance.

   🔴 Do NOT re-home this on .alert-panel. That component silently loses any
   `display:flex` a variant sets (a later shared rule wins), which is exactly
   the icon+body layout this needs. Same trap, same reason, as .save-model.

   Lives in the qFIT sheet, not Shared/styles_shared.css: the completion model
   these dates describe is qFIT-only. ⚠ Shared/styles_shared.css loads AFTER
   this file, so a `.logdate*` name added there would win — keep these names
   unique to this block. */
.logdate {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    margin: 0 0 0.75rem;
    padding: 0.5rem 0.7rem;
    background-color: var(--color-info-bg, #e1f5fe);
    border: 1px solid var(--color-info-border, #81d4fa);
    border-left-width: 4px;
    border-radius: var(--border-radius, 10px);
    color: var(--color-text, #1a1f2e);
    font-size: var(--font-size-sm, 0.875rem);
    line-height: 1.4;
}
.logdate-icon {
    flex: 0 0 auto;
    font-size: 1rem;
    line-height: 1.4;
}
/* min-width:0 so a long sentence wraps inside the flex row instead of stretching it. */
.logdate-body { min-width: 0; }
.logdate-main { display: block; }
/* The day itself. Kept on its own class so the one string a user scans for is
   findable in the DOM and can be re-written client-side where the write date
   comes from the browser's clock rather than the server's (Home.aspx). */
.logdate-day { white-space: nowrap; }
.logdate-detail {
    display: block;
    margin-top: 0.15rem;
    font-size: var(--font-size-xs, 0.75rem);
}

/* Mismatch: the Checklist is parked on a day these controls will not use. */
.logdate.is-warn {
    background-color: var(--color-warning-bg, #fff3e0);
    border-color: var(--color-warning-border, #ffcc80);
}
/* 🔴 NOT var(--color-warning) for the body text — and note that .todo2-otherday a few
   hundred lines up DOES set exactly that, which is the pattern not to copy. Measured
   on this component's own background: the light warning ink #e65100 on
   --color-warning-bg (#fff3e0) is 3.46:1. That is under AA (4.5:1) for BOTH lines
   here, not just the small one — it only clears the 3:1 large-text bar, and neither
   0.875rem nor 0.75rem is large text. The normal ink #1a1f2e on the same amber
   measures 14.97:1. So the BOX is amber and the TEXT stays the normal high-contrast
   ink; the heavier weight on the main line carries the emphasis instead of colour.
   (Same class of fix, and the same reason, as .save-model-detail's override in
   Shared/styles_shared.css.)
   Verified in-page in both themes: 14.97:1 light, 11.47:1 dark. */
.logdate.is-warn .logdate-main { font-weight: var(--font-weight-bold, 600); }
.logdate.is-warn .logdate-detail { color: var(--color-text, #1a1f2e); }
[data-theme="dark"] .logdate.is-warn .logdate-detail { color: var(--color-text, #e8eaed); }

/* ===================================================================
   §61  "Points are recalculated, checkbox counts are not"
        (.qf2-measure-note on Charts, .be2-points-note on Bulk Edit)
   ===================================================================
   Both render PointsHelper.POINTS_RECALC_MESSAGE verbatim — one sentence,
   two surfaces, one constant. Styled apart because they sit on different
   backgrounds: the Charts note is inside a .main-card, the Bulk Edit one is
   on the bare page. That drives the colour split called out below — do not
   "unify" them onto one rule.

   WHY IT EXISTS: Charts multiplies past completions by the point value that
   is on the definition row RIGHT NOW (qFITCustom*.Points — qFITTracking has
   no points column to snapshot into), so editing Points in Bulk Edit rewrites
   the whole historical Points chart. The checkbox series is SUM(TimesCompleted)
   and genuinely is history. Nothing on either page said so.

   Deliberately NOT .logdate / .alert-panel / .inline-tip: this is a standing
   footnote about how a number is derived, not a state change, not a warning,
   and not something to dismiss. It must be quiet enough to sit on the page
   permanently — so it inherits the muted treatment the legend directly above
   it already uses, rather than introducing a coloured box under every chart.

   COLOUR: --color-text-muted on the CARD background, which is the pairing that
   token is sized for (and exactly what .qf2-legend two rules up already does).
   Do not re-home this onto --color-info-bg: muted ink on the info fill measures
   4.13:1, under AA — see the §60 note above for the same trap. */
.qf2-measure-note {
    margin: -0.25rem 0 0.75rem;
    font-size: var(--font-size-xs, 0.75rem);
    line-height: 1.45;
    color: var(--color-text-muted, #6b7280);
    max-width: 68ch;
}
[data-theme="dark"] .qf2-measure-note { color: var(--color-text-muted, #b1b5bb); }

/* Bulk Edit: one line above the grid, shown only while the Points column is on.
   🔴 Do NOT move this sentence into the Points <th>. Measured in-page on the
   owner's 768-row grid: as a block inside that header cell it took the Points
   column from 252px to 508px and cost the activity-NAME column 154px (519 ->
   365) in EVERY section, because auto table layout has to fit the sentence into
   one column. Capping it narrower only traded that for a 17-line, 275px-tall
   header. Out here it costs the table nothing and is stated once instead of
   three times; the <th> carries the same sentence as a title tooltip, which is
   the pattern the Visibility column in that header already uses.

   🔴 COLOUR: --color-text, NOT --color-text-muted — and that is the opposite of
   .qf2-measure-note above, deliberately. That note sits inside a .main-card,
   whose background is fixed, so muted ink measures 4.69:1 light / 6.13:1 dark
   there. THIS one sits on the PAGE background, and the page background is a
   user preference with 60 options ([data-bg] in styles_shared.css, which sets
   --color-bg and nothing else). Muted ink is not sized for all of them: on the
   light "gray" option (#e7e9ec) #6c757d computes to 3.86:1, under AA. Only
   --color-text is guaranteed to pair with --color-bg across the whole palette
   in both themes. The note stays visually secondary through its smaller size
   and the bold label, not through a colour that some backgrounds swallow. */
.be2-points-note {
    margin: 0 0 0.75rem;
    font-size: var(--font-size-sm, 0.875rem);
    line-height: 1.45;
    color: var(--color-text, #1a1f2e);
    max-width: 78ch;
}
.be2-points-note-label { font-weight: var(--font-weight-bold, 600); }
[data-theme="dark"] .be2-points-note { color: var(--color-text, #e8eaed); }

/* ============================================================
   53. NAV DESCRIPTORS  (.nav-link-desc / -main / -sub)
   ============================================================
   A one-line descriptor under an ambiguous nav entry, so a new user is told
   what a destination is at the point of choice rather than after clicking.
   Ported verbatim in intent from qMEET/Content/styles.css §15 — SAME class
   names and SAME markup shape, deliberately, so NU2-06 can extend this to the
   rest of the nav (and hoist both copies into Shared/styles_shared.css)
   without a second mechanism to reconcile. Today exactly one entry uses it:
   Learn > 📖 Glossary (Site.Master).

   ⚠ THE SELECTOR IS ONE CLASS MORE SPECIFIC THAN qMEET'S ON PURPOSE — do not
   "tidy" it back to qMEET's `.nav-dropdown .nav-link.nav-link-desc` (0,3,0).
   qFIT carries a mobile override that qMEET does not:
       §51a  @media (max-width: 991.98px) { .site-nav .nav-menu .nav-link {
                 display: flex; align-items: center; … } }
   which is also (0,3,0) and would tie — leaving the outcome to source order
   and, when it won, centering both lines instead of left-aligning them under
   992 px. `.site-nav .nav-menu .nav-link.nav-link-desc` (0,4,0) beats it
   outright, and one selector covers dropdown children AND root-level links
   (qMEET needs two only because its override sits elsewhere).

   ⚠ It must also out-specify the SHARED sheet, which qFIT loads LAST:
   styles_shared.css sets `align-items:center` + `white-space:nowrap` on
   `.nav-link` (0,1,0) and a larger font on `.nav-menu > .nav-item > .nav-link`
   (0,3,0). Both are beaten by (0,4,0), so load order is not load-bearing here.

   White-on-dark is correct in BOTH themes: the nav bar is dark in light mode
   too (styles_shared.css gives .nav-link `color: rgba(255,255,255,0.85)`
   unconditionally), so there is no [data-theme="dark"] variant to write. */
.site-nav .nav-menu .nav-link.nav-link-desc {
    flex-direction: column;
    align-items: flex-start;
    gap: 0.125rem;
    white-space: normal;
    line-height: 1.3;
}
/* The label row. Keeps emoji + text (and any future count badge) on one line —
   in a column flex container a sibling element would otherwise become its own
   row and drop underneath the label. */
.site-nav .nav-menu .nav-link.nav-link-desc .nav-link-main {
    display: flex;
    align-items: center;
    gap: 0.375rem;
}
.site-nav .nav-menu .nav-link.nav-link-desc .nav-link-sub {
    font-size: 0.8125rem;
    font-weight: var(--font-weight-normal, 400);
    color: rgba(255,255,255,0.55);
    white-space: normal;
}
/* Keep the descriptor readable once the row takes the accent fill on hover or
   as the current page (.active also bolds the anchor, which the span inherits). */
.site-nav .nav-menu .nav-link.nav-link-desc:hover .nav-link-sub,
.site-nav .nav-menu .nav-link.nav-link-desc.active .nav-link-sub {
    color: rgba(255,255,255,0.85);
    font-weight: var(--font-weight-normal, 400);
}

/* ── All Pages (AllPages.aspx) — the trusted/admin site map ─────────────
   Colour IS the content on this page, so each row class sets one custom property
   (--ap-c) and the dot plus the left rule both read it. Dark mode is handled by
   [data-theme="dark"] — the site's own switch, set on <html> — and NOT by
   prefers-color-scheme, which would ignore a member who picked a theme in
   Preferences. The four light values go muddy on a dark card (orange and red
   converge), so dark gets its own lightened set rather than reusing them.

   Colour is never the ONLY signal: every dot carries a title= naming the
   audience, and the legend spells the four out in words. */
.ap-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    align-items: center;
    margin: 0.75rem 0 0.25rem;
}

.ap-key {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.9rem;
}

.ap-key b { font-weight: var(--font-weight-bold, 600); }

.ap-dot {
    width: 0.7rem;
    height: 0.7rem;
    border-radius: 50%;
    background: var(--ap-c, var(--color-text-muted));
    flex: 0 0 auto;
    display: inline-block;
}

.ap-anon    { --ap-c: #1f9d4d; }   /* anyone, including signed out */
.ap-login   { --ap-c: #c9a227; }   /* signed-in members */
.ap-trusted { --ap-c: #d97706; }   /* trusted users */
.ap-admin   { --ap-c: #c0392b; }   /* admins */

.ap-filter-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
    margin-top: 0.75rem;
}

.ap-filter-row .textbox {
    flex: 1 1 16rem;
    max-width: 26rem;
}

.ap-group-title {
    font-size: 1rem;
    font-weight: var(--font-weight-bold, 600);
    margin: 0 0 0.5rem;
    padding-bottom: 0.35rem;
    border-bottom: 1px solid var(--color-border);
}

.ap-row {
    display: flex;
    align-items: flex-start;
    gap: 0.6rem;
    padding: 0.4rem 0 0.4rem 0.6rem;
    border-left: 3px solid var(--ap-c, var(--color-text-muted));
    margin-bottom: 0.15rem;
}

/* .ap-dot survives in the LEGEND only - the owner removed it from the rows
   (2026-08-02), where the left rule already carries the colour. */
.ap-file {
    font-size: 0.8rem;
    font-weight: 400;
    color: var(--color-text-muted);
}

/* min-width:0 lets a long descriptor wrap inside the flex child instead of
   forcing the row wider than the card. */
.ap-body { min-width: 0; }

.ap-line {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.4rem;
}

.ap-name {
    font-weight: var(--font-weight-bold, 600);
    text-decoration: none;
    color: var(--color-link);
}

.ap-name:hover,
.ap-name:focus-visible { text-decoration: underline; color: var(--color-link-hover); }

.ap-tag {
    font-size: 0.72rem;
    line-height: 1.5;
    padding: 0 0.4rem;
    border-radius: 0.75rem;
    border: 1px solid var(--color-border);
    color: var(--color-text-muted);
    white-space: nowrap;
}

.ap-desc {
    font-size: 0.85rem;
    color: var(--color-text-muted);
    margin-top: 0.1rem;
}

.ap-warn {
    font-size: 0.85rem;
    color: #b3541e;
    margin-top: 0.15rem;
}

.ap-flaglist { margin: 0.5rem 0 0; padding-left: 1.2rem; }
.ap-flaglist li { margin-bottom: 0.35rem; }

[data-theme="dark"] .ap-anon    { --ap-c: #46c46f; }
[data-theme="dark"] .ap-login   { --ap-c: #e3c04a; }
[data-theme="dark"] .ap-trusted { --ap-c: #f59e42; }
[data-theme="dark"] .ap-admin   { --ap-c: #ef6b5c; }
[data-theme="dark"] .ap-warn    { color: #f0a071; }

/* ── Site Map (SiteMap.aspx) — the member-facing directory ────────────────────
   Sibling of the .ap-* block above, and deliberately NOT a reuse of it. AllPages
   is an audit map where colour IS the content (each row's left rule states who
   may open that page); this page only ever lists pages the viewer can already
   open, so there is nothing for a colour to say and the rows are plain. Keeping
   two small rule sets is what stops a future "make the site map prettier" edit
   from silently repainting the trusted page's access legend.

   Kept per-site rather than in Shared/styles_shared.css, matching how .ap-* is
   already duplicated across all five sites. */
.sm-search-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
    margin-top: 0.75rem;
}

.sm-search-row .textbox {
    flex: 1 1 16rem;
    max-width: 26rem;
}

.sm-group-title {
    display: flex;
    align-items: baseline;
    gap: 0.45rem;
    margin-bottom: 0.15rem;
}

/* Two-plus columns once there is room. Sections run from 2 rows to 12, so a fixed
   column count would leave the short ones stranded; auto-fill lets each section
   pick its own. 19rem is the narrowest a title plus a wrapped one-line
   description stays readable at. */
.sm-rows {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(19rem, 1fr));
    gap: 0.1rem 1.2rem;
    margin-top: 0.6rem;
}

/* The whole cell is the hit area, not just the text of the link — a directory is
   read by pointing at rows. padding-left + the transparent border mean the hover
   rule appears without anything shifting sideways. */
.sm-row {
    position: relative;
    padding: 0.45rem 0.5rem 0.45rem 0.6rem;
    border-left: 3px solid transparent;
    border-radius: var(--border-radius-sm);
}

/* --color-hover-wash is the shared token for exactly this, and it is already
   defined twice (a dark wash for light mode, a light one for dark) — which is
   why this block needs no [data-theme] counterpart. */
.sm-row:hover,
.sm-row:focus-within {
    border-left-color: var(--color-link);
    background: var(--color-hover-wash);
}

.sm-name {
    font-weight: var(--font-weight-bold, 600);
    text-decoration: none;
    color: var(--color-link);
}

.sm-name:hover,
.sm-name:focus-visible { text-decoration: underline; color: var(--color-link-hover); }

/* Stretches the anchor over the whole cell so the row is clickable, while the
   anchor itself stays a normal inline link for a screen reader and for the
   focus ring. ::after rather than a wrapping <a> keeps the description outside
   the link text, which would otherwise be read out as part of the link name. */
.sm-name::after {
    content: "";
    position: absolute;
    inset: 0;
}

.sm-desc {
    font-size: 0.85rem;
    color: var(--color-text-muted);
    margin-top: 0.1rem;
}

/* 🔴 REQUIRED, not tidiness. The search hides rows and sections with the [hidden]
   attribute, whose default display:none is a UA rule — any display: on .sm-row or
   .sm-group beats it on specificity and the "hidden" rows stay on screen. This is
   the line that makes the filter work. */
.sm-row[hidden],
.sm-group[hidden],
.sm-empty[hidden] { display: none; }

/* No dark-mode block: every colour above is a design token that already flips
   with the theme. The .ap-* set needs one only because it hardcodes four hex
   audience colours, which is exactly what this page has none of. */

/* ============================================================
   Shared styles - canonical rules for qFIT, PacklistPRO, qMEET.
   ONE rule per element type. SINGLE SOURCE OF TRUTH for every
   design token (colors, spacing, typography, shadows, etc.).
   Per-site Content/styles.css should NOT redefine these variables.
   Sizes use rem so the html.font-* preference scales everything.
   ============================================================ */

/* ── CSS Variables - Light Mode (canonical values, used by all 3 sites) ── */
:root {
    /* Native form controls (checkbox / radio / scrollbar / date picker) follow
       the SITE theme, not the OS. Each master ships
       `<meta name="color-scheme" content="light dark">`, which on its own makes
       the browser render native checkboxes DARK whenever the OS is in dark mode
       — even while the user has the site in Light Mode (the reported "dark
       checkbox in light mode" bug). Pinning color-scheme to the theme here
       (light) and under [data-theme="dark"] (dark) overrides that meta default
       so a Light-Mode checkbox gets a white background and a Dark-Mode checkbox
       a dark one. */
    color-scheme: light;

    /* Brand / accent */
    --color-accent:        #00B0F0;
    --color-accent-dark:   #0090C8;
    --color-accent-deeper: #005a80;
    --color-accent-light:  #e0f6fe;
    --color-primary:       var(--color-accent);
    --color-primary-dark:  var(--color-accent-dark);
    --color-primary-light: #e0f6fe;

    /* Surface-relative hover wash. Composites against whatever is underneath,
       so it stays correct on the page, on a card, and inside an input alike.
       Used ONLY by .input-clear-btn:hover — see the note there for why that
       control cannot use --color-primary-light. */
    --color-hover-wash: rgba(0, 0, 0, 0.10);

    /* Semantic */
    --color-success:          #2e7d32;
    --color-success-bg:       #e8f5e9;
    --color-success-border:   #a5d6a7;
    --color-save-btn:         #32cd32;
    --color-save-btn-hover:   #28a828;
    --color-danger:           #c62828;
    --color-danger-bg:        #ffebee;
    --color-danger-border:    #ef9a9a;
    --color-delete-btn:       #d32f2f;
    --color-delete-btn-hover: #b71c1c;
    --color-warning:          #e65100;
    --color-warning-bg:       #fff3e0;
    --color-warning-border:   #ffcc80;
    --color-info:             #0277bd;
    --color-info-bg:          #e1f5fe;
    --color-info-border:      #81d4fa;

    /* Text */
    --color-text:       #1a1f2e;
    --color-text-muted: #6c757d;
    --color-text-light: #9aa0a8;
    --color-link:       var(--color-accent);
    --color-link-hover: var(--color-accent-dark);

    /* Backgrounds */
    --color-bg:       #dbe4ed;   /* page: cool blue-grey so white cards lift off it (high contrast) */
    --color-bg-card:  #ffffff;
    --color-bg-input: #e2f1fb;   /* inputs: faint brand-cyan tint → recessed wells, on-brand with accent */
    --color-bg-nav:   #1a1a2e;

    /* Borders */
    --color-border:       #b6cede;   /* soft blue-grey so card/input outlines are clearly visible */
    --color-border-focus: var(--color-accent);

    /* Radii */
    --border-radius:    10px;
    --border-radius-sm: 6px;
    --border-radius-lg: 14px;

    /* Shadows (layered for modern depth) */
    --shadow-sm:          0 1px 2px rgba(15, 23, 42, 0.08), 0 1px 3px rgba(15, 23, 42, 0.10);
    --shadow-md:          0 4px 6px -2px rgba(15, 23, 42, 0.08), 0 2px 4px -2px rgba(15, 23, 42, 0.10);
    --shadow-lg:          0 12px 24px -8px rgba(15, 23, 42, 0.15), 0 4px 10px -4px rgba(15, 23, 42, 0.12);
    --shadow-xl:          0 20px 40px -12px rgba(15, 23, 42, 0.25);
    --shadow-focus:       0 0 0 3px rgba(0, 176, 240, 0.22);
    --shadow-focus-ring:  0 0 0 3px rgba(0, 176, 240, 0.35);
    --shadow-btn:         0 1px 2px rgba(15, 23, 42, 0.15), 0 1px 3px rgba(15, 23, 42, 0.10);
    --shadow-btn-hover:   0 4px 8px -2px rgba(15, 23, 42, 0.18), 0 2px 4px -2px rgba(15, 23, 42, 0.12);
    --shadow-btn-active:  inset 0 2px 4px rgba(0, 0, 0, 0.10);
    --shadow-card-hover:  0 8px 16px -6px rgba(15, 23, 42, 0.14), 0 4px 8px -4px rgba(15, 23, 42, 0.10);
    --shadow-card:        0 2px 4px rgba(15, 23, 42, 0.10), 0 6px 14px -3px rgba(15, 23, 42, 0.16);  /* card resting shadow — stronger depth so cards lift off the page */
    --text-shadow-heading: 0 1px 1px rgba(0,0,0,0.10);

    /* Spacing */
    --card-padding:    1rem;
    --card-padding-lg: 1.5rem;
    --section-gap:     1.5rem;

    /* Typography */
    --font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    --font-size-xs:   0.75rem;
    --font-size-sm:   0.875rem;
    --font-size-base: 1.125rem;
    --font-size-lg:   1.125rem;
    --font-size-xl:   1.375rem;
    --font-size-xxl:  1.75rem;
    --font-weight-normal: 400;
    --font-weight-medium: 500;
    --font-weight-bold:   600;
    --line-height: 1.5;

    /* Input sizing */
    --input-height:  2.5rem;
    --input-padding: 0.5rem 0.75rem;

    /* Buttons */
    --btn-padding:     0.5rem 1.25rem;
    --btn-padding-sm:  0.375rem 0.875rem;
    --btn-font-size:   0.9375rem;
    --btn-font-weight: 500;
    --btn-radius:      6px;
    --btn-transition:  background-color 0.15s ease, opacity 0.15s ease, box-shadow 0.15s ease;

    /* Nav structural */
    --nav-height: 56px;
    --nav-z:      1000;
    --color-bg-nav-dropdown: color-mix(in srgb, var(--color-bg-nav) 85%, #ffffff 15%);

    /* Transitions / easing */
    --ease-out-quint:  cubic-bezier(0.22, 1, 0.36, 1);
    --ease-out-back:   cubic-bezier(0.34, 1.56, 0.64, 1);
    --ease-in-out:     cubic-bezier(0.4, 0, 0.2, 1);
    --transition-fast: 0.15s var(--ease-out-quint);
    --transition-mid:  0.25s var(--ease-out-quint);
    --transition-slow: 0.4s  var(--ease-out-quint);

    /* Text selection (brand-tinted) */
    --selection-bg:    rgba(0, 176, 240, 0.22);
    --selection-color: var(--color-text);
}

/* ── CSS Variables - Dark Mode Overrides ──────────────────── */
[data-theme="dark"] {
    color-scheme: dark;          /* native checkbox/scrollbar/picker → dark */
    --color-text:       #e8eaed;
    --color-text-muted: #b1b5bb;
    --color-text-light: #7c8088;

    --color-bg:       #000000;   /* page pure black → cards/inputs float (high contrast: dark #8) */
    --color-bg-card:  #333333;
    --color-bg-input: #555555;   /* inputs lighter than card → clearly recessed wells */
    --color-bg-nav:   #0d0d0f;

    --color-border:        #555555;
    --color-primary-light: #082a3d;
    --color-hover-wash: rgba(255, 255, 255, 0.14);   /* lightens in dark mode */

    --color-success-bg:     #1b3a1e;
    --color-success-border: #2e7d32;
    --color-danger-bg:      #3b1212;
    --color-danger-border:  #c62828;
    --color-warning-bg:     #3a2a10;
    --color-warning-border: #e65100;
    --color-info-bg:        #082a3d;
    --color-info-border:    #0277bd;

    --shadow-sm:         0 1px 2px rgba(0, 0, 0, 0.35), 0 1px 3px rgba(0, 0, 0, 0.30);
    --shadow-md:         0 4px 8px -2px rgba(0, 0, 0, 0.45), 0 2px 4px -2px rgba(0, 0, 0, 0.30);
    --shadow-lg:         0 12px 24px -8px rgba(0, 0, 0, 0.55), 0 4px 10px -4px rgba(0, 0, 0, 0.40);
    --shadow-xl:         0 20px 40px -12px rgba(0, 0, 0, 0.65);
    --shadow-focus:      0 0 0 3px rgba(0, 176, 240, 0.35);
    --shadow-focus-ring: 0 0 0 3px rgba(0, 176, 240, 0.45);
    --shadow-btn:        0 1px 2px rgba(0, 0, 0, 0.50);
    --shadow-btn-hover:  0 4px 8px -2px rgba(0, 0, 0, 0.55);
    --shadow-card-hover: 0 8px 16px -6px rgba(0, 0, 0, 0.55);
    --shadow-card:       0 2px 6px rgba(0, 0, 0, 0.45), 0 6px 16px -4px rgba(0, 0, 0, 0.40);  /* card resting shadow — stronger depth so cards lift off the page */

    --selection-bg: rgba(0, 176, 240, 0.45);

    --color-bg-nav-dropdown: color-mix(in srgb, var(--color-bg-nav) 85%, #ffffff 15%);
}

/* ── Site background palette (Preferences → Site Background) ────────────────────
   Per-user PAGE-background tint, applied via data-bg on <html> by the early head
   script (no flash) + site.js applyPreferences. Only --color-bg (the body
   background) changes — cards/nav/inputs keep their own --color-bg-* vars, so
   content contrast is untouched. Each token is theme-aware: a soft tint in light
   mode, a deep tint in dark mode (the [data-theme="dark"] rules below win by
   specificity). The token is a server-whitelisted value (Preferences.aspx.vb),
   never raw user input. Lives in the SHARED sheet so all sites get the palette. */
/* Light-mode shades — dark text sits on these, so they stay light; the "darker"
   choices (graphite especially) are medium grays that still read fine under the
   large page-title text. */
[data-bg="gray"]     { --color-bg: #e7e9ec; }
[data-bg="slate"]    { --color-bg: #d6dce5; }
[data-bg="stone"]    { --color-bg: #e3ddd4; }
[data-bg="graphite"] { --color-bg: #c4c9d1; }
[data-bg="ocean"]    { --color-bg: #d6e4f5; }
[data-bg="sky"]      { --color-bg: #d8e9fb; }
[data-bg="teal"]     { --color-bg: #d3ebeb; }
[data-bg="sage"]     { --color-bg: #daeadd; }
[data-bg="forest"]   { --color-bg: #cfe2d3; }
[data-bg="sand"]     { --color-bg: #efe6d2; }
[data-bg="rose"]     { --color-bg: #f3e0e6; }
[data-bg="plum"]     { --color-bg: #e7dbec; }
[data-bg="lavender"] { --color-bg: #e4ddf3; }

/* Dark-mode shades — light text sits on these, so they stay dark, but are now
   CLEARLY hued/varied (the previous values were within a few RGB points of the
   default #121418, so the tint was invisible). Includes lifted + darker neutral
   grays so "Gray / Slate / Warm Gray / Graphite" are distinguishable in dark mode. */
[data-theme="dark"][data-bg="gray"]     { --color-bg: #1e2024; }
[data-theme="dark"][data-bg="slate"]    { --color-bg: #141a23; }
[data-theme="dark"][data-bg="stone"]    { --color-bg: #1c1813; }
[data-theme="dark"][data-bg="graphite"] { --color-bg: #0a0b0d; }
[data-theme="dark"][data-bg="ocean"]    { --color-bg: #0b1726; }
[data-theme="dark"][data-bg="sky"]      { --color-bg: #0d1f34; }
[data-theme="dark"][data-bg="teal"]     { --color-bg: #08201f; }
[data-theme="dark"][data-bg="sage"]     { --color-bg: #0e1a13; }
[data-theme="dark"][data-bg="forest"]   { --color-bg: #0a1710; }
[data-theme="dark"][data-bg="sand"]     { --color-bg: #1d180f; }
[data-theme="dark"][data-bg="rose"]     { --color-bg: #20141a; }
[data-theme="dark"][data-bg="plum"]     { --color-bg: #190f20; }
[data-theme="dark"][data-bg="lavender"] { --color-bg: #15101f; }

/* ── Expanded spectrum palette (PacklistPRO) — LIGHT-mode shades ────────────────
   60 options = 12 hues × 5 levels (50/40/30/20/10%). Token = "{hue}-{level}";
   whitelisted in PacklistPRO BasePage.BackgroundThemeTokens + exposed in its
   Preferences → Site Background dropdown. PLP-only: the other sites keep the
   neutral-tint palette above (their tokens are untouched). Only --color-bg (the
   page background) changes; cards/nav/inputs keep their own vars. LIGHT shades are
   each pure hue blended toward white (50% = halfway, 10% = near-white pastel). The
   100% (pure) level was removed. The 10% level is LIGHT-only — in dark mode the
   *-10 tokens fall back to the default dark bg (pinned in the dark block below). The
   DARK shades below win in dark mode by specificity (0,2,0 vs 0,1,0). Owner's spec. */
[data-bg="red-50"]          { --color-bg: #ff8080; }
[data-bg="red-40"]          { --color-bg: #ff9999; }
[data-bg="red-30"]          { --color-bg: #ffb3b3; }
[data-bg="red-20"]          { --color-bg: #ffcccc; }
[data-bg="red-10"]          { --color-bg: #ffe6e6; }

[data-bg="red-magenta-50"]  { --color-bg: #ff80bf; }
[data-bg="red-magenta-40"]  { --color-bg: #ff99cc; }
[data-bg="red-magenta-30"]  { --color-bg: #ffb3d9; }
[data-bg="red-magenta-20"]  { --color-bg: #ffcce5; }
[data-bg="red-magenta-10"]  { --color-bg: #ffe6f2; }

[data-bg="magenta-50"]      { --color-bg: #ff80ff; }
[data-bg="magenta-40"]      { --color-bg: #ff99ff; }
[data-bg="magenta-30"]      { --color-bg: #ffb3ff; }
[data-bg="magenta-20"]      { --color-bg: #ffccff; }
[data-bg="magenta-10"]      { --color-bg: #ffe6ff; }

[data-bg="purple-50"]       { --color-bg: #bf80ff; }
[data-bg="purple-40"]       { --color-bg: #cc99ff; }
[data-bg="purple-30"]       { --color-bg: #d9b3ff; }
[data-bg="purple-20"]       { --color-bg: #e5ccff; }
[data-bg="purple-10"]       { --color-bg: #f2e6ff; }

[data-bg="blue-50"]         { --color-bg: #8080ff; }
[data-bg="blue-40"]         { --color-bg: #9999ff; }
[data-bg="blue-30"]         { --color-bg: #b3b3ff; }
[data-bg="blue-20"]         { --color-bg: #ccccff; }
[data-bg="blue-10"]         { --color-bg: #e6e6ff; }

[data-bg="blue-cyan-50"]    { --color-bg: #80bfff; }
[data-bg="blue-cyan-40"]    { --color-bg: #99ccff; }
[data-bg="blue-cyan-30"]    { --color-bg: #b3d9ff; }
[data-bg="blue-cyan-20"]    { --color-bg: #cce5ff; }
[data-bg="blue-cyan-10"]    { --color-bg: #e6f2ff; }

[data-bg="cyan-50"]         { --color-bg: #80ffff; }
[data-bg="cyan-40"]         { --color-bg: #99ffff; }
[data-bg="cyan-30"]         { --color-bg: #b3ffff; }
[data-bg="cyan-20"]         { --color-bg: #ccffff; }
[data-bg="cyan-10"]         { --color-bg: #e6ffff; }

[data-bg="cyan-lime-50"]    { --color-bg: #80ffbf; }
[data-bg="cyan-lime-40"]    { --color-bg: #99ffcc; }
[data-bg="cyan-lime-30"]    { --color-bg: #b3ffd9; }
[data-bg="cyan-lime-20"]    { --color-bg: #ccffe5; }
[data-bg="cyan-lime-10"]    { --color-bg: #e6fff2; }

[data-bg="lime-50"]         { --color-bg: #80ff80; }
[data-bg="lime-40"]         { --color-bg: #99ff99; }
[data-bg="lime-30"]         { --color-bg: #b3ffb3; }
[data-bg="lime-20"]         { --color-bg: #ccffcc; }
[data-bg="lime-10"]         { --color-bg: #e6ffe6; }

[data-bg="lime-yellow-50"]  { --color-bg: #bfff80; }
[data-bg="lime-yellow-40"]  { --color-bg: #ccff99; }
[data-bg="lime-yellow-30"]  { --color-bg: #d9ffb3; }
[data-bg="lime-yellow-20"]  { --color-bg: #e5ffcc; }
[data-bg="lime-yellow-10"]  { --color-bg: #f2ffe6; }

[data-bg="yellow-50"]       { --color-bg: #ffff80; }
[data-bg="yellow-40"]       { --color-bg: #ffff99; }
[data-bg="yellow-30"]       { --color-bg: #ffffb3; }
[data-bg="yellow-20"]       { --color-bg: #ffffcc; }
[data-bg="yellow-10"]       { --color-bg: #ffffe6; }

[data-bg="orange-50"]       { --color-bg: #ffbf80; }
[data-bg="orange-40"]       { --color-bg: #ffcc99; }
[data-bg="orange-30"]       { --color-bg: #ffd9b3; }
[data-bg="orange-20"]       { --color-bg: #ffe5cc; }
[data-bg="orange-10"]       { --color-bg: #fff2e6; }

/* ── Expanded spectrum palette (PacklistPRO) — DARK-mode shades ─────────────────
   48 tinted levels (50/40/30/20% × 12 hues); each pure hue darkened toward black.
   Wins over the light [data-bg] rules above by specificity in dark mode. The 100%
   (pure) level was removed. The 10% level is LIGHT-only — the *-10 tokens are pinned
   to the default dark bg below so the near-white light pastel can't bleed into dark
   mode. Hex values are the owner's exact spec. */
[data-theme="dark"][data-bg="red-50"]          { --color-bg: #800000; }
[data-theme="dark"][data-bg="red-40"]          { --color-bg: #660000; }
[data-theme="dark"][data-bg="red-30"]          { --color-bg: #4d0000; }
[data-theme="dark"][data-bg="red-20"]          { --color-bg: #330000; }

[data-theme="dark"][data-bg="red-magenta-50"]  { --color-bg: #800040; }
[data-theme="dark"][data-bg="red-magenta-40"]  { --color-bg: #660033; }
[data-theme="dark"][data-bg="red-magenta-30"]  { --color-bg: #4d0026; }
[data-theme="dark"][data-bg="red-magenta-20"]  { --color-bg: #330019; }

[data-theme="dark"][data-bg="magenta-50"]      { --color-bg: #800080; }
[data-theme="dark"][data-bg="magenta-40"]      { --color-bg: #660066; }
[data-theme="dark"][data-bg="magenta-30"]      { --color-bg: #4d004d; }
[data-theme="dark"][data-bg="magenta-20"]      { --color-bg: #330033; }

[data-theme="dark"][data-bg="purple-50"]       { --color-bg: #400080; }
[data-theme="dark"][data-bg="purple-40"]       { --color-bg: #330066; }
[data-theme="dark"][data-bg="purple-30"]       { --color-bg: #26004d; }
[data-theme="dark"][data-bg="purple-20"]       { --color-bg: #1a0033; }

[data-theme="dark"][data-bg="blue-50"]         { --color-bg: #000080; }
[data-theme="dark"][data-bg="blue-40"]         { --color-bg: #000066; }
[data-theme="dark"][data-bg="blue-30"]         { --color-bg: #00004d; }
[data-theme="dark"][data-bg="blue-20"]         { --color-bg: #000033; }

[data-theme="dark"][data-bg="blue-cyan-50"]    { --color-bg: #004080; }
[data-theme="dark"][data-bg="blue-cyan-40"]    { --color-bg: #003366; }
[data-theme="dark"][data-bg="blue-cyan-30"]    { --color-bg: #00264d; }
[data-theme="dark"][data-bg="blue-cyan-20"]    { --color-bg: #001a33; }

[data-theme="dark"][data-bg="cyan-50"]         { --color-bg: #008080; }
[data-theme="dark"][data-bg="cyan-40"]         { --color-bg: #006666; }
[data-theme="dark"][data-bg="cyan-30"]         { --color-bg: #004d4d; }
[data-theme="dark"][data-bg="cyan-20"]         { --color-bg: #003333; }

[data-theme="dark"][data-bg="cyan-lime-50"]    { --color-bg: #008040; }
[data-theme="dark"][data-bg="cyan-lime-40"]    { --color-bg: #006633; }
[data-theme="dark"][data-bg="cyan-lime-30"]    { --color-bg: #004d26; }
[data-theme="dark"][data-bg="cyan-lime-20"]    { --color-bg: #00331a; }

[data-theme="dark"][data-bg="lime-50"]         { --color-bg: #008000; }
[data-theme="dark"][data-bg="lime-40"]         { --color-bg: #006600; }
[data-theme="dark"][data-bg="lime-30"]         { --color-bg: #004d00; }
[data-theme="dark"][data-bg="lime-20"]         { --color-bg: #003300; }

[data-theme="dark"][data-bg="lime-yellow-50"]  { --color-bg: #408000; }
[data-theme="dark"][data-bg="lime-yellow-40"]  { --color-bg: #336600; }
[data-theme="dark"][data-bg="lime-yellow-30"]  { --color-bg: #264d00; }
[data-theme="dark"][data-bg="lime-yellow-20"]  { --color-bg: #1a3300; }

[data-theme="dark"][data-bg="yellow-50"]       { --color-bg: #808000; }
[data-theme="dark"][data-bg="yellow-40"]       { --color-bg: #666600; }
[data-theme="dark"][data-bg="yellow-30"]       { --color-bg: #4d4d00; }
[data-theme="dark"][data-bg="yellow-20"]       { --color-bg: #333300; }

[data-theme="dark"][data-bg="orange-50"]       { --color-bg: #804000; }
[data-theme="dark"][data-bg="orange-40"]       { --color-bg: #663300; }
[data-theme="dark"][data-bg="orange-30"]       { --color-bg: #4d2600; }
[data-theme="dark"][data-bg="orange-20"]       { --color-bg: #331900; }

/* 10% is LIGHT-only: pin the *-10 tokens to the default dark bg (#121418, same as
   the [data-theme="dark"] base) so the near-white light pastel above doesn't bleed
   into dark mode — equal specificity would otherwise let the light rule win on
   source order. Keep this color in sync with [data-theme="dark"] { --color-bg }. */
[data-theme="dark"][data-bg="red-10"],
[data-theme="dark"][data-bg="red-magenta-10"],
[data-theme="dark"][data-bg="magenta-10"],
[data-theme="dark"][data-bg="purple-10"],
[data-theme="dark"][data-bg="blue-10"],
[data-theme="dark"][data-bg="blue-cyan-10"],
[data-theme="dark"][data-bg="cyan-10"],
[data-theme="dark"][data-bg="cyan-lime-10"],
[data-theme="dark"][data-bg="lime-10"],
[data-theme="dark"][data-bg="lime-yellow-10"],
[data-theme="dark"][data-bg="yellow-10"],
[data-theme="dark"][data-bg="orange-10"] { --color-bg: #121418; }

/* ── Grayscale ramp ─────────────────────────────────────────────
   Neutral page-background ramp, theme-split (Preferences shows only the half
   that fits the active theme): White→Gray 50% are the LIGHT-mode options,
   Gray 50%→Black the DARK-mode options; gray-50 (#808080) is the shared
   midpoint shown in both. Token number = lightness % (100 = white, 0 = black).
   Like the spectrum above, only --color-bg changes — cards/nav/inputs keep
   their own vars. */
[data-bg="gray-100"] { --color-bg: #ffffff; }
[data-bg="gray-90"]  { --color-bg: #e5e5e5; }
[data-bg="gray-80"]  { --color-bg: #cccccc; }
[data-bg="gray-70"]  { --color-bg: #b3b3b3; }
[data-bg="gray-60"]  { --color-bg: #999999; }
[data-bg="gray-50"]  { --color-bg: #808080; }

[data-theme="dark"][data-bg="gray-50"] { --color-bg: #808080; }
[data-theme="dark"][data-bg="gray-40"] { --color-bg: #666666; }
[data-theme="dark"][data-bg="gray-30"] { --color-bg: #4d4d4d; }
[data-theme="dark"][data-bg="gray-20"] { --color-bg: #333333; }
[data-theme="dark"][data-bg="gray-10"] { --color-bg: #1a1a1a; }
[data-theme="dark"][data-bg="gray-0"]  { --color-bg: #000000; }

/* The light-half tokens (gray-100…gray-60) carry a light --color-bg that would
   bleed into dark mode (equal specificity, source order) if a user picked one
   and later switched to Dark. Pin them to the default dark bg so a stale
   "White" never paints a dark page white. Keep in sync with
   [data-theme="dark"] { --color-bg }. gray-50 is deliberately NOT pinned —
   #808080 is its value in both themes. */
[data-theme="dark"][data-bg="gray-100"],
[data-theme="dark"][data-bg="gray-90"],
[data-theme="dark"][data-bg="gray-80"],
[data-theme="dark"][data-bg="gray-70"],
[data-theme="dark"][data-bg="gray-60"] { --color-bg: #121418; }

/* ── Dark-mode semantic TEXT contrast ──────────────────────────
   The saturated light-mode semantic colors (danger/info/warning/success)
   stay as-is so badge/button FILLS keep enough contrast for their white text.
   But used as FOREGROUND text on the dark card / banner / *-bg surfaces they
   fall below WCAG AA (e.g. #c62828 danger text on the #3b1212 danger-bg is
   ~1.9:1; the required-star and inline-tip measured 2.9 / 3.1 on dark cards).
   Lighten the text-only uses to AA-passing tints. Benefits all 3 sites. */
[data-theme="dark"] .required-star,
[data-theme="dark"] .error-message,
[data-theme="dark"] .field-validation-error,
[data-theme="dark"] .banner-offline,
[data-theme="dark"] .exp-badge-unsettled { color: #ef5350; }

[data-theme="dark"] .inline-tip { color: #4fc3f7; }

[data-theme="dark"] .banner-demo,
[data-theme="dark"] .caps-lock-warning,
[data-theme="dark"] .note-date-badge,
[data-theme="dark"] .drf-warn-icon,
[data-theme="dark"] .exp-badge-est { color: #ffa726; }

[data-theme="dark"] .exp-badge-settled { color: #66bb6a; }

[data-theme="dark"] .exp-badge-shared { color: #4fc3f7; }

/* Dark-mode TEXT lightening for the semantic text utilities + itinerary status
   pills (they still sit on dark surfaces). Toasts (.site-toast.*) and inline
   message panels (.alert-panel.*) are now SOLID, theme-independent colors with
   fixed near-black text (see the cross-site message palette below), so they are
   deliberately no longer listed here — a success/error/etc. message looks
   identical in light and dark mode. */
[data-theme="dark"] .itin-status-confirmed,
[data-theme="dark"] .itin-status-completed,
[data-theme="dark"] .text-success { color: #66bb6a; }

[data-theme="dark"] .text-danger { color: #ef5350; }

::selection      { background: var(--selection-bg); color: var(--selection-color); }
::-moz-selection { background: var(--selection-bg); color: var(--selection-color); }

/* ── 1. User font-size preference (scales all rem-based sizes) ── */
html              { font-size: 16px; }   /* default: 1rem = 16px */
html.font-small   { font-size: 14px; }
html.font-medium  { font-size: 16px; }
html.font-large   { font-size: 18px; }

/* ── 2. Document base ──────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; }

html {
    -webkit-text-size-adjust: 100%;
    scroll-behavior: smooth;
    /* Anchor-link offset so the sticky nav (56px tall) doesn't obscure jump-targets */
    scroll-padding-top: calc(var(--nav-height, 56px) + 0.5rem);
}
body {
    margin: 0;
    padding: 0;
    font-family: var(--font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);
    font-size: var(--font-size-base, 1rem);
    color: var(--color-text, #1a1f2e);
    background-color: var(--color-bg, #f5f7fa);
    line-height: var(--line-height, 1.5);
    -webkit-font-smoothing: antialiased;
    overflow-wrap: break-word;
}

/* ── 2a. Scrollbar tinting ────────────────────────────────── */
* {
    scrollbar-width: thin;
    scrollbar-color: color-mix(in srgb, var(--color-text-muted) 40%, transparent) transparent;
}
*::-webkit-scrollbar { width: 10px; height: 10px; }
*::-webkit-scrollbar-track { background: transparent; }
*::-webkit-scrollbar-thumb {
    background: color-mix(in srgb, var(--color-text-muted) 35%, transparent);
    border: 2px solid transparent;
    background-clip: padding-box;
    border-radius: 999px;
}
*::-webkit-scrollbar-thumb:hover {
    background: color-mix(in srgb, var(--color-text-muted) 55%, transparent);
    background-clip: padding-box;
}

/* ── 2b. Inline code / kbd / pre ─────────────────────────── */
code, kbd, samp, tt {
    font-family: ui-monospace, SFMono-Regular, "SF Mono", Consolas, "Liberation Mono", Menlo, monospace;
    font-size: 0.875em;
}
:not(pre) > code {
    padding: 0.12em 0.4em;
    background: color-mix(in srgb, var(--color-primary-light) 70%, transparent);
    color: var(--color-text);
    border-radius: 4px;
    border: 1px solid color-mix(in srgb, var(--color-border) 70%, transparent);
    white-space: nowrap;
}
[data-theme="dark"] :not(pre) > code {
    background: color-mix(in srgb, var(--color-primary) 16%, var(--color-bg-input));
}
pre {
    font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
    font-size: 0.85em;
    line-height: 1.5;
    background: var(--color-bg-card);
    border: 1px solid var(--color-border);
    border-radius: var(--border-radius-sm);
    padding: 0.75rem 0.9rem;
    overflow-x: auto;
}

/* Responsive media defaults */
img, svg { max-width: 100%; height: auto; }

/* ── 3. Page title ─────────────────────────────────────────── */
.page-title {
    font-size: var(--font-size-xxl, 1.75rem);
    font-weight: var(--font-weight-bold, 600);
    color: var(--color-text, #1a1f2e);
    margin: 0 0 0.5rem 0;
    line-height: 1.2;
    letter-spacing: -0.01em;
    text-align: left;   /* left-justify titles on all 3 sites; .text-center (a utility defined later) still overrides where a page opts in */
}
.page-title-flush { margin-bottom: 0; }

/* ── 4. Typography ─────────────────────────────────────────── */
.normal-text-bold { font-weight: var(--font-weight-bold, 600); }

.small-dim-text {
    font-size: var(--font-size-sm, 0.875rem);
    color: var(--color-text-muted, #6c757d);
}

/* Same color as normal body text, just smaller. Use for fine-print, captions,
   metadata, etc. where the content is still primary, not a side-note. */
.small-text {
    font-size: var(--font-size-sm, 0.875rem);
    color: var(--color-text, #1a1f2e);
}

.inline-tip {
    display: inline-block;
    font-size: var(--font-size-sm, 0.875rem);
    color: var(--color-info, #0277bd);
    background-color: var(--color-info-bg, #e1f5fe);
    border-left: 3px solid var(--color-info-border, #81d4fa);
    padding: 0.4rem 0.7rem;
    border-radius: var(--border-radius-sm, 4px);
    margin: 0.4rem 0;
}

.note {
    font-size: var(--font-size-sm, 0.875rem);
    color: var(--color-text-muted, #6c757d);
    font-style: italic;
    margin: 0.25rem 0;
}

.input-label {
    display: inline-block;
    font-weight: var(--font-weight-medium, 500);
    color: var(--color-text, #1a1f2e);
    margin-bottom: 0.25rem;
}

.link,
a.link {
    color: var(--color-link, var(--color-primary, #0090C8));
    text-decoration: none;
    font-weight: var(--font-weight-bold, 600);
    cursor: pointer;
    transition: color var(--transition-fast, 0.15s ease);
}
.link:hover,
a.link:hover {
    color: var(--color-link-hover, var(--color-primary-dark, #005a80));
    text-decoration: underline;
}
/* When .link is applied to a <button> (e.g. a "Hide Overview" toggle that must
   POST/run JS rather than navigate), strip the native button chrome so it reads
   as an inline text link. Without this the button keeps the UA ButtonFace
   background (#f0f0f0) — which never themes to dark, so the bold cyan link text
   sat on a light-gray pill in dark mode (~2.2:1). */
button.link {
    background: none;
    border: none;
    padding: 0;
    margin: 0;
    font: inherit;
    font-weight: var(--font-weight-bold, 600);
    line-height: inherit;
    -webkit-appearance: none;
    appearance: none;
}

/* ── 5. Lists - accent-colored bullets/numbers by default ──
   Applies to every <ul> and <ol> on the site. The named classes
   .bullet-list and .numbered-list are optional explicit aliases. */
ul li::marker { color: var(--color-primary, #0090C8); }
ol li::marker { color: var(--color-primary, #0090C8); font-weight: var(--font-weight-bold, 600); }
.bullet-list   { list-style-type: disc; }
.numbered-list { list-style-type: decimal; }

/* Home-page "what you get" benefit list — accent check (✓) bullets.
   Used by the marketing/welcome cards on all four sites' Home.aspx. The
   ::before check replaces the native marker, so list-style is removed. */
.home-checklist { list-style: none; margin: 0 0 .25rem; padding: 0; }
.home-checklist li {
    position: relative;
    padding-left: 1.7em;
    margin: 0 0 .45em;
    line-height: 1.45;
}
.home-checklist li::before {
    content: "\2713"; /* ✓ */
    position: absolute;
    left: 0;
    top: 0;
    color: var(--color-accent, #00B0F0);
    font-weight: 700;
}

/* ── 6. Cards ──────────────────────────────────────────────── */
.main-card {
    background-color: var(--color-bg-card, #ffffff);
    border: 1px solid var(--color-border, #e0e0e0);
    border-radius: var(--border-radius, 8px);
    padding: var(--card-padding, 1rem);
    margin-bottom: 1rem;
    box-shadow: var(--shadow-sm, 0 1px 2px rgba(0,0,0,0.08));
}

/* Corner-× close for "Options & Filters" controls cards. A top-right × that
   collapses the card and (where the card has one) triggers its existing
   Save/Apply/Close action — a more reachable alternative to a footer button.
   The host card carries .card-options-host so it becomes the positioning anchor
   (a plain class, not :has(), so the bundler's CSS minifier can't drop it).
   Promoted from PLP ShoppingList's original .sl-options-topbar so all four
   sites share one look. The .card-options-topbar div is placed as a child of
   the (open) options panel. */
.card-options-host { position: relative; }
.card-options-topbar {
    position: absolute;
    top: var(--card-padding, 1rem);
    right: var(--card-padding, 1rem);
    margin: 0;
    z-index: 1;
}
/* Make the × read as a real button (filled primary, white glyph) rather than a
   faint icon. Scoped to the topbar so other .tip-icon-button uses (tips close,
   file-remove) stay transparent. */
.card-options-topbar .tip-icon-button {
    min-width: 2.5rem;
    min-height: 2.5rem;
    color: #fff;
    background-color: var(--color-primary, #0090C8);
    border-radius: var(--btn-radius, 6px);
    box-shadow: var(--shadow-sm, 0 1px 2px rgba(0, 0, 0, 0.15));
    font-weight: 700;
}
.card-options-topbar .tip-icon-button:hover {
    color: #fff;
    background-color: var(--color-primary-dark, #005a80);
}
.card-options-topbar .tip-icon-button:active {
    box-shadow: var(--shadow-btn-active, inset 0 2px 4px rgba(0, 0, 0, 0.10));
}

.tip-card {
    background-color: var(--color-info-bg, #e1f5fe);
    border: 1px solid var(--color-info-border, #81d4fa);
    border-radius: var(--border-radius, 8px);
    padding: var(--card-padding, 1rem);
    margin-bottom: 1rem;
    position: relative;
    /* Hidden by default so the card doesn't flash on pages where the user
       previously closed it. initTips() adds .tip-visible to show it. */
    display: none;
}
.tip-card.tip-visible { display: block; }

/* The "Turn On Notifications" nudge (qFIT Checklist + PLP/NHT/PM Home) wears .tip-card for
   its LOOK only — its visibility is driven by the [hidden] attribute (page JS clears it when
   Notification.permission isn't granted), never by initTips()/.tip-visible. Without this
   override the base display:none above made the nudge unrevealable — it shipped dead on all
   four sites (found 2026-07-20 during the help-system redesign). */
.tip-card.home-notif-nudge { display: block; }
.tip-card.home-notif-nudge[hidden] { display: none; }

/* Always-visible tip card — used on Tips.aspx to display read-only copies of
   each page's own tips (no ⓘ trigger, no × close, never collapsed). initTips()
   leaves these alone because they don't carry the .tip-card class, so the page
   header's single ⓘ trigger can't toggle them. */
.tip-card-static {
    background-color: var(--color-info-bg, #e1f5fe);
    border: 1px solid var(--color-info-border, #81d4fa);
    border-radius: var(--border-radius, 8px);
    padding: var(--card-padding, 1rem);
    margin: 0 0 0.85rem 0;
    position: relative;
}
.tip-card-static:last-child { margin-bottom: 0; }
.tip-card-static .tip-card-heading { margin-right: 0; }

/* ── 6a. Generic card ─────────────────────────────────────── */
.card {
    background-color: var(--color-bg-card);
    border: 1px solid var(--color-border);
    border-radius: var(--border-radius);
    box-shadow: var(--shadow-card);
    padding: var(--card-padding);
    margin-bottom: var(--section-gap);
    transition: box-shadow var(--transition-mid), border-color var(--transition-mid);
}
.card-lg { padding: var(--card-padding-lg); }
.card-title {
    font-size: var(--font-size-lg);
    font-weight: var(--font-weight-bold);
    margin: 0 0 0.75rem 0;
    color: var(--color-text);
    padding-bottom: 0.45rem;
    border-bottom: 1px solid var(--color-border);
    display: flex;
    align-items: baseline;
    gap: 0.5rem;
    flex-wrap: wrap;
}

/* Read-only "Account activity" card list (MyProfile across all 4 sites).
   A simple key/value list — label in normal weight, value bold via <strong>.
   The host .main-card supplies the box; this just spaces the rows. */
.account-activity-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.account-activity-list li {
    padding: 0.2rem 0;
    color: var(--color-text);
}
.account-activity-list li + li {
    border-top: 1px solid var(--color-border);
}

summary { cursor: pointer; }
/* Disclosure chevron for <details> cards whose <summary> is the card title.
   .card-title is display:flex, which suppresses the native ::marker triangle —
   without this the heading gives no visual hint it can expand (e.g. the
   Trip Dashboard retrospectives card). Mirrors the .itin-details-summary ▸/▾. */
summary.card-title { list-style: none; }
summary.card-title::-webkit-details-marker { display: none; }
summary.card-title::before {
    content: "▸";
    color: var(--color-text-muted);
    flex: 0 0 auto;
}
details[open] > summary.card-title::before { content: "▾"; }

/* ── Progressive-disclosure block inside a form card (.form-more) ──────────
   The "required fields + Save up front, everything else behind one summary"
   pattern. Introduced on PacklistPRO EditItem 2026-08-04; qFIT EditMethod and
   qMeet EditEvent follow it, so keep the three in step and change this rule
   rather than forking a per-site copy. (PLP EditPark's older .park-form-more
   is the same idea, page-local; it can fold into this.)

   🔴 WHY <details> AND NOT A SERVER-SIDE Visible TOGGLE. A collapsed <details>
   sets its children display:none but leaves them in the DOM with their loaded
   values, so they still post and still round-trip. A control given
   Visible="False" stops rendering, reads back as "", and an unconditional
   UPDATE then writes NULL over a column the user never touched. Never
   "optimise" a .form-more into server-side visibility. */
.form-more {
    border-top: 1px solid var(--color-border);
    margin: 1rem 0 0.5rem;
    padding-top: 0.5rem;
}
.form-more-summary {
    list-style: none;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.35rem 0;
    font-weight: 600;
    color: var(--color-link);
}
.form-more-summary::-webkit-details-marker { display: none; }
.form-more-summary::before {
    content: "\25B8";              /* ▸ — becomes ▾ when open */
    font-size: 0.8em;
    color: var(--color-text-muted);
}
.form-more[open] > .form-more-summary::before { content: "\25BE"; }
.form-more-summary:hover { color: var(--color-link-hover); }
.form-more-summary:focus-visible {
    outline: none;
    box-shadow: var(--shadow-focus);
    border-radius: var(--border-radius-sm);
}
/* "(all optional)" — states the rule the disclosure implies, so nobody has to
   open it to find out whether something in there is required. */
.form-more-count {
    font-weight: 400;
    font-size: 0.9em;
    color: var(--color-text-muted);
}
.form-more[open] > .form-group:first-of-type,
.form-more[open] > .form-row:first-of-type { margin-top: 0.75rem; }

/* A titled sub-group inside .form-more — a second record edited by the same
   Save (EditItem's "My Settings"). Not another disclosure: one level only. */
.form-more-group {
    border-top: 1px solid var(--color-border);
    margin-top: 1.5rem;
    padding-top: 0.75rem;
}
.form-more-group-title {
    font-size: 1rem;
    font-weight: 600;
    margin: 0 0 0.25rem;
    color: var(--color-text);
}
.card-interactive { cursor: pointer; }
.card-interactive:hover,
.card:hover.card-interactive {
    box-shadow: var(--shadow-card-hover);
    border-color: color-mix(in srgb, var(--color-accent) 25%, var(--color-border));
}
.card-accent {
    border-top: 3px solid var(--color-accent);
    border-radius: var(--border-radius);
}

/* Card list styling — branded bullets for unclassed <ul>/<ol> inside cards */
.card > ul:not([class]),
.card > ul.small,
.card > ol:not([class]),
.card > ol.small {
    padding-left: 1.15rem;
    margin: 0.5rem 0;
}
.card > ul:not([class]) > li,
.card > ul.small > li,
.card > ol:not([class]) > li,
.card > ol.small > li {
    margin-bottom: 0.55rem;
    line-height: 1.55;
}
.card > ul:not([class]) > li:last-child,
.card > ul.small > li:last-child,
.card > ol:not([class]) > li:last-child,
.card > ol.small > li:last-child { margin-bottom: 0; }
.card > ul:not([class]),
.card > ul.small {
    list-style: none;
    padding-left: 1.25rem;
}
.card > ul:not([class]) > li,
.card > ul.small > li {
    position: relative;
    padding-left: 0.6rem;
}
.card > ul:not([class]) > li::before,
.card > ul.small > li::before {
    content: "";
    position: absolute;
    left: -0.55rem;
    top: 0.7em;
    width: 0.4rem;
    height: 0.4rem;
    border-radius: 50%;
    background: var(--color-accent);
    transform: translateY(-50%);
}
.card > ol:not([class]) > li::marker,
.card > ol.small > li::marker { color: var(--color-accent); font-weight: 700; }

.tip-card-heading {
    font-size: var(--font-size-lg, 1.125rem);
    font-weight: var(--font-weight-bold, 600);
    color: var(--color-text, #1a1f2e);
    margin: 0 1.5rem 0.5rem 0;
    line-height: 1.3;
}

.tip-card-text {
    font-size: var(--font-size-sm, 0.875rem);
    color: var(--color-text, #1a1f2e);
    margin: 0;
    line-height: 1.5;
}

/* ── Tip card "show more" (progressive disclosure) ─────────────
   Long tip cards (many <li>) collapse to the first few items with a
   "Show N more" toggle so the card stays compact. Activated entirely by
   site.js initTips(): it adds .tips-collapsible to the card, .tip-extra to
   the overflow items, and toggles .tips-expanded. This block is inert until
   that JS runs, so it is safe to ship to every site ahead of the per-site
   JS rollout (short cards never get .tips-collapsible). */
.tip-card.tips-collapsible:not(.tips-expanded) .tip-extra { display: none; }
.tips-more {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    margin-top: 0.5rem;
    padding: 0.25rem 0;
    border: none;
    background: transparent;
    color: var(--color-accent, #0277bd);
    font-size: var(--font-size-sm, 0.875rem);
    font-weight: var(--font-weight-bold, 600);
    cursor: pointer;
    text-decoration: underline;
    text-underline-offset: 2px;
}
.tips-more:hover { text-decoration: none; }
.tips-more:focus-visible {
    outline: 2px solid var(--color-accent, #0277bd);
    outline-offset: 2px;
    border-radius: 4px;
}

/* ── 7. Form inputs ────────────────────────────────────────── */
.textbox,
input.textbox,
textarea.textbox,
select.textbox,
.textarea,
.dropdown,
.date-picker,
.file-picker {
    display: block;
    width: 100%;
    max-width: 100%;
    height: var(--input-height, 2.5rem);
    padding: var(--input-padding, 0.5rem 0.75rem);
    font-family: inherit;
    font-size: max(16px, var(--font-size-base, 1rem));  /* 16px floor prevents iOS auto-zoom */
    color: var(--color-text, #1a1f2e);
    background-color: var(--color-bg-input, #ffffff);
    border: 1px solid var(--color-border, #e0e0e0);
    border-radius: var(--border-radius-sm, 6px);
    -webkit-appearance: none;
    appearance: none;
    transition: border-color var(--transition-fast, 0.15s ease),
                box-shadow var(--transition-fast, 0.15s ease),
                background-color var(--transition-fast, 0.15s ease);
}
.textarea,
textarea.textbox {
    height: auto;
    min-height: calc(var(--input-height, 2.5rem) * 2.5);
    resize: vertical;
    line-height: 1.5;
}
.dropdown,
select.textbox {
    padding-right: 2.25rem;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'><path d='M1 1.5 L6 6.5 L11 1.5' stroke='%23808080' stroke-width='1.5' fill='none' stroke-linecap='round' stroke-linejoin='round'/></svg>");
    background-repeat: no-repeat;
    background-position: right 0.75rem center;
    background-size: 0.75rem;
}
[data-theme="dark"] .dropdown,
[data-theme="dark"] select.textbox {
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'><path d='M1 1.5 L6 6.5 L11 1.5' stroke='%239aa0a6' stroke-width='1.5' fill='none' stroke-linecap='round' stroke-linejoin='round'/></svg>");
}
.textbox:hover:not(:focus):not(:disabled),
input.textbox:hover:not(:focus):not(:disabled),
textarea.textbox:hover:not(:focus):not(:disabled),
select.textbox:hover:not(:focus):not(:disabled),
.textarea:hover:not(:focus):not(:disabled),
.dropdown:hover:not(:focus):not(:disabled),
.date-picker:hover:not(:focus):not(:disabled),
.file-picker:hover:not(:focus):not(:disabled) {
    border-color: color-mix(in srgb, var(--color-text-muted, #6c757d) 35%, var(--color-border, #e0e0e0));
}
.textbox:focus,
input.textbox:focus,
textarea.textbox:focus,
select.textbox:focus,
.textarea:focus,
.dropdown:focus,
.date-picker:focus,
.file-picker:focus {
    outline: none;
    border-color: var(--color-border-focus, var(--color-primary, #0090C8));
    box-shadow: var(--shadow-focus, 0 0 0 3px rgba(0, 176, 240, 0.22));
}

.textbox:disabled,
input.textbox:disabled,
textarea.textbox:disabled,
select.textbox:disabled,
.textarea:disabled,
.dropdown:disabled,
.date-picker:disabled,
.file-picker:disabled {
    opacity: 0.6;
    background-color: var(--color-bg, #f5f7fa);
    cursor: not-allowed;
}

/* Invalid-state input styling (aria-invalid from ASP.NET validators, or .input-invalid
   from client-side JS). Mirrors the focus ring in danger color. */
.textbox[aria-invalid="true"],
.textbox.input-invalid {
    border-color: var(--color-danger);
}
.textbox[aria-invalid="true"]:focus,
.textbox.input-invalid:focus {
    box-shadow: 0 0 0 3px rgba(198, 40, 40, 0.18);
}
.textbox.input-error,
input.input-error,
select.input-error,
textarea.input-error {
    border-color: var(--color-danger);
    box-shadow: 0 0 0 2px color-mix(in srgb, var(--color-danger) 18%, transparent);
}

/* Native placeholder text inside textbox/textarea.
   Sized to the design system's normal UI text (--font-size-sm), deliberately SMALLER
   than the host input's reading size (--font-size-base, ~18px) so the placeholder hint
   doesn't dominate the field. (Was `inherit` = same size as typed text, which read too
   large.) Color is mid-gray #808080 per design req. One rule for all 4 sites — the shared
   sheet loads last. One deliberate override exists: qMEET LiveChat's .lc-input::placeholder
   scales with the page's --lc-font chat font-size setting, at the same 0.875 ratio. */
input::placeholder,
textarea::placeholder,
.textbox::placeholder,
.textarea::placeholder {
    color: #808080;
    font-size: var(--font-size-sm, 0.875rem);
    opacity: 1;  /* Firefox lowers it by default */
}

.checkbox,
input[type="checkbox"].checkbox,
.checkbox > input[type="checkbox"] {
    width: 1.125rem;
    height: 1.125rem;
    min-width: 1.125rem;
    cursor: pointer;
    accent-color: var(--color-primary, #0090C8);
    vertical-align: middle;
    margin-right: 0.375rem;
}
.checkbox:disabled,
.checkbox > input[type="checkbox"]:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}
span.checkbox {
    display: inline-flex;
    align-items: center;
    width: auto;
    height: auto;
    min-width: 0;
    margin-right: 0;
}
.checkbox-nowrap { white-space: nowrap; }
/* Large checkbox variant — add `checkbox-lg` alongside `checkbox` for big, tap-
   friendly boxes (e.g. the per-day completion tally on TargetDetails/MethodDetails).
   An ASP.NET CheckBox renders <span class="checkbox checkbox-lg"><input type=checkbox></span>,
   so the actual control is the INPUT *child* of the span — size that (plus a bare
   input.checkbox-lg for non-server markup). 1.6875rem = 150% of the 1.125rem default;
   matches the base rule's specificity and wins by load order. */
.checkbox-lg > input[type="checkbox"],
input[type="checkbox"].checkbox-lg {
    width: 1.6875rem;
    height: 1.6875rem;
    min-width: 1.6875rem;
}
/* Stacked reminder/notification channel checkboxes — a flex column so every checkbox's left
   edge lines up perfectly (replaces per-item .form-group wrappers, which didn't align cleanly). */
.reminder-channels { display: flex; flex-direction: column; align-items: flex-start; gap: 0.5rem; }
.check-row {
    display: flex;
    align-items: center;
    gap: 0.375rem;
    min-height: 44px;
    cursor: pointer;
}
.radio-button,
input[type="radio"].radio-button,
.radio-button > input[type="radio"] {
    width: 1.125rem;
    height: 1.125rem;
    min-width: 1.125rem;
    vertical-align: middle;
    accent-color: var(--color-primary, #0090C8);
    cursor: pointer;
    margin: 0 0.375rem 0 0;
}
span.radio-button {
    display: inline-flex;
    align-items: center;
    width: auto;
    height: auto;
    min-width: 0;
    margin-right: 0;
}
/* asp:RadioButtonList renders bare <input type="radio"> with NO .radio-button class, so
   the rule above never applies and the dot sits flush against its <label> (e.g. qFIT
   Join3 gender). Give un-classed radios the same gap + alignment so every plain
   RadioButtonList across the four sites reads consistently. :not(.radio-button) avoids
   double-spacing the design-system radios that already set this margin. */
input[type="radio"]:not(.radio-button) {
    vertical-align: middle;
    margin: 0 0.375rem 0 0;
}

/* ── 8. Buttons ────────────────────────────────────────────── */
.button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    vertical-align: middle;
    gap: 0.375rem;
    padding: var(--btn-padding, 0.5rem 1.25rem);
    font-family: inherit;
    font-size: var(--btn-font-size, 0.9375rem);
    font-weight: var(--btn-font-weight, 500);
    line-height: 1;
    text-align: center;
    text-decoration: none;
    color: #ffffff;
    background-color: var(--color-primary, #0090C8);
    border: none;
    border-radius: var(--btn-radius, 6px);
    cursor: pointer;
    transition: background-color var(--transition-fast, 0.15s ease),
                color var(--transition-fast, 0.15s ease),
                box-shadow var(--transition-fast, 0.15s ease),
                opacity var(--transition-fast, 0.15s ease);
    white-space: nowrap;
    box-shadow: var(--shadow-btn, 0 1px 2px rgba(0,0,0,0.15));
    min-height: 44px;             /* iOS touch-target accessibility */
    min-width: 44px;
    -webkit-tap-highlight-color: transparent;
    user-select: none;
}
.button:hover {
    background-color: var(--color-primary-dark, #005a80);
    color: #ffffff;
    text-decoration: none;
}
.button:focus-visible {
    outline: none;
    box-shadow: var(--shadow-btn, 0 1px 2px rgba(0,0,0,0.15)),
                var(--shadow-focus-ring, 0 0 0 3px rgba(0, 176, 240, 0.35));
}
.button:active {
    opacity: 0.92;
    box-shadow: var(--shadow-btn-active, inset 0 2px 4px rgba(0, 0, 0, 0.10));
}
.button:disabled,
.button[disabled] {
    opacity: 0.55;
    cursor: not-allowed;
    pointer-events: none;
}

/* Save (lime green) - .button.save */
.button.save {
    background-color: var(--color-save-btn, #32cd32);
    border-color: var(--color-save-btn, #32cd32);
    color: #ffffff;
}
.button.save:hover {
    background-color: var(--color-save-btn-hover, #28a828);
    border-color: var(--color-save-btn-hover, #28a828);
}

/* Danger (red) - .button.danger - Delete, Clear, Cancel */
.button.danger {
    background-color: var(--color-delete-btn, #d32f2f);
    border-color: var(--color-delete-btn, #d32f2f);
    color: #ffffff;
}
.button.danger:hover {
    background-color: var(--color-delete-btn-hover, #b71c1c);
    border-color: var(--color-delete-btn-hover, #b71c1c);
}

/* Transparent (outline only) - .button.transparent */
.button.transparent {
    background-color: transparent;
    color: var(--color-primary, #0090C8);
    border: 1px solid var(--color-primary, #0090C8);
    box-shadow: none;
}
.button.transparent:hover {
    background-color: var(--color-primary-light, #e0f6fe);
    color: var(--color-primary-dark, #005a80);
    border-color: var(--color-primary-dark, #005a80);
}

/* Warning (orange) - .button.warning - Caution/alert action */
.button.warning {
    background-color: var(--color-warning, #e65100);
    border-color: var(--color-warning, #e65100);
    color: #ffffff;
}
.button.warning:hover {
    background-color: #d97706;
    border-color: #d97706;
}

/* Focus rings for colored button variants */
.button.save:focus-visible {
    box-shadow: var(--shadow-btn), 0 0 0 3px rgba(50, 205, 50, 0.35);
}
.button.danger:focus-visible {
    box-shadow: var(--shadow-btn), 0 0 0 3px rgba(211, 47, 47, 0.35);
}

/* Small modifier - .button.small */
.button.small {
    padding: var(--btn-padding-sm, 0.375rem 0.875rem);
    font-size: 0.875rem;
}

/* Save-state feedback (set by site.js setSaving / setSaved / setSaveError). */
.button.saving { opacity: 0.75; cursor: wait; }
.button.saved { background-color: var(--color-success, #2e7d32); color: #fff; }
.button.save-error {
    background-color: var(--color-delete-btn, #d32f2f);
    color: #fff;
    animation: flashError 0.6s ease forwards;
}
@keyframes flashError {
    0%   { background-color: var(--color-delete-btn, #d32f2f); }
    100% { background-color: var(--color-primary, #0090C8); }
}

/* Icon-only button (e.g. the ⓘ Tips trigger, × close). */
.tip-icon-button,
.tips-close {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 2.75rem;
    min-height: 2.75rem;
    padding: 0.25rem;
    border: none;
    background: transparent;
    color: var(--color-text-muted, #6c757d);
    font-size: 1.25rem;
    line-height: 1;
    cursor: pointer;
    border-radius: var(--border-radius-sm, 6px);
    transition: color var(--transition-fast, 0.15s ease),
                background-color var(--transition-fast, 0.15s ease);
}
.tip-icon-button:hover,
.tips-close:hover {
    color: var(--color-text, #1a1f2e);
    background-color: var(--color-primary-light, #e0f6fe);
}
.tip-icon-button:focus-visible,
.tips-close:focus-visible {
    outline: 2px solid var(--color-border-focus, var(--color-primary, #0090C8));
    outline-offset: 2px;
}
/* Make the (i) glyph itself bold — the U+24D8 ⓘ default weight reads as a
   thin outline at this font-size and gets visually lost in the header row.
   Scoped to [aria-expanded] so only the tip-opener triggers go bold; other
   uses of .tip-icon-button (× close, × file-remove) never set aria-expanded
   and keep their original weight. */
.tip-icon-button[aria-expanded] {
    font-weight: bold;
}

/* The trigger is the way to OPEN the Tips card. Once the card is open the
   trigger is redundant (and the card has its own × close button), so hide
   it; it reappears when the user closes the card and aria-expanded flips
   back to "false". Tips-toggle JS is the only thing that sets aria-expanded
   on .tip-icon-button, so other tip-icon-button uses (file-remove buttons,
   inline closers) which never get aria-expanded are unaffected. */
.tip-icon-button[aria-expanded="true"] {
    display: none;
}

/* ── 9. Pills ──────────────────────────────────────────────── */
.pill {
    display: inline-flex;
    align-items: center;
    padding: 0.35rem 0.85rem;
    font-size: var(--font-size-sm, 0.875rem);
    font-weight: var(--font-weight-medium, 500);
    color: var(--color-text, #1a1f2e);
    background-color: var(--color-bg-card, #ffffff);
    border: 1px solid var(--color-border, #e0e0e0);
    border-radius: 999px;
    cursor: pointer;
    user-select: none;
    text-decoration: none;
    transition: background-color var(--transition-fast, 0.15s ease),
                border-color var(--transition-fast, 0.15s ease),
                color var(--transition-fast, 0.15s ease);
}
.pill:hover, .pill:focus { text-decoration: none; }
.pill:hover { border-color: var(--color-primary, #0090C8); }
.pill.active,
.pill[aria-pressed="true"] {
    background-color: var(--color-primary, #0090C8);
    color: #ffffff;
    border-color: var(--color-primary, #0090C8);
}
.pill.small {
    padding: 0.15rem 0.55rem;
    font-size: var(--font-size-xs, 0.75rem);
}

/* ── 10. Alert / inline message panels ─────────────────────────
   BLOCK, deliberately — NOT flex. A message panel's content is a SENTENCE
   ("Choose <a>Tags for your Trip</a> so the <strong>Recommended Items</strong>
   filter can be used"), and under display:flex every inline fragment between
   the elements becomes its own anonymous flex item. With the default
   flex-wrap:nowrap those items shrink into narrow side-by-side COLUMNS, each
   wrapping internally — the sentence renders as a jumbled grid. Normal block
   flow is the only layout that lets text, links and <strong> flow as one
   paragraph, so every panel on every site reads correctly with no per-call-site
   wrapper span. The leading data-icon marker is absolutely positioned (below)
   to keep the hanging indent flex used to provide. Fixed 2026-07-21. */
.alert-panel {
    display: block;
    padding: 0.75rem 1rem 0.75rem 0.85rem;
    margin: 0.5rem 0 1rem;
    border: 1px solid transparent;
    border-left-width: 4px;          /* solid accent stripe on the left */
    border-radius: var(--border-radius, 10px);
    font-size: var(--font-size-sm, 0.875rem);
    line-height: 1.45;
    overflow-wrap: break-word;       /* long URLs/tokens can't force a scrollbar */
}
/* Block children (<p>, <ul>, headings) keep their inner rhythm but must not add
   their own margin on top of the panel's padding — flex used to suppress this. */
.alert-panel > :first-child { margin-top: 0; }
.alert-panel > :last-child  { margin-bottom: 0; }
.alert-panel a {
    color: inherit;
    font-weight: var(--font-weight-medium, 500);
    text-decoration: underline;
    text-underline-offset: 2px;
}
.alert-panel a:hover { text-decoration-thickness: 2px; }
/* Optional leading icon (data-icon="⚠️"). Absolutely positioned in the extra
   left padding so the text block keeps a clean hanging indent — the panel is
   block flow now, so a plain ::before would sit INSIDE the text and only the
   first line would be indented. */
.alert-panel[data-icon] {
    position: relative;
    padding-left: 2.4rem;
}
.alert-panel[data-icon]::before {
    content: attr(data-icon);
    position: absolute;
    left: 0.85rem;
    top: 0.75rem;
    font-size: 1.05em;
    line-height: 1.45;
}
/* Solid, saturated message colors — the SINGLE cross-site standard for BOTH
   inline message panels (.alert-panel) and floating toasts (.site-toast, far
   below, which reuse the exact same values). Fixed hex (NOT theme tokens) so a
   success / error / warning / info message looks IDENTICAL on every site and in
   light AND dark mode. Text is near-black (#111) on lime/orange/cyan (white is
   unreadable there) and WHITE on the red error variant (conventional error
   styling, per request). Set 2026-06-10 per the cross-site message unification. */
.alert-panel.success {
    color: #111;
    background-color: #00ff00;   /* pure lime */
    border-color: rgba(0,0,0,0.22);
    border-left-color: rgba(0,0,0,0.45);
}
.alert-panel.error {
    color: #fff;
    background-color: #ff0000;   /* pure red */
    border-color: rgba(0,0,0,0.22);
    border-left-color: rgba(0,0,0,0.45);
}
.alert-panel.warning {
    color: #111;
    background-color: #ff9600;   /* pure orange */
    border-color: rgba(0,0,0,0.22);
    border-left-color: rgba(0,0,0,0.45);
}
.alert-panel.info {
    color: #111;
    background-color: #00B0F0;   /* accent blue */
    border-color: rgba(0,0,0,0.22);
    border-left-color: rgba(0,0,0,0.45);
}
/* An outline button sitting INSIDE a solid panel must borrow the panel's fixed
   text colour. .button.transparent is primary-blue by default, which is the SAME
   #00B0F0 as the .info background — the label rendered blue-on-blue and was
   invisible (qFIT Error.aspx's "Copy Reference ID"); it is also poor on the lime,
   orange and red variants. currentColor tracks whichever colour the variant set,
   so the button stays readable on all four. */
.alert-panel .button.transparent {
    color: inherit;
    border-color: currentColor;
}
.alert-panel .button.transparent:hover {
    color: inherit;
    background-color: rgba(255,255,255,0.35);
    border-color: currentColor;
}

/* Welcome banner — a PERSISTENT, dismissible variant of .alert-panel used for the
   one-time post-signup message (see BasePage.ShowWelcomeBanner on each site). It
   carries onboarding tips, so unlike a normal success panel it does NOT auto-dismiss;
   the × button (.welcome-banner-close) hides it client-side. Colour comes from the
   success class the host site applies (.success or .alert-success). */
.welcome-banner {
    position: relative;
    padding-right: 2.5rem;
}
.welcome-banner-close {
    position: absolute;
    top: 0.35rem;
    right: 0.5rem;
    width: 1.75rem;
    height: 1.75rem;
    padding: 0;
    background: transparent;
    border: none;
    border-radius: 50%;
    font-size: 1.4rem;
    line-height: 1;
    color: inherit;
    opacity: 0.7;
    cursor: pointer;
}
.welcome-banner-close:hover { opacity: 1; }

/* ── 11. Section headings ─────────────────────────────────── */
.largeheading {
    font-size: var(--font-size-xl, 1.375rem);
    font-weight: 700;
    color: var(--color-text);
    margin: 0 0 0.5rem 0;
    line-height: 1.25;
    letter-spacing: -0.005em;
}
.heading {
    font-size: var(--font-size-lg, 1.125rem);
    font-weight: var(--font-weight-bold, 600);
    color: var(--color-text);
    margin: 0 0 0.4rem 0;
    line-height: 1.3;
}

/* ── 12. Horizontal rule ──────────────────────────────────── */
.hr,
hr.hr {
    border: none;
    border-top: 1px solid var(--color-border);
    margin: var(--section-gap, 1.5rem) 0;
}

/* ── 13. Required-field indicator ─────────────────────────── */
.required-star {
    color: var(--color-danger);
    margin-left: 0.1em;
}

/* ── 14. Loading spinner ──────────────────────────────────── */
.spinner {
    display: inline-block;
    width: 1em;
    height: 1em;
    border: 2px solid rgba(255, 255, 255, 0.28);
    border-top-color: #ffffff;
    border-radius: 50%;
    animation: spin 0.65s linear infinite;
    vertical-align: middle;
    will-change: transform;
}
.spinner-dark {
    border-color: rgba(0, 0, 0, 0.2);
    border-top-color: var(--color-primary);
}
@keyframes spin { to { transform: rotate(360deg); } }

/* ── 14a. Inline "updating…" indicator for UpdateProgress ──────
   The standard body of an <asp:UpdateProgress> ProgressTemplate on every site:
   a muted, inline line that appears (after DisplayAfter ms) while an UpdatePanel
   is re-rendering, so a filter change that takes a beat still looks alive.

   Deliberately inline-flex and unobtrusive rather than an overlay: the whole
   point of the UpdatePanel is that the page does NOT flash or move, so a modal
   scrim would undo the win. Reuses the shared .spinner above; the dark variant
   is applied by the caller (`spinner spinner-dark`) on light backgrounds.

   Generalized 2026-08-04 from qMeet's page-local .mm2-updating, which was the
   first instance of this pattern and stays as-is (it is referenced by name in
   MemberMatch's markup and comments). */
.ajax-updating {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    margin: 0 0 0.6rem;
    color: var(--color-text-muted);
    font-size: var(--font-size-sm);
}

/* ── 14b. Full-page navigation loading overlay ─────────────────
   Shown by site.js (initPageNavSpinner) when a real page switch / postback has
   been in flight for a short beat — reassures the user their click registered
   while a slow server or cold app-pool renders the next page. The reveal is
   delayed, so fast loads finish first and the spinner never flashes on them.
   The overlay is created once per page and torn down for free when the next
   page loads. Reuses the `spin` keyframes above. */
#pageNavOverlay {
    position: fixed;
    inset: 0;
    z-index: 20000;                 /* above every modal / drawer / toast */
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(0, 0, 0, 0.32);
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.18s ease;
    pointer-events: none;
}
#pageNavOverlay.show {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;           /* block stray clicks while the next page loads */
}
.page-nav-spinner-box {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.85rem;
    padding: 1.5rem 1.9rem;
    border-radius: 14px;
    background: var(--color-bg-card, #ffffff);
    color: var(--color-text, #222222);
    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.35);
    min-width: 150px;
}
.page-nav-spinner {
    width: 2.4rem;
    height: 2.4rem;
    border: 3px solid rgba(128, 128, 128, 0.28);
    border-top-color: var(--color-primary, #0a84ff);
    border-radius: 50%;
    animation: spin 0.65s linear infinite;
    will-change: transform;
}
.page-nav-spinner-text {
    font-size: 0.95rem;
    font-weight: 600;
    letter-spacing: 0.01em;
}
@media (prefers-reduced-motion: reduce) {
    .page-nav-spinner { animation-duration: 1.3s; }
    #pageNavOverlay { transition: none; }
}

/* ── 14a. Character counter (below textareas with max length) ── */
.char-counter {
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
    text-align: right;
    margin-top: 0.2rem;
    transition: color 0.2s, font-weight 0.2s;
    font-variant-numeric: tabular-nums;
}
.char-counter.near-limit { color: var(--color-warning); font-weight: var(--font-weight-medium); }
.char-counter.at-limit   { color: var(--color-danger);  font-weight: var(--font-weight-bold);   }

/* ── 15. Back button ──────────────────────────────────────── */
.back-btn {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
    text-decoration: none;
    padding: 0.375rem 0.55rem;
    margin-left: -0.55rem;
    min-height: 44px;
    border-radius: var(--border-radius-sm);
    transition: color var(--transition-fast),
                background-color var(--transition-fast);
}
.back-btn:hover {
    color: var(--color-text);
    text-decoration: none;
    background-color: var(--color-primary-light);
}
.back-btn:focus-visible {
    outline: none;
    box-shadow: var(--shadow-focus);
    color: var(--color-text);
}

/* Labeled variant: "← Back to Events" instead of a bare ←. Applied by each site's
   site.js applyBackLabel(). A lone arrow immediately left of the <h1> reads as a
   label FOR that <h1> (the iOS "← Settings" convention), which next to the CURRENT
   page's title says the opposite of what it does; naming the real destination is
   the fix. See initBackButton() in Scripts/site.js.

   Deliberately stays on the title's row at every width — the words are what make
   the control legible, and a second line costs more on a phone than a truncated
   destination name does, so the back label elides before the title reflows. */
.back-btn.back-btn-labeled {
    flex: 0 1 auto;
    min-width: 0;
    max-width: 50%;
    white-space: nowrap;
}
.back-btn.back-btn-labeled .back-btn-text {
    overflow: hidden;
    text-overflow: ellipsis;
    min-width: 0;
}
@media (max-width: 480px) {
    .back-btn.back-btn-labeled {
        max-width: 44%;
        font-size: var(--font-size-xs, 0.8rem);
    }
}

/* ── 16. Utility classes ──────────────────────────────────── */
.visually-hidden {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0,0,0,0);
    white-space: nowrap;
    border: 0;
}
.text-muted   { color: var(--color-text-muted); }
.text-danger  { color: var(--color-danger); }
.text-success { color: var(--color-success); }
.text-center  { text-align: center; }
.text-right   { text-align: right; }
.text-left    { text-align: left; }
.d-none       { display: none !important; }
.d-flex       { display: flex; }
.d-block      { display: block; }
.flex-wrap    { flex-wrap: wrap; }
.gap-1        { gap: 0.25rem; }
.gap-2        { gap: 0.5rem; }
.gap-3        { gap: 0.75rem; }
.gap-4        { gap: 1rem; }
.mt-1 { margin-top: 0.25rem; }
.mt-2 { margin-top: 0.5rem; }
.mt-3 { margin-top: 0.75rem; }
.mt-4 { margin-top: 1rem; }
.mb-1 { margin-bottom: 0.25rem; }
.mb-2 { margin-bottom: 0.5rem; }
.mb-3 { margin-bottom: 0.75rem; }
.mb-4 { margin-bottom: 1rem; }
.w-100 { width: 100%; }
.cursor-pointer { cursor: pointer; }
.nowrap { white-space: nowrap; }
.select-auto { width: auto; }
.col-w-date { width: 8rem; white-space: nowrap; }
.col-w-chk  { width: 2.5rem; }
.detail-card-hidden { display: none; }

/* ── 16a. Toolbar row helpers ────────────────────────────── */
.toolbar-row {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    align-items: flex-end;
}
.toolbar-row-spaced {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    align-items: flex-end;
    margin-top: 0.75rem;
}
.toolbar-actions {
    display: flex;
    gap: 0.5rem;
    padding-bottom: 0.25rem;
}
.toolbar-search-grow {
    flex: 1;
    min-width: 200px;
    margin-bottom: 0;
}

/* ── 16b. Responsive hide/show ───────────────────────────── */
@media (max-width: 575px) { .hide-xs { display: none !important; } }
@media (max-width: 767px) { .hide-sm { display: none !important; } }
@media (min-width: 768px) { .show-xs-only { display: none !important; } }

/* ── 17. Focus visible (accessibility) ────────────────────── */
:focus-visible {
    outline: 3px solid var(--color-border-focus);
    outline-offset: 2px;
}

/* ── 18. Modals ───────────────────────────────────────────── */
.modal-overlay {
    display: none;
    position: fixed;
    inset: 0;
    background: rgba(15, 23, 42, 0.55);
    -webkit-backdrop-filter: blur(4px) saturate(140%);
    backdrop-filter:         blur(4px) saturate(140%);
    z-index: 2000;
    align-items: center;
    justify-content: center;
    padding: 1rem;
    animation: modalFade 0.18s var(--ease-out-quint);
}
.modal-overlay.open { display: flex; }

.modal-box {
    background-color: var(--color-bg-card);
    border: 1px solid var(--color-border);
    border-radius: var(--border-radius-lg);
    box-shadow: var(--shadow-xl);
    max-width: 480px;
    width: 100%;
    padding: 1.5rem;
    position: relative;
    animation: modalPop 0.22s var(--ease-out-back);
}
@keyframes modalFade {
    from { opacity: 0; }
    to   { opacity: 1; }
}
@keyframes modalPop {
    from { opacity: 0; transform: translateY(8px) scale(0.97); }
    to   { opacity: 1; transform: translateY(0)   scale(1); }
}

.modal-title {
    font-size: var(--font-size-lg);
    font-weight: var(--font-weight-bold);
    margin: 0 0 0.75rem 0;
}

.modal-footer {
    display: flex;
    gap: 0.75rem;
    margin-top: 1.25rem;
    justify-content: flex-end;
    flex-wrap: wrap;
}

/* ── 19. Breadcrumbs ──────────────────────────────────────── */
.breadcrumb {
    display: flex;
    flex-wrap: wrap;
    gap: 0.25rem;
    align-items: center;
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
    list-style: none;
    padding: 0;
    margin: 0 0 0.75rem 0;
}
.breadcrumb-item + .breadcrumb-item::before {
    content: "›";
    margin-right: 0.3rem;
    color: var(--color-text-light);
    font-size: 1.05em;
    line-height: 1;
}
.breadcrumb-item a { color: var(--color-link); text-decoration: none; }
.breadcrumb-item a:hover { text-decoration: underline; text-underline-offset: 2px; }
.breadcrumb-item.active { color: var(--color-text); font-weight: var(--font-weight-medium); }

/* ── 20. Tip-card structural helpers ──────────────────────── */
/* Used alongside .tip-card to position the × close button, hold the ⓘ trigger,
   and clear the float. The .tip-card itself is position:relative so .tips-close
   can be absolutely positioned inside. */
.tips-close {
    position: absolute;
    top: 0.5rem;
    right: 0.75rem;
}

/* TipsPanel.ascx renders the Ⓘ trigger BEFORE the page header on most pages.
   A plain float:right left the icon on its own line above the title. Anchor
   the trigger absolutely to the upper-right of <main class="page-wrapper">
   so it always sits in the upper-right corner of the title row. */
main.page-wrapper { position: relative; }
.tips-trigger-wrap {
    float: none;
    position: absolute;
    top: 1rem;
    right: 1rem;
    z-index: 5;
    margin: 0;
}
@media (min-width: 768px) {
    .tips-trigger-wrap { top: 1.5rem; right: 1.5rem; }
}
@media (min-width: 1200px) {
    .tips-trigger-wrap { top: 2rem; right: 1.5rem; }
}
.tips-clear { display: none; }

/* Reserve right-side space so a long page title can't visually overlap the
   absolutely-positioned Ⓘ trigger. Applies to .page-title (single-element
   title) as well as the .page-header pattern used elsewhere. */
.tips-trigger-wrap ~ .page-title,
.tips-trigger-wrap ~ .page-header,
.tips-trigger-wrap ~ * .page-title,
.tips-trigger-wrap ~ * .page-header {
    padding-right: 3rem;
}

/* ── 21. Form layout helpers ──────────────────────────────── */
.form-group {
    margin-bottom: 1rem;
}
.form-group-flush { margin-bottom: 0; }
.form-group .input-label,
.form-group .label { margin-bottom: 0.25rem; }
.form-group .textbox { width: 100%; }
@media (min-width: 768px) {
    .form-group .textbox { max-width: 480px; }
    /* A .form-group .textbox is capped at 480px on desktop, but a wrapping
       .input-clearable stretches to the full form-group width — leaving its
       absolutely-positioned × clear button floating to the RIGHT of the (narrower)
       textbox instead of inside it. Cap the wrapper to match so the × sits in the
       field. Child combinator on purpose: custom search bars that nest
       .input-clearable deeper (e.g. .wx-search-row > .input-clearable) manage
       their own width and must NOT be capped here. */
    .form-group > .input-clearable { max-width: 480px; }
}

.form-row {
    display: flex;
    flex-wrap: wrap;
    column-gap: 1rem;
    row-gap: 0.5rem;
    margin-bottom: 1rem;
}
.form-row .form-group {
    flex: 1 1 100%;
    margin-bottom: 0;
}
@media (min-width: 640px) {
    .form-row .form-group { flex: 1 1 calc(50% - 0.5rem); }
}

.form-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-top: 0.25rem;
    align-items: center;
}
.form-actions-centered { justify-content: center; }

/* ── Quiet Hours window (DoNotDisturb.ascx) ────────────────────
   Keep the From + Until label/dropdown pairs together on one line — two short
   half-hour dropdowns always fit. Wraps the second pair below only on a very
   narrow viewport. Shared across PacklistPRO / qMeet / qFIT. */
.dnd-window-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    column-gap: 1.25rem;
    row-gap: 0.5rem;
    margin-bottom: 1rem;
}
.dnd-window-row .dnd-window-field {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
}
.dnd-window-row .input-label {
    margin-bottom: 0;       /* override the stacked-label bottom margin for inline use */
    white-space: nowrap;
}
.dnd-window-row .dropdown {
    width: 9rem;            /* fits "12:00 AM" + chevron; stable width as the value changes */
}

/* ── Donate page ───────────────────────────────────────────────
   Payment-method row: a round method icon on the left, a wrappable
   name + URL in the middle, and the action buttons (Donate + Copy
   link) on the right. Stacks vertically on narrow screens so the
   buttons stay full-width and tappable. Shared across PacklistPRO /
   qMeet / qFIT Donate pages. The icon / name / url / actions /
   support-list sub-parts were promoted here from PacklistPRO so every
   site renders the same donate layout from the shared design system. */
.donate-method {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
    padding: 0.5rem 0;
}
.donate-method + .donate-method {
    border-top: 1px solid var(--color-border);
    margin-top: 0.75rem;
    padding-top: 1rem;
}
.donate-method-icon {
    flex: 0 0 2.5rem;
    width: 2.5rem;
    height: 2.5rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: var(--color-accent-bg, var(--color-info-bg));
    color: var(--color-accent);
    font-size: 1.25rem;
    line-height: 1;
    font-weight: var(--font-weight-medium, 500);
}
.donate-method-body { flex: 1 1 14rem; min-width: 0; word-break: break-word; }
.donate-method-name { margin: 0; font-weight: var(--font-weight-medium, 500); }
.donate-method-url {
    display: block;
    margin-top: 0.15rem;
    word-break: break-all;
    overflow-wrap: anywhere;
    color: var(--color-text-muted);
    font-size: var(--font-size-sm);
}
.donate-method-actions {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    flex-wrap: wrap;
    margin-left: auto;
}
.donate-method-actions .button { white-space: nowrap; }
.donate-method .button { flex: 0 0 auto; }
.donate-support-list { margin: 0.5rem 0 0 1.25rem; padding: 0; }
.donate-support-list li { margin: 0.15rem 0; }
@media (max-width: 575px) {
    .donate-method-actions { width: 100%; margin-left: 0; }
    .donate-method-actions .button { flex: 1 1 auto; }
}
@media (max-width: 480px) {
    .donate-method { gap: 0.5rem; }
    .donate-method-body { flex: 1 1 100%; }
}

/* Suggested-amount picker (Donate pages) — shared so all sites match.
   THEME-AWARE: pills read --color-bg / --color-text / --color-border so they
   stay readable in dark mode. (An earlier qFIT-local version used a token that
   doesn't exist — var(--color-surface-2,…) — and fell back to a hard-coded
   near-white #f3f4f6, giving light text on a white pill in dark mode.)
   Selected pill = accent fill + white text. */
.donate-amounts-card .donate-amount-fieldset { border: 0; padding: 0; margin: 0; }
.donate-amount-row {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    align-items: stretch;
    margin-top: 0.4rem;
}
.donate-amount-pill {
    appearance: none;
    -webkit-appearance: none;
    background: var(--color-bg);
    color: var(--color-text);
    border: 1px solid var(--color-border);
    border-radius: 999px;
    padding: 0.5rem 1.1rem;
    font-size: 1rem;
    font-weight: var(--font-weight-bold, 600);
    cursor: pointer;
    min-width: 64px;
    transition: background-color .15s ease, border-color .15s ease, color .15s ease, transform .05s ease;
}
.donate-amount-pill:hover { border-color: var(--color-accent); }
.donate-amount-pill:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 2px; }
.donate-amount-pill:active { transform: translateY(1px); }
.donate-amount-pill.selected,
.donate-amount-pill[aria-checked="true"] {
    background: var(--color-accent);
    border-color: var(--color-accent);
    color: #fff;
}
.donate-amount-custom-label {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    border: 1px solid var(--color-border);
    border-radius: 999px;
    padding: 0.1rem 0.6rem 0.1rem 0.85rem;
    background: var(--color-bg);
    color: var(--color-text);
    font-weight: var(--font-weight-bold, 600);
}
.donate-amount-custom {
    width: 5.5rem;
    border: 0;
    background: transparent;
    color: var(--color-text);
    padding: 0.35rem 0.25rem;
    font-size: 1rem;
    font-weight: var(--font-weight-bold, 600);
    text-align: right;
    -moz-appearance: textfield;       /* hide spinner arrows on a donation field */
}
.donate-amount-custom::-webkit-outer-spin-button,
.donate-amount-custom::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.donate-amount-custom::placeholder { color: var(--color-text-muted); font-weight: var(--font-weight-normal, 400); }
.donate-amount-custom:focus { outline: none; }
.donate-amount-custom-label:focus-within { outline: 2px solid var(--color-accent); outline-offset: 2px; }
/* Amount-aware "Donate via" CTA sits in .donate-method-actions next to Copy link. */
.donate-cta { min-width: 12.5rem; }
@media (max-width: 575px) {
    .donate-amount-pill { flex: 1 1 calc(50% - 0.5rem); min-width: 0; }
    .donate-amount-custom-label { flex: 1 1 100%; justify-content: center; }
    .donate-cta { min-width: 0; }
}

/* Compact horizontal pager row: [‹ Prev]  page X of Y  [Next ›].
   Stays a single line at every breakpoint and ships tighter button
   padding than .button.small so the pager doesn't dominate the page. */
.pager-inline {
    display: flex;
    flex-wrap: nowrap;
    justify-content: center;
    align-items: center;
    gap: 0.5rem;
    margin-top: 0.25rem;
}
.pager-inline > .button {
    padding: 0.15rem 0.55rem;
    font-size: 0.8rem;
    line-height: 1.2;
}

/* ── 22. Responsive table wrapper ─────────────────────────── */
.table-responsive {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

/* ── 23. Banners (full-width strip below the nav) ─────────── */
.banner-demo {
    background-color: var(--color-warning-bg);
    border-bottom: 1px solid var(--color-warning-border);
    color: var(--color-warning);
    padding: 0.55rem 1rem;
    font-size: var(--font-size-sm);
    text-align: center;
    font-weight: var(--font-weight-medium);
}
.banner-demo a {
    font-weight: var(--font-weight-bold);
    text-decoration: underline;
    text-underline-offset: 2px;
}
/* Optional leading icon kept smaller than text so it acts as a quiet marker. */
.banner-demo-icon {
    font-size: 1.05em;
    margin-right: 0.15rem;
    vertical-align: -1px;
}

/* ── 23a. Simple-mode notice (CROSS-SITE) ──────────────────────
   "You are in Simple mode - some features are hidden." Rendered site-wide from each
   master page's ConfigureSimpleModeBar when SiteMode = 1, for a signed-in member who
   has not dismissed it. Without it, every feature Simple hides just looks absent.

   LIVES HERE, NOT IN A SITE'S styles.css, ON PURPOSE (2026-08-04): the owner asked for
   ONE bar that is identical on qMEET, qFIT and PacklistPRO. It is deliberately
   self-contained - it does NOT reuse qMEET's .banner-events-* inner classes, which is
   what the original qMEET-only version did, because those classes exist ONLY in
   qMEET/Content/styles.css and would have rendered an unstyled bar on the other two.
   All three sites load this file after their own styles.css, so these rules win.

   Teal, so that on qMEET - the only one of the three that stacks several bars - it stays
   distinct from the grey chat bar, the blue events bar and the purple invites bar.
   White-on-teal reads correctly in both light and dark themes, so it needs no
   prefers-color-scheme variant. No "restore" chip: dismissal is for good (1-year cookie),
   and switching Site Mode always brings it back. ── */
.banner-simplemode {
    background-color: #0f766e;
    color: #fff;
    padding: 0.4rem 0.5rem 0.4rem 0.35rem;
    font-size: var(--font-size-sm);
}
.banner-simplemode-inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    /* 🔴 Reserve the top-right corner for the floating "?" help pill.
       .tutorial-help-pill is position:fixed at top:0.5rem with z-index 1502, and this bar sits
       at the very top of the document - so at scroll-top the pill lands exactly on top of this
       bar's x. MEASURED in Chrome on PacklistPRO 2026-08-04 before this rule existed:
       elementFromPoint() at the centre of the x returned #tutorialHelpPill, i.e. the dismiss
       button was completely unclickable. MSBuild, aspnet_compiler and a served-HTML grep all
       passed - only looking at the rendered page caught it.
       Reserved via the SAME custom property the pill anchors itself with, so the gap tracks the
       pill per site instead of being a guess: qMEET sets --pill-cluster-right in its own :root
       for its three-pill cluster, while qFIT and PacklistPRO fall back to 1rem. The 2.4rem is
       the pill's own min-width (1.9rem) plus breathing room. */
    padding-right: calc(var(--pill-cluster-right, 1rem) + 2.4rem);
}
/* Pin the body colour: some sites style bare text inside banners, and this bar has to
   stay legible on teal regardless of which site it renders on. */
.banner-simplemode-body { color: #fff; }
.banner-simplemode-icon {
    font-size: 1.05em;
    margin-right: 0.25rem;
    vertical-align: -1px;
}
/* "Show everything" - the one-click switch to Standard. An inverted pill so it reads as
   the action in a bar that is otherwise plain text. Every state pinned, or a site's own
   :visited / :hover link rules would repaint it mid-bar. */
.banner-simplemode-cta,
.banner-simplemode-cta:link,
.banner-simplemode-cta:visited,
.banner-simplemode-cta:hover,
.banner-simplemode-cta:focus,
.banner-simplemode-cta:active {
    display: inline-block;
    margin-left: 0.4rem;
    padding: 0.1rem 0.55rem;
    border-radius: 999px;
    background-color: #fff;
    color: #0f766e;
    font-weight: var(--font-weight-medium);
    text-decoration: none;
    white-space: nowrap;
}
.banner-simplemode-cta:hover,
.banner-simplemode-cta:focus { background-color: #e6fffa; }
/* Secondary link through to the setting itself, for the same reason the CTA pins its
   colours. */
.banner-simplemode-link,
.banner-simplemode-link:link,
.banner-simplemode-link:visited,
.banner-simplemode-link:hover,
.banner-simplemode-link:focus,
.banner-simplemode-link:active {
    margin-left: 0.55rem;
    color: #fff;
    text-decoration: underline;
    text-underline-offset: 2px;
    white-space: nowrap;
}
/* Dismiss. Sized to the 24px minimum tap target rather than to the glyph. */
.banner-simplemode-x {
    flex: 0 0 auto;
    min-width: 24px;
    min-height: 24px;
    padding: 0 0.25rem;
    border: 0;
    background: transparent;
    color: #fff;
    font-size: 1.1rem;
    line-height: 1;
    cursor: pointer;
}
.banner-simplemode-x:hover,
.banner-simplemode-x:focus { color: #e6fffa; }

/* Deep-link highlight for Preferences > Site Mode. The notice links to
   /Preferences#sitemode; the fragment does the scrolling, and this ring is what tells the
   member WHICH of the ~12 form groups they were just sent to. Without it the page scrolls
   and leaves them hunting. Every site's Preferences.aspx carries id="sitemode" on that
   form-group; keep the three in step. */
#sitemode:target {
    border-radius: 4px;
    box-shadow: 0 0 0 2px var(--color-accent);
    padding: 0.35rem;
}

/* ── 23b. Persistent demo state ────────────────────────────────
   .banner-demo above renders ABOVE the sticky .site-nav in both masters, so it
   scrolls out of view after the first screenful. That is fine on a page whose
   only controls are chrome (a tutorial overlay, a client-side filter) but wrong
   on a page that offers a Save an anonymous visitor cannot complete: by the time
   they reach the button, the only warning they were given is off-screen.

   .demo-strip is the persistent form — pinned to the bottom edge, always in view,
   and deliberately NOT dismissible (the constraint it describes does not go away
   when the notice is closed). Pinned to the BOTTOM rather than the top because
   .site-nav already owns `position:sticky; top:0` and two stickies at top:0 in one
   scroll container overlap.

   Paired with .demo-action-badge, which site-core.js stamps next to each primary
   action so the warning also exists at the point of decision. Both are driven by
   `<body data-demo-state="persistent">`, rendered by each site's master. */
.demo-strip {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    z-index: 9996;              /* the established bottom-furniture band; below the
                                   toast stack (9999) so a toast is never obscured */
    background-color: var(--color-warning-bg);
    border-top: 2px solid var(--color-warning-border);
    color: var(--color-warning);
    padding: 0.5rem 1rem;
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-medium);
    text-align: center;
    box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.12);
}
.demo-strip a {
    font-weight: var(--font-weight-bold);
    text-decoration: underline;
    text-underline-offset: 2px;
    color: inherit;
}

/* Lift the two bottom-right fixed buttons clear of the strip. */
body.has-demo-strip .back-to-top    { bottom: 4rem; }
body.has-demo-strip .pwa-install-btn { bottom: 7.25rem; }

/* Reserve the strip's height so it never covers the end of the page (footer, last
   form action).
   ⚠ This is a real in-flow SPACER ELEMENT, not `body { padding-bottom }`, because
   padding on <body> is inert on these pages: body carries `overflow: hidden auto`
   and is not the scroll container, so a measured `padding-bottom: 52px` — set from
   the stylesheet OR inline with !important — changed neither the computed value nor
   body.scrollHeight. A spacer in normal flow inside the content wrapper reserves the
   space regardless of which ancestor scrolls. site-core.js appends it. */
.demo-strip-spacer {
    height: 3.25rem;
    flex: 0 0 auto;     /* survives a flex-column wrapper, where height alone can collapse */
}

/* The at-the-point-of-action marker. Inline-flex so it sits on the button's line;
   `.button + &` spacing is handled by the gap in .form-actions where present. */
.demo-action-badge {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    margin-left: 0.5rem;
    padding: 0.15rem 0.5rem;
    border: 1px solid var(--color-warning-border);
    border-radius: 999px;
    background-color: var(--color-warning-bg);
    color: var(--color-warning);
    font-size: var(--font-size-xs, 0.75rem);
    font-weight: var(--font-weight-medium);
    line-height: 1.4;
    white-space: nowrap;
    vertical-align: middle;
}

/* Dark mode: --color-warning-bg / -border ARE redeclared for dark, but
   --color-warning itself is NOT (it stays #e65100, ~3:1 on the dark surface),
   which is why .banner-demo carries an explicit dark color above. Same here. */
[data-theme="dark"] .demo-strip,
[data-theme="dark"] .demo-action-badge { color: #ffa726; }

.banner-offline {
    background-color: var(--color-danger-bg);
    border-bottom: 1px solid var(--color-danger-border);
    color: var(--color-danger);
    padding: 0.55rem 1rem;
    font-size: var(--font-size-sm);
    text-align: center;
    font-weight: var(--font-weight-medium);
    display: none;
    animation: bannerSlideIn 0.22s var(--ease-out-quint);
}
body.offline .banner-offline { display: block; }
@keyframes bannerSlideIn {
    from { transform: translateY(-100%); }
    to   { transform: translateY(0); }
}

/* ── 24. ASP.NET validator / inline field error ───────────── */
/* A small red "!" bullet precedes the message so it reads as an error even on
   calm pages. inline-flex keeps the bullet aligned with the wrapped message. */
.field-validation-error,
.error-message {
    color: var(--color-danger);
    font-size: var(--font-size-sm);
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    margin-top: 0.2rem;
}
.field-validation-error::before,
.error-message::before {
    content: "!";
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.05em;
    height: 1.05em;
    flex-shrink: 0;
    background: var(--color-danger);
    color: #ffffff;
    border-radius: 50%;
    font-size: 0.7em;
    font-weight: 700;
    line-height: 1;
}

/* ── Clearable search input ────────────────────────────────────────
   Wrapper + clear button for search/filter fields. */
.input-clearable {
    position: relative;
    display: flex;
    align-items: center;
}
/* Scoped to `input`, not `.textbox`: several pages put a bespoke class on the
   field (NHT Gallery's .tile-filter, etc.). When these rules were .textbox-only
   those fields reserved no room for the × (so it sat on top of the text) and
   kept the native WebKit cancel button, giving two ×'s side by side. */
.input-clearable input { padding-right: 2rem; }
.input-clearable input::-webkit-search-cancel-button,
.input-clearable input::-webkit-search-decoration {
    -webkit-appearance: none;
    appearance: none;
}
.input-clear-btn {
    position: absolute;
    right: 0.5rem;
    background: none;
    border: none;
    cursor: pointer;
    color: var(--color-text-light, #9aa0a8);
    font-size: 1.1rem;
    line-height: 1;
    padding: 0.25rem;
    border-radius: var(--border-radius-sm, 6px);
    transition: color var(--transition-fast, 0.15s ease),
                background-color var(--transition-fast, 0.15s ease);
    /* ALWAYS visible — the × is a permanent affordance, not a state indicator.
       It used to be display:none until the box had a value, which (a) made the
       control appear/disappear as you typed and (b) failed outright on inputs
       with no placeholder attribute, since the reveal rule keyed off
       :not(:placeholder-shown). Clicking it on an empty box is a harmless no-op. */
    display: block;
}
/* The hover fill is a surface-relative wash, NOT --color-primary-light. That
   token is picked elsewhere precisely because it flips per theme, but it is an
   OPAQUE value chosen against the page background, and this × is the one place
   that sits INSIDE a .textbox — the lightest surface in either theme. Measured:
   dark-mode input #555555 has luminance 0.091 against the token's dark #082a3d
   at 0.020, so the fill landed DARKER than the field and painted a near-black
   chip; light-mode input #e2f1fb is visually indistinguishable from the token's
   light #e0f6fe, so the hover disappeared entirely. A translucent wash
   composites against whatever is actually underneath and is correct on both.
   Same reasoning would apply to .password-toggle:hover (also in-field). */
.input-clear-btn:hover {
    color: var(--color-text, #1a1f2e);
    background-color: var(--color-hover-wash, rgba(0, 0, 0, 0.10));
}
.input-clear-btn:focus {
    outline: 2px solid var(--color-border-focus, var(--color-primary, #0090C8));
    outline-offset: 2px;
}
/* .is-visible is now a no-op (the button is always shown); the rule is kept so
   any page still adding that class doesn't break. The old companion rule
   `.textbox:not(:placeholder-shown) ~ .input-clear-btn` was removed with the
   always-visible change above. */
.input-clear-btn.is-visible {
    display: block;
}

/* ── Skip-to-content link (WCAG 2.4.1) ────────────────────── */
.skip-link {
    position: absolute;
    top: -100px;
    left: 0.5rem;
    background-color: var(--color-accent, #00B0F0);
    color: #fff;
    padding: 0.5rem 0.875rem;
    border-radius: var(--border-radius-sm, 6px);
    text-decoration: none;
    font-weight: var(--font-weight-bold, 600);
    z-index: calc(var(--nav-z) + 100);
    transition: top 0.15s ease;
}
.skip-link:focus,
.skip-link:focus-visible {
    top: 0.5rem;
    outline: 3px solid #fff;
    outline-offset: 2px;
    color: #fff;
}

/* ── Card enter animation ─────────────────────────────────── */
html[data-page-enter] .card {
    animation: cardEnter 280ms var(--ease-out-quint, cubic-bezier(0.22, 1, 0.36, 1)) both;
}
html[data-page-enter] .card:nth-child(2) { animation-delay: 40ms; }
html[data-page-enter] .card:nth-child(3) { animation-delay: 80ms; }
html[data-page-enter] .card:nth-child(4) { animation-delay: 120ms; }
html[data-page-enter] .card:nth-child(n+5) { animation-delay: 160ms; }
@keyframes cardEnter {
    from { opacity: 0; transform: translateY(6px); }
    to   { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
    html[data-page-enter] .card { animation: none; }
}

/* ── Data table ───────────────────────────────────────────── */
.data-table {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--font-size-sm, 0.875rem);
}
.data-table th {
    text-align: left;
    padding: 0.65rem 0.75rem;
    border-bottom: 2px solid var(--color-border, #e0e0e0);
    color: var(--color-text-muted, #6c757d);
    font-weight: var(--font-weight-medium, 500);
    white-space: nowrap;
    text-transform: uppercase;
    font-size: 0.72rem;
    letter-spacing: 0.04em;
}
.data-table td {
    padding: 0.6rem 0.75rem;
    border-bottom: 1px solid var(--color-border, #e0e0e0);
    vertical-align: middle;
    transition: background-color var(--transition-fast);
}
.data-table tr:last-child td { border-bottom: none; }
.data-table tbody tr:nth-child(even) td { background-color: color-mix(in srgb, var(--color-bg) 50%, transparent); }
.data-table tr:hover td { background-color: var(--color-primary-light, #e0f6fe); }
.data-table-sticky thead th {
    position: sticky;
    top: var(--nav-height, 56px);
    z-index: 2;
    background: var(--color-bg-card);
}

/* ── Footer ───────────────────────────────────────────────── */
.site-footer {
    background-color: var(--color-bg-nav, #1a1a2e);
    color: rgba(255,255,255,0.6);
    font-size: var(--font-size-sm, 0.875rem);
    text-align: center;
    padding: 1.5rem 1rem;
    margin-top: 3rem;
}
.site-footer a { color: rgba(255,255,255,0.8); text-decoration: none; }
.site-footer a:hover { color: #fff; text-decoration: underline; }
.site-footer p { margin: 0.25rem 0; }
.site-footer-links {
    text-align: center;
    line-height: 1.8;
    margin: 0 auto 0.4rem;
}
.site-footer-sep { color: rgba(255,255,255,0.35); }
.site-footer-copy { color: rgba(255,255,255,0.5); font-size: var(--font-size-xs, 0.75rem); }
.site-footer-copy a { color: rgba(255,255,255,0.65); }

/* .linklike-btn: a <button> that should visually present as an inline link
   (footer "Press ? for shortcuts" / "Back to top" on all 3 sites). Keeps
   semantic HTML (button = action, link = navigation) while preserving the
   inline-text appearance the surrounding paragraph expects. Single-class
   selector (0,1,0) so a co-applied .link class still controls color +
   text-decoration for buttons authored as class="link linklike-btn".
   (Migrated here from PacklistPRO Content/styles.css 2026-06-07.) */
.linklike-btn {
    background: transparent;
    border: 0;
    padding: 0;
    margin: 0;
    font: inherit;
    cursor: pointer;
    text-align: inherit;
    display: inline;
    line-height: inherit;
}

/* ── Page layout ──────────────────────────────────────────── */
.page-wrapper {
    max-width: 1200px;
    margin: 0 auto;
    padding: 1rem;
}
@media (min-width: 768px)  { .page-wrapper { padding: 1.5rem; } }
@media (min-width: 1200px) { .page-wrapper { padding: 2rem 1.5rem; } }
.page-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-bottom: 1.25rem;
    padding-bottom: 0.65rem;
    border-bottom: 1px solid color-mix(in srgb, var(--color-border) 70%, transparent);
}
.page-header-actions {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
    align-items: center;
}
.page-header-title-row {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
}

/* ── Empty state ──────────────────────────────────────────── */
.empty-state {
    text-align: center;
    padding: 2rem 1rem;
    color: var(--color-text-muted, #6c757d);
}
.empty-state-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 4rem;
    height: 4rem;
    margin-bottom: 0.75rem;
    background: var(--color-primary-light);
    color: var(--color-primary);
    border-radius: 50%;
    font-size: 1.75rem;
    border: 1px solid color-mix(in srgb, var(--color-primary) 25%, transparent);
}
.empty-state-title {
    color: var(--color-text);
    font-size: var(--font-size-lg);
    font-weight: var(--font-weight-bold);
    margin: 0 0 0.4rem;
}
.empty-state-text { margin-top: 0.5rem; }
.empty-state-sub {
    color: var(--color-text-muted);
    margin: 0 0 1rem;
    max-width: 32rem;
    margin-left: auto;
    margin-right: auto;
}
.empty-state-actions {
    display: flex;
    gap: 0.5rem;
    justify-content: center;
    flex-wrap: wrap;
}
.empty-state .button { margin-top: 0.75rem; }

/* ── Session expired modal ────────────────────────────────── */
#session-expired-modal .modal-box {
    text-align: center;
    padding-top: 2rem;
}
#session-expired-modal .modal-box::before {
    content: "\23F1";
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 3.25rem;
    height: 3.25rem;
    margin: 0 auto 0.75rem;
    background: var(--color-primary-light);
    color: var(--color-primary);
    border-radius: 50%;
    font-size: 1.5rem;
    border: 1px solid color-mix(in srgb, var(--color-primary) 25%, transparent);
}
#session-expired-modal .modal-footer {
    justify-content: center;
}

/* ── Bootstrap dark-mode fix ─────────────────────────────── */
[data-theme="dark"] .modal-content {
    background-color: var(--color-bg-card);
    color: var(--color-text);
    border-color: var(--color-border);
}
[data-theme="dark"] .modal-header {
    border-bottom-color: var(--color-border);
}
[data-theme="dark"] .modal-footer {
    border-top-color: var(--color-border);
}
[data-theme="dark"] .btn-close {
    filter: invert(1) grayscale(100%) brightness(200%);
}

/* ── Password wrapper ────────────────────────────────────── */
.password-wrapper              { position: relative; display: flex; align-items: center; }
.password-wrapper .textbox     { flex: 1; padding-right: 2.5rem; }
.password-toggle {
    position: absolute;
    right: 0.4rem;
    background: none;
    border: none;
    cursor: pointer;
    color: var(--color-text-muted);
    font-size: 1.1rem;
    padding: 0.3rem 0.45rem;
    line-height: 1;
    min-height: 0;
    min-width: 0;
    border-radius: var(--border-radius-sm);
    transition: color var(--transition-fast), background-color var(--transition-fast);
}
.password-toggle:hover  { color: var(--color-text); background: var(--color-primary-light); }
.password-toggle:focus-visible { outline: none; box-shadow: var(--shadow-focus); color: var(--color-text); }

/* ── Caps-lock warning (shown by site.js initCapsLockWarning on password fields) ── */
.caps-lock-warning {
    display: block;
    margin-top: 0.25rem;
    font-size: var(--font-size-sm);
    color: var(--color-warning);
    font-weight: var(--font-weight-medium);
}
.caps-lock-warning[hidden] { display: none; }

/* ── Textarea sizing variants ────────────────────────────── */
.textbox-ml-xs   { min-height: 60px; }
.textbox-ml-sm   { min-height: 75px; }
.textbox-ml      { min-height: 100px; }
.textbox-ml-md   { min-height: 150px; }
.textbox-ml-lg   { min-height: 200px; }
.textbox-ml-xl   { min-height: 300px; }

/* ── Print ────────────────────────────────────────────────── */
@media print {
    .site-nav, .site-footer, .skip-link, .banner-offline, .banner-demo,
    .demo-strip, .demo-action-badge,
    .tips-trigger-wrap, .tips-panel, .tips-trigger,
    .tip-card, .tip-icon-button,
    .back-to-top, .pwa-install-btn, .shortcuts-overlay, .scroll-progress-bar,
    .site-toast, .toc-btn, .toc-overlay,
    .modal-overlay, .form-actions, .toolbar-actions,
    .page-header-actions { display: none !important; }
    body { background: #fff !important; color: #000 !important; }
    body.has-demo-strip { padding-bottom: 0 !important; }   /* the strip is hidden above */
    .card, .main-card { box-shadow: none !important; border: 1px solid #ccc !important; break-inside: avoid; }
    .page-wrapper { max-width: none; padding: 0; }
    a[href]:not([href^="#"])::after {
        content: " (" attr(href) ")";
        font-size: 0.85em;
        color: #555;
    }
    .progress-track { border: 1px solid #999; }
    .progress-fill  { background: #555 !important; }
    .exp-typebar-seg { filter: grayscale(0.25) !important; }
}

/* ── Print: page numbering ─────────────────────────────────────────
   Adds "Page X of Y" to the bottom-right of every printed page so a
   multi-page packlist / event detail / fitness report can be reassembled
   if pages get separated. counter(page) and counter(pages) are CSS
   built-ins kept by the print engine. Browsers that don't yet support
   @page margin boxes (older Safari, older Firefox) will silently ignore
   this; the rest of the print layout is unaffected. Users on those
   browsers can still enable the built-in "Headers and footers" option
   in the browser's print dialog as a fallback.

   @top-* boxes are intentionally left empty so the layout doesn't
   conflict with whatever the user has set as the browser's print header.
   Margins are also left untouched here — each site's @media print block
   handles per-page chrome (hiding nav, footer, etc.). */
@page {
    @bottom-right {
        content: "Page " counter(page) " of " counter(pages);
        font-size: 9pt;
        color: #666;
        font-family: var(--font-family, sans-serif);
    }
}

/* ── 25. Dirty-form save indicator ────────────────────────────── */
[data-dirty-watch].is-dirty .button.save:not(.saving):not(.saved) {
    position: relative;
    box-shadow: var(--shadow-btn), 0 0 0 2px color-mix(in srgb, var(--color-save-btn) 40%, transparent);
}
[data-dirty-watch].is-dirty .button.save:not(.saving):not(.saved)::before {
    content: "";
    position: absolute;
    top: 4px;
    right: 4px;
    width: 8px;
    height: 8px;
    background: #fff;
    border-radius: 50%;
    box-shadow: 0 0 0 2px var(--color-save-btn);
    animation: saveDotPulse 1.5s var(--ease-in-out) infinite;
}
@keyframes saveDotPulse {
    0%, 100% { transform: scale(1);   opacity: 0.95; }
    50%      { transform: scale(1.2); opacity: 0.7; }
}
@media (prefers-reduced-motion: reduce) {
    [data-dirty-watch].is-dirty .button.save::before { animation: none; }
}

/* ── Contact Us form layout helpers ──────────────────────────── */
.cu-site-row {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    align-items: flex-end;
}
.cu-site-group { margin-bottom: 0; }
.cu-site-select { width: auto; }
.cu-page-group {
    margin-bottom: 0;
    flex: 1;
    min-width: 160px;
}
/* form-group with extra top margin when stacked below another form-group */
.cu-group-spaced { margin-top: 0.5rem; }
/* Char counter under multiline text — left-aligned override */
.cu-char-counter { text-align: left; }
/* Attachments file picker row */
.cu-file-row {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
    margin-top: 0.35rem;
}
.cu-file-picker-label {
    cursor: pointer;
    margin: 0;
}
/* Drop-zone wrapper around the file picker — gets the dashed border and overlay
   on dragover. Picker continues to work for click-to-upload too. */
.cu-file-drop {
    position: relative;
    border: 1px dashed transparent;
    border-radius: var(--border-radius-sm);
    padding: 0.35rem;
    transition: background-color var(--transition-fast), border-color var(--transition-fast);
}
.cu-file-drop-hint {
    color: var(--color-text-muted);
    font-style: italic;
}
@media (hover: none) and (pointer: coarse) {
    /* Hide the drag hint on touch devices — drag-and-drop isn't a natural mobile gesture. */
    .cu-file-drop-hint { display: none; }
}
.cu-file-drop.cu-file-dragover {
    border-color: var(--color-accent);
    background: var(--color-primary-light);
}
.cu-file-drop-overlay {
    position: absolute;
    inset: 0.35rem;
    display: none;
    align-items: center;
    justify-content: center;
    background: color-mix(in srgb, var(--color-primary-light) 90%, transparent);
    color: var(--color-primary-dark);
    border-radius: var(--border-radius-sm);
    font-size: var(--font-size-lg);
    font-weight: var(--font-weight-bold);
    pointer-events: none;
    text-align: center;
}
.cu-file-drop.cu-file-dragover .cu-file-drop-overlay { display: flex; }
/* File-error alert — hidden when there are no messages to show.
   Uses :empty so the panel auto-hides whenever JS clears innerHTML to '' and
   reappears as soon as JS writes any text. :empty has higher specificity than
   the shared .alert-panel { display: block } so we win the cascade without
   needing !important. The .has-error class is kept as a styling hook (e.g.
   for any future "shake" animation) but no longer drives display. */
.cu-file-error {
    margin-top: 0.5rem;
    font-size: var(--font-size-sm);
}
.cu-file-error:empty { display: none; }
/* Narrow auto-width selects (Urgency/Importance/Expecting a Reply) */
.cu-select-auto { width: auto; }

/* Submit row spacing */
.cu-submit-row {
    margin-top: 0.75rem;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.75rem;
}

/* File upload list (Contact Us attachments) */
.cu-file-list {
    list-style: none;
    margin: 0.35rem 0 0;
    padding: 0;
}
.cu-file-item {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.3rem 0.5rem;
    border-bottom: 1px solid var(--color-border);
    font-size: var(--font-size-sm);
}
.cu-file-item:last-child { border-bottom: none; }
.cu-file-name  { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cu-file-size  { color: var(--color-text-muted); flex-shrink: 0; }
.cu-file-remove { color: var(--color-danger); flex-shrink: 0; }

/* About-page hero — slightly tinted background + a soft "spotlight" radial gradient. */
.about-hero {
    background-image:
        radial-gradient(circle at top right,
            color-mix(in srgb, var(--color-accent) 8%, transparent) 0%,
            transparent 55%),
        linear-gradient(180deg, var(--color-bg-card), var(--color-bg-card));
}
[data-theme="dark"] .about-hero {
    background-image:
        radial-gradient(circle at top right,
            color-mix(in srgb, var(--color-accent) 18%, transparent) 0%,
            transparent 55%),
        linear-gradient(180deg, var(--color-bg-card), var(--color-bg-card));
}

/* ── 13. Navigation ──────────────────────────────────────────── */

.site-nav {
    position: sticky;
    top: 0;
    z-index: var(--nav-z);
    background-color: var(--color-bg-nav);
    /* Subtle gradient sheen instead of flat color — adds depth without distraction.
       Falls back to flat bg if linear-gradient unsupported (none modern). */
    background-image: linear-gradient(to bottom,
                       color-mix(in srgb, var(--color-bg-nav) 88%, #ffffff 12%) 0%,
                       var(--color-bg-nav) 100%);
    height: var(--nav-height);
    display: flex;
    align-items: center;
    box-shadow: var(--shadow-md);
    /* Hairline accent under the bar, separating nav from page content */
    border-bottom: 1px solid rgba(0, 0, 0, 0.25);
}
.site-nav .nav-inner {
    width: 100%;
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 1rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
}
.nav-brand {
    font-size: 1.3rem;
    font-weight: 700;
    color: #fff;
    text-decoration: none;
    letter-spacing: 0.005em;
    transition: opacity var(--transition-fast);
}
.nav-brand:hover { color: #fff; text-decoration: none; opacity: 0.92; }
.nav-brand-accent { color: var(--color-accent); }
/* Hamburger toggle */
.nav-toggle {
    display: block;
    background: none;
    border: none;
    cursor: pointer;
    padding: 0.5rem;
    color: #fff;
    font-size: 1.5rem;
    line-height: 1;
    min-height: 44px;
    min-width: 44px;
}
@media (min-width: 992px) { .nav-toggle { display: none; } }

/* Nav menu */
.nav-menu {
    display: none;
    flex-direction: column;
    position: fixed;
    top: var(--nav-height);
    left: 0;
    right: 0;
    bottom: 0;
    background-color: var(--color-bg-nav);
    overflow-y: auto;
    z-index: calc(var(--nav-z) - 1);
    padding: 0.5rem 0 2rem;
    /* Strip the default UL bullet — without this, <li class="nav-item"> rows
       (Home, My Trips, Quicklist, etc.) render with a disc, while role-gated
       <asp:Panel> items (Setup, Admin, My Account, Login — rendered as <div>)
       don't, so the menu looks inconsistent. The dot has no semantic purpose. */
    list-style: none;
    margin: 0;
}
.nav-menu.open { display: flex; }

@media (min-width: 992px) {
    .nav-menu {
        display: flex;
        flex-direction: row;
        position: static;
        background: none;
        overflow: visible;
        padding: 0;
        align-items: center;
        gap: 0.25rem;
    }
}

/* Nav items */
.nav-item { position: relative; }

.nav-link {
    display: flex;
    align-items: center;
    gap: 0.375rem;
    padding: 0.75rem 1.25rem;
    color: rgba(255,255,255,0.85);
    text-decoration: none;
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-medium);
    transition: color var(--transition-fast), background-color var(--transition-fast);
    white-space: nowrap;
    position: relative;
}
.nav-link:visited { color: rgba(255,255,255,0.85); }
.nav-link:hover {
    color: #fff;
    background-color: var(--color-accent);
    border-radius: var(--border-radius-sm);
    text-decoration: none;
}
.nav-link.active {
    color: #fff;
    background-color: var(--color-accent);
    border-radius: var(--border-radius-sm);
    text-decoration: none;
    font-weight: var(--font-weight-bold);
}

/* Logout link — red text so the destructive sign-out action is unmistakable.
   The ancestor selector (.nav-menu) raises specificity above .nav-dropdown
   .nav-link's mobile override so the red color sticks on every viewport. */
.nav-menu .nav-link.nav-link-logout,
.nav-menu .nav-link.nav-link-logout:visited {
    color: #ef5350;
}
.nav-menu .nav-link.nav-link-logout:hover {
    color: #ff8a80;
    background-color: rgba(239, 83, 80, 0.12);
}
/* Underline accent on hover for root-level desktop links — appears beneath the link
   bar without shifting layout. Hidden by default; expands from center on hover/active. */
@media (min-width: 992px) {
    .nav-menu > .nav-item > .nav-link::after {
        content: "";
        position: absolute;
        bottom: 4px;
        left: 50%;
        width: 0;
        height: 2px;
        background: var(--color-accent);
        transition: width var(--transition-fast), left var(--transition-fast);
        border-radius: 1px;
    }
    .nav-menu > .nav-item > .nav-link.active::after,
    .nav-menu > .nav-item:hover > .nav-link::after {
        width: calc(100% - 2.5rem);
        left: 1.25rem;
    }
    /* Don't double-decorate when the active state already applies a full background. */
    .nav-menu > .nav-item > .nav-link.active::after { display: none; }
}

/* Root-level nav links: slightly larger than dropdown links */
.nav-menu > .nav-item > .nav-link {
    font-size: var(--font-size-base); /* 1rem vs --font-size-sm (0.875rem) for dropdowns */
}

/* Dropdown arrow */
.nav-link-has-dropdown::after {
    content: "▾";
    font-size: 0.75rem;
    margin-left: 0.25rem;
}

/* Dropdown menu */
.nav-dropdown {
    display: none;
    list-style: none;
    margin: 0;
    padding: 0;
}
/* Dropdown links slightly larger than the old sm default */
.nav-dropdown .nav-link { font-size: 1.0625rem; }

/* "(soon)" suffix on nav links that go to "Coming Soon" stub pages. Smaller
   and dimmer than the main label so users understand the link works but the
   feature isn't built yet. Subtle dotted underline reinforces "in progress". */
.nav-soon {
    font-size: 0.7em;
    color: rgba(255,255,255,0.5);
    font-style: italic;
    margin-left: 0.3rem;
    padding: 0.05rem 0.35rem;
    border-radius: 999px;
    background: rgba(255,255,255,0.07);
    letter-spacing: 0.02em;
}
/* Same treatment when the (soon) label appears on light content surfaces
   (Admin page bullets reference stub pages with `<span class="nav-soon">`). */
.card .nav-soon {
    color: var(--color-text-muted);
    background: var(--color-bg);
    border: 1px dashed var(--color-border);
}
/* "New since last visit" badge — small accent-colored dot next to a nav link
   (currently used on Changes / New Features). The dot pulses gently to draw
   the eye without being obnoxious. Visit the destination page → server-side
   clears the cookie → badge disappears on next render. */
.nav-badge-new {
    display: inline-block;
    margin-left: 0.3rem;
    font-size: 0.7em;
    color: var(--color-accent);
    line-height: 1;
    vertical-align: middle;
    animation: navBadgePulse 2s var(--ease-in-out) infinite;
}
@keyframes navBadgePulse {
    0%, 100% { opacity: 1;   transform: scale(1); }
    50%      { opacity: 0.55; transform: scale(0.85); }
}
@media (prefers-reduced-motion: reduce) {
    .nav-badge-new { animation: none; }
}

/* Red count pill for the admin "Admin" nav item — shows how many items are
   waiting in the moderation queue (Site.Master.SetAdminBadge, admin-only).
   Shares the navBadgePulse animation so it reads as "needs attention". */
.nav-badge-count {
    display: inline-block;
    min-width: 1.25em;
    margin-left: 0.35rem;
    padding: 0.05em 0.4em;
    font-size: 0.7em;
    font-weight: var(--font-weight-bold);
    line-height: 1.3;
    text-align: center;
    color: #fff;
    background-color: var(--color-danger);
    border-radius: 999px;
    vertical-align: middle;
    animation: navBadgePulse 2s var(--ease-in-out) infinite;
}
@media (prefers-reduced-motion: reduce) {
    .nav-badge-count { animation: none; }
}

@media (max-width: 991px) {
    .nav-dropdown { padding-left: 1rem; background-color: var(--color-bg-nav-dropdown); }
    .nav-dropdown.open { display: block; }
    .nav-dropdown .nav-link {
        padding: 0.5rem 1.25rem;
        color: rgba(255,255,255,0.7);
    }
    .nav-dropdown .nav-link.active {
        background-color: var(--color-accent);
        color: #fff;
        font-weight: var(--font-weight-bold);
    }
}
@media (min-width: 992px) {
    .nav-item:hover .nav-dropdown,
    .nav-item:focus-within .nav-dropdown {
        display: block;
        position: absolute;
        top: 100%;
        left: 0;
        min-width: 220px;
        background-color: var(--color-bg-nav-dropdown);
        backdrop-filter: blur(12px);
        -webkit-backdrop-filter: blur(12px);
        border: 1px solid rgba(255,255,255,0.10);
        border-radius: var(--border-radius);
        box-shadow: var(--shadow-lg);
        z-index: 999;
        padding: 0.35rem 0;
        margin-top: 0.25rem;
        /* Subtle slide-down + fade for dropdown reveal */
        animation: navDropFade 0.18s var(--ease-out-quint);
        transform-origin: top center;

        /* ── Long-menu overflow (added 2026-07-28) ───────────────────────
           .site-nav is position:sticky/top:0, and this panel is absolutely
           positioned inside it, so it does NOT move when the page scrolls.
           Without a cap, a tall menu (qFIT's and qMEET's "More" are the worst)
           simply ran past the bottom of the viewport and those entries were
           permanently unreachable on desktop — no amount of page scrolling
           brought them back. Cap to the space actually below the bar and let
           the panel scroll itself.
           overscroll-behavior: contain stops the scroll chaining to the page
           once the menu hits its end. */
        max-height: calc(100vh - var(--nav-height, 56px) - 1rem);
        overflow-y: auto;
        overscroll-behavior: contain;
        /* Thin, theme-appropriate scrollbar on the dark nav panel. */
        scrollbar-width: thin;
        scrollbar-color: rgba(255,255,255,0.35) transparent;
    }
    .nav-dropdown::-webkit-scrollbar { width: 8px; }
    .nav-dropdown::-webkit-scrollbar-track { background: transparent; }
    .nav-dropdown::-webkit-scrollbar-thumb {
        background-color: rgba(255,255,255,0.3);
        border-radius: 999px;
    }
    .nav-dropdown::-webkit-scrollbar-thumb:hover { background-color: rgba(255,255,255,0.45); }

    /* Invisible bridge so the cursor stays in hover when crossing from
       the trigger to the dropdown — the dropdown has margin-top: 0.25rem
       which creates a dead zone where neither the nav-item nor the
       dropdown is hovered, so it vanishes mid-traversal.
       ⚠ This USED TO be .nav-dropdown::before at top:-10px. That breaks the
       moment the panel becomes a scroll container (above): overflow in the
       block-START direction is clipped and never scrollable, so the bridge
       was clipped away and the menu vanished mid-traversal again. It now
       hangs off the TRIGGER LINK instead, which is not a scroll container.
       ::before, not ::after — .nav-link-has-dropdown::after is the ▾ caret. */
    .nav-item:hover > .nav-link-has-dropdown::before,
    .nav-item:focus-within > .nav-link-has-dropdown::before {
        content: "";
        position: absolute;
        top: 100%;
        left: 0;
        right: 0;
        height: 10px;
        background: transparent;
    }

    /* Right-aligned dropdown for trailing nav items (e.g. the My Account
       menu on the far right of the navbar). Without this, left:0 anchors
       the panel to the trigger's left edge and the panel overflows the
       viewport on the right. Opt in by adding .nav-item-end on the parent
       .nav-item. */
    .nav-item.nav-item-end:hover .nav-dropdown,
    .nav-item.nav-item-end:focus-within .nav-dropdown {
        left: auto;
        right: 0;
    }
    .nav-dropdown .nav-link {
        padding: 0.5rem 1rem;
        border-radius: 0;
    }
    .nav-dropdown .nav-link:hover {
        background-color: var(--color-accent);
        color: #fff;
    }
    .nav-dropdown .nav-link.active {
        background-color: var(--color-accent);
        color: #fff;
        font-weight: var(--font-weight-bold);
    }
}
@keyframes navDropFade {
    from { opacity: 0; transform: translateY(-4px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* Section label + divider inside long dropdowns. */
.nav-section-label {
    list-style: none;
    padding: 0.5rem 1rem 0.25rem;
    font-size: 0.625rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #808080;
    font-weight: var(--font-weight-bold);
    pointer-events: none;
}
.nav-divider {
    list-style: none;
    margin: 0.25rem 0;
    border-top: 1px solid rgba(255,255,255,0.12);
    height: 0;
}
@media (max-width: 991px) {
    .nav-section-label {
        padding-left: 1.25rem;
        padding-right: 1.25rem;
    }
}

/* Nav right section (auth links) */
.nav-right {
    display: flex;
    flex-direction: column;
}
@media (min-width: 992px) {
    .nav-right {
        flex-direction: row;
        align-items: center;
        gap: 0.25rem;
        margin-left: auto;
    }
}

.footer-kbd {
    display: inline-block;
    min-width: 1.4em;
    padding: 0 0.35em;
    font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
    font-size: 0.85em;
    line-height: 1.4;
    color: rgba(255,255,255,0.9);
    background: rgba(255,255,255,0.08);
    border: 1px solid rgba(255,255,255,0.2);
    border-bottom-width: 2px;
    border-radius: 3px;
    text-align: center;
}
/* Hide the inline shortcut hint on touch devices — there's no keyboard. */
@media (hover: none) and (pointer: coarse) {
    #site-footer-shortcuts,
    #site-footer-shortcuts + .site-footer-sep { display: none; }
}

/* ── 22. Checklist items (Packlist / Tasklist) ───────────────── */

.checklist-item {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    padding: 0.625rem 0;
    border-bottom: 1px solid var(--color-border);
}
.checklist-item:last-child { border-bottom: none; }
.checklist-item.checked > .item-label { text-decoration: line-through; color: var(--color-text-muted); }

.item-label {
    flex: 1;
    font-size: var(--font-size-base);
    cursor: pointer;
}

/* Options panel Save & Close row — sits below the Email / Print row so the
   close affordance is unambiguous. Top border separates it visually from the
   secondary actions above; centered so it reads as a primary "I'm done" action. */
.options-close-row {
    border-top: 1px solid var(--color-border);
    padding-top: 0.75rem;
    margin-top: 0.5rem;
}

/* ── Post-login Install + Push modal (site.js initPostLoginPrompts) ───────
   Shown on the first authenticated page load after a successful login.
   Two stacked cards (Install PWA, Enable push) inside one modal — each
   independently hideable; modal auto-closes when both are dismissed. The
   markup lives in each site's Site.Master (server-rendered, gated on the
   one-shot post-login cookie). Styling is shared across all 3 sister
   sites; per-site copy/strings live in the markup, not here. */
.post-login-box {
    max-width: 540px;
    width: 100%;
    position: relative;
}
.post-login-intro {
    margin: 0 0 1rem;
}
.post-login-close {
    position: absolute;
    top: 0.5rem;
    right: 0.5rem;
    width: 2rem;
    height: 2rem;
    background: transparent;
    border: 0;
    cursor: pointer;
    font-size: 1.5rem;
    line-height: 1;
    color: var(--color-text-muted);
    padding: 0;
}
.post-login-close:hover { color: var(--color-text); }
.post-login-close:focus-visible {
    outline: 2px solid var(--color-accent);
    outline-offset: 2px;
    border-radius: var(--border-radius-sm);
}
.post-login-card {
    display: flex;
    align-items: flex-start;
    gap: 0.85rem;
    padding: 0.9rem 1rem;
    background: var(--color-info-bg, rgba(0, 176, 240, 0.06));
    border: 1px solid var(--color-border);
    border-radius: var(--border-radius);
    margin-bottom: 0.75rem;
}
.post-login-card:last-of-type { margin-bottom: 0; }
.post-login-card[hidden] { display: none; }
.post-login-card-icon {
    flex: 0 0 auto;
    font-size: 1.75rem;
    line-height: 1;
}
.post-login-card-body { flex: 1 1 auto; min-width: 0; }
.post-login-card-title {
    margin: 0 0 0.25rem;
    font-size: var(--font-size-lg);
    font-weight: var(--font-weight-bold);
    color: var(--color-text);
}
.post-login-card-desc {
    margin: 0 0 0.5rem;
    color: var(--color-text-muted);
    font-size: var(--font-size-sm);
    line-height: 1.45;
}
.post-login-card-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
    margin-top: 0.5rem;
}
.post-login-never {
    background: transparent;
    border: 0;
    padding: 0.25rem 0.5rem;
    color: var(--color-text-light);
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-normal);
    cursor: pointer;
    text-decoration: underline;
}
.post-login-never:hover { color: var(--color-text); }
.post-login-never:focus-visible {
    outline: 2px solid var(--color-accent);
    outline-offset: 2px;
    border-radius: var(--border-radius-sm);
}
.post-login-instructions {
    margin: 0.5rem 0 0;
    padding: 0.5rem 0.75rem;
    background-color: var(--color-bg-card);
    border: 1px dashed var(--color-border);
    border-radius: var(--border-radius-sm);
    font-size: var(--font-size-sm);
    color: var(--color-text);
}
.post-login-instructions[hidden] { display: none; }
.post-login-instructions-list {
    margin: 0;
    padding-left: 1.1rem;
    line-height: 1.55;
}
.post-login-instructions-list li { margin: 0.15rem 0; }
.post-login-footer-note {
    margin: 0.75rem 0 0;
    font-size: var(--font-size-sm);
    color: var(--color-text-light);
    text-align: center;
}
@media (max-width: 560px) {
    .post-login-card { flex-wrap: wrap; gap: 0.6rem; }
    .post-login-card-icon { font-size: 1.4rem; }
}
/* ── Changes (changelog) page ─────────────────────────────────────────── */
.changes-pager-row     { margin-bottom: 0.75rem; }
.changes-app-divider   { margin: 1.5rem 0; }
.changes-app-heading {
    margin: 0 0 0.25rem;
    font-size: var(--font-size-xl);
}
.changes-type-heading  { margin: 1rem 0 0.5rem; }

/* Hamburger ⇄ close-X icon swap (cross-site). Two glyph spans share the nav
   toggle button; CSS picks the visible one from the button's aria-expanded
   state so the icon always matches what tapping will do next — no JS DOM write
   per toggle. (site.js only flips aria-expanded.) */
.nav-toggle .nav-toggle-icon { display: inline-block; line-height: 1; }
.nav-toggle[aria-expanded="false"] .nav-toggle-icon-close,
.nav-toggle[aria-expanded="true"]  .nav-toggle-icon-open { display: none; }

/* Client-side filter row above the changelog rows (WhatsNew / Changes). */
.changes-filter-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
    margin: 0 0 1rem 0;
}
/* #changesFilter now sits inside an .input-clearable wrapper (standard in-field ×
   clear button), so the row's flex sizing rides on the wrapper; the input fills it. */
.changes-filter-row .input-clearable {
    flex: 1 1 18rem;
    min-width: 0;
}
.changes-filter-row .input-clearable #changesFilter { width: 100%; min-width: 0; }

/* ── ContactUs Viewer / Duplicate Record Finder shared row spacing ───── */
.cuv-summary-line   { margin-bottom: 0.5rem; }
.drf-note-spacing   { margin-top: 0.75rem; }

/* ── MessageSent thank-you detail paragraph ─────────────────────────── */
.ms-detail-text {
    color: var(--color-text-muted);
    margin: 0;
}

/* MessageSent confirmation hero — celebratory success-check badge + a readable
   centered measure for the follow-up paragraph. Pairs with .ms-detail-text
   (above) and .ms-message-banner / .ms-action-row so every site's MessageSent
   confirmation looks identical. Additive and page-agnostic — safe for any site. */
.ms-check {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 4.25rem;
    height: 4.25rem;
    margin: 0 auto 0.85rem;
    border-radius: 50%;
    background: var(--color-success-bg);
    color: var(--color-success);
    border: 1px solid var(--color-success-border);
    font-size: 2.1rem;
    line-height: 1;
    box-shadow: var(--shadow-sm);
    animation: msCheckPop 0.28s var(--ease-out-back, ease-out) both;
}
/* Keep the centered follow-up paragraph to a comfortable reading measure. */
.ms-hero .ms-detail-text {
    max-width: 48ch;
    margin-left: auto;
    margin-right: auto;
}
@keyframes msCheckPop {
    from { opacity: 0; transform: scale(0.6); }
    to   { opacity: 1; transform: scale(1); }
}
@media (prefers-reduced-motion: reduce) {
    .ms-check { animation: none; }
}

/* ── Subscribe1 (push notification preferences) ───────────────────────────
   Replaces ~30 inline style attributes that previously lived in markup. */
.subscribe-page {
    max-width: 480px;
    margin: 2.5rem auto;
    padding: 0 1rem;
    text-align: center;
    font-family: var(--font-family);
}
/* The page-level text-align:center above is for the subscribe states
   (icon + headline + button stack). Tips cards inside live by the same
   left-aligned convention used everywhere else, so opt them back out. */
.subscribe-page .tip-card,
.subscribe-page .tip-card-text,
.subscribe-page .tip-card-heading { text-align: left; }
.subscribe-intro   { color: var(--color-text-muted); margin-bottom: 1.75rem; }

.subscribe-state-loading { color: var(--color-text-light); }

.subscribe-state-icon {
    font-size: 2.25rem;
    font-weight: var(--font-weight-bold);
}
.subscribe-state-icon-ok  { color: var(--color-success); }
.subscribe-state-icon-bad { color: var(--color-danger); }

.subscribe-state-headline {
    font-weight: var(--font-weight-bold);
    margin: 0.75rem 0 0.375rem;
}
.subscribe-state-headline-ok  { color: var(--color-success); }
.subscribe-state-headline-bad { color: var(--color-danger); }

.subscribe-state-sub {
    color: var(--color-text-muted);
    font-size: var(--font-size-sm);
}
.subscribe-state-sub-spaced { margin-bottom: 1rem; }

.subscribe-state-prompt    { color: var(--color-text); margin: 0.75rem 0 1.25rem; }
.subscribe-prompt-btn      { min-width: 180px; }
.subscribe-prompt-msg      { margin-top: 0.875rem; color: var(--color-text-muted); font-size: var(--font-size-sm); }

.subscribe-details-card {
    margin: 1.25rem 0 1.125rem;
    text-align: left;
    background: var(--color-bg-card);
    border: 1px solid var(--color-border);
    border-radius: var(--border-radius-sm);
    padding: 0.875rem 1rem;
    font-size: var(--font-size-sm);
}
.subscribe-details-title {
    display: block;
    margin-bottom: 0.625rem;
    color: var(--color-text);
}
.subscribe-details-table {
    border-collapse: collapse;
    width: 100%;
}
.subscribe-details-label {
    color: var(--color-text-muted);
    padding: 0.25rem 0;
    width: 7.5rem;
    vertical-align: top;
}
.subscribe-details-value {
    color: var(--color-text);
    padding: 0.25rem 0;
}
.subscribe-details-value-id {
    color: var(--color-text-light);
    word-break: break-all;
    font-size: var(--font-size-xs);
}
.subscribe-details-value-ok  { color: var(--color-success); }
.subscribe-details-value-bad { color: var(--color-danger); }

.subscribe-action-btn   { min-width: 200px; }
.subscribe-result-line  {
    display: block;
    margin-top: 0.75rem;
    font-size: var(--font-size-sm);
    min-height: 1.125rem;
}

.subscribe-help-list {
    text-align: left;
    color: var(--color-text);
    font-size: var(--font-size-sm);
    margin: 0 auto 1.25rem;
    max-width: 360px;
    line-height: 1.8;
}

.progress-track {
    height: 10px;
    background: color-mix(in srgb, var(--color-border) 70%, transparent);
    border-radius: 999px;
    margin-top: 0.375rem;
    overflow: hidden;
    box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.06);
}
/* Progress fill starts at 0% and is animated to data-width by JS on load.
   Default width here means we can drop the inline style="width:0%" attribute
   from the markup — last remaining inline style on user-facing pages. */
.progress-fill {
    width: 0%;
    height: 100%;
    border-radius: 999px;
    background-color: var(--color-save-btn);
    /* Subtle diagonal stripe pattern that gently animates — communicates "still active"
       even when the percentage isn't changing. */
    background-image: linear-gradient(
        45deg,
        rgba(255, 255, 255, 0.15) 25%,
        transparent 25%,
        transparent 50%,
        rgba(255, 255, 255, 0.15) 50%,
        rgba(255, 255, 255, 0.15) 75%,
        transparent 75%,
        transparent
    );
    background-size: 16px 16px;
    transition: width 0.5s var(--ease-out-quint), background-color 0.3s;
    animation: progressStripes 1.4s linear infinite;
}
@keyframes progressStripes {
    from { background-position: 0 0; }
    to   { background-position: 16px 0; }
}
/* When the progress bar reaches 100%, dial up the saturation slightly and stop
   the stripes — communicates "done!" without needing a separate badge. The
   data-width attribute is the source of truth; site.js applies the
   .progress-complete class after animating to width if the value is 100%. */
.progress-fill.progress-complete {
    animation: none;
    background-image: linear-gradient(
        90deg,
        var(--color-save-btn),
        color-mix(in srgb, var(--color-save-btn) 80%, #fff)
    );
    background-size: auto;
    box-shadow: 0 0 6px color-mix(in srgb, var(--color-save-btn) 50%, transparent);
}
@media (prefers-reduced-motion: reduce) {
    .progress-fill { animation: none; background-image: none; }
}

/* ── 30. Notes page ──────────────────────────────────────────── */

.notes-layout {
    display: flex;
    flex-direction: column;
    gap: var(--section-gap);
}
@media (min-width: 768px) {
    .notes-layout     { flex-direction: row; align-items: flex-start; }
    .notes-list-col   { flex: 0 0 38%; min-width: 0; }
    .notes-edit-col   { flex: 1; min-width: 0; }
}

.note-item {
    padding: .625rem .75rem;
    border-bottom: 1px solid var(--color-border);
    cursor: pointer;
    transition: background-color var(--transition-fast), padding-left var(--transition-fast);
    border-radius: var(--border-radius-sm);
    position: relative;
}
.note-item:last-child  { border-bottom: none; }
.note-item:hover       { background-color: var(--color-primary-light); padding-left: .9rem; }
.note-item:focus       { outline: 2px solid var(--color-border-focus); outline-offset: -2px; }
.note-item.selected {
    background-color: var(--color-primary-light);
    border-left: 3px solid var(--color-primary);
    padding-left: calc(.75rem - 3px);
    box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--color-primary) 25%, transparent);
}
.note-item-title {
    font-weight: var(--font-weight-medium);
    color: var(--color-text);
}
.note-item-meta {
    font-size: var(--font-size-xs);
    color: var(--color-text-muted);
    margin-top: .2rem;
    display: flex;
    flex-wrap: wrap;
    gap: .25rem;
    align-items: center;
}

.note-badge {
    display: inline-block;
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-medium);
    padding: .15rem .55rem;
    border-radius: 999px;
    line-height: 1.5;
    white-space: nowrap;
    letter-spacing: 0.01em;
}
.note-badge-private {
    background-color: var(--color-bg);
    border: 1px solid var(--color-border);
    color: var(--color-text-muted);
}
.note-badge-shared {
    background-color: var(--color-primary-light);
    color: var(--color-primary);
}

/* Notes list header row: title + action buttons on one line */
.notes-list-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    flex-wrap: wrap;
}
.notes-list-title { margin: 0; }
.notes-list-actions {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
}
/* Filter row above the notes list — JS-revealed only when there are 3+ notes
   (the threshold notes-page.js actually applies) so a short list doesn't waste
   vertical space on a redundant filter. */
.notes-search-row {
    margin: 0.5rem 0 0.65rem;
}
.notes-search-input { width: 100%; }
.notes-search-results {
    margin: 0.35rem 0 0;
    min-height: 1.2em;
}

/* Badge marking a filtered row that survived on a note-BODY match rather than its
   title. Both [hidden] rules below are mandatory, not defensive: the [hidden]
   attribute comes from the UA stylesheet and loses to any author `display:` rule —
   .note-item-meta sets display:flex and .field-validation-error sets
   display:inline-flex, so without these the "hidden" elements render. */
.note-item-match[hidden] { display: none; }

/* Live duplicate-title warning under the Note Title field. Inherits the red "!"
   treatment from .field-validation-error; this class only adds the hidden state and
   room for the inline "Open that note instead" button. */
.note-title-dup[hidden] { display: none; }
.note-title-dup {
    /* display:flex, not the inherited inline-flex, so the message always occupies its
       own block regardless of what sits above it in the form group. The [hidden] rule
       above still wins (higher specificity), so this can't un-hide it. */
    display: flex;
    align-items: flex-start;   /* bullet beside the FIRST line of a message that wraps */
    gap: 0.35rem;
}
/* One flex item for the whole message so the "!" can't wrap onto its own line. The
   "Open that note instead" button flows inline after the sentence. */
.note-title-dup-msg { min-width: 0; }

/* Note Title row: input + "Proper-Case" link side-by-side */
.notes-title-row {
    display: flex;
    gap: 0.5rem;
    align-items: center;
    flex-wrap: wrap;
}
.notes-title-input {
    flex: 1;
    min-width: 0;
}

/* Date input is narrow — don't stretch full-width */
.notes-date-input { max-width: 200px; }

/* "Shared (view/edit)" label sits beside the checkbox without inheriting label margin */
.notes-shared-label {
    margin: 0;
    cursor: pointer;
}

.note-date-badge {
    display: inline-block;
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-medium);
    background-color: var(--color-warning-bg);
    color: var(--color-warning);
    border: 1px solid var(--color-warning-border);
    border-radius: var(--border-radius-sm);
    padding: .1rem .4rem;
    white-space: nowrap;
}

/* ── 31. Login page & Logo ───────────────────────────────── */

.login-page {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 2rem 1rem 3rem;
}
.login-container {
    width: 100%;
    max-width: 420px;
    /* A bit more elevation than a standard card so the login form feels like the page focus */
    box-shadow: var(--shadow-lg) !important;
    padding: 1.75rem !important;
    border-radius: var(--border-radius-lg) !important;
}

/* Tips area sits ABOVE the login card; matches its width so the right-aligned
   ⓘ trigger lines up with the card's right edge. */
.login-tips-area {
    width: 100%;
    max-width: 420px;
}
.login-tips-trigger-row {
    display: flex;
    justify-content: flex-end;
    margin-bottom: 0.25rem;
}
.login-tips-trigger-row .tips-trigger {
    font-size: 1.25rem;
}

/* CSS text logo (Logo.ascx) */
.site-logo        { text-align: center; margin-bottom: 1.5rem; }
.logo-link        {
    font-size: 1.75rem;
    font-weight: var(--font-weight-bold);
    text-decoration: none;
    color: var(--color-text);
    letter-spacing: 0.02em;
}
.logo-link:hover                { color: var(--color-text); text-decoration: none; }
.logo-accent                    { color: var(--color-primary); font-weight: 700; }
.logo-link:hover .logo-accent   { color: var(--color-primary-dark); }

/* ── 32. Home page ───────────────────────────────────────────── */

/* Flex-wrap grid for the shortcut action buttons */
.home-actions {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: 0.55rem;
    margin-top: 0.85rem;
}

.home-actions .button,
.home-actions a.button,
.home-actions span.button {
    width: 100%;
    justify-content: center;
    text-align: center;
    box-sizing: border-box;
    /* Slightly taller than default — gives the home tiles a more tap-friendly target
       and matches the feel of an app launcher. */
    min-height: 3rem;
    font-weight: var(--font-weight-medium);
    /* Override the global .button { white-space: nowrap } so longer labels like
       "✓ Getting Started Checklist" wrap to 2 lines instead of overflowing the 140px
       (or 110px on mobile) grid cell. line-height bumps so wrapped text doesn't
       collide; word-break/overflow-wrap protect against unhyphenable long words. */
    white-space: normal;
    line-height: 1.2;
    overflow-wrap: anywhere;
    word-break: break-word;
}

/* .home-btn-walkthrough: no special sizing — same grid cell as every other button. */

/* Spacing above the shortcut button grid */
.home-trip-context {
    margin-bottom: 0.75rem;
}

/* Disabled shortcut buttons — no trip selected */
.action-btn-disabled {
    opacity: 0.45;
    cursor: not-allowed;
    pointer-events: none;
    user-select: none;
}

/* Recent-trips compact list on Home (authenticated only). Each row is a single
   tappable link with name + countdown badge + dates on one line, wrapping on
   narrow viewports. */
.home-recent-trips {
    list-style: none;
    margin: 0;
    padding: 0;
}
.home-recent-trip + .home-recent-trip {
    border-top: 1px solid var(--color-border);
}
.home-recent-trip-link {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
    padding: 0.55rem 0.25rem;
    color: var(--color-text);
    text-decoration: none;
    transition: background-color var(--transition-fast), padding-left var(--transition-fast);
    border-radius: var(--border-radius-sm);
    min-height: 44px;
}
.home-recent-trip-link:hover,
.home-recent-trip-link:focus-visible {
    background: var(--color-primary-light);
    color: var(--color-text);
    text-decoration: none;
    padding-left: 0.6rem;
}
.home-recent-trip-link:focus-visible {
    outline: 2px solid var(--color-border-focus);
    outline-offset: 1px;
}
.home-recent-trip-name {
    font-weight: var(--font-weight-medium);
    flex: 1 1 auto;
    min-width: 0;
}
.home-recent-trip-dates {
    flex: 0 0 auto;
}

/* ── 33. Quicklist page ──────────────────────────────────── */

.ql-filters {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 1rem;
}
.ql-filter-checks {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    align-items: center;
}
.ql-filter-divider {
    display: inline-block;
    width: 1px;
    height: 1.25rem;
    background: var(--color-border);
    margin: 0 0.25rem;
    align-self: center;
}
.ql-check-label {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    cursor: pointer;
    font-size: var(--font-size-sm);
}

/* Detail-level dropdown sits in the filter row without bottom margin */
.ql-detail-group  { margin-bottom: 0; }
.ql-detail-select { width: auto; }

/* "Show Quicklist" button row spacing; flex so the selected-tag count sits beside the button */
.ql-show-row      { margin-top: 0.75rem; display: flex; align-items: center; gap: 0.75rem; flex-wrap: wrap; }

/* Trip Tags heading above the tag accordion */
.ql-tag-heading   { margin-bottom: 0.5rem; }

/* Two-column layout */
.ql-layout        { display: flex; gap: 1.5rem; align-items: flex-start; margin-top: 0; }
/* Fixed-width sidebar (NOT max-content — that let the column grow to fit all tag
   pills on one line, so .tag-group-body never wrapped on desktop and ran off the
   screen). A constrained basis forces the pills to wrap within the column. */
.ql-filter-col    { flex: 0 0 340px; min-width: 0; }
.ql-results-col   { flex: 1; min-width: 0; }
/* Before any results are shown, the tag card spans the full page width (and the
   empty results column is hidden); it shrinks to the sidebar once items/tasks render. */
.ql-layout-full .ql-filter-col  { flex: 1 1 auto; }
.ql-layout-full .ql-results-col { display: none; }
@media (max-width: 768px) {
    .ql-layout     { flex-direction: column; }
    .ql-filter-col { width: 100%; flex: none; }
}

/* Results */
.ql-section-header      { font-size: var(--font-size-lg); font-weight: var(--font-weight-bold);
                           padding: 0.75rem 0 0.4rem; margin: 0.5rem 0 0.25rem;
                           border-bottom: 3px solid var(--color-accent); color: var(--color-accent); }
.ql-section-header:first-child { margin-top: 0; }
.ql-tag-header          { font-weight: var(--font-weight-bold); padding: 0.6rem 0 0.3rem;
                           border-bottom: 2px solid var(--color-border); margin-bottom: 0.25rem; }
.ql-item-list           { margin-bottom: 1rem; }
.ql-item                { padding: 0.35rem 0 0.35rem 0.5rem; border-bottom: 1px solid var(--color-border); }
.ql-item:last-child     { border-bottom: none; }
/* Item/task name at normal reading size; Uses/Notes drop to the small size below. */
.ql-item-row            { display: flex; align-items: center; gap: 0.4rem; cursor: pointer; font-size: var(--font-size-base); }
.ql-field-label         { font-weight: var(--font-weight-medium); }
.ql-item-uses,
.ql-item-notes          { font-size: var(--font-size-sm); color: var(--color-text-muted); margin-top: 0.1rem; }

/* "Send these to a trip" — the only persisting action on an otherwise throw-away
   page, so it sits at the TOP of the results card where it can't be missed, and is
   set off from the list by a tinted well rather than yet another card. */
/* Page background, NOT --color-bg-input: the well has a <select> and a <textbox>
   sitting in it, and those already carry --color-bg-input — same fill would erase
   their affordance (in light mode #e2f1fb vs #e0f6fe is invisible). --color-bg
   differs from both the card and the inputs in light AND dark. */
.ql-send-bar {
    background: var(--color-bg);
    border: 1px solid var(--color-border);
    border-radius: var(--border-radius-sm, 4px);
    padding: 0.6rem 0.75rem;
    margin-bottom: 1rem;
}
/* The muted token is retired INSIDE the bar. --color-text-muted (#6c757d) is tuned
   for --color-bg-card (#ffffff → 4.69:1); on this well's --color-bg (#dbe4ed) it
   computes to 3.65:1, under AA for the 14px it is used at. --color-text is 12.67:1
   on the same fill (and 17.4:1 in dark, measured). Size and weight still carry the
   hierarchy, so nothing is lost but the failing colour. */
.ql-send-bar .note,
.ql-send-bar .small-dim-text { color: var(--color-text); }
.ql-send-lead {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-bottom: 0.5rem;
}
.ql-send-controls {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-bottom: 0.35rem;
}
/* Auto-width so the picker and the button share one line on desktop; both go
   full-width on narrow screens (below) rather than crushing to unreadable.
   The max-width is load-bearing, not tidiness: a <select> sizes to its LONGEST
   option, and trip names run to 200 chars ("2026-07-16 Camper Van, Canada Fires,
   OH/..."), which ate the whole row and wrapped the Send button onto its own line.
   ⚠ The element qualifiers are REQUIRED, not style. Both controls also carry
   .textbox, and that rule is written `select.textbox` / `input.textbox`
   (specificity 0,1,1) with `width:100%; max-width:100%`. A bare `.ql-send-select`
   (0,1,0) LOSES to it — measured: computed max-width came back 100% and the select
   rendered 729px wide. Qualifying by element ties the specificity, and this block
   sits later in the file, so it wins. */
.ql-send-controls select.ql-send-select  { width: auto; max-width: min(100%, 24rem); margin-bottom: 0; }
.ql-send-controls input.ql-send-newname  { width: auto; flex: 1 1 12rem; min-width: 0; max-width: 100%; margin-bottom: 0; }
/* Deliberately --color-text, not --color-success: #2e7d32 lands at 4.45:1 on the
   light well and 1.45:1 on the dark one (dark mode retunes --color-success-bg but
   leaves --color-success alone). The ✓ in the copy carries the "it worked" signal;
   the colour doesn't have to. */
.ql-send-result  {
    margin: 0.5rem 0 0;
    font-size: var(--font-size-sm);
    color: var(--color-text);
    font-weight: var(--font-weight-medium);
}
/* Row badge for "this is now on your trip". SOLID --color-success with white text,
   NOT --color-success on --color-success-bg: dark mode redefines only the -bg
   token (to #1b3a1e) and leaves --color-success at #2e7d32, which would land at
   2.45:1 there. White on #2e7d32 is 5.1:1 and identical in both themes. */
.ql-sent-pill {
    background-color: var(--color-success);
    border-color: var(--color-success);
    color: #ffffff;
    cursor: default;
}
.ql-sent-pill:hover { border-color: var(--color-success); }
/* Stack on narrow screens. Element-qualified for the same reason as the desktop
   rule above — an unqualified selector here would lose to the one it must override. */
@media (max-width: 768px) {
    .ql-send-controls > * { width: 100%; }
    .ql-send-controls select.ql-send-select,
    .ql-send-controls input.ql-send-newname { width: 100%; max-width: 100%; }
}

/* ── 35. Contact Us Viewer ───────────────────────────────────── */

/* Results table */
.cuv-table tbody tr.cuv-row { cursor: pointer; }
.cuv-table tbody tr.cuv-row:hover td { background: var(--color-primary-light); }
.cuv-table tbody tr.cuv-row.cuv-selected td { background: var(--color-primary-light); font-weight: var(--font-weight-medium); }
.cuv-table tbody tr.cuv-unviewed td:first-child { font-weight: var(--font-weight-bold); }

/* Status badges */
.cuv-badge { display:inline-block; padding:0.18rem 0.55rem; border-radius:999px;
             font-size:0.7rem; font-weight:700; white-space:nowrap;
             text-transform:uppercase; letter-spacing:0.04em; line-height:1.5; }
.cuv-badge-new        { background:#f5f5f5; color:#616161; border:1px solid #e0e0e0; }
.cuv-badge-queued     { background:var(--color-info-bg); color:var(--color-info); }
.cuv-badge-future     { background:#f3e5f5; color:#7b1fa2; }
.cuv-badge-resolved   { background:var(--color-success-bg); color:var(--color-success); }
.cuv-badge-partial    { background:var(--color-warning-bg); color:var(--color-warning); }
.cuv-badge-unresolved { background:#fafafa; color:#9e9e9e; border:1px solid #e0e0e0; }
.cuv-badge-rejected   { background:var(--color-danger-bg); color:var(--color-danger); }

/* Dark-mode overrides for badges that aren't keyed to a CSS variable.
   The neutral (new/unresolved) and purple (future) swatches don't have
   palette tokens, so they get explicit dark equivalents here. */
[data-theme="dark"] .cuv-badge-new        { background:#2a2a2a; color:#bdbdbd; border-color:#444; }
[data-theme="dark"] .cuv-badge-future     { background:#2d1f3a; color:#ce93d8; }
[data-theme="dark"] .cuv-badge-unresolved { background:#1e1e1e; color:#9e9e9e; border-color:#444; }

/* Importance/urgency number chips */
.cuv-num { font-weight:var(--font-weight-medium); }
.cuv-imp-1, .cuv-urg-1 { color:var(--color-text-muted); }
.cuv-imp-2, .cuv-urg-2 { color:var(--color-text); }
.cuv-imp-3, .cuv-urg-3 { color:var(--color-warning); font-weight:var(--font-weight-bold); }
.cuv-imp-4, .cuv-urg-4 { color:var(--color-danger);  font-weight:var(--font-weight-bold); }

/* ContactUsViewer edit/files card layout */
.cuv-page-edit { /* see toolbar-search-grow; this is the marker for the "Page" field */ }
.cuv-group-top { margin-top: 0.75rem; }
.cuv-group-spaced { margin-top: 0.5rem; }
/* The edit-feedback message slot stays hidden until JS adds .is-visible */
.cuv-edit-msg {
    display: none;
    margin-top: 0.5rem;
}
.cuv-edit-msg.is-visible { display: flex; }

/* Edit card read-only info bar */
.cuv-readonly-info {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    padding: 0.5rem 0.75rem;
    background: var(--color-bg);
    border-radius: var(--border-radius-sm);
    font-size: var(--font-size-sm);
    margin-bottom: 0.25rem;
}
.cuv-info-item { white-space: nowrap; }

/* Attachments grid */
.cuv-files-grid { display:flex; flex-wrap:wrap; gap:1rem; }
.cuv-file-card  { width:140px; display:flex; flex-direction:column; gap:0.25rem;
                  padding:0.5rem; border:1px solid var(--color-border);
                  border-radius:var(--border-radius-sm); }
.cuv-file-thumb { width:100%; height:100px; object-fit:cover;
                  border-radius:var(--border-radius-sm); display:block; }
.cuv-file-icon  { font-size:2.5rem; text-align:center; line-height:100px; }

/* ── 36. Log Viewer ──────────────────────────────────────────── */

/* Row severity tints. critical / security have no dedicated palette token so they
   carry explicit dark-mode overrides below. */
.log-row-error    { background-color: var(--color-danger-bg); }
.log-row-critical { background-color: #fce4e4; }
.log-row-warn     { background-color: var(--color-warning-bg); }
.log-row-security { background-color: #fff3e0; }
.log-row-audit    { background-color: var(--color-info-bg); }

[data-theme="dark"] .log-row-critical { background-color: #3b1212; }
[data-theme="dark"] .log-row-security { background-color: #3b2400; }

/* Hover darkens the tint slightly */
.log-row { cursor: pointer; }
.log-row:hover td { filter: brightness(0.96); }

/* AI response header: heading + cache status badge on one line */
.ai-response-header {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    margin-bottom: 0.75rem;
    flex-wrap: wrap;
}
.ai-response-header .heading { margin: 0; }
.ai-response-actions {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    margin-left: auto;
}

/* AI metadata two-column grid */
.ai-meta-grid {
    display: grid;
    grid-template-columns: max-content 1fr;
    gap: 0.4rem 1.25rem;
    font-size: var(--font-size-sm);
    align-items: baseline;
}
.ai-meta-label {
    font-weight: var(--font-weight-medium);
    color: var(--color-text-muted);
    white-space: nowrap;
}
.ai-meta-sep {
    grid-column: span 2;
    border: none;
    border-top: 1px solid var(--color-border);
    margin: 0.25rem 0;
}
.ai-meta-code {
    font-family: monospace;
    font-size: var(--font-size-xs);
    word-break: break-all;
    background: var(--color-bg-card);
    padding: 0.1rem 0.3rem;
    border-radius: var(--border-radius-sm);
}
.ai-meta-prompt {
    white-space: pre-wrap;
    word-break: break-word;
}

/* Level badge pill — uppercase, tracking, tabular numerics for legibility in dense tables */
.log-badge {
    display: inline-block;
    padding: 0.15rem 0.55rem;
    border-radius: 999px;
    font-size: 0.7rem;
    font-weight: 700;
    white-space: nowrap;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    line-height: 1.5;
}
/* INFO badge uses the success palette by design — INFO is a "good" signal here.
   critical / security stay hardcoded because their high-contrast appearance is
   intentional and works in both light and dark modes (strong red / strong orange). */
.log-badge-info     { background: var(--color-success-bg); color: var(--color-success); }
.log-badge-warn     { background: var(--color-warning-bg); color: var(--color-warning); }
.log-badge-error    { background: var(--color-danger-bg);  color: var(--color-danger); }
.log-badge-critical { background: #f44336; color: #fff; }
.log-badge-security { background: #e65100; color: #fff; }
.log-badge-audit    { background: var(--color-info-bg);    color: var(--color-info); }

/* Message cell truncates on long lines */
.log-msg {
    max-width: 40vw;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
}

/* Detail row — hidden by default, toggled by JS */
.log-detail-row { background-color: var(--color-bg); }
.log-detail-row td { padding: 1rem 1.25rem; }
.log-detail-row--hidden { display: none; }

/* Key/value fields inside the detail row */
.log-detail-grid {
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
    font-size: var(--font-size-sm);
}
.log-detail-item {
    line-height: 1.4;
}
.log-detail-stack {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    margin-top: 0.25rem;
}
.log-detail-label {
    font-weight: var(--font-weight-medium);
    color: var(--color-text-muted);
    white-space: nowrap;
    margin-right: 0.25rem;
}
.log-detail-grid pre {
    margin: 0;
    white-space: pre-wrap;
    word-break: break-all;
    font-family: monospace;
    font-size: var(--font-size-xs);
    background: var(--color-bg-card);
    border: 1px solid var(--color-border);
    border-radius: var(--border-radius-sm);
    padding: 0.5rem 0.625rem;
    max-height: 12rem;
    overflow-y: auto;
}

/* LogViewer purge-days select sits inline next to the Delete button */
.lv-purge-select {
    width: auto;
    display: inline-block;
}

/* Pager controls (used by LogViewer + ContactUsViewer — both display
   screen-width tables with no other content beside the pager row). */
.log-pager {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    padding: 0.5rem 0;
    font-size: var(--font-size-sm);
}

.log-table { min-width: 640px; }

.login-links {
    display: flex;
    justify-content: center;
    align-items: center;
    flex-wrap: wrap;
    gap: 0 0.3rem;
    font-size: var(--font-size-sm);
}

/* IP address display under password — small muted note */
.login-ip-display {
    font-size: 0.7rem;
    text-align: center;
    margin: 0.25rem 0 0;
    color: var(--color-text-light);
}

/* ── Sign in with Google row (Login.aspx) ──────────────────────────
   The Login button sits full-width on its own line; the GIS button sits
   on the next line, centered. Google's button renders inside a sandboxed
   iframe at its own intrinsic width (we can't restyle its surface), so we
   just centre the iframe under the full-width Login button. Shared by all
   4 sites. */
.login-google-row {
    display: flex;
    justify-content: center;
}

/* ── Sign in with Google "shell" (Login.aspx) ──────────────────────
   We can't make the sandboxed GIS iframe stretch full-width or take the
   Login button's 6px corners. Instead we wrap it in a shell that DOES
   take those — a full-width, white, rounded, bordered box matching the
   Login button's height — and centre the Google widget inside it. The
   shell border uses Google's own outline grey (#dadce0) so the widget's
   inner border blends, and the whole thing reads as one full-width
   "Sign in with Google" button aligned with the Login button above. */
.login-google-shell {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    min-height: 44px;                 /* match .button touch-target height */
    padding: 0.25rem 0.5rem;
    background-color: #ffffff;
    border: 1px solid #dadce0;        /* Google GIS outline grey */
    border-radius: var(--btn-radius, 6px);
    box-shadow: var(--shadow-btn, 0 1px 2px rgba(0,0,0,0.15));
    box-sizing: border-box;
}
/* The GIS widget keeps a faint white inner surface; against the white
   shell it disappears, leaving the shell as the visible button frame. */
.login-google-shell > div { max-width: 100%; }
/* In dark mode keep the shell white so the Google widget (which always
   renders on white) sits on a matching surface rather than a dark seam. */
[data-theme="dark"] .login-google-shell {
    background-color: #ffffff;
    border-color: #dadce0;
}

/* ── 34. Trips page ──────────────────────────────────────────── */

/* Trip selection list */
.trip-list {
    list-style: none;
    margin: 0 0 0.5rem 0;
    padding: 0;
    border: 1px solid var(--color-border);
    border-radius: var(--border-radius);
    overflow: hidden;
}
/* Belt-and-suspenders: suppress UA list styling on li directly */
.trip-list li {
    list-style: none;
    padding-left: 0;
}

.trip-list-item {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.55rem 1rem;
    cursor: pointer;
    border-bottom: 1px solid var(--color-border);
    transition: background-color var(--transition-fast), padding-left var(--transition-fast);
    user-select: none;
    min-height: 52px;
    -webkit-tap-highlight-color: transparent;
    position: relative;
}
.trip-list-item:last-child { border-bottom: none; }
.trip-list-item:hover       { background-color: var(--color-primary-light); padding-left: 1.15rem; }
.trip-list-item:active      { background-color: var(--color-primary-light); }
.trip-list-item:focus       { outline: 2px solid var(--color-border-focus); outline-offset: -2px; }

/* Text content stacks vertically inside the flex row */
.trip-item-text {
    display: flex;
    flex-direction: column;
    gap: 0.05rem;
    flex: 1;
    min-width: 0;
}

/* Radio indicator — the row's PRIMARY affordance. A trip row selects; it does not
   open. It used to carry a CSS chevron here instead, which is the universal "this
   navigates" signal and was the single loudest thing telling users the wrong story
   about what a tap does. The radio says "one of these is chosen" before the tap, and
   the .trip-item-open button beside it carries the navigation the chevron promised. */
.trip-item-radio {
    flex-shrink: 0;
    width: 1.05rem;
    height: 1.05rem;
    border-radius: 50%;
    border: 2px solid var(--color-text-light);
    background: var(--color-bg-card);
    transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
}
.trip-list-item:hover .trip-item-radio { border-color: var(--color-primary); }
.trip-list-item.trip-selected .trip-item-radio {
    border-color: var(--color-primary);
    /* Inset ring draws the filled dot without a second element. */
    box-shadow: inset 0 0 0 3px var(--color-primary);
}

/* "Selected" badge. Rendered on EVERY row and revealed by the selected class, so the
   selection is styling-only and the JS that moves .trip-selected needs to know nothing
   about it. display:none also keeps the 9 unselected copies out of the a11y tree. */
.trip-item-selected-badge {
    display: none;
    align-self: flex-start;
    background: var(--color-primary);
    color: #fff;
    border-color: var(--color-primary);
}
.trip-list-item.trip-selected .trip-item-selected-badge { display: inline-flex; }

/* .trip-item-text is a COLUMN flex container, so every pill inside it — the
   JS-inserted .trip-badge ("In 11 days"), the 🔗 Shared pill, and the Selected badge
   above — is a flex ITEM and inherits align-items:stretch. All three were written to
   sit INLINE after the trip name (hence .trip-badge's margin-left), so each was being
   blown out to the full width of the row: a 900px-wide "In 11 days" lozenge. Pin them
   to the start and drop the indent that only made sense inline. Scoped to the trip list
   so nothing else that uses .pill / .trip-badge is affected. */
.trip-item-text > .trip-badge,
.trip-item-text > .trip-item-nodates,
.trip-item-text > .trip-item-shared {
    align-self: flex-start;
    margin-left: 0;
}

/* Open — the separate, explicit navigation action. Kept out of .trip-item-text so a
   long trip name wraps against it instead of pushing it off the row. */
.trip-item-actions {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    gap: 0.4rem;
}
.trip-item-open { white-space: nowrap; }

/* Selected trip highlight */
.trip-list-item.trip-selected {
    background-color: var(--color-primary-light);
    border-left: 3px solid var(--color-primary);
    padding-left: calc(1rem - 3px);
}

/* The row-level hint above the list ("Tap a trip to select it…"). Explains the
   select-don't-open model in words, next to where it applies. */
.trip-list-hint {
    margin: 0 0 0.5rem;
    color: var(--color-text-muted);
    font-size: var(--font-size-sm);
}

.trip-item-name {
    font-weight: var(--font-weight-medium);
    color: var(--color-text);
    font-size: var(--font-size-base);
}
.trip-item-dates {
    color: var(--color-text-muted);
    font-size: var(--font-size-sm);
}

/* Occupies the .trip-item-dates slot on a trip that has no Leaving/Return date, so the
   row never renders with a silently missing date line — which read as "this trip didn't
   save". Emitted server-side (Trips.aspx.vb BuildListItemHtmlFromEval), NOT by the
   countdown-badge JS, and deliberately NOT classed .trip-badge: renderTripBadges guards
   with `!nameEl.parentElement.querySelector('.trip-badge')`, so borrowing that class
   would suppress a real countdown on any row that ever had both.
   Lives HERE rather than in a site's own styles.css because .pill (above, same file)
   would otherwise win on source order at equal specificity and restore the pointer
   cursor + card background — the trap .trip-item-shared already falls into. */
.trip-item-nodates {
    margin-top: 0.15rem;
    background: var(--color-bg);
    color: var(--color-text-muted);
    border: 1px dashed var(--color-border);
    /* Static marker, not a control — .pill's cursor:pointer/hover would promise a click. */
    cursor: default;
}
.trip-item-nodates:hover { border-color: var(--color-border); }
.trip-item-counts {
    color: var(--color-text-muted);
    font-size: var(--font-size-xs);
}

/* Tag group accordion */
.tag-group {
    border-bottom: 1px solid var(--color-border);
}
.tag-group:last-child { border-bottom: none; }

.tag-group-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    padding: 0.625rem 0.25rem;
    background: none;
    border: none;
    cursor: pointer;
    text-align: left;
    font-family: var(--font-family);
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-medium);
    color: var(--color-text);
    user-select: none;
}
.tag-group-header:hover { color: var(--color-primary); }
.tag-group-header:focus { outline: 2px solid var(--color-border-focus); outline-offset: 2px; }

.tag-group-label { flex: 1; }

/* Subdued suffix of a tag-group label (the " - subtype" portion after " - "). */
.tag-group-label-subdued {
    font-weight: 300;
    opacity: 0.55;
}

.tag-group-count {
    font-size: var(--font-size-xs);
    color: var(--color-text-muted);
    font-weight: normal;
    margin-right: 0.5rem;
    flex-shrink: 0;
}

.tag-group-arrow {
    font-size: 0.6rem;
    color: var(--color-text-muted);
    transition: transform var(--transition-fast);
    flex-shrink: 0;
}

.tag-group-body {
    display: none;
    flex-wrap: wrap;
    gap: 0.5rem;
    padding: 0.5rem 0.25rem 0.75rem;
}
.tag-group-body.open { display: flex; }

/* Tag pill — replaces checkbox+label; gray unselected, lime green selected */
.tag-pill {
    display: inline-flex;
    align-items: center;
    padding: 0.4rem 0.9rem;
    min-height: 36px;
    border-radius: 999px;
    border: 1.5px solid var(--color-border);
    background-color: var(--color-bg);
    color: var(--color-text-muted);
    font-family: var(--font-family);
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-normal);
    cursor: pointer;
    user-select: none;
    white-space: nowrap;
    transition: background-color var(--transition-fast),
                border-color    var(--transition-fast),
                color           var(--transition-fast),
                transform       var(--transition-fast),
                box-shadow      var(--transition-fast);
    -webkit-tap-highlight-color: transparent;
}
.tag-pill:hover {
    border-color: var(--color-save-btn);
    color: var(--color-text);
    transform: translateY(-1px);
    box-shadow: var(--shadow-sm);
}
.tag-pill:active { transform: translateY(0); }
.tag-pill.selected {
    background-color: var(--color-save-btn);
    border-color:     var(--color-save-btn);
    color: #fff;
    font-weight: var(--font-weight-medium);
    box-shadow: 0 2px 6px -2px color-mix(in srgb, var(--color-save-btn) 60%, transparent);
}
.tag-pill.selected:hover {
    background-color: var(--color-save-btn-hover);
    border-color:     var(--color-save-btn-hover);
}
.tag-pill:focus-visible {
    outline: none;
    box-shadow: var(--shadow-focus-ring);
}

/* Inline message near save buttons */
.trip-section-msg {
    display: none;
    font-size: var(--font-size-sm);
    margin-top: 0.5rem;
}

/* Trip Link Code share row: read-only code field + Copy button.
   Read-only state gets a "code-y" treatment (monospace, slightly tinted bg) so the
   value reads as a token to copy rather than an editable field. */
.share-link-row {
    display: flex;
    gap: 0.5rem;
    align-items: stretch;
    max-width: 480px;
}
.share-link-input {
    font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
    font-size: var(--font-size-sm);
    letter-spacing: 0.04em;
    background: var(--color-primary-light);
    border-color: color-mix(in srgb, var(--color-primary) 30%, var(--color-border));
    cursor: text;
    /* Disable the muted/grey "disabled" look — read-only is intentional, not disabled */
    opacity: 1 !important;
    color: var(--color-text);
    flex: 1;
    min-width: 0;
}
.share-link-input:read-only {
    background: var(--color-primary-light);
    color: var(--color-text);
}
[data-theme="dark"] .share-link-input {
    background: color-mix(in srgb, var(--color-primary) 18%, var(--color-bg-input));
}
.share-link-copy {
    flex-shrink: 0;
    align-self: stretch;
    /* Match the input height precisely so they align */
    min-height: var(--input-height);
}

/* Circled-i info toggle button — uses CSS to avoid Unicode font issues */
.btn-info-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.25rem;
    height: 1.25rem;
    border-radius: 50%;
    border: 1.5px solid var(--color-text-muted);
    background: none;
    cursor: pointer;
    font-size: 0.75rem;
    font-style: italic;
    font-weight: 700;
    line-height: 1;
    color: var(--color-text-muted);
    padding: 0;
    flex-shrink: 0;
    transition: color var(--transition-fast), border-color var(--transition-fast);
    vertical-align: middle;
}
.btn-info-toggle:hover { color: var(--color-primary); border-color: var(--color-primary); }
.btn-info-toggle:focus { outline: 2px solid var(--color-border-focus); outline-offset: 2px; }

/* Trip list pager */
.trip-pager-controls {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    margin-top: 0.5rem;
}
/* Row of action + quick-jump buttons under the Trips card */
.trip-quick-nav {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
    align-items: center;
    margin-top: 0.75rem;
}

/* Trips card fills available viewport height so the list isn't sitting in
   a tiny card with empty space below. Offset is approximate — leaves room
   for the site nav, page header, tips toggle, and the bottom button row. */
.trips-card-fill {
    min-height: calc(100vh - 18rem);
}

/* Trips search row: textbox + emoji button on the same line */
.trips-search-row {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    align-items: center;
    margin-bottom: 0.75rem;
}
.trips-search-input {
    flex: 1;
    min-width: 180px;
}
.trips-search-results {
    display: none;
    margin: 0 0 0.5rem;
}
.trips-search-results.has-results { display: block; }

/* Page title with no bottom margin (when sitting next to a right-aligned
   action button — collapses the gap below for a tighter header). */

/* Inside collapsible card-section toggles, the heading span should be
   flush with the toggle arrow — clear its default margin. */
.card-section-toggle .heading { margin: 0; }
.trip-pager-info {
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
    white-space: nowrap;
}
@media (max-width: 575px) {
    .trip-pager-nav { flex-basis: 100%; }
}


/* ── 37. Duplicate Record Finder ─────────────────────────────── */

.drf-section { margin-bottom: 1.5rem; }

.drf-section-title {
    padding-bottom: 0.375rem;
    border-bottom: 2px solid var(--color-border);
    margin: 0 0 0.75rem 0;
}

.drf-group {
    border: 1px solid var(--color-border);
    border-radius: var(--border-radius);
    overflow: hidden;
    margin-bottom: 0.875rem;
}

/* Results table */
.drf-table {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--font-size-sm);
}
.drf-table th {
    padding: 0.4rem 0.75rem;
    background: var(--color-bg);
    text-align: left;
    border-bottom: 1px solid var(--color-border);
    white-space: nowrap;
    font-weight: var(--font-weight-medium);
}
.drf-table td {
    padding: 0.45rem 0.75rem;
    border-bottom: 1px solid var(--color-border);
    vertical-align: middle;
}
.drf-table tbody tr:last-child td { border-bottom: none; }
.drf-table tbody tr:hover td { background: var(--color-bg); }

.drf-th-check    { width: 2rem; }
.drf-th-children { width: 5.5rem; text-align: center; }
.drf-td-children { text-align: center; }

/* Duplicate Record Finder results header row */
.drf-results-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-bottom: 0.75rem;
}
.drf-results-heading { margin: 0; }
.drf-delete-actions {
    margin-top: 1rem;
    flex-wrap: wrap;
}
.drf-confirm-msg {
    margin-top: 0.5rem;
    line-height: 1.6;
}

/* Warning icon for rows with children */
.drf-warn-icon {
    color: var(--color-warning);
    font-size: 0.9rem;
}

/* Dark mode adjustments */
[data-theme="dark"] .drf-group    { border-color: #444; }
[data-theme="dark"] .drf-table th { background: #1e1e1e; }

/* ── Collapsible card sections (Trips page) ──────────────────────────────── */

/* Heading wrapper around .card-section-toggle — gives screen readers a proper
   heading landmark for each accordion section (WAI-ARIA accordion pattern) while
   keeping the button itself as the interactive control. Resets the browser's
   default h2 margins/font so the visible layout is identical to the bare button. */
.card-section-heading {
    margin: 0;
    font-size: inherit;
    font-weight: inherit;
    line-height: inherit;
}

.card-section-toggle {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    background: none;
    border: none;
    padding: 0.15rem 0;
    cursor: pointer;
    text-align: left;
    margin: -0.15rem 0;
    border-radius: var(--border-radius-sm);
    transition: color var(--transition-fast);
}
.card-section-toggle:hover .heading,
.card-section-toggle:hover .card-section-arrow { color: var(--color-accent); }
.card-section-toggle:focus-visible { outline: none; box-shadow: var(--shadow-focus); }

/* Selected-count summary beside a card-section heading (e.g. Trip Tags "3 selected").
   margin-right:auto hugs the count to the heading and pushes the arrow to the far
   right, overriding the toggle's space-between for this three-child case. */
.card-section-count {
    margin-left: 0.5rem;
    margin-right: auto;
    font-size: var(--font-size-xs);
    font-weight: normal;
    color: var(--color-text-muted);
}

.card-section-body {
    display: none;
    padding-top: 0.85rem;
    /* Smooth reveal — opacity transitions from 0 to 1 as the body opens. The display
       toggle still snaps (CSS can't animate display:none), but the fade softens the
       transition for the user. */
    animation: cardSectionFade 0.22s var(--ease-out-quint);
}
.card-section-body.open { display: block; }
@keyframes cardSectionFade {
    from { opacity: 0; transform: translateY(-2px); }
    to   { opacity: 1; transform: translateY(0); }
}

.card-section-arrow {
    /* Unicode chevron replaced with a CSS-drawn arrow so it tints with currentColor
       (matches heading hover color) without a font fallback gamble. */
    display: inline-block;
    width: 0.7rem;
    height: 0.7rem;
    flex-shrink: 0;
    margin-left: 0.6rem;
    border-right: 2px solid var(--color-text-muted);
    border-bottom: 2px solid var(--color-text-muted);
    transform: rotate(-135deg); /* collapsed: pointing up */
    transition: transform var(--transition-mid), border-color var(--transition-fast);
}
.card-section-arrow::before { content: ""; }
.card-section-toggle[aria-expanded="true"] .card-section-arrow {
    transform: rotate(45deg);  /* expanded: pointing down */
}
.card-section-toggle:hover .card-section-arrow { border-color: var(--color-accent); }

[data-theme="dark"] .card-section-toggle:hover .heading { color: var(--color-accent); }

/* ── Trip Dashboard page ─────────────────────────────────────────────────── */

/* Card heading link — inherits size/weight, subtle dashed underline */
.card-title-link {
    color: inherit;
    text-decoration: none;
    border-bottom: 1px dashed var(--color-accent);
}
.card-title-link:hover {
    color: var(--color-accent);
    border-bottom-color: transparent;
}

/* Disabled card heading (e.g. Expenses placeholder) */
.card-title-disabled {
    color: var(--color-text-muted);
    cursor: default;
}

/* Notes summary list */
.tripdashboard-notes-list {
    list-style: none;
    margin: 0.5rem 0 0;
    padding: 0;
}
.tripdashboard-note-item {
    display: flex;
    flex-direction: column;
    padding: 0.4rem 0;
    border-bottom: 1px solid var(--color-border);
}
.tripdashboard-note-item:last-child {
    border-bottom: none;
}
.tripdashboard-note-title {
    font-size: var(--font-size-sm);
    font-weight: 700;
}
.tripdashboard-note-date {
    color: var(--color-text-muted);
    margin-top: 0.1rem;
}

/* TripDashboard trip name header — heading line is flush, dates sit immediately below */
.tripdashboard-trip-heading { margin: 0; }
.tripdashboard-trip-subline { margin: 0.1rem 0 0; }

/* Previous trip sub-cards */
.prev-trip-item {
    border-left: 3px solid var(--color-accent);
    padding: 0.5rem 0.75rem;
    margin-bottom: 0.75rem;
    background: #f8f9fa;
    border-radius: 0 var(--border-radius-sm) var(--border-radius-sm) 0;
}
.prev-trip-item:last-child {
    margin-bottom: 0;
}

[data-theme="dark"] .prev-trip-item {
    background: #1e1e1e;
}

/* Help page step list — extra breathing room between steps + brand-tinted numbers */
.help-steps { padding-left: 1.5rem; }
.help-steps li { margin-bottom: 0.95rem; line-height: 1.55; }
.help-steps li:last-child { margin-bottom: 0; }
.help-steps li::marker { color: var(--color-accent); font-weight: 700; }

/* ── MessageSent confirmation hero (cross-site) ──────────────────────────────
   Shared so every site's post-ContactUs "Message Sent" page renders the same
   celebratory hero. Reuses shared tokens so it's theme-aware; the only bespoke
   piece is the success-tinted check badge. .ms-detail-text carries the muted
   follow-up paragraph (constrained for readable line length when centered). */
.ms2-hero { padding-top: var(--card-padding-lg); padding-bottom: var(--card-padding-lg); }
.ms2-check {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 4.25rem;
    height: 4.25rem;
    margin: 0 auto 0.85rem;
    border-radius: 50%;
    background: var(--color-success-bg);
    color: var(--color-success);
    border: 1px solid var(--color-success-border);
    font-size: 2.1rem;
    line-height: 1;
    box-shadow: var(--shadow-sm);
    animation: ms2CheckPop 0.28s var(--ease-out-back, ease-out) both;
}
.ms2-headline { margin: 0 0 0.5rem; }
.ms2-hero .ms-detail-text { max-width: 46ch; margin-left: auto; margin-right: auto; }
@keyframes ms2CheckPop {
    from { opacity: 0; transform: scale(0.6); }
    to   { opacity: 1; transform: scale(1); }
}
@media (prefers-reduced-motion: reduce) {
    .ms2-check { animation: none; }
}

/* Error.aspx layout */
.error-card {
    max-width: 640px;
    margin: 2rem auto;
}
.error-detail-pre {
    background: #f5f5f5;
    padding: 1rem;
    border-radius: 4px;
    overflow-x: auto;
    font-size: 0.8rem;
    white-space: pre-wrap;
    word-break: break-word;
    max-height: 400px;
    overflow-y: auto;
}
[data-theme="dark"] .error-detail-pre { background: #1e1e1e; }
.error-cid {
    font-size: 1rem;
    user-select: all;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    background: var(--color-bg);
    padding: 0.125rem 0.375rem;
    border-radius: var(--border-radius-sm);
    border: 1px solid var(--color-border);
}

/* Message Sent confirmation page */
.ms-message-banner { margin-bottom: 1.25rem; }
.ms-action-row { margin-top: 1.5rem; }

/* ContactUsStatus detail panel */
.cus-detail-header {
    display: flex;
    justify-content: flex-end;
    margin-bottom: 0.5rem;
}
.cus-section { margin-top: 0.75rem; }
.cus-section-thin { margin-top: 0.25rem; }
.cus-block {
    margin-top: 0.25rem;
    padding: 0.5rem;
    border: 1px solid var(--color-border);
    border-radius: 4px;
    max-height: 300px;
    overflow-y: auto;
}
.cus-pre { white-space: pre-wrap; }
.cus-pre-inline { white-space: pre-wrap; }
.cus-reply { margin-top: 0.25rem; }

/* ── Toast (PLP.showToast) ─────────────────────────────────────
   Slides down + fades in on appearance, then fades out before removal (handled
   in site.js by setting opacity=0). The toast shares the SAME solid color palette
   as .alert-panel.* (success/error/warning/info) but gets a brighter shadow
   because it floats above all chrome. */
/* Toast stack container — fixed-position column that holds 1..N toasts.
   Each toast inside is normal flow, so simultaneous toasts stack vertically
   instead of stacking visually at the same coordinates. pointer-events: none
   on the container lets clicks pass through the empty space; toasts themselves
   re-enable interactivity. */
.site-toast-stack {
    position: fixed;
    top: calc(var(--nav-height, 56px) + 14px);
    left: 50%;
    transform: translateX(-50%);
    z-index: 9999;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    max-width: min(92vw, 560px);
    width: max-content;
    pointer-events: none;
}
.site-toast {
    position: relative;
    min-width: 280px;
    max-width: min(92vw, 560px);
    padding: 0.75rem 2.25rem 0.75rem 1.25rem;
    border-radius: var(--border-radius);
    font-size: var(--font-size-sm);
    box-shadow: var(--shadow-lg);
    transition: opacity 0.4s, transform 0.4s;
    animation: toastIn 0.28s var(--ease-out-quint);
    pointer-events: auto;
    cursor: pointer;
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    text-align: center;
}
/* Solid toast palette — the SAME fixed colors as .alert-panel.* above, so an
   inline message and its floating-toast twin are identical. Theme-independent
   (light = dark); #111 text on lime/orange/cyan, WHITE on the red error/danger. */
.site-toast.toast-success { background: #00ff00; color: #111; border: 1px solid rgba(0,0,0,0.28); }
.site-toast.toast-error,
.site-toast.toast-danger  { background: #ff0000; color: #fff; border: 1px solid rgba(0,0,0,0.28); }
.site-toast.toast-warning { background: #ff9600; color: #111; border: 1px solid rgba(0,0,0,0.28); }
.site-toast.toast-info    { background: #00B0F0; color: #111; border: 1px solid rgba(0,0,0,0.28); }
/* Canonical dismiss animation — shared by all 3 sites' showToast() so the exit
   motion is identical. JS adds .site-toast-dismissing; the .site-toast transition
   above animates the fade + slide-up. */
.site-toast.site-toast-dismissing { opacity: 0; transform: translateY(-8px); }
.site-toast-msg  { flex: 1; min-width: 0; }
/* "↶ Undo" inside a toast, emitted by SiteShared.UndoOffer.UndoLinkHtml. Kept on the
   LEFT, away from .site-toast-close, so dismissing the toast can never misfire the undo.
   Canonicalised here 2026-07-31 from two byte-identical per-site copies that had drifted
   only in NAME: qMEET's .qm-undo-link (preset toast) and PacklistPRO's .sl-undo-link
   (ShoppingList delete toast, still live and still using its own name). */
.undo-link { font-weight: var(--font-weight-bold, 700); margin-right: 0.6rem; }
.site-toast-close {
    position: absolute;
    top: 0.35rem;
    right: 0.45rem;
    width: 1.5rem;
    height: 1.5rem;
    border: none;
    background: transparent;
    color: currentColor;
    font-size: 1.25rem;
    line-height: 1;
    cursor: pointer;
    opacity: 0.55;
    border-radius: 50%;
    padding: 0;
    transition: opacity var(--transition-fast), background-color var(--transition-fast);
}
.site-toast-close:hover  { opacity: 1; background: rgba(0,0,0,0.08); }
.site-toast-close:focus-visible {
    outline: 2px solid currentColor;
    outline-offset: 1px;
}
@keyframes toastIn {
    from { opacity: 0; transform: translateY(-14px); }
    to   { opacity: 1; transform: translateY(0); }
}
/* Phones only (portrait, below the tablet breakpoint): toasts span the
   available width instead of being content-sized. The stack stays centred
   (left:50% + translateX(-50%)), so widening it to 92vw yields a symmetric
   4vw gutter on each side by construction; the toasts stretch to fill it. */
@media (max-width: 575px) {
    .site-toast-stack { width: 92vw; max-width: 92vw; }
    .site-toast       { max-width: none; min-width: 0; }
}

/* ── Back-to-top floating button ─────────────────────────────── */
.back-to-top {
    position: fixed;
    right: 1rem;
    bottom: 1rem;
    width: 2.85rem;
    height: 2.85rem;
    border-radius: 50%;
    border: none;
    background: var(--color-accent);
    color: #fff;
    font-size: 1.5rem;
    line-height: 1;
    cursor: pointer;
    box-shadow: var(--shadow-lg);
    opacity: 0;
    pointer-events: none;
    transform: translateY(8px) scale(0.9);
    transition:
        opacity 0.25s var(--ease-out-quint),
        transform 0.25s var(--ease-out-quint),
        background-color 0.15s,
        box-shadow 0.15s;
    z-index: 9998;
}
.back-to-top.visible {
    opacity: 0.92;
    pointer-events: auto;
    transform: translateY(0) scale(1);
}
.back-to-top:hover {
    opacity: 1;
    background: var(--color-accent-dark);
    box-shadow: var(--shadow-xl);
    transform: translateY(-2px) scale(1);
}
.back-to-top:focus-visible {
    opacity: 1;
    outline: none;
    box-shadow: var(--shadow-lg), var(--shadow-focus-ring);
}

/* ── Scroll progress indicator ────────────────────────────────
   Thin accent-colored bar pinned to the top of the viewport that fills
   left-to-right as the user scrolls. Driven by site.js initScrollProgress();
   CSS only handles the visual. Auto-hidden on very short pages where it
   would always sit at 100% (handled in JS by removing .visible). */
.scroll-progress-bar {
    position: fixed;
    top: 0;
    left: 0;
    height: 3px;
    width: 0;
    background: linear-gradient(90deg, var(--color-accent), var(--color-accent-dark));
    z-index: 10001;          /* above nav so it's never overlapped */
    pointer-events: none;
    transition: width 0.06s linear, opacity 0.2s ease;
    opacity: 0;
    border-bottom-right-radius: 2px;
}
.scroll-progress-bar.visible { opacity: 1; }

/* ── DataEditor admin grid (extracted from DataEditor.aspx) ──── */
.de-toolbar { display:flex; flex-wrap:wrap; gap:.5rem; align-items:flex-end; }
.de-toolbar .form-group { margin-bottom:0; }
.de-chips { display:flex; flex-wrap:wrap; gap:.4rem; margin-top:.5rem; min-height:1.5rem; }
.de-chip { display:inline-flex; align-items:center; gap:.3rem; background:var(--color-primary-light); color:var(--color-text); border:1px solid var(--color-border); border-radius:1rem; padding:.15rem .6rem; font-size:.85rem; }
.de-chip-remove { background:none; border:none; cursor:pointer; color:var(--color-text-muted); font-size:1rem; line-height:1; padding:0 .1rem; }
.de-chip-remove:hover { color:var(--color-delete-btn); }
.de-paging { display:flex; align-items:center; gap:.75rem; flex-wrap:wrap; }
.de-table-wrap { overflow-x:auto; margin-top:.75rem; }
.de-table { border-collapse:collapse; width:100%; line-height:1; }
.de-table th { background:var(--color-bg-card); padding:1px 3px; border:1px solid var(--color-border); white-space:nowrap; text-align:left; font-weight:600; line-height:1.3; }
.de-table td { padding:0; margin:0; border:1px solid var(--color-border); vertical-align:middle; height:1.35rem; }
.de-table tr:hover td { background:var(--color-bg); }
.de-table .pk-cell { color:var(--color-text-muted); white-space:nowrap; padding:0 2px; }
.de-table .de-cell { width:100%; min-width:60px; box-sizing:border-box; padding:0 2px; margin:0; font-size:inherit; height:1.35rem; border:none; background:transparent; color:inherit; }
.de-table td:first-child { width:2rem; text-align:center; padding:0; }
.de-table thead th:first-child { border:none; background:transparent; }
.de-table input[type=checkbox] { margin:0; display:block; }
/* Spacious mode — toggled by the "Compact Rows" checkbox unchecking. Adds
   breathing room to every cell so the grid is easier to read and interact with. */
.de-spacious .de-table th  { padding: 0.45rem 0.6rem; }
.de-spacious .de-table td  { padding: 0.3rem 0.1rem; height: auto; }
.de-spacious .de-table .de-cell { padding: 0.3rem 0.5rem; height: auto; min-height: 2rem; font-size: var(--font-size-sm); }
.de-spacious .de-table .pk-cell { padding: 0.3rem 0.5rem; }
.de-spacious .de-table td:first-child { padding: 0.3rem; }
.de-save-bar { position:sticky; bottom:0; background:var(--color-bg-card); border-top:2px solid var(--color-border); padding:.6rem 1rem; display:flex; align-items:center; gap:1rem; flex-wrap:wrap; z-index:100; box-shadow:0 -2px 6px rgba(0,0,0,.08); }
.de-preview-overlay { display:none; position:fixed; inset:0; background:rgba(0,0,0,.5); z-index:200; overflow-y:auto; }
.de-preview-overlay.is-open { display: block; }
.de-button-row { padding-top: 1.4rem; }
.de-toolbar-spaced { margin-top: 0.75rem; }
.de-filter-input { width: 200px; }
.de-paging-spaced { margin-top: 0.5rem; }
.de-preview-toggle {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    cursor: pointer;
    margin: 0;
}
.de-preview-label { margin: 0; }
.de-preview-scroll { overflow-x: auto; }
.de-modal-actions { margin-top: 1rem; }
.de-preview-old { color: var(--color-danger); }
.de-preview-new { color: var(--color-success); }
.de-preview-box { background:var(--color-bg-card); margin:2rem auto; max-width:800px; border-radius:6px; padding:1.5rem; }
.de-preview-table { border-collapse:collapse; width:100%; font-size:.875rem; }
.de-preview-table th, .de-preview-table td { border:1px solid var(--color-border); padding:.3rem .5rem; }
.de-preview-table th { background:var(--color-bg-card); }
.de-changed { background:var(--color-warning-bg) !important; }
[data-theme="dark"] .de-chip { background:#2a3a5e; }

/* ── 38. Expenses page ─────────────────────────────────────────────────────
   List rows mirror .note-item, but each row also carries a chip-style "type"
   badge plus 1-2 status badges (Estimate / Split — Settled / Split — Owed).
   The form reuses .notes-edit-col and shared .form-row / .check-row layout. */

.exp-summary-card {
    margin-bottom: 1rem;
    /* Subtle gradient surface so the totals card visually anchors the page */
    background-image:
        radial-gradient(circle at top left,
            color-mix(in srgb, var(--color-accent) 6%, transparent) 0%,
            transparent 60%),
        linear-gradient(180deg, var(--color-bg-card), var(--color-bg-card));
}
[data-theme="dark"] .exp-summary-card {
    background-image:
        radial-gradient(circle at top left,
            color-mix(in srgb, var(--color-accent) 16%, transparent) 0%,
            transparent 60%),
        linear-gradient(180deg, var(--color-bg-card), var(--color-bg-card));
}
.exp-summary-row {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(10.5rem, 1fr));
    gap: 0.75rem 1.5rem;
    align-items: stretch;
}
.exp-summary-cell {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    padding: 0.65rem 0.9rem;
    background: color-mix(in srgb, var(--color-bg) 60%, transparent);
    border-radius: var(--border-radius-sm);
    border: 1px solid color-mix(in srgb, var(--color-border) 60%, transparent);
}
.exp-summary-label {
    font-size: var(--font-size-xs);
    color: var(--color-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    font-weight: var(--font-weight-medium);
}
.exp-summary-value {
    font-size: 1.35rem;
    font-weight: 700;
    color: var(--color-text);
    font-variant-numeric: tabular-nums;
    line-height: 1.2;
}

/* ── Multi-currency summary (Expenses) ───────────────────────────────────
   Nothing on this page converts between currencies, so a trip holding more
   than one gets a figure PER currency in each money cell instead of a single
   total. The list is the total: there is deliberately no grand sum to show. */
.exp-money-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
}
/* Several stacked figures in a cell that was sized for one — step the type down
   so three currencies don't push the summary card to twice its height. */
.exp-money-list .exp-summary-value { font-size: 1.05rem; }

/* The ISO code riding alongside an amount ("$40.00 USD"). Only rendered when the
   figure would otherwise be ambiguous — several currencies in play, or a code we
   have no symbol for — so it must read as an annotation, not as part of the number. */
.exp-money-code {
    margin-left: 0.3em;
    font-size: 0.7em;
    font-weight: var(--font-weight-medium);
    color: var(--color-text-muted);
    letter-spacing: 0.03em;
    white-space: nowrap;
}

/* "Of which estimated" / "Split — unsettled" when no currency contributes to it.
   A dash, not "$0.00": with several currencies on the trip there is no single
   currency a zero could honestly be expressed in. */
.exp-summary-none { color: var(--color-text-muted); }

/* The "not converted" sentence. Sits under the figures it explains. */
.exp-currency-note { margin: 0.85rem 0 0; }

/* Names the currency a category bar belongs to. Only present when there is more
   than one bar — on a single-currency trip the whole card is already in it. */
.exp-typebar-caption {
    margin: 0 0 0.5rem;
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-medium);
    color: var(--color-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

/* ── Spend-by-type breakdown bar (Expenses summary) ──────────────────────
   Stacked horizontal bar above an inline legend. Each segment is one expense
   type; widths come from server-rendered inline `width:%` styles. The 6 colors
   cycle to support up to 6 distinct types in the bar (the legend below shows
   all types regardless). */
.exp-typebar {
    margin-top: 1rem;
    padding-top: 0.85rem;
    border-top: 1px solid color-mix(in srgb, var(--color-border) 70%, transparent);
}
.exp-typebar-track {
    display: flex;
    width: 100%;
    height: 10px;
    border-radius: 999px;
    overflow: hidden;
    background: color-mix(in srgb, var(--color-border) 30%, transparent);
}
.exp-typebar-seg {
    display: block;
    height: 100%;
    transition: filter var(--transition-fast);
}
.exp-typebar-seg:hover { filter: brightness(1.08); }
/* 6-color palette tuned to be distinct without clashing — keeps the accent hue
   for the top spender and steps through cool→warm. */
.exp-typebar-seg-1 { background: var(--color-accent); }
.exp-typebar-seg-2 { background: #7c3aed; }   /* violet */
.exp-typebar-seg-3 { background: #f59e0b; }   /* amber */
.exp-typebar-seg-4 { background: #10b981; }   /* emerald */
.exp-typebar-seg-5 { background: #ef4444; }   /* red */
.exp-typebar-seg-6 { background: #64748b; }   /* slate */

.exp-typebar-legend {
    list-style: none;
    margin: 0.75rem 0 0;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(11rem, 1fr));
    gap: 0.35rem 1rem;
}
.exp-typebar-legend li {
    display: grid;
    grid-template-columns: 0.75rem 1fr auto;
    grid-template-areas: "swatch name pct" "swatch amt pct";
    column-gap: 0.45rem;
    align-items: center;
    font-size: var(--font-size-sm);
}
.exp-typebar-swatch {
    grid-area: swatch;
    display: inline-block;
    width: 0.75rem;
    height: 0.75rem;
    border-radius: 3px;
    align-self: center;
}
.exp-typebar-name { grid-area: name; color: var(--color-text); font-weight: var(--font-weight-medium); }
.exp-typebar-amt  { grid-area: amt;  color: var(--color-text-muted); font-size: var(--font-size-xs); font-variant-numeric: tabular-nums; }
.exp-typebar-pct  { grid-area: pct;  color: var(--color-text-muted); font-size: var(--font-size-xs); font-variant-numeric: tabular-nums; }

.exp-item {
    padding: 0.5rem 0.75rem;
    border-bottom: 1px solid var(--color-border);
    cursor: pointer;
    transition: background-color var(--transition-fast);
    border-radius: var(--border-radius-sm);
}
.exp-item:last-child { border-bottom: none; }
.exp-item:hover     { background-color: var(--color-primary-light); }
.exp-item:focus     { outline: 2px solid var(--color-border-focus); outline-offset: -2px; }
.exp-item.selected {
    background-color: var(--color-primary-light);
    border-left: 3px solid var(--color-primary);
    padding-left: calc(0.75rem - 3px);
}
.exp-item-row {
    display: flex;
    align-items: baseline;
    gap: 0.5rem;
    flex-wrap: wrap;
}
.exp-item-date {
    font-size: var(--font-size-xs);
    color: var(--color-text-muted);
    white-space: nowrap;
    min-width: 6.5rem;
}
.exp-item-summary {
    flex: 1;
    font-weight: var(--font-weight-medium);
    color: var(--color-text);
    word-break: break-word;
}
.exp-item-amount-value {
    font-weight: var(--font-weight-bold);
    color: var(--color-text);
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}
.exp-item-amount-value.exp-item-est {
    color: var(--color-text-muted);
    font-style: italic;
}
.exp-item-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 0.25rem 0.5rem;
    margin-top: 0.2rem;
    align-items: center;
    font-size: var(--font-size-xs);
    color: var(--color-text-muted);
}
.exp-type-badge {
    display: inline-block;
    font-size: 0.68rem;
    font-weight: 700;
    background: var(--color-primary-light);
    color: var(--color-primary);
    padding: 0.15rem 0.55rem;
    border-radius: 999px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    line-height: 1.5;
}
.exp-badge {
    display: inline-block;
    font-size: 0.68rem;
    font-weight: 700;
    padding: 0.15rem 0.55rem;
    border-radius: 999px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    line-height: 1.5;
}
.exp-badge-est {
    background: var(--color-warning-bg);
    color: var(--color-warning);
    border: 1px solid var(--color-warning-border);
}
.exp-badge-unsettled {
    background: var(--color-danger-bg);
    color: var(--color-danger);
    border: 1px solid var(--color-danger-border);
}
.exp-badge-settled {
    background: var(--color-success-bg);
    color: var(--color-success);
    border: 1px solid var(--color-success-border);
}
/* Group-shared expense (lives on the board, editable by every active member). */
.exp-badge-shared {
    background: var(--color-info-bg);
    color: var(--color-info);
    border: 1px solid var(--color-info-border);
    text-transform: none;
    letter-spacing: 0;
}
/* Per-row "Share" / "Make private" action + the add-form "Add to group" toggle. */
.exp-share-btn { padding: 0.1rem 0.55rem; font-size: 0.72rem; line-height: 1.4; }
.exp-share-toggle { margin: 0.25rem 0 0.75rem; }
.exp-item-loc { color: var(--color-text-muted); white-space: nowrap; }

/* Form helpers — narrower inputs for date / amount / ratings so they don't
   stretch full-width inside a .form-row when they only need a few characters. */
.exp-date-input    { max-width: 200px; }
.exp-amount-input  { max-width: 200px; }
.exp-rating-input  { max-width: 110px; }

.exp-ratings-details {
    margin: 0.25rem 0 1rem;
}
.exp-ratings-summary {
    cursor: pointer;
    color: var(--color-link);
    font-weight: var(--font-weight-medium);
    font-size: var(--font-size-sm);
    padding: 0.25rem 0;
}
.exp-ratings-summary:hover { color: var(--color-link-hover); }
.exp-ratings-row { margin-top: 0.5rem; }

/* ── 38a. Join wizard (Join.aspx through Join7.aspx) ────────────
   The wizard reuses .card + .form-group but needs its own narrower card width and
   per-step typography. The "Step X of 7" pill, the big question prompt, the
   collapsible "Why?" disclosure, and the multi-column rows all live here. */

.join-card {
    max-width: 540px;
    margin: 0 auto 1.5rem;
    padding: 1.75rem;
    border-radius: var(--border-radius-lg);
    box-shadow: var(--shadow-md);
}
@media (max-width: 575px) {
    .join-card { padding: 1.25rem; border-radius: var(--border-radius); }
}

/* "Step X of 7" pill above the page title. The :where wrapper isolates from .label
   margin defaults so it sits flush above the H1. */
.join-progress {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    margin: 0 0 0.35rem;
    padding: 0.2rem 0.7rem;
    background: var(--color-primary-light);
    color: var(--color-primary);
    border-radius: 999px;
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-bold);
    text-transform: uppercase;
    letter-spacing: 0.06em;
}
.join-progress::before {
    content: "";
    width: 0.4rem;
    height: 0.4rem;
    border-radius: 50%;
    background: var(--color-primary);
    /* Soft pulse so users see the wizard is "live", not a static page */
    animation: joinDotPulse 1.8s var(--ease-in-out) infinite;
}
@keyframes joinDotPulse {
    0%, 100% { opacity: 1;   transform: scale(1); }
    50%      { opacity: 0.45; transform: scale(0.8); }
}
@media (prefers-reduced-motion: reduce) {
    .join-progress::before { animation: none; }
}

/* Step prompt — slightly larger than .heading, slightly tighter than .page-title */
.join-question {
    font-size: 1.45rem;
    font-weight: 700;
    color: var(--color-text);
    margin: 0 0 0.4rem;
    line-height: 1.25;
    letter-spacing: -0.005em;
}

/* "Why?" disclosure row — small link sitting just under the prompt, with the
   info text expanding inline when clicked. ASP.NET toggles Visible on lblInfo. */
.join-why {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin: 0 0 1rem;
    font-size: var(--font-size-sm);
}
.join-why .link {
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-medium);
    /* tiny question-mark prefix so the link reads as "help" */
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
}
.join-why .link::before {
    content: "?";
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.1em;
    height: 1.1em;
    border-radius: 50%;
    background: var(--color-primary-light);
    color: var(--color-primary);
    font-weight: 700;
    font-size: 0.75em;
    line-height: 1;
}
.join-why-info {
    color: var(--color-text-muted);
    font-style: italic;
    font-size: var(--font-size-sm);
    padding: 0.4rem 0.65rem;
    background: var(--color-bg);
    border-left: 3px solid var(--color-primary);
    border-radius: 0 var(--border-radius-sm) var(--border-radius-sm) 0;
    width: 100%;
    /* gentle slide-in when revealed */
    animation: joinInfoIn 0.22s var(--ease-out-quint);
}
@keyframes joinInfoIn {
    from { opacity: 0; transform: translateY(-4px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* ── Per-field "Why?" help toggle ─────────────────────────────────────
   A quieter, multi-field cousin of .join-why for forms like MyProfile,
   where many fields each want an optional "why is this useful?" hint. The
   label and a small "Why?" link share one baseline row; clicking the link
   reveals an italic explanation just below the field. Pure client-side
   (site.js initFieldWhy toggles the [hidden] attribute) — no postback. */
.input-label-row {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.5rem;
}
.input-label-row .input-label { margin-bottom: 0; }
.field-why {
    /* a real <button> styled as a quiet link (keyboard- & screen-reader-friendly) */
    appearance: none;
    -webkit-appearance: none;
    background: none;
    border: 0;
    padding: 0;
    margin: 0;
    cursor: pointer;
    font-family: inherit;
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-medium);
    color: var(--color-link, var(--color-primary, #0090C8));
    line-height: 1.2;
    white-space: nowrap;
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    transition: color var(--transition-fast, 0.15s ease);
}
.field-why:hover,
.field-why:focus-visible { color: var(--color-link-hover, var(--color-primary-dark, #005a80)); }
/* underline only the word on hover, never the round badge */
.field-why:hover .field-why-label,
.field-why:focus-visible .field-why-label { text-decoration: underline; }
.field-why::before {
    content: "?";
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.1em;
    height: 1.1em;
    border-radius: 50%;
    background: var(--color-primary-light);
    color: var(--color-primary);
    font-weight: 700;
    font-size: 0.75em;
    line-height: 1;
}
.field-why-info {
    margin: 0.4rem 0 0;
    color: var(--color-text-muted);
    font-style: italic;
    font-size: var(--font-size-sm);
    padding: 0.4rem 0.65rem;
    background: var(--color-bg);
    border-left: 3px solid var(--color-primary);
    border-radius: 0 var(--border-radius-sm) var(--border-radius-sm) 0;
    animation: joinInfoIn 0.22s var(--ease-out-quint);
}

/* Two-column row (first/last name). Stacks on mobile, splits at 540px+. */
.join-row {
    display: grid;
    grid-template-columns: 1fr;
    gap: 0.85rem;
    margin-bottom: 0.5rem;
}
@media (min-width: 540px) {
    .join-row             { grid-template-columns: 1fr 1fr; }
    .join-row.three       { grid-template-columns: 1fr 1fr 1fr; }
}
.join-row .form-group { margin-bottom: 0; }
.join-row .textbox    { max-width: none; }

/* Trailing "Already have an account?" link below the wizard card */
.join-already {
    text-align: center;
    margin: 1rem 0 0;
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
}
.join-already .link { font-weight: var(--font-weight-medium); }

/* The "All steps take about a minute..." reassurance line sits between page header
   and join card; .text-center already covers alignment, but it can look orphaned
   without breathing room. */
.note.text-center { margin: 0.5rem auto 1.25rem; max-width: 540px; }

/* Step-progress dot strip (decorative; visualizes the 7 steps).
   Pages don't render it yet — add `<ol class="join-stepper" data-step="2">...</ol>`
   to surface it once the markup is updated. Defined here so the styling is ready. */
.join-stepper {
    list-style: none;
    display: flex;
    gap: 0.5rem;
    justify-content: center;
    padding: 0;
    margin: 0 auto 1.25rem;
    max-width: 540px;
}
.join-stepper li {
    flex: 1;
    height: 4px;
    background: var(--color-border);
    border-radius: 999px;
    transition: background-color var(--transition-mid);
}
.join-stepper li.done    { background: var(--color-primary); }
.join-stepper li.current { background: var(--color-primary); box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-primary) 25%, transparent); }

/* Checkbox + wrapping label on one baseline — the "I agree to the Terms of
   Service" row on the final Join step, and any other checkbox whose label runs
   to more than one line (a bare .checkbox would top-align the box against the
   first line and let line 2 wrap underneath it).

   PROMOTED FROM qMEET 2026-07-18: these three rules lived only in
   qMEET/Content/styles.css, yet PacklistPRO, qFIT, NobodyHasTHIS and
   paulmendelson.com ALL emit .checkbox-row / .checkbox-row-text on their final
   Join step — so the class was dead on four of five sites and that ToS row
   rendered unstyled. qMEET's local copy is now redundant (shared loads last, so
   these win at equal specificity); it can be deleted from
   qMEET/Content/styles.css whenever that file is next touched. */
.checkbox-row { display: flex; align-items: flex-start; gap: .5rem; }
.checkbox-row .checkbox { margin-top: .15rem; flex: 0 0 auto; }
.checkbox-row-text { line-height: 1.4; }


/* ── 38a. Increased-contrast accessibility ────────────────────────
   Honor the OS-level "increase contrast" or "high contrast" setting (Windows
   High Contrast on supporting builds, macOS Increased Contrast, Android Color
   Correction → high-contrast text). Strengthens borders, removes subtle muted
   colors, and ensures focus rings remain visible. Override only the design
   tokens — components inherit because they're built on the variables. */
@media (prefers-contrast: more) {

    /* Pure-white-on-pale interactive surfaces (info/success/warning pills)
       can wash out under increased contrast — strengthen their borders. */
    .alert-panel,
    .trip-badge,
    .trip-countdown,
    .trip-filter-chip,
    .td-quicknav-chip { border-width: 2px; }
    /* Subtle muted text becomes too quiet — bump up. */
    .note, .small.text-muted { color: var(--color-text); opacity: 0.85; }
}

/* ── 39. Reduced motion (accessibility) ──────────────────────────
   Users with vestibular disorders, motion sensitivity, or a low-end device may
   prefer minimal animation. Honor the OS-level setting by collapsing transitions
   and animations to a tick. Targeted selectors below preserve essential motion
   (toast fade, spinner) — without an explicit override the spinner would freeze. */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }
    /* The progress bar still needs to animate to its target width, but the
       0.01ms above effectively turns it into a snap which is fine. */
    .back-to-top { transition: opacity 0.01ms; }
    /* Spinner: keep spinning so users know work is happening. */
    .spinner { animation: spin 0.6s linear infinite !important; }
}

/* ── 40. PWA install button (capture beforeinstallprompt) ──────── */
.pwa-install-btn {
    position: fixed;
    right: 1rem;
    bottom: 4.25rem; /* sits just above .back-to-top */
    z-index: 9998;
    display: none; /* shown by JS when beforeinstallprompt fires */
    align-items: center;
    gap: 0.4rem;
    padding: 0.4rem 0.8rem;
    background: var(--color-accent);
    color: #fff;
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-medium);
    border: none;
    border-radius: 999px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.25);
    cursor: pointer;
}
.pwa-install-btn.visible { display: inline-flex; }
.pwa-install-btn:hover, .pwa-install-btn:focus { background: var(--color-accent-dark); outline: none; }
.pwa-install-btn::before { content: "⤓"; font-size: 1rem; line-height: 1; }

/* ── 41. Keyboard-shortcuts help overlay ──────────────────────── */
.shortcuts-overlay {
    display: none;
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,0.55);
    z-index: 10000;
    align-items: center;
    justify-content: center;
    padding: 1rem;
}
.shortcuts-overlay.open { display: flex; }
.shortcuts-box {
    background: var(--color-bg-card);
    color: var(--color-text);
    border-radius: var(--border-radius-lg);
    box-shadow: var(--shadow-lg);
    max-width: 460px;
    width: 100%;
    padding: 1.25rem 1.5rem;
}
.shortcuts-title { font-size: var(--font-size-lg); font-weight: var(--font-weight-bold); margin: 0 0 0.75rem; }
.shortcuts-list { list-style: none; margin: 0; padding: 0; }
.shortcuts-list li {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 0.35rem 0;
    border-bottom: 1px solid var(--color-border);
}
.shortcuts-list li:last-child { border-bottom: none; }
.shortcuts-list .shortcut-keys { display: inline-flex; gap: 0.25rem; }
.kbd {
    display: inline-block;
    min-width: 1.5em;
    padding: 0.1em 0.4em;
    font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
    font-size: 0.8125rem;
    line-height: 1.4;
    color: var(--color-text);
    background: var(--color-bg);
    border: 1px solid var(--color-border);
    border-bottom-width: 2px;
    border-radius: 4px;
    text-align: center;
}
.shortcuts-footer {
    display: flex;
    justify-content: flex-end;
    margin-top: 0.75rem;
}

/* ── 41a. Shared visibility utility ─────────────────────────────────────────
   Applied by Shared/site-core.js (e.g. to auto-hide a "↺ Reset Filters" button
   while every filter/sort control is still at its default). !important so it
   wins over a component's own display rule on the element it hides. */
.sc-hidden { display: none !important; }

/* ── 41b. Styled confirm / alert modal (SiteCore.confirm / SiteCore.alert) ──
   Cross-site replacement for the native window.confirm()/window.alert() dialog.
   The .sc-modal-* markup is built by Shared/site-core.js; the backdrop + card
   mirror the shortcuts overlay, and the buttons reuse the .button design-system
   classes (so they inherit each site's theme) — the rules here only add layout,
   the enter/leave transition, and a focus ring. */
.sc-modal-overlay {
    position: fixed;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
    background: rgba(0, 0, 0, 0.55);
    z-index: 10050;               /* above toasts (10000) so a confirm is never buried */
    opacity: 0;
    transition: opacity 0.15s ease;
}
.sc-modal-overlay.open { opacity: 1; }
.sc-modal {
    background: var(--color-bg-card);
    color: var(--color-text);
    border: 1px solid var(--color-border);
    border-radius: var(--border-radius-lg);
    box-shadow: var(--shadow-lg);
    max-width: 420px;
    width: 100%;
    padding: 1.25rem 1.5rem 1.15rem;
    transform: translateY(8px) scale(0.98);
    transition: transform 0.15s ease;
}
.sc-modal-overlay.open .sc-modal { transform: none; }
.sc-modal-danger { border-top: 3px solid var(--color-danger); }
.sc-modal-title {
    font-size: var(--font-size-lg);
    font-weight: var(--font-weight-bold);
    margin: 0 0 0.5rem;
}
.sc-modal-body {
    line-height: 1.5;
    margin: 0;
    overflow-wrap: break-word;
}
.sc-modal-actions {
    display: flex;
    justify-content: flex-end;
    gap: 0.5rem;
    margin-top: 1.25rem;
}
/* .button provides the look; these only guarantee a sensible tap target and that
   the modal buttons never stretch full-width the way some form-context rules do. */
.sc-modal-btn {
    min-width: 5.5rem;
    width: auto;
    margin: 0;
}
@media (prefers-reduced-motion: reduce) {
    .sc-modal-overlay, .sc-modal { transition: none; }
}

/* ── 42. Auto-resize textarea — disable vertical resize handle when JS-managed ── */
textarea.textbox[data-autoresize] {
    overflow: hidden;
    resize: none;
}

/* ── 43. Copy-to-clipboard helper ────────────────────────────────
   Small inline button that pairs with [data-clipboard-target]. After a copy
   the button briefly flips to .copied (green check) before reverting. */
.copy-btn {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    padding: 0.2rem 0.55rem;
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-medium);
    color: var(--color-text);
    background: var(--color-bg);
    border: 1px solid var(--color-border);
    border-radius: var(--border-radius-sm);
    cursor: pointer;
    transition: background-color var(--transition-fast), color var(--transition-fast);
}
.copy-btn:hover  { background: var(--color-primary-light); }
.copy-btn:focus  { outline: 2px solid var(--color-border-focus); outline-offset: 2px; }
.copy-btn.copied { background: var(--color-success-bg); color: var(--color-success); border-color: var(--color-success-border); }
.copy-btn.copied::before { content: "✓"; }

/* ── 43b. "Coming Soon" stub-page treatment ───────────────────────
   Walkthroughs, Debug, ManageItems/Tags etc. all use a "Coming soon" card.
   Give those stubs a more deliberate visual so users immediately understand
   the page is intentionally unbuilt — not broken. */
.stub-card {
    text-align: center;
    padding: 2.5rem 1.5rem;
}
.stub-card::before {
    content: "🚧";
    display: block;
    font-size: 2.75rem;
    line-height: 1;
    margin-bottom: 0.85rem;
    /* very subtle bob to communicate "in progress" */
    animation: stubBob 4s var(--ease-in-out) infinite;
}
@media (prefers-reduced-motion: reduce) {
    .stub-card::before { animation: none; }
}
@keyframes stubBob {
    0%, 100% { transform: translateY(0); }
    50%      { transform: translateY(-4px); }
}

/* ── 43a0. Trip Dashboard 2-up card grid ─────────────────────────
   On wide screens, pair Packlist + Tasklist and Notes + Expenses side-by-side.
   Cards keep their own margin-bottom, so we zero the bottom margin inside the
   grid and let `gap` provide consistent spacing. Stacks to one column under
   768px so phones don't squish two narrow cards next to each other. */
.td-card-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--section-gap);
    margin-bottom: var(--section-gap);
}
.td-card-grid > .card { margin-bottom: 0; }
@media (min-width: 768px) {
    .td-card-grid { grid-template-columns: 1fr 1fr; }
}
/* The trip-name heading inside this grid would otherwise inherit the grid's
   centering. Leave it alone — already controlled by .tripdashboard-trip-heading. */

/* ── 43a1. Trip Dashboard readiness card ─────────────────────────
   Big percentage on the left, headline + per-list breakdown on the right.
   Progress bar underneath fills with the same percentage. Visually anchors
   the page — gives users a "how prepared am I overall?" snapshot. */
.td-readiness {
    background-image:
        radial-gradient(circle at top right,
            color-mix(in srgb, var(--color-accent) 7%, transparent) 0%,
            transparent 60%),
        linear-gradient(180deg, var(--color-bg-card), var(--color-bg-card));
}
[data-theme="dark"] .td-readiness {
    background-image:
        radial-gradient(circle at top right,
            color-mix(in srgb, var(--color-accent) 18%, transparent) 0%,
            transparent 60%),
        linear-gradient(180deg, var(--color-bg-card), var(--color-bg-card));
}
.td-readiness-row {
    display: flex;
    align-items: center;
    gap: 1rem;
    flex-wrap: wrap;
}
.td-readiness-pct {
    flex: 0 0 auto;
    font-size: 3rem;
    font-weight: 700;
    line-height: 1;
    color: var(--color-accent);
    font-variant-numeric: tabular-nums;
    letter-spacing: -0.02em;
}
.td-readiness-pct-sym {
    font-size: 0.5em;
    color: var(--color-text-muted);
    margin-left: 0.1em;
    font-weight: 500;
}
.td-readiness-body {
    flex: 1 1 16rem;
    min-width: 0;
}
.td-readiness-headline {
    margin: 0;
    font-weight: var(--font-weight-bold);
    font-size: var(--font-size-lg);
    color: var(--color-text);
}
.td-readiness-flavor { margin: 0.1rem 0 0.45rem; color: var(--color-text-muted); }
.td-readiness-breakdown {
    display: flex;
    flex-wrap: wrap;
    gap: 0.25rem 1rem;
    font-size: var(--font-size-sm);
    color: var(--color-text);
}
.td-readiness-breakdown strong { font-variant-numeric: tabular-nums; }
.td-readiness-track {
    margin-top: 0.75rem;
}

/* ── 43b0. Trip Dashboard quick-nav chips ──────────────────────────
   One-tap jump targets for Packlist / Tasklist / Notes / Expenses, sitting
   immediately under the trip-name heading. Wraps on narrow screens; tappable
   targets are at least 44px tall to honor mobile touch guidelines. */
.td-quicknav {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    margin: 0 0 1rem;
}
.td-quicknav-chip {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.4rem 0.85rem;
    background: var(--color-bg-card);
    color: var(--color-text);
    border: 1px solid var(--color-border);
    border-radius: 999px;
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-medium);
    text-decoration: none;
    min-height: 38px;
    transition: background-color var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast), transform var(--transition-fast);
}
.td-quicknav-chip:hover {
    background: var(--color-primary-light);
    border-color: var(--color-primary);
    color: var(--color-primary-dark);
    text-decoration: none;
    transform: translateY(-1px);
}
.td-quicknav-chip:active { transform: translateY(0); }
.td-quicknav-chip:focus-visible {
    outline: 2px solid var(--color-border-focus);
    outline-offset: 2px;
}
.td-quicknav-icon { font-size: 1em; line-height: 1; }
@media (prefers-reduced-motion: reduce) {
    .td-quicknav-chip:hover { transform: none; }
}

/* ── 43a2. Stat strip ──────────────────────────────────────────────
   A responsive row of metric tiles (big value + small label) for
   surfacing a record's key numbers near the top of a detail/dashboard
   page (e.g. totals, streaks, "this week", last-done). Generic and
   cross-site; theme tokens make it dark-mode-correct automatically.
   Tiles flex-grow to share the row and wrap on narrow screens. */
.stat-strip {
    display: flex;
    flex-wrap: wrap;
    gap: 0.6rem;
    margin: 0 0 1.25rem;
}
.stat-tile {
    flex: 1 1 7rem;
    min-width: 6rem;
    text-align: center;
    padding: 0.7rem 0.85rem;
    background: var(--color-bg-card);
    border: 1px solid var(--color-border);
    border-radius: var(--border-radius);
    box-shadow: var(--shadow-sm);
}
.stat-tile-value {
    display: block;
    font-size: var(--font-size-xl);
    font-weight: var(--font-weight-bold);
    line-height: 1.15;
    color: var(--color-text);
}
.stat-tile-label {
    display: block;
    margin-top: 0.15rem;
    font-size: var(--font-size-xs);
    color: var(--color-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.03em;
}
/* Accent variant — highlight the one tile that matters most (e.g. progress). */
.stat-tile.accent { border-color: color-mix(in srgb, var(--color-accent) 45%, var(--color-border)); }
.stat-tile.accent .stat-tile-value { color: var(--color-accent); }

/* ── 43b1. Trip filter chips (Trips.aspx) ──────────────────────────
   Compact pill row above the trip list. Active chip uses accent fill.
   Hidden by JS when the user has fewer than 2 trips. */
.trip-filter-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
    margin: 0.4rem 0 0.6rem;
}
.trip-filter-chips[hidden] { display: none; }
.trip-filter-chip {
    display: inline-flex;
    align-items: center;
    padding: 0.25rem 0.7rem;
    border: 1px solid var(--color-border);
    border-radius: 999px;
    background: var(--color-bg-card);
    color: var(--color-text-muted);
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-medium);
    line-height: 1.4;
    cursor: pointer;
    transition: background-color var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast);
    font-family: var(--font-family);
}
.trip-filter-chip:hover {
    background: var(--color-primary-light);
    color: var(--color-primary-dark);
    border-color: var(--color-primary);
}
.trip-filter-chip:focus-visible {
    outline: 2px solid var(--color-border-focus);
    outline-offset: 2px;
}
.trip-filter-chip.is-active {
    background: var(--color-primary);
    border-color: var(--color-primary);
    color: #fff;
}
.trip-filter-chip-count {
    margin-left: 0.35rem;
    font-size: var(--font-size-xs);
    opacity: 0.85;
}
/* When a chip filter is hiding a list item, the search-results <p> still
   shows the count for the visible subset. */
.trip-hidden-by-filter { display: none !important; }

/* ── 43c0. On-this-page TOC ─────────────────────────────────────────
   Floating "☰" launcher button bottom-right (left of back-to-top) that opens
   a centered overlay listing all section headings on the page. Driven by
   site.js initPageTOC when a parent element has data-page-toc. */
.toc-btn {
    position: fixed;
    right: 4.2rem;            /* tucks left of .back-to-top (1rem + 2.85rem + 0.35rem) */
    bottom: 1rem;
    width: 2.85rem;
    height: 2.85rem;
    border-radius: 50%;
    border: none;
    background: var(--color-bg-card);
    color: var(--color-text);
    font-size: 1.2rem;
    line-height: 1;
    cursor: pointer;
    box-shadow: var(--shadow-md);
    border: 1px solid var(--color-border);
    opacity: 0;
    pointer-events: none;
    transform: translateY(8px) scale(0.9);
    transition:
        opacity 0.25s var(--ease-out-quint),
        transform 0.25s var(--ease-out-quint),
        background-color 0.15s;
    z-index: 9997;
}
.toc-btn.visible {
    opacity: 1;
    pointer-events: auto;
    transform: translateY(0) scale(1);
}
.toc-btn:hover { background: var(--color-primary-light); border-color: var(--color-primary); }
.toc-btn:focus-visible { outline: 2px solid var(--color-border-focus); outline-offset: 2px; }

.toc-overlay {
    display: none;
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,0.55);
    z-index: 10000;
    align-items: center;
    justify-content: center;
    padding: 1rem;
}
.toc-overlay.open { display: flex; }
.toc-panel {
    background: var(--color-bg-card);
    color: var(--color-text);
    border-radius: var(--border-radius-lg);
    box-shadow: var(--shadow-lg);
    max-width: 460px;
    width: 100%;
    max-height: 80vh;
    overflow: auto;
    padding: 1.25rem 1.5rem;
}
.toc-title {
    margin: 0 0 0.75rem;
    font-size: var(--font-size-lg);
    font-weight: var(--font-weight-bold);
}
.toc-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.toc-list li + li { margin-top: 0.1rem; }
.toc-link {
    display: block;
    padding: 0.5rem 0.65rem;
    border-radius: var(--border-radius-sm);
    color: var(--color-text);
    text-decoration: none;
    transition: background-color var(--transition-fast), color var(--transition-fast);
}
.toc-link:hover,
.toc-link:focus-visible {
    background: var(--color-primary-light);
    color: var(--color-primary-dark);
    text-decoration: none;
}
/* ── Two-level outline (added 2026-07-30) ───────────────────────────────────
   A long reference page is a document, not a flat list: qFIT's Security & Privacy
   has 13 sections over 97 subsections, which rendered as 110 undifferentiated rows.
   An <h3> row now sits indented and lighter beneath its <h2>.

   ⚠ BOTH rules are deliberately scoped so no other site's TOC can shift:
   .toc-sub is emitted only by a TOC that tracks heading depth (qFIT's initPageTOC
   today), and the top-level weight rule is gated behind :has(li.toc-sub) so a flat
   list — every PacklistPRO / qMEET / NobodyHasTHIS page, and every qFIT page with no
   h3 — keeps its current appearance exactly. Do not un-scope either one. */
.toc-list li.toc-sub .toc-link {
    padding-left: 1.6rem;
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
}
.toc-list li.toc-sub .toc-link:hover,
.toc-list li.toc-sub .toc-link:focus-visible { color: var(--color-primary-dark); }
.toc-list:has(li.toc-sub) li:not(.toc-sub) .toc-link {
    font-weight: var(--font-weight-medium);
}
.toc-list:has(li.toc-sub) li.toc-sub + li:not(.toc-sub) .toc-link { margin-top: 0.35rem; }
.toc-footer {
    display: flex;
    justify-content: flex-end;
    margin-top: 0.75rem;
}
@media print { .toc-btn, .toc-overlay { display: none !important; } }

/* ── 43d. Trip countdown badge (Trips.aspx list) ───────────────────
   Small inline pill rendered next to the trip name on the Trips list when
   a trip is within ~30 days. Three flavors: upcoming, today, in-progress.
   Populated by JS in Trips.aspx using the trip's data-start/data-end attrs. */
.trip-badge {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    padding: 0.05rem 0.5rem;
    margin-left: 0.5rem;
    border-radius: 999px;
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-medium);
    line-height: 1.4;
    white-space: nowrap;
    vertical-align: 1px;
}
.trip-badge-upcoming   { background: var(--color-info-bg);    color: var(--color-info);    border: 1px solid var(--color-info-border); }
.trip-badge-today      { background: var(--color-warning-bg); color: var(--color-warning); border: 1px solid var(--color-warning-border); }
.trip-badge-active     { background: var(--color-success-bg); color: var(--color-success); border: 1px solid var(--color-success-border); }
.trip-badge-past       { background: var(--color-bg);         color: var(--color-text-muted); border: 1px solid var(--color-border); }
.trip-badge::before    { content: ""; display: inline-block; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }

/* ── 43e. Trip Dashboard countdown banner ──────────────────────────
   Prominent card shown at the top of TripDashboard when a trip leaves in
   the near future or is currently in progress. Renders inline in the trip
   subline so it appears immediately under the trip name. */
.trip-countdown {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.25rem 0.7rem;
    margin-left: 0.5rem;
    border-radius: 999px;
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-medium);
    line-height: 1.3;
    border: 1px solid;
}
.trip-countdown-upcoming { color: var(--color-info);    background: var(--color-info-bg);    border-color: var(--color-info-border); }
.trip-countdown-today    { color: var(--color-warning); background: var(--color-warning-bg); border-color: var(--color-warning-border); animation: countdownPulse 2s var(--ease-in-out) infinite; }
.trip-countdown-active   { color: var(--color-success); background: var(--color-success-bg); border-color: var(--color-success-border); }
.trip-countdown-past     { color: var(--color-text-muted); background: var(--color-bg); border-color: var(--color-border); }
.trip-countdown-icon     { font-size: 0.95em; line-height: 1; }
@keyframes countdownPulse {
    0%, 100% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-warning) 35%, transparent); }
    50%      { box-shadow: 0 0 0 6px transparent; }
}
@media (prefers-reduced-motion: reduce) {
    .trip-countdown-today { animation: none; }
}

/* ── 43f. Mobile responsiveness ──────────────────────────────────────
   Targeted overrides for narrow screens. The desktop layout is the
   default in the shared stylesheet; these rules stack, simplify, and
   enlarge touch targets so every page works on a phone.
   Breakpoints: 767px (tablet portrait & below), 575px (phone). */

@media (max-width: 767px) {

    /* ── Forms: stack .form-row children vertically ─────────────
       The shared .form-row is display:flex with wrap. On narrow
       screens we force column direction so 5-8 dropdowns don't
       squeeze into a tiny row. */
    .form-row {
        flex-direction: column;
    }
    .form-row > .form-group {
        width: 100%;
        min-width: 0;
        flex: none;
    }

    /* ── Buttons: stack in .form-actions ────────────────────── */
    .form-actions {
        flex-direction: column;
    }
    .form-actions > .button,
    .form-actions > [class*="button"] {
        width: 100%;
        text-align: center;
        justify-content: center;
    }

    /* ── Tables: tighter cells for horizontal space ────────── */
    .data-table th,
    .data-table td {
        padding: 0.4rem 0.5rem;
        font-size: var(--font-size-xs);
    }
    .data-table th {
        font-size: 0.65rem;
    }

    /* Log message column: relax the max-width on mobile so it
       doesn't truncate to a few words. The table is inside a
       table-responsive wrapper so horizontal scroll handles
       overflow. */
    .log-msg {
        max-width: 60vw;
    }
    .log-table {
        min-width: 520px;
    }

    /* ── Toolbar rows: children already wrap, but ensure
       the search field doesn't demand too much space ───────── */
    .toolbar-search-grow {
        min-width: 140px;
        flex-basis: 100%;
    }

    /* ── DataEditor: stack toolbar fields ───────────────────── */
    .de-toolbar {
        flex-direction: column;
        align-items: stretch;
    }
    .de-filter-input {
        width: 100%;
    }
    .de-button-row {
        padding-top: 0;
    }
    .de-save-bar {
        flex-wrap: wrap;
        gap: 0.5rem;
        padding: 0.5rem 0.65rem;
    }
    .de-save-bar .button {
        flex: 1 1 auto;
        min-height: 44px;
        text-align: center;
        justify-content: center;
    }
    .de-preview-box {
        margin: 1rem 0.5rem;
        max-width: none;
        padding: 1rem;
    }
    .de-paging {
        gap: 0.4rem;
    }
    .de-table .de-cell {
        min-width: 80px;
        min-height: 44px;
        height: auto;
        padding: 0.25rem 4px;
    }
    .de-table td {
        height: auto;
    }
    .de-table td:first-child {
        min-width: 44px;
        min-height: 44px;
    }

    /* ── Expenses: summary grid adapts to narrow screens ───── */
    .exp-summary-row {
        grid-template-columns: repeat(auto-fit, minmax(8rem, 1fr));
    }
    .exp-summary-value {
        font-size: 1.15rem;
    }

    /* ── Share link row (EditTrip): stack code + button ─────── */
    .share-link-row {
        flex-direction: column;
        max-width: none;
    }

    /* ── Quicklist filters: tighter gap ─────────────────────── */
    .ql-filters {
        gap: 0.5rem;
    }
    .ql-filter-divider {
        display: none;
    }

    /* ── Subscribe page: details table labels ──────────────── */
    .subscribe-details-label {
        width: auto;
        white-space: normal;
    }

    /* ── ContactUsViewer / DuplicateRecordFinder tables ─────── */
    .drf-table th,
    .drf-table td {
        padding: 0.35rem 0.5rem;
    }
    .drf-th-children {
        width: auto;
    }

    /* ── AI metadata grid: single column on mobile ─────────── */
    .ai-meta-grid {
        grid-template-columns: 1fr;
    }
    .ai-meta-label {
        white-space: normal;
    }

    /* ── Page header: tighter gap ──────────────────────────── */
    .page-header {
        gap: 0.5rem;
    }

    /* ── Contact Us form: stack site/page row ───────────────── */
    .cu-site-row {
        flex-direction: column;
    }
    .cu-site-select {
        width: 100%;
    }
}

@media (max-width: 575px) {

    /* ── Page wrapper: reduce padding on phones ────────────── */
    .page-wrapper {
        padding: 0.65rem;
    }

    /* ── Cards: slightly less padding ──────────────────────── */
    .card {
        padding: 0.75rem;
    }
    .card-lg {
        padding: 1rem;
    }

    /* ── Expenses form: let narrow inputs stretch full-width ── */
    .exp-date-input,
    .exp-amount-input,
    .exp-rating-input {
        max-width: none;
    }

    /* ── Notes date input: also stretch ─────────────────────── */
    .notes-date-input {
        max-width: none;
    }

    /* ── Home page: force exactly 2 columns on phones ──────── */
    .home-actions {
        grid-template-columns: repeat(2, 1fr);
        gap: 0.4rem;
    }

    /* ── Trip readiness: scale down percentage ─────────────── */
    .td-readiness-pct {
        font-size: 2.25rem;
    }

    /* ── Modals / overlays: tighter padding on phones ──────── */
    .shortcuts-box,
    .toc-panel {
        padding: 0.85rem 1rem;
    }
    #session-expired-modal .modal-box {
        padding: 1.25rem;
    }

    /* ── Footer: tighter on phones ─────────────────────────── */
    .site-footer {
        padding: 1rem 0.75rem;
    }
    .site-footer-links {
        line-height: 2;
    }

    /* ── Expenses type-bar legend: narrower min ─────────────── */
    .exp-typebar-legend {
        grid-template-columns: repeat(auto-fill, minmax(8.5rem, 1fr));
    }

    /* ── Buttons in .form-actions: ensure tappable height ──── */
    .form-actions > .button {
        min-height: 44px;
    }

    /* ── Toolbar actions: stack and stretch ─────────────────── */
    .toolbar-actions {
        flex-direction: column;
        width: 100%;
    }
    .toolbar-actions > .button {
        width: 100%;
        text-align: center;
        justify-content: center;
    }

    /* ── LogViewer / ContactUsViewer: pager wraps tighter ──── */
    .log-pager {
        gap: 0.4rem;
        flex-wrap: wrap;
    }

    /* ── Quicklist: section/tag headers smaller ─────────────── */
    .ql-section-header {
        font-size: var(--font-size-base);
    }

    /* ── Duplicate Record Finder: results groups tighter ───── */
    .drf-group {
        margin-bottom: 0.5rem;
    }
    .drf-results-header {
        flex-direction: column;
        align-items: flex-start;
    }

    /* ── ContactUs viewer: read-only info bar stacks ───────── */
    .cuv-readonly-info {
        flex-direction: column;
        gap: 0.25rem;
    }

    /* ── DataEditor: phone-specific tightening ─────────────── */
    .de-save-bar .button {
        font-size: var(--font-size-sm);
        padding: 0.4rem 0.5rem;
    }
    .de-chips {
        gap: 0.3rem;
    }
    .de-chip {
        font-size: 0.8rem;
        padding: 0.2rem 0.5rem;
    }
    .de-preview-box {
        margin: 0.5rem;
        padding: 0.75rem;
    }
    .de-preview-table {
        font-size: 0.8rem;
    }
    .de-preview-table th,
    .de-preview-table td {
        padding: 0.2rem 0.35rem;
    }
}

/* Card title with top separator — marks a second logical section within
   a single card (e.g. "Site behavior" below "Display" on Preferences). */
.card-title-spaced {
    margin-top: 1.5rem;
    padding-top: 1rem;
    border-top: 1px solid var(--color-border);
}

/* ═══════════════════════════════════════════════════════════════════════════
   PAGE TAB STRIP — sibling pages presented as tabs (.page-tabs / .page-tab)

   Emitted by InterestsTabs.ascx.vb (qMEET's four Interests pages) and by
   HelpTabs.ascx.vb (the Help hub plus the five help pages, on all three sites).
   Sits directly under .page-header.

   PROMOTED FROM qMEET/Content/styles.css TO THIS FILE 2026-08-04, when the Help
   hub (X3) gave qFIT and PacklistPRO a second consumer. It was qMEET-only until
   then, and there is deliberately NO copy left in any site sheet: this file loads
   LAST on every site, so a leftover local copy would win the cascade on that one
   site and then silently drift from the other two.

   These are ANCHORS to separate pages, not in-page panels — see the header
   comment in InterestsTabs.ascx / HelpTabs.ascx for why the markup is a <nav>
   with aria-current rather than an ARIA tablist. The styling is the only part
   that pretends they are tabs, which is exactly the right place for the pretence.

   Colour comes entirely from tokens, so the strip follows dark mode with no
   second ruleset: the inactive tab is muted text on the page background, the
   active one is accent text sitting on --color-bg-card with an accent underline,
   so it reads as the sheet the content below belongs to.
   ═══════════════════════════════════════════════════════════════════════════ */
.page-tabs {
    display: flex;
    align-items: stretch;
    gap: 0.25rem;
    margin: -0.5rem 0 1.25rem;
    border-bottom: 2px solid color-mix(in srgb, var(--color-border) 70%, transparent);
    /* A long strip must scroll sideways on a phone rather than wrapping into a
       second row of half-width tabs, which stops reading as a tab bar. */
    overflow-x: auto;
    overflow-y: hidden;
    scrollbar-width: thin;
    -webkit-overflow-scrolling: touch;
}

.page-tab {
    flex: 0 0 auto;
    padding: 0.5rem 1.1rem;
    border: 1px solid transparent;
    border-bottom: none;
    border-radius: var(--border-radius-sm, 6px) var(--border-radius-sm, 6px) 0 0;
    /* The 2px pulls each tab down onto the strip's own border so the active
       tab's underline replaces that border instead of stacking under it. */
    margin-bottom: -2px;
    color: var(--color-text-muted, #6c757d);
    font-size: var(--font-size-sm, 0.875rem);
    font-weight: var(--font-weight-medium, 500);
    line-height: 1.4;
    text-decoration: none;
    white-space: nowrap;
    transition: color var(--transition-fast, 0.15s ease),
                background-color var(--transition-fast, 0.15s ease);
}

.page-tab:hover,
.page-tab:focus-visible {
    color: var(--color-primary, #00B0F0);
    background-color: color-mix(in srgb, var(--color-accent) 8%, transparent);
    text-decoration: none;
}

.page-tab:focus-visible {
    outline: none;
    box-shadow: var(--shadow-focus-ring, 0 0 0 3px rgba(0, 176, 240, 0.35));
}

.page-tab.is-active {
    color: var(--color-primary, #00B0F0);
    background-color: var(--color-bg-card, #ffffff);
    border-color: color-mix(in srgb, var(--color-border) 70%, transparent);
    border-bottom: 2px solid var(--color-primary, #00B0F0);
    font-weight: var(--font-weight-bold, 600);
    cursor: default;
}

/* The active tab is the page you are already on, so hovering it must not
   suggest it will take you somewhere. */
.page-tab.is-active:hover,
.page-tab.is-active:focus-visible {
    background-color: var(--color-bg-card, #ffffff);
}

/* About page: responsive feature grids. Stacks on mobile, splits at md. */
.about-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.25rem;
}
@media (min-width: 768px) {
    .about-grid { grid-template-columns: repeat(2, 1fr); }
}
.about-grid-3 {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.25rem;
}
@media (min-width: 768px) {
    .about-grid-3 { grid-template-columns: repeat(3, 1fr); }
}

/* ── 43b. Invite page (all five sites) ────────────────────────────
   Promoted here 2026-07-28 when Invite.aspx was unified across qFIT /
   PacklistPRO / qMEET / NobodyHasTHIS / paulmendelson.com. Before that,
   `.invite-qr` and `.invite-link-row` were defined ONLY in qMEET's and qFIT's
   local sheets — PLP, NHT and PM shipped markup using both classes with NO
   rule anywhere, so their QR sat unsized (falling back to the width/height
   attributes) and the copy row never became a flex row. Keep these here, not
   in a site sheet: styles_shared.css loads LAST on every site, so a local
   copy would be out-ranked by this one anyway and only drift. */

/* QR image — centered, capped, never wider than its card. */
.invite-qr {
    display: block;
    width: 100%;
    max-width: 320px;
    height: auto;
    margin: 0.5rem auto 0;
    border-radius: 8px;
}

/* "Or Share Your Link" — read-only URL grows, 📋 Copy sits beside it and
   wraps underneath on narrow screens. */
.invite-link-row {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    align-items: stretch;
}
.invite-link-row .textbox { flex: 1 1 220px; min-width: 0; }
.invite-link-row .button { flex: 0 0 auto; }
@media (max-width: 480px) {
    .invite-link-row .textbox { flex: 1 1 100%; }
}

/* Field caption on the left, the "(add @gmail.com)" link flush RIGHT with the
   right edge of the textbox below it. The 480px cap MUST mirror §21's
   `.form-group .textbox { max-width: 480px }` at >=768px — change one and the
   link stops lining up. Below 768px the box is full-width and so is this row. */
.invite-label-row {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.5rem;
    width: 100%;
}
@media (min-width: 768px) {
    .invite-label-row { max-width: 480px; }
}

/* ── 44. Itinerary page ──────────────────────────────────────────── */

/* Day navigation header */
.itin-day-nav {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    margin-bottom: 0.75rem;
}
.itin-day-title {
    flex: 1;
    text-align: center;
    margin: 0;
}

/* Item rows */
.itin-item {
    padding: 0.5rem 0.75rem;
    border-bottom: 1px solid var(--color-border);
    cursor: pointer;
    transition: background-color var(--transition-fast);
}
.itin-item:last-child { border-bottom: none; }
.itin-item:hover { background-color: var(--color-primary-light); }
.itin-item:focus-visible { outline: 2px solid var(--color-border-focus); outline-offset: -2px; }
.itin-item.selected {
    background-color: var(--color-primary-light);
    border-left: 3px solid var(--color-accent);
}

.itin-item-row {
    display: flex;
    align-items: baseline;
    gap: 0.5rem;
    flex-wrap: wrap;
}
.itin-item-time {
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
    min-width: 5.5rem;
    flex-shrink: 0;
}
.itin-item-title {
    font-weight: var(--font-weight-medium);
    flex: 1;
    min-width: 0;
    word-break: break-word;
}
.itin-item-meta {
    display: flex;
    gap: 0.375rem;
    flex-wrap: wrap;
    align-items: center;
    margin-top: 0.125rem;
}

/* Day headers in full itinerary */
.itin-day-header {
    padding: 0.5rem 0.75rem;
    background: var(--color-bg);
    border-bottom: 1px solid var(--color-border);
    font-weight: var(--font-weight-bold);
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
    position: sticky;
    top: 0;
    z-index: 1;
}
[data-theme="dark"] .itin-day-header { background: var(--color-bg-card); }

/* Status badge variants */
.itin-status-confirmed { background: var(--color-success-bg); color: var(--color-success); }
.itin-status-cancelled { text-decoration: line-through; opacity: 0.65; }
.itin-status-completed { background: var(--color-success-bg); color: var(--color-success); opacity: 0.7; }

/* Collapsible details sections */
.itin-details { border: 1px solid var(--color-border); border-radius: var(--border-radius-sm); }
.itin-details-summary {
    padding: 0.5rem 0.75rem;
    cursor: pointer;
    font-weight: var(--font-weight-medium);
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
    list-style: none;
}
.itin-details-summary::before { content: "▸ "; }
.itin-details[open] > .itin-details-summary::before { content: "▾ "; }
.itin-details-summary::-webkit-details-marker { display: none; }
.itin-details-body { padding: 0 0.75rem 0.75rem; }

/* Date + Time pairs (Start Date/Time, End Date/Time): keep the two fields on
   one line at every width. The general .form-row stacks to a column below
   768px so a dense row of dropdowns doesn't squeeze, but a date input plus a
   short time dropdown comfortably fit two-up — so this row opts out of that
   stacking. Declared after the max-width:767px .form-row override above, so it
   wins on equal specificity. */
.itin-datetime-row {
    flex-direction: row;
    flex-wrap: nowrap;
    column-gap: 0.5rem;
}
.itin-datetime-row > .form-group {
    flex: 1 1 0;
    width: auto;
    min-width: 0;
}

/* Responsive: time column narrower on phones */
@media (max-width: 575px) {
    .itin-item-time { min-width: auto; }
}

/* ── Suggested activities panel (Itinerary.aspx) ─────────────────────
   Additive only — reuses .main-card / .checkbox / .pill / .link. Each
   suggestion is a <label> row so the whole row toggles its checkbox,
   mirroring the Setup Checklist rows below. */
.itin-suggest-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    flex-wrap: wrap;
}
.itin-suggest-toolbar {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
    margin: 0.75rem 0 0.25rem;
}
.itin-suggest-toolbar .small-dim-text { margin-right: auto; }
/* "Email Suggestions to Me" row sits at the top, directly under the Select-all
   toolbar (left-aligned, tight spacing) so it's reachable without scrolling. */
.itin-suggest-emailrow { justify-content: flex-start; margin: 0 0 0.75rem; }
.itin-suggest-item {
    display: flex;
    align-items: flex-start;
    gap: 0.6rem;
    padding: 0.6rem 0.25rem;
    border-bottom: 1px solid var(--color-border);
    cursor: pointer;
}
.itin-suggest-item:last-child { border-bottom: none; }
.itin-suggest-item:hover { background-color: var(--color-primary-light); }
.itin-suggest-cb { margin-top: 0.2rem; flex: 0 0 auto; }
.itin-suggest-body {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    min-width: 0;
}
.itin-suggest-row {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.5rem;
}
.itin-suggest-when {
    font-size: 0.85rem;
    color: var(--color-text-muted);
    white-space: nowrap;
}
.itin-suggest-title { font-weight: 600; }
.itin-suggest-metarow {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem;
}
.itin-suggest-desc { display: block; }
.itin-suggest-links { display: block; font-size: 0.9rem; }
.itin-suggest-loc { white-space: nowrap; }

/* ── 45. Home "Suggested ToDo's" list ────────────────────────────────
   Onboarding to-dos surfaced on Home. Every INCOMPLETE checklist item is
   one aligned row: [checkbox] [what to do] [button → its page]. The three
   columns line up vertically across every row because all rows share ONE
   grid — each .home-todo-row is display:contents, so its three cells become
   grid items of the parent .home-todo-list and inherit its columns. Ticking
   the checkbox marks that item done (persisted via the setupChecklist pref)
   and removes the row. Time-sensitive alerts (approvals waiting, drafts not
   live, RSVPs due) render above in a standout yellow so they don't blend in
   with the ordinary to-dos — they aren't checklist items and self-resolve. */

/* Yellow attention alerts — NOT checklist items; no checkbox, they clear
   themselves once you act on them (approve a member, publish a draft, …). */
.home-todo-alerts { list-style: none; padding: 0; margin: 0 0 1rem; }
.home-todo-alerts li {
    padding: 0.6rem 0.85rem;
    margin-bottom: 0.4rem;
    border-radius: var(--radius-md, 8px);
    background: var(--color-warning-bg);
    border: 1px solid var(--color-warning-border);
    color: var(--color-warning);
    line-height: 1.4;
}
.home-todo-alerts li:last-child { margin-bottom: 0; }
.home-todo-alerts .link {
    color: var(--color-warning);
    text-decoration: underline;
    font-weight: var(--font-weight-medium, 600);
}

/* RED variant — for alerts about data that is actually WRONG rather than merely
   waiting on you (PacklistPRO's trip date warnings: a placeholder or missing
   start/end date makes a trip's dates and status read incorrectly everywhere).
   Same box, danger palette. The dark-mode text override is required: unlike the
   warning pair, --color-danger is NOT re-declared for dark, so the light #c62828
   would land on the dark #3b1212 panel at under 2:1. */
.home-todo-alerts-danger li {
    background: var(--color-danger-bg);
    border-color: var(--color-danger-border);
    color: var(--color-danger);
}
.home-todo-alerts-danger .link { color: var(--color-danger); }
[data-theme="dark"] .home-todo-alerts-danger li,
[data-theme="dark"] .home-todo-alerts-danger .link { color: #ff8a80; }

/* Aligned checklist to-do rows. Each row is its own 3-column grid; because the
   checkbox column is a fixed width and the middle 1fr eats the slack, the checkbox
   left edges, the text left edges, and the button RIGHT edges all line up vertically
   across every row. The divider is a continuous border on the row itself.
   .home-todo-list is just a plain container — the rows carry all the layout. */
.home-todo-row {
    display: grid;
    grid-template-columns: 1.5rem 1fr auto;   /* checkbox | text | button */
    align-items: start;                        /* top-align — descriptions can wrap to 2+ lines */
    column-gap: 0.85rem;
    padding: 0.7rem 0;
    border-top: 1px solid var(--color-border, #e0e0e0);
}
.home-todo-row:first-child { border-top: none; }
.home-todo-row:hover { background: var(--color-hover-bg, rgba(0, 0, 0, 0.03)); }

/* Fully custom-drawn checkbox. We can't lean on accent-color here: a DISABLED checked
   box (our "auto-completed" server-detected items are rendered disabled so they can't be
   un-ticked) is greyed out by the browser's native rendering no matter what accent-color
   or opacity we set — which is exactly why auto-checked boxes looked different from the
   ones the user ticks. appearance:none removes the native control entirely so WE paint
   every state, making auto-checked and manually-checked boxes pixel-identical blue. */
.home-todo-check {
    -webkit-appearance: none;
    appearance: none;
    box-sizing: border-box;
    width: 1.5rem !important;
    height: 1.5rem !important;
    min-width: 1.5rem !important;
    margin: 0.05rem 0 0 0 !important;   /* nudge to sit level with the title line */
    border: 2px solid var(--color-primary, #0090C8);
    border-radius: 4px;
    background-color: transparent;
    background-repeat: no-repeat;
    background-position: center;
    background-size: 74% 74%;
    cursor: pointer;
    opacity: 1;
    transition: background-color 0.12s ease, border-color 0.12s ease;
}
/* Checked — solid blue fill + white check. The :checked rule (0,2,0) beats the base
   .checkbox rules, and because there is no native control left, the DISABLED variant
   below inherits this exact look instead of the browser's grey. */
.home-todo-check:checked {
    background-color: var(--color-primary, #0090C8);
    border-color: var(--color-primary, #0090C8);
    background-image: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2016%2016'%3E%3Cpath%20fill='none'%20stroke='white'%20stroke-width='2.5'%20stroke-linecap='round'%20stroke-linejoin='round'%20d='M3.5%208.5l3%203%206-7'/%3E%3C/svg%3E");
}
/* Auto-checked (server-detected) items are disabled so they can't be un-accomplished —
   force the identical blue + full opacity, overriding the base .checkbox:disabled
   {opacity:.5} that otherwise faded them. */
.home-todo-check:disabled { cursor: default; opacity: 1 !important; }
.home-todo-check:disabled:checked {
    background-color: var(--color-primary, #0090C8) !important;
    border-color: var(--color-primary, #0090C8) !important;
}
.home-todo-text { min-width: 0; }
.home-todo-title { font-weight: var(--font-weight-medium, 600); line-height: 1.35; }
.home-todo-desc {
    color: var(--color-text-muted, #555);
    font-size: var(--font-size-sm, 0.9375rem);
    line-height: 1.4;
    margin-top: 0.1rem;
}
.home-todo-action { justify-self: end; }
.home-todo-action .button { margin: 0; white-space: nowrap; }

/* Progressive reveal: the list shows only the first few OPEN to-dos; JS tags the rest
   with .home-todo-more-hidden and the "Show More" link reveals the whole rest at once.
   (The yellow alerts above are never capped — every warning always shows.) */
.home-todo-row.home-todo-more-hidden { display: none; }

/* Completed items: hidden by default (the card shows only what's left to do); the
   "Show all" toggle adds .show-all to the list to reveal them, struck-through. */
.home-todo-row.home-todo-done { display: none; }
.home-todo-list.show-all .home-todo-row.home-todo-done { display: grid; }
.home-todo-done .home-todo-title {
    text-decoration: line-through;
    text-decoration-color: var(--color-text-muted, #999);
    opacity: 0.7;
}
.home-todo-done .home-todo-desc { opacity: 0.85; }

/* "You're all done" note — shown in the default (incomplete-only) view when nothing
   is left; JS toggles the hidden attribute. */
.home-todo-alldone { margin: 0.35rem 0 0; }
/* Footer row: "Show More" (reveal the rest of the open to-dos) on the LEFT, the
   "Show / Hide Completed" toggle pushed to the RIGHT (margin-left:auto). Both sit on one
   line; margin-left:auto keeps the toggle right-aligned even when "Show More" is hidden. */
.home-todo-foot {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 0.35rem 1rem;
    margin-top: 0.75rem;
}
/* Author display:flex above would otherwise defeat the `hidden` attribute — re-assert it. */
.home-todo-foot[hidden] { display: none; }
.home-todo-more-wrap { margin: 0; }
.home-todo-toggle-wrap { margin: 0; margin-left: auto; }
/* "Reset Checkboxes" — trails the Show Completed toggle on the right. Only ever shown
   when at least one user-ticked box exists, which also means a completed row exists,
   so in practice it sits beside the toggle rather than alone. No `display` here: that
   would defeat the `hidden` attribute the script uses to show/hide it (same trap the
   .home-todo-foot[hidden] rule above exists to undo). */
.home-todo-reset-wrap { margin: 0; }

@media (max-width: 575px) {
    /* Tighten so all three columns still fit on a phone; the text wraps if needed. */
    .home-todo-row { grid-template-columns: 1.375rem 1fr auto; column-gap: 0.6rem; padding: 0.6rem 0; }
    .home-todo-check {
        width: 1.375rem !important;
        height: 1.375rem !important;
        min-width: 1.375rem !important;
    }
    .home-todo-action .button { padding-left: 0.5rem; padding-right: 0.5rem; }
}

/* ── Page header: ← Back button + left-justified titles (cross-site) ────────
   Shared by PacklistPRO, qMeet, and qFIT. The title left-justify lives on the
   base .page-title rule above (so the .text-center utility can still override
   it on the few pages that opt in — e.g. Login / Message-Sent). These rules
   pin the header's right-hand cluster (tip ⓘ / .page-header-actions) to the
   far right so the title group stays flush-left even on 3-item headers, and
   keep the ← glued to the title.

   The ← itself is injected / normalized by each site's site.js initBackButton()
   and rendered statically on each Error.aspx. */
.page-header > .tip-icon-button,
.page-header > .page-header-actions { margin-left: auto; }

/* Keep the ← on the same line as the title and let a long title wrap within
   its own column instead of orphaning the icon on a line above it.
   flex-basis 0% (not auto): the row's base size must never exceed the flex
   line, or a long title pushes the ⓘ trigger / actions cluster onto the next
   line on phones — instead the title shrinks and wraps inside its column. */
.page-header > .page-header-title-row {
    flex: 1 1 0%;
    min-width: 0;
    flex-wrap: nowrap;
}
.page-header-title-row > :not(.back-btn) {
    flex: 1 1 auto;
    min-width: 0;
}

/* A subtitle / description line sitting beside the title row — qMeet Surveys'
   "Take surveys shared with you…", CitiesNearMe's blurb, PacklistPRO's Park
   and EditPark intros. It is a SIBLING of the title row on the same flex line,
   and because the rule directly above gives the title row flex-basis 0% the
   title column absorbs 100% of the shrink: the description keeps its full
   max-content width and the title collapses toward nothing. Measured on prod
   2026-08-01 — qMeet Surveys at a 427px viewport left a 13px title column
   rendering "Surveys" ONE LETTER PER LINE (0px wide x 269px tall, .page-title
   has overflow-wrap:break-word), and PacklistPRO EditPark a 54px one. The band
   is wherever the description's max-content ALMOST fills the header, so it also
   bites on tablets: CitiesNearMe broke at 636-697px, not on phones.
   flex-basis 100% drops the description onto its own row under the title at
   every width, which is what all four call sites already mean by "subtitle".
   Bare <p> is covered so a page that simply drops a paragraph in the header is
   right by default; add .page-header-desc when the line is not a <p>.
   qMeet reached this same fix first, scoped to one class (Content/styles.css,
   `.page-header > .event-group-line`) — that rule still stands on its own.
   min-width, NOT just flex-basis: a max-width on the description CLAMPS its
   flex base size, so basis alone is not enough. qMeet's .cnm-subtitle caps at
   60ch, and with `flex: 1 0 100%` alone CitiesNearMe still broke at 637-697px
   (title 0-42px wide) because the clamped 582px base fit beside the title.
   min-width beats max-width, so the full-row break is unconditional. Corollary:
   a max-width on a description in here is now inert — don't add one expecting a
   reading measure (qMeet's .cnm-subtitle had one and it was removed, not
   overridden, so the dead declaration wouldn't mislead the next reader). */
.page-header > p,
.page-header > .page-header-desc {
    flex: 1 0 100%;
    min-width: 100%;
}

/* ← Back button icon. Two-class selector (.back-btn.back-btn-icon) so it wins
   over the base single-class .back-btn rules above. */
.back-btn.back-btn-icon {
    font-size: 1.6rem;
    line-height: 1;
    padding: 0.1rem 0 0.1rem 0.35rem;  /* no right padding — sit flush against the title */
    margin: 0 -0.5rem 0 -0.35rem;      /* R: cancel the title-row's 0.5rem flex gap; L: flush-left */
    min-height: 0;
    color: inherit;
    text-decoration: none;
    flex: 0 0 auto;
    align-self: center;                /* vertically center against the title */
}
.back-btn.back-btn-icon:hover,
.back-btn.back-btn-icon:focus-visible {
    background-color: transparent;
    opacity: 0.65;
    box-shadow: none;
}
@media print {
    .back-btn.back-btn-icon { display: none !important; }
}

/* ── 46. Color-picker grid (§4.3) ─────────────────────────────────────
   A client-side grid of color swatches for choosing a record color
   (categories, tags, etc.). Markup:
     <div class="color-picker-preview" …></div>
     <div class="color-picker-grid" role="group" aria-label="…">
        <button type="button" class="cp-swatch" data-color="#xxxxxx"
                aria-label="Color #xxxxxx" style="background-color:#xxxxxx"></button>
        …
     </div>
   Page JS wires clicks to a hidden field + the preview; no postbacks. */
.color-picker-preview {
    width: 100%;
    height: 2.25rem;
    border: 1px solid var(--color-border);
    border-radius: var(--border-radius-sm);
    margin: 0.25rem 0 0.5rem;
}
.color-picker-grid {
    display: grid;
    grid-template-columns: repeat(8, minmax(28px, 1fr));
    gap: 4px;
    max-width: 380px;
    margin-bottom: 0.75rem;
}
.cp-swatch {
    height: 28px;
    min-height: 28px;
    border: 1px solid rgba(0, 0, 0, 0.25);
    border-radius: 4px;
    cursor: pointer;
    padding: 0;
    font-size: 0.7rem;
    line-height: 1;
    transition: transform var(--transition-fast, 0.15s);
}
@media (pointer: coarse) {
    .cp-swatch { height: 32px; min-height: 32px; }
}
.cp-swatch:hover { transform: scale(1.08); }
.cp-swatch:focus-visible {
    outline: 2px solid var(--color-accent);
    outline-offset: 1px;
}
.cp-swatch.selected {
    box-shadow: 0 0 0 2px var(--color-bg-card), 0 0 0 3px var(--color-accent);
}
[data-theme="dark"] .cp-swatch { border-color: rgba(255, 255, 255, 0.25); }

/* ============================================================
   47. Cross-site visual-system extensions (additive, June 2026)
   Purely additive design tokens + utility classes that round out
   the existing system. Touches no existing rule. Safe for all
   three sites because every rule introduces NEW class names or
   NEW custom-property names that did not previously resolve. The
   token block also adds bigger-ring focus shadows for the danger
   and warning button variants so red/orange buttons no longer
   pick up the cyan default. Section header pattern matches the
   sections above so future audits can find the boundary.
   ============================================================ */

/* ── 47.1 Additional design tokens ────────────────────────────
   Light-mode values live in :root, dark overrides in [data-theme="dark"].
   The spacing / z-index scales formalize values that were repeated as
   magic numbers throughout the file; existing rules keep their literal
   values until they are migrated piecemeal. */
:root {
    /* Spacing scale — matches the existing utility ladder
       (gap-1=0.25, gap-2=0.5, gap-3=0.75, gap-4=1, plus 1.5, 2). */
    --space-0: 0;
    --space-1: 0.25rem;
    --space-2: 0.5rem;
    --space-3: 0.75rem;
    --space-4: 1rem;
    --space-5: 1.5rem;
    --space-6: 2rem;
    --space-7: 3rem;

    /* Touch target floor (iOS HIG 44px). Pre-existing min-height: 44px
       literals scattered through .button / .nav-toggle / .back-btn / etc. */
    --touch-target: 44px;

    /* Page container max-width — matches .page-wrapper / .site-nav .nav-inner. */
    --container-max: 1200px;

    /* Z-index scale — standardizes layer naming so future stacking-context
       additions don't fight existing numbers (nav 1000, modal 2000, toast 9999). */
    --z-base:     1;
    --z-sticky:   10;
    --z-dropdown: 100;
    --z-nav:      var(--nav-z, 1000);
    --z-overlay:  1500;
    --z-modal:    2000;
    --z-popover:  3000;
    --z-toast:    9999;

    /* Variant-tinted focus rings — pair with the matching button colors so
       the focus indicator is hue-consistent with the action it surrounds.
       Existing --shadow-focus-ring (cyan) remains the default. */
    --shadow-focus-danger:  0 0 0 3px rgba(211,  47,  47, 0.32);
    --shadow-focus-success: 0 0 0 3px rgba( 50, 205,  50, 0.32);
    --shadow-focus-warning: 0 0 0 3px rgba(230,  81,   0, 0.32);
    --shadow-focus-info:    0 0 0 3px rgba(  2, 119, 189, 0.32);
}
[data-theme="dark"] {
    --shadow-focus-danger:  0 0 0 3px rgba(239,  83,  80, 0.45);
    --shadow-focus-success: 0 0 0 3px rgba(102, 187, 106, 0.45);
    --shadow-focus-warning: 0 0 0 3px rgba(255, 167,  38, 0.45);
    --shadow-focus-info:    0 0 0 3px rgba( 79, 195, 247, 0.45);
}

/* ── 47.2 Missing focus rings for colored button variants ─────
   The base .button:focus-visible always paints the cyan accent ring,
   which clashes with red/orange/transparent buttons. Variant-matched
   rings keep the indicator hue-consistent without changing layout. */
.button.warning:focus-visible {
    box-shadow: var(--shadow-btn, 0 1px 2px rgba(0,0,0,0.15)),
                var(--shadow-focus-warning, 0 0 0 3px rgba(230, 81, 0, 0.32));
}
.button.transparent:focus-visible {
    box-shadow: 0 0 0 3px var(--color-primary-light),
                0 0 0 5px var(--color-primary);
}

/* ── 47.3 Layout / display utilities ─────────────────────────
   Round out the .d-* + .flex-* set. All additive — none of these
   class names appeared anywhere in the shared file as of audit. */
.d-inline       { display: inline; }
.d-inline-block { display: inline-block; }
.d-inline-flex  { display: inline-flex; }
.d-grid         { display: grid; }

.flex-column    { flex-direction: column; }
.flex-row       { flex-direction: row; }
.flex-row-reverse    { flex-direction: row-reverse; }
.flex-column-reverse { flex-direction: column-reverse; }
.flex-nowrap    { flex-wrap: nowrap; }
.flex-1         { flex: 1 1 0%; }
.flex-auto      { flex: 0 0 auto; }
.flex-grow-1    { flex-grow: 1; }
.flex-shrink-0  { flex-shrink: 0; }

.justify-start    { justify-content: flex-start; }
.justify-center   { justify-content: center; }
.justify-end      { justify-content: flex-end; }
.justify-between  { justify-content: space-between; }
.justify-around   { justify-content: space-around; }

.align-start    { align-items: flex-start; }
.align-center   { align-items: center; }
.align-end      { align-items: flex-end; }
.align-baseline { align-items: baseline; }
.align-stretch  { align-items: stretch; }

/* ── 47.4 Spacing utilities — round out existing mt-*/mb-* set ── */
.m-0  { margin: 0; }
.mt-0 { margin-top: 0; }
.mr-0 { margin-right: 0; }
.mb-0 { margin-bottom: 0; }
.ml-0 { margin-left: 0; }
.mt-5 { margin-top: 1.5rem; }
.mb-5 { margin-bottom: 1.5rem; }
.mt-6 { margin-top: 2rem; }
.mb-6 { margin-bottom: 2rem; }
.mx-auto { margin-left: auto; margin-right: auto; }
.ms-auto { margin-left: auto; }
.me-auto { margin-right: auto; }
.my-auto { margin-top: auto; margin-bottom: auto; }

.p-0  { padding: 0; }
.p-1  { padding: 0.25rem; }
.p-2  { padding: 0.5rem; }
.p-3  { padding: 0.75rem; }
.p-4  { padding: 1rem; }
.p-5  { padding: 1.5rem; }
.pt-0 { padding-top: 0; }
.pb-0 { padding-bottom: 0; }
.pt-1 { padding-top: 0.25rem; }
.pt-2 { padding-top: 0.5rem; }
.pt-3 { padding-top: 0.75rem; }
.pt-4 { padding-top: 1rem; }
.pb-1 { padding-bottom: 0.25rem; }
.pb-2 { padding-bottom: 0.5rem; }
.pb-3 { padding-bottom: 0.75rem; }
.pb-4 { padding-bottom: 1rem; }
.px-1 { padding-left: 0.25rem; padding-right: 0.25rem; }
.px-2 { padding-left: 0.5rem;  padding-right: 0.5rem; }
.px-3 { padding-left: 0.75rem; padding-right: 0.75rem; }
.px-4 { padding-left: 1rem;    padding-right: 1rem; }
.py-1 { padding-top: 0.25rem; padding-bottom: 0.25rem; }
.py-2 { padding-top: 0.5rem;  padding-bottom: 0.5rem; }
.py-3 { padding-top: 0.75rem; padding-bottom: 0.75rem; }
.py-4 { padding-top: 1rem;    padding-bottom: 1rem; }

.gap-0 { gap: 0; }
.gap-5 { gap: 1.5rem; }

.w-auto { width: auto; }
.h-100  { height: 100%; }
.h-auto { height: auto; }
.mw-100 { max-width: 100%; }

/* ── 47.5 Typography utilities ──────────────────────────────── */
.fw-normal { font-weight: var(--font-weight-normal); }
.fw-medium { font-weight: var(--font-weight-medium); }
.fw-bold   { font-weight: var(--font-weight-bold); }

.fs-xs   { font-size: var(--font-size-xs); }
.fs-sm   { font-size: var(--font-size-sm); }
.fs-base { font-size: var(--font-size-base); }
.fs-lg   { font-size: var(--font-size-lg); }
.fs-xl   { font-size: var(--font-size-xl); }
.fs-xxl  { font-size: var(--font-size-xxl); }

/* Tabular numerals — keeps columns of numbers (counters, prices, time
   remaining) from jittering across digit changes. Already used inline in
   .char-counter and .pager; standardize the helper class. */
.tabular-nums { font-variant-numeric: tabular-nums; }

/* Text color tokens to complete the .text-muted/.text-danger/.text-success
   triad with the remaining semantic colors. */
.text-info    { color: var(--color-info); }
.text-warning { color: var(--color-warning); }

/* Long-text overflow helpers. */
.text-truncate {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.text-break  { overflow-wrap: anywhere; word-break: break-word; }
.text-nowrap { white-space: nowrap; }
.text-wrap   { white-space: normal; }

/* ── 47.6 Border / shape helpers ────────────────────────────── */
.rounded     { border-radius: var(--border-radius); }
.rounded-sm  { border-radius: var(--border-radius-sm); }
.rounded-lg  { border-radius: var(--border-radius-lg); }
.rounded-pill { border-radius: 999px; }
.rounded-circle { border-radius: 50%; }
.border       { border: 1px solid var(--color-border); }
.border-top   { border-top: 1px solid var(--color-border); }
.border-bottom{ border-bottom: 1px solid var(--color-border); }
.border-0     { border: 0 !important; }
.shadow-sm    { box-shadow: var(--shadow-sm); }
.shadow-md    { box-shadow: var(--shadow-md); }
.shadow-lg    { box-shadow: var(--shadow-lg); }

/* ── 47.7 Responsive show/hide — extend the existing helpers ──
   Existing helpers:
     .hide-xs        (max-width: 575px)
     .hide-sm        (max-width: 767px)
     .show-xs-only   (hidden at min-width: 768px)
   Filling in the gap so the same idiom works at md and lg breakpoints. */
@media (max-width: 991px)  { .hide-md      { display: none !important; } }
@media (max-width: 1199px) { .hide-lg      { display: none !important; } }
@media (max-width: 575px)  { .show-sm-up   { display: none !important; } }
@media (max-width: 767px)  { .show-md-up   { display: none !important; } }
@media (max-width: 991px)  { .show-lg-up   { display: none !important; } }
@media (max-width: 1199px) { .show-xl-up   { display: none !important; } }

/* ── 47.8 Skip-link target marker ─────────────────────────────
   Pair with the existing .skip-link. Pages that wrap their main content in
   <main id="main"> already work; this gives a fallback target marker for
   pages that label the wrapper with .main-content instead. */
[id="main"]:focus,
.main-content:focus { outline: none; }

/* ── 47.9 prefers-reduced-transparency (a11y) ─────────────────
   Honor the OS setting (macOS Reduce Transparency, Windows Transparency
   effects off). Solidify backdrop-filtered surfaces so motion-sensitive or
   low-contrast users don't get hard-to-read blurred chrome. */
@media (prefers-reduced-transparency: reduce) {
    .modal-overlay {
        -webkit-backdrop-filter: none;
        backdrop-filter: none;
        background: rgba(15, 23, 42, 0.85);
    }
    .nav-item:hover .nav-dropdown,
    .nav-item:focus-within .nav-dropdown {
        backdrop-filter: none;
        -webkit-backdrop-filter: none;
        background-color: var(--color-bg-nav);
    }
}

/* ── 47.10 Forced-colors mode (Windows High Contrast) ─────────
   Tabs/buttons/forms must continue to read in WHCM. Outlines replace
   color cues, and the explicit `forced-color-adjust: auto` keeps the
   system theme in charge of decoration on interactive elements. */
@media (forced-colors: active) {
    .button,
    .pill,
    .nav-link,
    .alert-panel,
    .card,
    .main-card,
    .data-table th,
    .data-table td { forced-color-adjust: auto; }
    .button { border: 1px solid ButtonText; }
    :focus-visible { outline-color: Highlight; }
}

/* ── 47.11 Data-table density variant ─────────────────────────
   .data-table-compact tightens row padding for log viewers / admin
   grids that prioritize density over breathing room. Stripe / hover /
   sticky behaviors continue to come from the base .data-table rules. */
.data-table-compact th,
.data-table-compact td {
    padding: 0.35rem 0.5rem;
}
.data-table-compact th { font-size: 0.68rem; }

/* ── 47.12 Image-rendering helpers ─────────────────────────────
   Some sites embed pixel-art icons (8-bit progress badges) that look
   blurred under the default smooth scaling. */
.img-crisp { image-rendering: pixelated; }
.img-cover { object-fit: cover; }

/* ── 47.13 Cursor + interaction helpers ──────────────────────── */
.cursor-not-allowed { cursor: not-allowed; }
.cursor-grab        { cursor: grab; }
.user-select-none   { user-select: none; }
.user-select-all    { user-select: all; }

/* ── 47.14 Aspect-ratio helpers ─────────────────────────────── */
.ratio-1x1  { aspect-ratio: 1 / 1; }
.ratio-4x3  { aspect-ratio: 4 / 3; }
.ratio-16x9 { aspect-ratio: 16 / 9; }

/* ── 48. Profile hero, avatar & detail-list (cross-site) ───────────────────
   Reusable building blocks for member/public-profile pages: a hero band with a
   circular avatar (photo or colored monogram fallback) + name + an at-a-glance
   status/location line, plus a two-column key/value "detail list" for use inside
   cards. Introduced for qMeet's PublicProfile2 (card-based redesign) but named
   generically so any site's profile page can adopt them. Theme-aware via tokens. */

.profile-hero {
    display: flex;
    flex-direction: row;      /* avatar on the left, presence + location to its right */
    align-items: center;
    text-align: left;
    gap: 1rem;
}
.profile-hero-body { min-width: 0; }

/* Online/recent/idle status dot beside the "Active …" line. */
.profile-hero-status {
    display: flex;
    align-items: center;
    justify-content: flex-start;   /* left-aligned beside the avatar */
    gap: 0.45rem;
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
}
.profile-hero-loc {
    margin-top: 0.25rem;
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
}
.profile-online-dot {
    display: inline-block;
    width: 0.6rem;
    height: 0.6rem;
    flex-shrink: 0;
    border-radius: 50%;
    background: var(--color-text-light);   /* idle / unknown */
}
.profile-online-dot.is-online {
    background: #22c55e;
    box-shadow: 0 0 0 3px color-mix(in srgb, #22c55e 25%, transparent);
}
.profile-online-dot.is-recent { background: var(--color-warning); }

/* Circular avatar — fixed square, image cover-cropped; monogram modifier paints
   an accent disc with a centered initial when the member has no photo. */
.profile-avatar {
    display: block;
    width: 84px;
    height: 84px;
    flex-shrink: 0;
    border-radius: 50%;
    overflow: hidden;
    border: 1px solid var(--color-border);
}
.profile-avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.profile-avatar-mono {
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--color-accent);
    color: #fff;
    font-size: 2rem;
    font-weight: var(--font-weight-bold);
    line-height: 1;
    text-transform: uppercase;
    border-color: transparent;
}
@media (max-width: 480px) {
    .profile-avatar { width: 64px; height: 64px; }
    .profile-avatar-mono { font-size: 1.5rem; }
}

/* Title text inside a collapsible card's toggle (icon + label on one baseline). */
.profile-card-title {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
}

/* Two-column key/value list (label | value), e.g. profile "Details" card. */
.detail-list {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 0.4rem 1rem;
    margin: 0;
}
.detail-list dt,
.detail-label {
    margin: 0;
    color: var(--color-text-muted);
    font-weight: var(--font-weight-medium);
}
.detail-list dd,
.detail-value {
    margin: 0;
    color: var(--color-text);
    min-width: 0;
}

/* ── Site-wide announcement banner ─────────────────────────────────────────
   Rendered after the nav on every page by Site.Master when an active
   announcement exists for the site (see Shared\SiteAnnouncements.vb). Mirrors
   the qMeet ChatUC ".reply-quote" panel: bordered card + absolute close button.
   Dark-mode colors come automatically from the host site's [data-theme] vars. */
.site-announce {
    position: relative;
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    margin: 0.75rem auto;
    max-width: 1100px;
    padding: 0.7rem 2.4rem 0.7rem 0.9rem;
    border: 1px solid rgba(255, 255, 255, 0.25);
    border-left: 4px solid rgba(255, 255, 255, 0.55);
    border-radius: 8px;
    background: #0000ff;          /* info: blue */
    color: #ffffff;
    font-size: var(--font-size-sm, 0.95rem);
    line-height: 1.4;
}
.site-announce--warn {
    background: #ff8000;          /* warning: orange */
    color: #1a1a1a;               /* dark text — white is unreadable on bright orange */
}
/* Warn variant flips the white text/links/close (set above for the blue info banner) to
   dark so they stay legible on the orange background. More specific than the base rules,
   so it wins regardless of source order. */
.site-announce--warn .site-announce-text a { color: #1a1a1a; }
.site-announce--warn .site-announce-close { color: rgba(0, 0, 0, 0.6); }
.site-announce--warn .site-announce-close:hover { color: #000000; }
.site-announce-body { flex: 1 1 auto; min-width: 0; word-wrap: break-word; overflow-wrap: anywhere; }
.site-announce-title { font-weight: var(--font-weight-bold, 700); text-transform: uppercase; }
.site-announce-text a { color: #ffffff; text-decoration: underline; }
.site-announce-close {
    position: absolute;
    top: 0.35rem;
    right: 0.5rem;
    background: none;
    border: none;
    cursor: pointer;
    color: rgba(255, 255, 255, 0.75);
    font-size: 1.25rem;
    font-weight: bold;
    line-height: 1;
    padding: 0 0.25rem;
}
.site-announce-close:hover { color: #ffffff; }

/* ── Collapsible Home cards ─────────────────────────────────────────────────
   The per-site Home page enhances each .main-card: everything after the card's
   first .heading is wrapped in .home-card-body and the heading becomes a toggle
   (adds .home-collapsible; clicking toggles .home-collapsed to hide the body).
   A chevron on the heading shows the state. */
.home-collapsible > .heading {
    cursor: pointer;
    user-select: none;
    display: flex;
    align-items: center;
    gap: 0.5rem;
}
.home-collapsible > .heading::after {
    content: "";
    flex: 0 0 auto;
    margin-left: auto;
    width: 0.5em;
    height: 0.5em;
    border-right: 2px solid currentColor;
    border-bottom: 2px solid currentColor;
    transform: rotate(45deg);            /* chevron points down = expanded */
    transition: transform 0.15s ease;
    opacity: 0.55;
}
.home-collapsible.home-collapsed > .heading::after {
    transform: rotate(225deg);           /* chevron points up = collapsed */
}
.home-collapsible.home-collapsed > .home-card-body {
    display: none;
}


/* ── Share panel (EventSearch / GroupSearch "🔗 Share" float panel) ──────────────
   Reuses the .modal-overlay/.modal-box centered-dialog shell; these rules style the
   inner sections. Injected once into <body> by Scripts/share-panel.js. */
.share-box {
    max-width: 30rem;
    text-align: left;
    /* Cap the panel to the viewport and scroll inside it. A Share / Invite panel with the
       contacts + invite sections open was overflowing the screen on desktop (>640px) with no
       way to reach the bottom actions — only the inner contact list scrolled. (On phones the
       .modal-box already caps + scrolls via the ≤640px rule.) */
    max-height: calc(100vh - 2rem);
    overflow-y: auto;
}
.share-subtitle { margin: 0.15rem 0 0.75rem; font-weight: 600; }
.share-batch-hint { margin: 0.5rem 0 0; }
.share-section { margin-bottom: 0.9rem; }
.share-section .input-label { display: block; margin-bottom: 0.3rem; }
.share-link-row,
.share-email-row { display: flex; gap: 0.4rem; align-items: stretch; }
.share-link-row .textbox,
.share-email-row .textbox { flex: 1 1 auto; min-width: 0; }
.share-link-row .button,
.share-email-row .button { flex: 0 0 auto; white-space: nowrap; }

.share-contact-list {
    max-height: 11rem;
    overflow-y: auto;
    border: 1px solid var(--color-border, rgba(127, 127, 127, 0.3));
    border-radius: 8px;
    padding: 0.25rem;
    margin-top: 0.35rem;
}
.share-contact-row {
    display: flex;
    align-items: center;
    gap: 0.55rem;
    padding: 0.4rem 0.5rem;
    border-radius: 6px;
    cursor: pointer;
}
.share-contact-row:hover { background: var(--color-bg-hover, rgba(127, 127, 127, 0.12)); }
.share-contact-row .checkbox { flex: 0 0 auto; margin: 0; }
.share-contact-name { flex: 1 1 auto; }

/* Contacts already invited / already on the event or group: dimmed, not selectable,
   with a small status badge so the picker indicates who's already been invited. */
.share-contact-row.is-done { cursor: default; opacity: 0.72; }
.share-contact-row.is-done:hover { background: transparent; }
.share-contact-row.is-done .share-contact-name { color: var(--color-text-muted, #6b7280); }
.share-contact-badge {
    flex: 0 0 auto;
    font-size: 0.72rem;
    line-height: 1;
    font-weight: 600;
    padding: 0.2rem 0.45rem;
    border-radius: 999px;
    white-space: nowrap;
}
.share-contact-badge.invited {
    color: #166534;
    background: rgba(34, 197, 94, 0.16);
    border: 1px solid rgba(34, 197, 94, 0.4);
}
.share-contact-badge.member {
    color: var(--color-text-muted, #6b7280);
    background: rgba(127, 127, 127, 0.14);
    border: 1px solid rgba(127, 127, 127, 0.32);
}

.share-domain-chips { display: flex; flex-wrap: wrap; gap: 0.35rem; margin-top: 0.45rem; }
.share-domain { cursor: pointer; }

/* Optional personal note sent with the share/invite. min-height:0 beats the `.textarea`
   floor above (~2.5 input-heights) so rows="2" governs — this box is an OPTIONAL extra at
   the bottom of an already-tall panel, and a six-line well reads as required.
   ⚠ The box must carry class "textarea", not "textbox": the floor matches the former at
   0,1,0 (so this 0,1,1 selector wins on specificity anywhere) but the latter at 0,1,1,
   where a site-local override would tie and then LOSE on load order. */
textarea.share-comment { min-height: 0; height: auto; }
.share-comment-hint { margin: 0.3rem 0 0; }
/* Remaining-character readout, only rendered near the cap (see renderCommentCount). */
.share-comment-count { display: inline-block; margin-left: 0.25rem; font-variant-numeric: tabular-nums; }

.share-email-tags { display: flex; flex-wrap: wrap; gap: 0.4rem; margin-top: 0.5rem; }
.share-tag {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.2rem 0.3rem 0.2rem 0.6rem;
    border-radius: 999px;
    background: var(--color-bg-hover, rgba(127, 127, 127, 0.16));
    font-size: 0.9em;
}
.share-tag-x {
    border: none;
    background: transparent;
    color: inherit;
    cursor: pointer;
    font-size: 1.1em;
    line-height: 1;
    padding: 0 0.2rem;
    opacity: 0.7;
}
.share-tag-x:hover { opacity: 1; }

.share-actions { justify-content: space-between; margin-top: 0.5rem; }
.share-login-nudge { margin: 0.25rem 0 0.5rem; }
.share-result { margin-top: 0.5rem; min-height: 1.2em; font-weight: 600; }

/* ── PWA info popup ──────────────────────────────────────────────────────
   Any element with class "pwa-info-link" opens the #pwa-info-overlay panel
   (markup + JS live in each site's Site.Master). Explains what an installed
   app (PWA) is and how to install it on iPhone/Android. Mirrors the primer
   modal's look; scoped to .pwa-info-*. */
.pwa-info-overlay {
    position: fixed; inset: 0; z-index: 1200;               /* above chat/notification bars + primer */
    display: flex; align-items: center; justify-content: center;
    padding: 16px; background: rgba(0,0,0,.55);
    -webkit-backdrop-filter: blur(2px); backdrop-filter: blur(2px);
    animation: pwa-info-fade .18s ease-out;
}
.pwa-info-overlay[hidden] { display: none; }
@keyframes pwa-info-fade { from { opacity: 0; } to { opacity: 1; } }
body.pwa-info-lock { overflow: hidden; }
.pwa-info-dialog {
    position: relative; width: 100%; max-width: 540px; max-height: calc(100vh - 32px);
    overflow-y: auto;
    background: var(--color-bg-card, #fff); color: var(--color-text);
    border: 1px solid var(--color-border); border-radius: var(--border-radius, 12px);
    box-shadow: 0 18px 50px rgba(0,0,0,.35); padding: 22px 22px 18px; outline: none;
    animation: pwa-info-pop .2s ease-out;
}
@keyframes pwa-info-pop { from { transform: translateY(8px) scale(.98); opacity: 0; } to { transform: none; opacity: 1; } }
.pwa-info-close {
    position: absolute; top: 8px; right: 10px; width: 32px; height: 32px;
    border: none; background: transparent; color: var(--color-text-muted);
    font-size: 24px; line-height: 1; cursor: pointer; border-radius: 50%;
}
.pwa-info-close:hover { background: var(--color-bg-input); color: var(--color-text); }
.pwa-info-h { font-size: var(--font-size-xl, 1.3rem); font-weight: var(--font-weight-bold, 700); margin: 0 6px 10px 0; padding-right: 28px; }
.pwa-info-sub { font-size: var(--font-size-lg, 1.1rem); font-weight: var(--font-weight-bold, 700); margin: 16px 0 6px; }
.pwa-info-dialog p { margin: 0 0 10px; line-height: var(--line-height, 1.5); }
.pwa-info-steps { margin: 0; padding-left: 22px; }
.pwa-info-steps li { margin: 0 0 6px; line-height: var(--line-height, 1.5); }
.pwa-info-actions { margin-top: 18px; display: flex; justify-content: flex-end; }

/* ==========================================================================
   City autocomplete  (shared/city-autocomplete.js)
   Server-backed US-city typeahead popup anchored under any input carrying
   data-city-autocomplete. Theme-aware via the shared color tokens.
   ========================================================================== */
.city-ac-anchor { position: relative; }
.city-ac-list {
    position: absolute; z-index: 1000; left: 0; right: 0; top: 100%;
    margin: 4px 0 0; padding: 4px; list-style: none;
    max-height: 260px; overflow-y: auto;
    background: var(--color-bg-card, #fff);
    border: 1px solid var(--color-border, #b6cede);
    border-radius: var(--border-radius-sm, 6px);
    box-shadow: var(--shadow-lg, 0 12px 24px -8px rgba(15,23,42,.15));
}
.city-ac-list[hidden] { display: none; }
.city-ac-item {
    display: flex; align-items: baseline; justify-content: space-between; gap: 10px;
    padding: 7px 10px; cursor: pointer;
    border-radius: var(--border-radius-sm, 6px);
    color: var(--color-text, #1a1f2e);
    line-height: var(--line-height, 1.4);
}
.city-ac-item:hover,
.city-ac-item.active {
    background: var(--color-accent-light, #e0f6fe);
    color: var(--color-text, #1a1f2e);
}
:root[data-theme="dark"] .city-ac-item:hover,
:root[data-theme="dark"] .city-ac-item.active {
    background: var(--color-bg-input, #555);
}
.city-ac-name { font-weight: var(--font-weight-medium, 500); }
.city-ac-state {
    flex: none; font-size: .85em; font-weight: var(--font-weight-bold, 700);
    letter-spacing: .04em; color: var(--color-text-muted, #6c757d);
}
.city-ac-empty {
    padding: 8px 10px; color: var(--color-text-muted, #6c757d);
    font-style: italic; cursor: default;
}

/* ════════════════════════════════════════════════════════════════════════
   📖 TUTORIAL SYSTEM  (Scripts/tutorial.js + TutorialButton.ascx)
   Cross-site canonical copy (added 2026-07-17 during the help-system redesign
   that ported the qMEET pattern to PacklistPRO / qFIT / NobodyHasTHIS /
   paulmendelson.com). Two surfaces share ONE look:
     • Tutorial — opened on demand (📖 button / Tutorials index / ?tutorial=1).
     • "Need to Know" (NTK) — auto-opens once, DB-tracked; identical
       dialog with a warning-colored top stripe as the only tell.
   All colors use shared design tokens so it tracks light/dark automatically.
   Deliberately NEW names (.tutorial-*) so they never collide with the older
   .tips-trigger-wrap / .tip-icon-button / .primer-* rules that some sites
   still render during the transition.
   ════════════════════════════════════════════════════════════════════════ */

/* ── 📖 trigger (TutorialButton.ascx) ─────────────────────────────────────
   Sits in the upper-right of <main class="page-wrapper">, same footprint as
   the ⓘ Tips trigger it replaces. (main.page-wrapper{position:relative} is
   already set site-wide and is what these absolute offsets hang off.) */
.tutorial-trigger-wrap {
    position: absolute;
    top: 1rem;
    right: 1rem;
    z-index: 5;
    margin: 0;
}
@media (min-width: 768px) {
    .tutorial-trigger-wrap { top: 1.5rem; right: 1.5rem; }
}
@media (min-width: 1200px) {
    .tutorial-trigger-wrap { top: 2rem; right: 1.5rem; }
}

/* 2.75rem is the minimum comfortable tap target — the glyph is small, the hit
   area is not. Matches the ⓘ it replaces pixel for pixel. */
.tutorial-icon-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 2.75rem;
    min-height: 2.75rem;
    padding: 0.25rem;
    border: none;
    background: transparent;
    color: var(--color-text-muted, #6c757d);
    font-size: 1.25rem;
    line-height: 1;
    cursor: pointer;
    border-radius: var(--border-radius-sm, 6px);
    transition: color var(--transition-fast, 0.15s ease),
                background-color var(--transition-fast, 0.15s ease);
}
.tutorial-icon-button:hover {
    color: var(--color-text, #1a1f2e);
    background-color: var(--color-primary-light, #e0f6fe);
}
.tutorial-icon-button:focus-visible {
    outline: 2px solid var(--color-border-focus, var(--color-primary, #0090C8));
    outline-offset: 2px;
}

/* Reserve right-side space so a long page title can't run under the trigger. */
.tutorial-trigger-wrap ~ .page-title,
.tutorial-trigger-wrap ~ .page-header,
.tutorial-trigger-wrap ~ * .page-title,
.tutorial-trigger-wrap ~ * .page-header {
    padding-right: 3rem;
}

/* ── modal overlay (Tutorial + NTK) ─────────────────────────────────────── */
.tutorial-overlay {
    position: fixed;
    inset: 0;
    z-index: 1100;                     /* above sticky nav / chat / notification bars */
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 16px;
    background: rgba(0, 0, 0, .55);
    -webkit-backdrop-filter: blur(2px);
    backdrop-filter: blur(2px);
    animation: tutorial-fade .18s var(--ease-out-quint, ease-out);
}
.tutorial-overlay[hidden] { display: none; }
@keyframes tutorial-fade { from { opacity: 0; } to { opacity: 1; } }

/* Lock background scroll while any tutorial/NTK panel is open. */
body.tutorial-lock { overflow: hidden; }

.tutorial-dialog {
    position: relative;
    width: 100%;
    max-width: 540px;
    max-height: calc(100vh - 32px);
    display: flex;
    flex-direction: column;
    background: var(--color-bg-card, #fff);
    color: var(--color-text);
    border: 1px solid var(--color-border);
    border-radius: var(--border-radius, 12px);
    box-shadow: 0 18px 50px rgba(0, 0, 0, .35);
    padding: 22px 22px 18px;
    outline: none;
    animation: tutorial-pop .2s var(--ease-out-quint, ease-out);
}
@keyframes tutorial-pop {
    from { opacity: 0; transform: translateY(8px) scale(.98); }
    to   { opacity: 1; transform: none; }
}

.tutorial-close {
    position: absolute;
    top: 8px;
    right: 10px;
    width: 32px;
    height: 32px;
    border: none;
    background: transparent;
    color: var(--color-text-muted);
    font-size: 24px;
    line-height: 1;
    cursor: pointer;
    border-radius: 50%;
}
.tutorial-close:hover { background: var(--color-bg-input); color: var(--color-text); }

/* ── Dialog titlebar: WHICH page this popup belongs to ─────────────────────
   Added 2026-07-31. Every NTK panel's own <h2> reads "💡 Things You Should
   Know" — identical on all 45 of them across three sites — so before this row
   existed the popup carried no clue which page had raised it. Authored per
   page in the markup (NOT derived from the page's <h1> at runtime: half the
   host pages render an ENTITY name there — the exercise, the item, the event —
   which is not the page's name).

   Deliberately a quiet titlebar and not a second heading: it sits above the
   panel's <h2> and must never compete with it. */
.tutorial-pagetitle {
    font-size: var(--font-size-sm, .85rem);
    font-weight: var(--font-weight-bold, 700);
    color: var(--color-text-muted);
    letter-spacing: .02em;
    margin: 0 0 12px;
    padding: 0 28px 8px 0;             /* clear the × */
    border-bottom: 1px solid var(--color-border);
}

/* Progress: "Step X of N" + dots */
.tutorial-progress {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 14px;
    padding-right: 28px;               /* clear the × */
    min-height: 12px;                  /* hold the row height on a multi-panel overlay */
}
/* A single-panel overlay hides this row wholesale (tutorial.js) — one dot is not
   progress, it is an unexplained blue dot, and the step count is blank there too.
   The [hidden] attribute alone would LOSE to the display:flex above, so state it. */
.tutorial-progress[hidden] { display: none; }
.tutorial-stepcount {
    font-size: var(--font-size-sm, .85rem);
    color: var(--color-text-muted);
    white-space: nowrap;
}
.tutorial-dots { display: flex; gap: 7px; flex-wrap: wrap; }
.tutorial-dot {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: var(--color-border);
    transition: background .15s ease, transform .15s ease;
}
.tutorial-dot.active {
    background: var(--color-accent, var(--color-primary));
    transform: scale(1.15);
}

/* Panels */
.tutorial-body {
    flex: 1 1 auto;
    overflow-y: auto;
    min-height: 150px;
}
.tutorial-panel { animation: tutorial-fade .18s ease-out; }
.tutorial-panel[hidden] { display: none; }
.tutorial-h {
    font-size: var(--font-size-xl, 1.3rem);
    font-weight: var(--font-weight-bold, 700);
    margin: 0 0 10px;
}
.tutorial-panel p { margin: 0 0 10px; line-height: var(--line-height, 1.5); }
.tutorial-panel ul { margin: 0 0 10px; padding-left: 1.15rem; }
.tutorial-panel li { margin: 0 0 7px; line-height: var(--line-height, 1.5); }

/* Optional inline color-swatch chips (e.g. demoing item color codes in a tour). */
.tutorial-swatch {
    display: inline-block;
    width: 14px; height: 14px;
    border-radius: 3px;
    border: 1px solid var(--color-border);
    vertical-align: -2px;
    margin-right: 2px;
}
.tutorial-swatch-important { background: #ffff00; border-color: #000; }
.tutorial-swatch-low { background: #b0b0b0; border-color: #000; }

/* "Don't keep showing this" — lives IN the footer, immediately left of the ✓ Got It button.
   margin-right:auto pins it to the far left of the row; the button stays hard right. */
.tutorial-dontshow {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-right: auto;
    cursor: pointer;
    font-size: var(--font-size-sm, .9rem);
    line-height: 1.3;
}
.tutorial-dontshow[hidden] { display: none; }

/* Footer nav. flex-end + an auto right-margin on the left-hand item (rather than space-between)
   so a single-panel NTK — which hides Back entirely — still leaves "✓ Got It" hard right. */
.tutorial-footer {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
    margin-top: 18px;
    padding-top: 14px;
    border-top: 1px solid var(--color-border);
}
.tutorial-footer .button { min-width: 96px; }
.tutorial-footer .button[disabled] { opacity: .45; cursor: default; }
.tutorial-footer .tutorial-back { margin-right: auto; }
.tutorial-footer .tutorial-back[hidden] { display: none; }
/* When Back is visible too (a multi-panel NTK), Back owns the left edge and the checkbox
   sits beside the button instead — only one element can claim the auto margin. */
.tutorial-footer .tutorial-back:not([hidden]) ~ .tutorial-dontshow { margin-right: 0; }

@media (max-width: 480px) {
    /* Stack rather than crush the checkbox label against the button on a narrow screen. */
    .tutorial-footer { flex-wrap: wrap; }
    .tutorial-dontshow { margin-right: 0; flex: 1 1 100%; order: -1; }
}

/* ── "Need to Know" accent ──────────────────────────────────────
   Same dialog, one signal that this popped up on its own and is the critical
   stuff — a warning-colored top stripe. */
.tutorial-overlay[data-tutorial-key="ntk"] .tutorial-dialog {
    border-top: 4px solid var(--color-warning, #e0a800);
}
/* The hand-off row to the full Tutorial at the end of a NTK. */
.tutorial-more {
    margin-top: 14px;
    padding-top: 12px;
    border-top: 1px solid var(--color-border);
}

/* The closing note at the BOTTOM of every "Need to Know" popup — "closing this without checking
   the box will snooze it until tomorrow…". Added 2026-08-02 with the once-a-day gate.

   🔑 There is NO markup for this in any .aspx: Scripts/tutorial.js (addSnoozeNote) appends one
   <p class="tutorial-snooze-note"> to each NTK's .tutorial-dialog at runtime, so all 45 popups
   across qMEET / qFIT / PacklistPRO get the same sentence and any new one inherits it. Searching
   the markup for this class finds nothing — that is expected, not a missing file.

   It sits AFTER .tutorial-footer (last child of the dialog), so it reads as a footnote under the
   checkbox and button it describes; the top border separates it from that row the same way
   .tutorial-more separates the hand-off button from the panel body above it.

   Quiet on purpose: this is the least important text in the dialog and must never compete with
   the panel's actual content. It carries the inline ? badge (.tutorial-help-glyph-inline), which
   sets its own colours, so the muted colour here applies to the surrounding sentence only. */
.tutorial-snooze-note {
    margin: 14px 0 0;
    padding-top: 12px;
    border-top: 1px solid var(--color-border);
    font-size: var(--font-size-sm, 0.875rem);
    line-height: 1.5;
    color: var(--color-text-muted, #6c757d);
}

@media (max-width: 480px) {
    .tutorial-dialog { padding: 18px 16px 14px; }
    .tutorial-h { font-size: var(--font-size-lg, 1.15rem); }
}

/* ── The site-wide floating "❓ Help" pill (Site.Master #tutorialHelpPill) ─────────────────
   Added 2026-07-18. Replaces the per-page 📖 TutorialButton on every site: the book icon was
   hard to spot and .tutorial-trigger-wrap reserved space that pushed page content down.
   Scripts/tutorial.js unhides it ONLY on pages that actually carry a Tutorial overlay, so a
   page with no tutorial shows nothing.

   🔑 WHY `var(--pill-cluster-right, …)` AND NOT A PLAIN VALUE — this one declaration has to be
   correct on all five sites, and they differ:
     • qMEET defines --pill-cluster-right in its own :root because it has a THREE-pill cluster
       ([Status] [❓] [Admin]) and shows its hamburger at EVERY width, so the anchor must track
       the centred nav container. Those cluster rules stay in qMEET/Content/styles.css.
     • PacklistPRO / qFIT / NobodyHasTHIS / paulmendelson.com have no competing floating pills
       and their .nav-toggle is phone-only (`@media (min-width: 992px) { display: none }`), so
       the fallback is all they need.
   ⚠ styles_shared.css loads AFTER each site's Content/styles.css, so a plain `right: 1rem`
   here would OVERRIDE qMEET's tuned cluster and drop the ❓ on top of its ☰. The var+fallback
   form lets the same rule resolve per site. Do not "simplify" it to a literal. */
.tutorial-help-pill {
    position: fixed;
    top: 0.5rem;
    right: var(--pill-cluster-right, 1rem);
    z-index: 1502;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.9rem;
    height: 1.9rem;
    padding: 0 0.45rem;
    border: 0;
    border-radius: 999px;
    background: var(--color-primary, #0090C8);
    color: #fff;
    font-weight: 600;
    font-size: 0.9rem;
    line-height: 1;
    box-shadow: var(--shadow-lg);
    cursor: pointer;
}
.tutorial-help-pill[hidden] { display: none; }
.tutorial-help-pill:hover { filter: brightness(1.08); }
.tutorial-help-pill:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }
/* The pill's glyph is a plain text "?" in a span (NOT the ❓ emoji — an emoji ignores CSS
   color and always renders its own red). Black per the 2026-07-20 request; all 5 Site.Masters
   carry the matching <span class="tutorial-help-pill-glyph">?</span>. */
.tutorial-help-pill-glyph { color: #000; font-size: 1.05rem; font-weight: 700; }

/* The SAME badge, inline — carried by the "Open the Tutorial" button inside every "Need to
   Know" popup (45 of them across qMEET / PacklistPRO / qFIT). Added 2026-08-01 at the owner's
   request: that button used to show a book glyph, which taught nobody that the round ? at the
   top of the screen opens the very same Tutorial overlay. Making the two look identical is the
   entire point of this class.

   🔑 Mirrors .tutorial-help-pill + .tutorial-help-pill-glyph on purpose: same round shape, same
   var(--color-primary) fill, same BLACK bold "?" — and, for the same reason spelled out above,
   a plain text "?" and NOT the ❓ emoji, which ignores `color` and always renders its own red.
   Sized under the floating pill's 1.9rem so it sits on the text baseline inside a .button
   without stretching the button's line-height.

   ⚠ If the floating pill's fill or glyph colour ever changes, change it HERE TOO — two rules
   that are supposed to look identical will not tell you when they drift. */
.tutorial-help-glyph-inline {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.35rem;
    height: 1.35rem;
    padding: 0 0.3rem;
    border-radius: 999px;
    background: var(--color-primary, #0090C8);
    color: #000;
    font-size: 0.85rem;
    font-weight: 700;
    line-height: 1;
    vertical-align: -0.2em;
}

/* Below 992px the shared .nav-toggle (☰) appears in the top-right corner, so the pill has to
   clear it. On qMEET the var is defined and already accounts for its always-on hamburger, so
   this resolves to qMEET's own cluster anchor and changes nothing there. */
@media (max-width: 991px) {
    .tutorial-help-pill { right: var(--pill-cluster-right, 3.75rem); }
}

/* ── 49. In-card empty state — "prerequisite missing" vs "genuinely empty" ──────────────
   Added 2026-07-29 for qMEET / qFIT / PacklistPRO.

   THE PROBLEM THIS EXISTS TO FIX. Across the three sites the overwhelmingly common shape
   for a data card is: declare it `Visible="false"` in markup, load the data, and set
   `Visible = True` only on the happy path. Every other outcome — the user has not set the
   prerequisite yet, the prerequisite exists but resolves to nothing, the query legitimately
   returned zero rows, the loader threw and was swallowed — exits early and leaves the card
   hidden. All four render as *the same nothing*: the card simply is not on the page, so a
   user who is one click away from making the feature work gets exactly as much information
   as a user for whom there is genuinely nothing to show. (PacklistPRO's `pnlParksNearby` is
   the canonical example: no destination, unresolvable destination, no park within 60 miles,
   and an exception are four different situations behind one blank space.)

   THE FIX IS THE CARD STAYS. It renders one of these two notes instead of vanishing:

     data-empty-mode="prereq"  — something is MISSING and the user can go get it. Says what is
                                 needed and links straight to the page that provides it. Amber,
                                 because it is actionable.
     data-empty-mode="none"    — the prerequisite IS satisfied and the answer is honestly zero.
                                 Muted grey, no call to action, because there is nothing to do.

   The distinction is the whole point: "you have no trip destination" and "there are no parks
   near your destination" must not look alike.

   RELATIONSHIP TO THE EXISTING `.empty-state`. That block (§ above, ~line 2217) is the big
   centred page-level treatment — 4rem circled icon, centred text — and it is used on ~64
   pages. It is deliberately NOT changed here. Adding `data-empty-mode` re-lays the same
   element out compactly and left-aligned so it sits *inside* a card next to other cards
   without shouting. The child classes (`.empty-state-icon` / `-title` / `-sub` / `-actions`)
   are reused verbatim so there is only ever one empty-state vocabulary to learn.
   `.empty-state-hero` opts a moded block back into the big centred look for whole-page use.

   🔑 The mode signal is carried by the CONTAINER (left rule + tinted well), never by the
   glyph. Emoji ignore `color:` and always render their own palette — the same reason
   `.tutorial-help-pill-glyph` above is a plain text "?" and not ❓. So the glyph is free to
   be any emoji the caller likes without weakening the prereq/none distinction.

   ⚠ Do NOT put `.admin2-*`, `.dash2-*` or `.result-card` rules in this file — those are
   qMEET-only and live in qMEET/Content/styles.css. Nothing below references a card class at
   all: this block is self-contained so it drops into `.main-card`, `.dash-panel`,
   `<details class="card">`, or a bare div identically on all three sites. */
.empty-state[data-empty-mode] {
    display: grid;
    grid-template-columns: auto 1fr;
    align-items: start;
    gap: 0.7rem;
    text-align: left;
    padding: 0.85rem 1rem;
    margin: 0.25rem 0 0;
    border-radius: var(--border-radius-sm, 6px);
    border: 1px solid transparent;
    border-left-width: 3px;
}

/* Shrink the shared 4rem circle down to an in-card badge. Same element, same class — only
   the metrics change — so a block can be moved between hero and in-card use by adding or
   removing one attribute. */
.empty-state[data-empty-mode] .empty-state-icon {
    width: 1.9rem;
    height: 1.9rem;
    margin-bottom: 0;
    font-size: 1rem;
    border-radius: 50%;
}
/* A literal 1rem, not a token: the note sits INSIDE a card that already has a `.card-title`,
   and `.card-title` is `--font-size-lg` (1.125rem) bold — as is the page-level
   `.empty-state-title`. --font-size-base is ALSO 1.125rem here, so reaching for it would
   have left the note's heading exactly as loud as the card's own, which is the one thing
   an in-card note must not be. There is no token between --font-size-sm (0.875) and
   --font-size-lg, so the step down is spelled out. */
.empty-state[data-empty-mode] .empty-state-title {
    font-size: 1rem;
    margin: 0 0 0.15rem;
}
/* The page-level `.empty-state-sub` centres itself with auto margins and clamps to 32rem.
   In a card it should just fill the column. */
.empty-state[data-empty-mode] .empty-state-sub {
    margin: 0;
    max-width: none;
    font-size: var(--font-size-sm, 0.9rem);
}
.empty-state[data-empty-mode] .empty-state-actions {
    justify-content: flex-start;
    margin-top: 0.55rem;
}
.empty-state[data-empty-mode] .empty-state-actions:empty { display: none; }
/* `.empty-state .button { margin-top: 0.75rem }` from the page-level block double-spaces the
   action row once `.empty-state-actions` already has its own margin. */
.empty-state[data-empty-mode] .button { margin-top: 0; }

/* ── Mode: prerequisite missing (actionable) ── */
.empty-state[data-empty-mode="prereq"] {
    background: var(--color-warning-bg, #fff3e0);
    border-color: var(--color-warning-border, #ffcc80);
    border-left-color: var(--color-warning, #e65100);
}
.empty-state[data-empty-mode="prereq"] .empty-state-icon {
    background: color-mix(in srgb, var(--color-warning) 18%, transparent);
    border-color: color-mix(in srgb, var(--color-warning) 35%, transparent);
    color: var(--color-warning, #e65100);
}
.empty-state[data-empty-mode="prereq"] .empty-state-title { color: var(--color-text); }

/* ── Mode: genuinely empty (informational, no call to action) ── */
.empty-state[data-empty-mode="none"] {
    background: color-mix(in srgb, var(--color-text-muted) 8%, transparent);
    border-color: color-mix(in srgb, var(--color-border) 60%, transparent);
    border-left-color: color-mix(in srgb, var(--color-text-muted) 45%, transparent);
}
.empty-state[data-empty-mode="none"] .empty-state-icon {
    background: color-mix(in srgb, var(--color-text-muted) 12%, transparent);
    border-color: color-mix(in srgb, var(--color-border) 60%, transparent);
    color: var(--color-text-muted, #6c757d);
}

/* Opt a moded block back into the page-level centred treatment (whole-page empties that
   still want the prereq/none distinction — e.g. a search page with no saved filters yet). */
.empty-state-hero[data-empty-mode] {
    display: block;
    text-align: center;
    padding: 2rem 1rem;
}
.empty-state-hero[data-empty-mode] .empty-state-icon {
    width: 4rem;
    height: 4rem;
    margin-bottom: 0.75rem;
    font-size: 1.75rem;
}
.empty-state-hero[data-empty-mode] .empty-state-sub {
    max-width: 32rem;
    margin-left: auto;
    margin-right: auto;
}
.empty-state-hero[data-empty-mode] .empty-state-actions { justify-content: center; }

@media (max-width: 480px) {
    .empty-state[data-empty-mode] { grid-template-columns: 1fr; gap: 0.4rem; }
}

/* 🔴 REQUIRED, not optional. `[hidden]` is a UA-stylesheet rule and LOSES to any author
   `display:` declaration — and `.empty-state[data-empty-mode]` above sets `display: grid`.
   Without this line, `el.hidden = true` (and `Visible="false"`-adjacent client toggling, as
   qMEET/ChatTextReplacements.aspx already does with `<div class="empty-state" hidden>`)
   renders the block VISIBLE. Same trap already worked around ~7 times elsewhere in this file.
   Keep it LAST in this section so it wins on source order against the equal-specificity
   display rules above. */
.empty-state[hidden] { display: none; }

/* ── 50. "Search ignores your filters" notice ──────────────────────────────────────────
   Added 2026-07-29 for qMEET (FindEvents) + PacklistPRO (Packlist / Tasklist / ShoppingList).
   Server half: Shared/SearchFilterNotice.vb (the one string; this is the one class).

   THE PROBLEM THIS EXISTS TO FIX. All four pages deliberately let a typed search term BYPASS
   the page's filters — a search that "can't find" an item because a filter is quietly
   excluding it reads as a broken search. But the filter dropdowns keep displaying their
   selections the whole time, so from the user's side the filters just stopped working. This
   notice is the missing half of that decision: it sits directly under the search box while a
   term is active, says the filters are paused, and offers the one-tap way back.

   INFO, NOT WARNING. Nothing is wrong and nothing was lost, so this is deliberately the info
   palette rather than the amber `warning` one that §49's `prereq` mode uses — it should be
   noticed on the way past, not treated as an error to clear.

   🔑 Every color here is a THEME-AWARE token. The qMEET-local `.es2-search-paused` rule this
   replaces used `--color-accent-light` (#e0f6fe), which has no dark-mode override, so in dark
   mode it painted near-white behind `--color-text`'s near-white type. `--color-info-bg` /
   `--color-info-border` both flip under [data-theme="dark"], and `color` is set explicitly
   rather than inherited, so the text can never be left riding an unrelated background. */
.search-filter-notice {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.25rem 0.6rem;
    margin: 0.4rem 0 0;
    padding: 0.4rem 0.7rem;
    border: 1px solid var(--color-info-border, #81d4fa);
    border-left-width: 3px;
    border-radius: var(--border-radius-sm, 6px);
    background: var(--color-info-bg, #e1f5fe);
    color: var(--color-text, #1a1f2e);
    font-size: var(--font-size-sm, 0.875rem);
    line-height: 1.35;
}

/* The clear action is an <asp:LinkButton>, i.e. a real <a> that posts back — so it inherits
   the site-wide link color/underline unless told otherwise. Given its own weight + underline
   here so it reads as the actionable half of the sentence next to the plain text beside it. */
.search-filter-notice-clear {
    font-weight: var(--font-weight-semibold, 600);
    color: var(--color-info, #0277bd);
    text-decoration: underline;
    white-space: nowrap;
    cursor: pointer;
}
.search-filter-notice-clear:hover,
.search-filter-notice-clear:focus-visible {
    color: var(--color-text, #1a1f2e);
    text-decoration: underline;
}
/* --color-info is NOT overridden for dark mode (it is one flat #0277bd), and against
   --color-info-bg's dark value (#082a3d) it falls under 4.5:1. Lift the link to the same
   family the dark-mode info borders use so the actionable word stays the readable one. */
[data-theme="dark"] .search-filter-notice-clear { color: #7fd3f7; }

/* Same trap as §49's closer: `[hidden]` is a UA-stylesheet rule and LOSES to the author
   `display: flex` above, so an attribute-hidden notice would render VISIBLE. */
.search-filter-notice[hidden] { display: none; }

/* ══════════════════════════════════════════════════════════════════════════════
   §51 — "we'll send sign-in codes and password resets to X" email-use notice
   Server half: Shared/EmailUseNotice.vb (the one sentence; this is the one class).
   Live on all three sites in three places: Join2 (live readback under the email
   field), the post-signup ?welcome=1 banner, and Preferences beside the
   Two-Factor toggle.

   THE PROBLEM THIS EXISTS TO FIX. 2FA defaults ON everywhere (a NULL preference
   reads as True), so the address typed once on Join2 is the only way back into
   the account — yet that screen never said so and never read the address back.
   A typo stays invisible until the second device, when the emailed code and
   Forgot Login are both unreachable at once.

   INFO, NOT WARNING. Nothing is wrong yet; this is a confirm prompt, not an
   error. Same info palette and the same theme-aware tokens as §50 — every color
   below flips under [data-theme="dark"], and `color` is set explicitly rather
   than inherited so the text can never end up riding an unrelated background.
   ══════════════════════════════════════════════════════════════════════════════ */
.email-use-notice {
    display: block;
    margin: 0.4rem 0 0;
    padding: 0.5rem 0.7rem;
    border: 1px solid var(--color-info-border, #7ec8e8);
    border-left-width: 3px;
    border-radius: 6px;
    background: var(--color-info-bg, #e8f6fd);
    color: var(--color-text, #1a1f2e);
    font-size: 0.9rem;
    line-height: 1.4;
}
.email-use-notice strong { white-space: nowrap; }

/* Same trap as §49's and §50's closers: `[hidden]` is a UA-stylesheet rule and
   LOSES to the author `display: block` above, so an attribute-hidden notice
   would render VISIBLE. Both forms are covered because Join2 hides it via the
   attribute (client-side) while the server surfaces use Visible="false". */
.email-use-notice[hidden] { display: none; }

/* ══════════════════════════════════════════════════════════════════════════════
   SAVE MODEL  —  "does this card save as you go, or not until you press something?"
   ------------------------------------------------------------------------------
   THE CANONICAL, CROSS-SITE definition. Rendered ONLY by Shared\SaveModelNotice.vb
   (linked into all three .vbproj) — if you find this markup hand-built in an .aspx
   or an .ascx, that copy is the bug.

   Promoted here 2026-07-31, replacing TWO rival implementations of the same idea
   that had grown up independently and looked nothing alike:
     • qFIT   .save-model         in qFIT/Content/styles.css  (flex, icon + body)
     • PLP    .options-save-model in THIS file                (plain block, no icon)
   Both are retired; their pages now render this. `.options-save-model` is kept
   below purely as a compatibility alias — do not write new markup against it.

   🔑 BOTH VARIANTS ARE INTENTIONALLY IDENTICAL IN LOOK. [data-save-model="auto"]
   and [data-save-model="deferred"] get the same box, border, colour and weight;
   only the sentence and the leading icon differ. That is the whole mechanism:
   because everything else is constant from card to card and site to site, the
   sentence is the one thing that changes as you move between them, so the change
   is what you notice. Give one variant its own colour and the eye files them as
   two unrelated notices and stops comparing the words. There is a data attribute
   rather than a modifier class precisely so nobody reaches for
   `.save-model--deferred { background: … }` without reading this.

   🔴 Do NOT re-home this on .alert-panel. That component silently loses any
   `display:flex` a variant sets (a later shared rule wins), which is exactly the
   icon+body layout this needs; and a full alert at the top of every control group
   reads as a page full of errors. This is a quiet standing note, not an alert.
   ══════════════════════════════════════════════════════════════════════════════ */
.save-model {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    margin: 0 0 0.9rem;
    padding: 0.55rem 0.75rem;
    background-color: var(--color-info-bg, #e1f5fe);
    border: 1px solid var(--color-info-border, #81d4fa);
    border-left-width: 4px;
    border-radius: var(--border-radius, 10px);
    color: var(--color-text, #1a1f2e);
    font-size: var(--font-size-sm, 0.875rem);
    line-height: 1.4;
}
/* Same trap as §49's / §50's closers and .email-use-notice: [hidden] is a UA-sheet
   rule and LOSES to the author `display: flex` above, so an attribute-hidden notice
   would render VISIBLE. */
.save-model[hidden] { display: none; }
.save-model-icon {
    flex: 0 0 auto;
    font-size: 1rem;
    line-height: 1.4;
}
/* min-width:0 so a long sentence wraps inside the flex row instead of stretching it. */
.save-model-body { min-width: 0; }
.save-model-headline { font-weight: var(--font-weight-bold, 600); }
/* The button caption, quoted verbatim from the card's own button. Not styled as a
   button — it names one, it isn't one. */
.save-model-button { white-space: nowrap; }
/* 🔴 NOT var(--color-text-muted). Measured on this component's own background:
   #6c757d on the light --color-info-bg (#e1f5fe) is 4.13:1 — under AA for text
   this size. The muted token is sized for muted-on-card, and this box is not a
   card. #5a6570 on the same background measures 5.16:1. Dark mode keeps the
   token: #b1b5bb on the dark --color-info-bg (#082a3d) is 7.05:1, already clear.
   (Same class of fix, and the same reason, as the semantic-text overrides in
   the "Dark-mode semantic TEXT contrast" section of this file.) */
.save-model-detail {
    display: block;
    margin-top: 0.1rem;
    color: #5a6570;
    font-size: var(--font-size-xs, 0.75rem);
    font-weight: var(--font-weight-normal, 400);
}
[data-theme="dark"] .save-model-detail { color: var(--color-text-muted, #b1b5bb); }

/* The card's corner-× is absolutely positioned at top/right inside the padding box
   and is ~2.5rem tall, so it overlaps the first line or two of anything up there.
   Reserve room for it on every notice inside such a card (PLP ShoppingList still
   uses its own pre-promotion .sl-options-topbar, hence the second selector). */
.card-options-host > .save-model,
.sl-options-topbar ~ .save-model { padding-right: 3.25rem; }

/* ── Compatibility alias, 2026-07-31 ────────────────────────────────────────────
   .options-save-model was PLP's local name for this line before it was shared. The
   three PLP pages that used it now render .save-model, so nothing in the workspace
   needs this rule — it exists only so an un-migrated copy (a BACKUPS restore, a
   half-deployed FTP push) degrades to the right look instead of an unstyled <p>.
   Do not add new markup against it; delete it once a deploy has settled. */
.options-save-model {
    display: block;
    margin: 0 0 0.85rem;
    padding: 0.5rem 0.7rem;
    border: 1px solid var(--color-info-border, #81d4fa);
    border-left-width: 3px;
    border-radius: var(--border-radius-sm, 4px);
    background-color: var(--color-info-bg, #e1f5fe);
    color: var(--color-text, #1a1f2e);
    font-size: var(--font-size-sm, 0.875rem);
    line-height: 1.45;
}
.options-save-model[hidden] { display: none; }
.card-options-host .options-save-model,
.sl-options-topbar ~ .options-save-model { padding-right: 3.25rem; }

/* The marker. Inline so it sits on the Apply button's baseline in the same row. */
.options-pending {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    /* No margin-left: every host row is a .form-actions flex row, which already
       supplies the gap. A margin here would double it. */
    padding: 0.3rem 0.6rem;
    border: 1px solid var(--color-warning-border, #ffcc80);
    border-radius: 999px;
    background-color: var(--color-warning-bg, #fff3e0);
    color: var(--color-text, #1a1f2e);
    font-size: var(--font-size-sm, 0.875rem);
    font-weight: var(--font-weight-medium, 500);
    line-height: 1.3;
    vertical-align: middle;
    white-space: nowrap;
}
.options-pending[hidden] { display: none; }
.options-pending .options-pending-dot { color: var(--color-warning, #e65100); }
[data-theme="dark"] .options-pending .options-pending-dot { color: #ffa726; }

/* The ring on the Apply button itself. An ASP.NET Button renders as
   <input type="submit"> — a REPLACED element, so ::before/::after never render on
   it. That is why the ● lives in the sibling .options-pending and the button only
   gets an outline, which works on an input. outline (not box-shadow) so it stacks
   with the button's own shadow instead of replacing it. */
.button.is-pending,
.is-pending.button {
    outline: 2px solid var(--color-warning, #e65100);
    outline-offset: 2px;
}
[data-theme="dark"] .button.is-pending { outline-color: #ffa726; }

/* Motion-safe attention pulse on the ring's first appearance only. */
@media (prefers-reduced-motion: no-preference) {
    .button.is-pending { animation: optionsPendingPulse 0.9s var(--ease-out-quint, ease-out) 1; }
}
@keyframes optionsPendingPulse {
    0%   { outline-offset: 6px; }
    100% { outline-offset: 2px; }
}

