/* Fergami Finance — design tokens, app shell and shared components. Page-specific styles live in live.css. */
:root{--font:-apple-system,BlinkMacSystemFont,"Inter","Segoe UI",Roboto,sans-serif;--mono:ui-monospace,SFMono-Regular,Menlo,monospace;--radius:12px;--r-sm:8px;--side-w:240px}
:root,:root[data-theme="light"]{color-scheme:light;
 --bg:#f6f7f9;--surface:#ffffff;--surface2:#f9fafb;--panel:#ffffff;--side:#ffffff;
 --border:#e6e8ec;--border-strong:#d6d9df;--text:#111827;--muted:#5b6474;--faint:#8b93a1;
 --chart-matched:#2a78d6;--chart-missing:#d03b3b;--chart-grid:#e1e0d9;--chart-axis-ink:#6b7280;--accent:#0c4812;--on-accent:#ffffff;--accent-soft:#e8f1e9;--accent-softer:#f3f8f4;--accent-line:#b7d3bb;--accent-text:#0c4812;
 --good:#13795b;--good-soft:#e6f4ee;--bad:#c2352b;--bad-soft:#fdecea;--bad-line:#f4c4bf;--warn:#9a6100;--warn-soft:#fdf3e1;
 --danger:var(--bad);--amber:var(--warn);--chip:#f1f2f5;--hover:#f3f4f6;--scrim:rgba(15,18,28,.35);
 --shadow:0 1px 2px rgba(16,24,40,.05),0 1px 3px rgba(16,24,40,.06);--shadow-lg:0 24px 60px -20px rgba(16,24,40,.45)}
:root[data-theme="dark"]{color-scheme:dark;
 --bg:#0d0f14;--surface:#151821;--surface2:#1a1e28;--panel:#151821;--side:#11141b;
 --border:#262b37;--border-strong:#323846;--text:#eef0f4;--muted:#a3abb9;--faint:#6f7787;
 --chart-matched:#4f94e8;--chart-missing:#d03b3b;--chart-grid:#2c2c2a;--chart-axis-ink:#9aa1ad;--accent:#0c4812;--on-accent:#ffffff;--accent-soft:rgba(94,191,112,.16);--accent-softer:rgba(94,191,112,.08);--accent-line:rgba(94,191,112,.4);--accent-text:#7fd08f;
 --good:#4cc79a;--good-soft:rgba(76,199,154,.14);--bad:#ff7b6e;--bad-soft:rgba(255,123,110,.14);--bad-line:rgba(255,123,110,.4);--warn:#f1b65c;--warn-soft:rgba(241,182,92,.14);
 --chip:#202532;--hover:#1c202b;--scrim:rgba(0,0,0,.55);--shadow:none;--shadow-lg:0 24px 60px -20px rgba(0,0,0,.8)}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--bg);color:var(--text);font:14px/1.5 var(--font);-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
small{display:block;color:var(--muted);font-size:12px}
h1{font-size:22px;font-weight:650;letter-spacing:-.01em;margin:2px 0 4px}
h2{font-size:15px;font-weight:650;margin:0}
h3{font-size:14px;font-weight:650;margin:0 0 8px}
p{margin:4px 0 16px;color:var(--muted)}
.muted{color:var(--muted)}.error{color:var(--bad)}
.number,.num{font-variant-numeric:tabular-nums}
[hidden]{display:none!important}

/* controls */
button,input,select,textarea{font:inherit;color:inherit;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-sm)}
button,select{min-height:36px;padding:6px 14px;cursor:pointer;font-weight:500}
button:hover{background:var(--hover)}
button.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:600}
button.primary:hover{filter:brightness(1.06);background:var(--accent)}
button:disabled{opacity:.5;cursor:wait}
:is(button,a,input,select,textarea,summary):focus-visible{outline:2px solid var(--accent-text);outline-offset:2px}
input,textarea{padding:8px 12px;max-width:100%;min-height:36px}
textarea{display:block;width:100%;min-height:85px;margin:8px 0 12px}
.icon-button{width:36px;height:36px;min-height:0;padding:0;display:grid;place-items:center;flex:none}
.icon-button svg{width:17px;height:17px}

/* shell */
.app-shell{display:grid;grid-template-columns:var(--side-w) minmax(0,1fr);min-height:100vh}
.sidebar{background:var(--side);border-right:1px solid var(--border);padding:18px 12px;display:flex;flex-direction:column;gap:2px;position:sticky;top:0;height:100vh;overflow-y:auto}
.brand{display:flex;align-items:center;gap:8px;padding:2px 6px 14px}
.brand-link{display:flex;align-items:center;gap:10px;font-weight:700;font-size:15px}
.brand-link small{font-weight:500;font-size:11px;color:var(--faint)}
.mark{width:30px;height:30px;border-radius:8px;background:var(--accent);color:var(--on-accent);display:grid;place-items:center;font-weight:800;flex:none}
.close-nav{display:none;margin-left:auto}
.side-nav{display:flex;flex-direction:column;gap:2px}
.nav-group{font-size:11px;font-weight:600;color:var(--faint);text-transform:uppercase;letter-spacing:.06em;padding:14px 10px 6px}
.side-nav a{display:flex;align-items:center;gap:10px;min-height:36px;padding:0 10px;border-radius:var(--r-sm);color:var(--muted);font-weight:500}
.side-nav a svg{width:17px;height:17px;flex:none}
.side-nav a:hover{background:var(--hover);color:var(--text)}
.side-nav a.active{background:var(--accent-soft);color:var(--accent-text)}
#queue-count{margin-left:auto;font-size:11px;font-weight:700;background:var(--bad-soft);color:var(--bad);border-radius:999px;padding:1px 7px}
#queue-count:empty,#queue-count[data-zero="true"]{display:none}
.sidebar-foot{margin-top:auto;border-top:1px solid var(--border);padding:12px 4px 0}
.sidebar-foot .profile{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.sidebar-foot .profile>span{flex:1;min-width:0;font-weight:600;font-size:13px}
.sidebar-foot .profile>span small{font-weight:400}
.profile-link{font-size:12px;color:var(--accent-text);font-weight:600;padding:6px 8px;border-radius:var(--r-sm)}
.profile-link:hover{background:var(--hover)}
.account-icon-button{width:34px;height:34px;min-height:0;padding:0;display:grid;place-items:center}
.account-icon-button svg{width:17px;height:17px}
.shell{min-width:0;display:flex;flex-direction:column}
.topbar{height:60px;display:flex;align-items:center;gap:12px;padding:0 28px;border-bottom:1px solid var(--border);background:var(--surface);position:sticky;top:0;z-index:5}
.menu-button{display:none}
.search-button{flex:1;max-width:520px;display:flex;align-items:center;gap:10px;height:38px;padding:0 12px;background:var(--surface2);color:var(--faint);font-weight:400;text-align:left}
.search-button svg{width:16px;height:16px;flex:none}
.search-button .short{display:none}
kbd{font:600 11px var(--font);border:1px solid var(--border-strong);border-radius:5px;padding:1px 6px;color:var(--muted);background:var(--surface)}
.search-button kbd{margin-left:auto}
.topbar-spacer{flex:1}
.status-pill{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px;border-radius:999px;font-size:12px;font-weight:600;background:var(--good-soft);color:var(--good)}
.status-pill::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}
.status-pill.stale{background:var(--warn-soft);color:var(--warn)}
main{padding:24px 32px 40px;width:100%;max-width:1680px;margin-inline:auto}
.nav-backdrop{display:none}
.bottom-nav{display:none}

/* page building blocks */
.heading{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:20px}
.heading>div{min-width:0}
.heading a{color:var(--accent-text);font-weight:600}
.eyebrow{display:block;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--faint)}
.banner{border:1px solid transparent;background:var(--warn-soft);color:var(--warn);border-radius:var(--r-sm);padding:11px 14px;font-size:13px;margin-bottom:18px}
#notice:not(:empty){display:flex;align-items:center;gap:12px;padding:10px 12px 10px 14px;border-radius:var(--r-sm);margin-bottom:16px;font-size:13px;border:1px solid var(--border);background:var(--surface);color:var(--text)}
#notice.notice-error{background:var(--bad-soft);border-color:var(--bad-line);color:var(--bad)}
#notice>span{flex:1}
.notice-close{width:26px;height:26px;min-height:0;padding:0;border:0;background:transparent;color:inherit;font-size:18px;line-height:1;opacity:.7}.notice-close:hover{opacity:1;background:var(--hover)}
.pill{display:inline-flex;align-items:center;font-size:11px;font-weight:600;border-radius:999px;padding:2px 9px;background:var(--chip);color:var(--muted)}
.amber{color:var(--warn);background:var(--warn-soft)}
.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px}
.metric,.panel,dialog{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}
.metric{padding:16px 18px}
.metric label{font-size:12px;font-weight:600;color:var(--muted)}
.metric strong{display:block;font-size:26px;font-weight:650;letter-spacing:-.02em;margin:6px 0 2px;font-variant-numeric:tabular-nums}
.metric small{font-size:12px}
.panel{overflow:hidden;margin-bottom:16px}
.panel-head{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 18px;border-bottom:1px solid var(--border)}
.panel-head h2 small{display:inline;margin-left:8px;font-weight:500}
.panel-head a{font-size:13px;font-weight:600;color:var(--accent-text)}
.panel-body{padding:16px 18px}
.grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:16px}
.table-wrap{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:13px}
th{font-size:11px;font-weight:600;color:var(--faint);text-transform:uppercase;letter-spacing:.05em;text-align:left;padding:10px 18px;border-bottom:1px solid var(--border);background:var(--surface2);white-space:nowrap}
td{padding:11px 18px;border-bottom:1px solid var(--border);vertical-align:middle}
tr:last-child td{border-bottom:0}
tbody tr:hover{background:var(--surface2)}
td button{min-height:30px;font-size:12px;padding:4px 10px}
td code{font-size:12px;color:var(--muted)}
.badge{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap;background:var(--warn-soft);color:var(--warn)}
.badge.red{color:var(--bad);background:var(--bad-soft)}
.badge.green{color:var(--good);background:var(--good-soft)}
.badge.gray{color:var(--muted);background:var(--chip)}
.activity{display:flex;gap:14px;padding:14px 0;border-bottom:1px solid var(--border)}.activity:last-child{border:0}
.activity-number{width:28px;height:28px;display:grid;place-items:center;border-radius:50%;background:var(--accent-soft);color:var(--accent-text);font-size:12px;font-weight:700;flex:none}
.activity strong{font-size:14px;font-weight:600}.activity p{font-size:13px;margin:2px 0}
.rule{display:flex;justify-content:space-between;gap:20px;padding:12px 0;border-bottom:1px solid var(--border)}.rule:last-child{border:0}
.rule span{font-size:13px;color:var(--muted)}.rule strong{font-size:13px;font-weight:600;text-align:right}
.toolbar{display:flex;gap:10px;align-items:end;flex-wrap:wrap;margin-bottom:16px}
.toolbar label{font-size:12px;font-weight:600;color:var(--muted)}
.toolbar select,.toolbar input{display:block;margin-top:4px}
.toolbar input{min-width:220px}
.empty{padding:32px;color:var(--muted);text-align:center}
.pagination{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 18px;border-top:1px solid var(--border);color:var(--muted);font-size:13px}
.pagination div{display:flex;align-items:center;gap:8px}

/* dialogs */
dialog{color:var(--text);width:min(760px,95vw);max-height:88vh;padding:22px}
dialog::backdrop{background:var(--scrim)}
.dialog-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
pre{white-space:pre-wrap;overflow-wrap:anywhere;font:12px/1.6 var(--mono);background:var(--surface2);border:1px solid var(--border);padding:14px;border-radius:var(--r-sm);max-height:280px;overflow:auto}
details{margin:12px 0}summary{cursor:pointer;min-height:32px}
.review-row{display:flex;gap:12px}
.history{border-left:2px solid var(--accent-line);padding-left:12px;font-size:13px;margin:12px 0}
.skip{position:fixed;top:-100px}.skip:focus{top:4px;left:4px;background:var(--surface);z-index:30;padding:12px;border-radius:var(--r-sm)}

/* command palette */
dialog.command{width:min(640px,94vw);padding:0;margin-top:12vh;overflow:hidden;box-shadow:var(--shadow-lg)}
.command-input{display:flex;align-items:center;gap:10px;height:54px;padding:0 18px;border-bottom:1px solid var(--border)}
.command-input svg{width:18px;height:18px;color:var(--faint);flex:none}
.command-input input{flex:1;border:0;background:transparent;font-size:16px;padding:0;min-height:0;outline:none}
#command-list{max-height:min(420px,60vh);overflow-y:auto;padding:4px 0 8px}
.command-group{font-size:11px;font-weight:600;color:var(--faint);text-transform:uppercase;letter-spacing:.06em;padding:12px 18px 6px}
.command-option{display:flex;align-items:center;gap:12px;min-height:42px;margin:0 8px;padding:0 10px;border-radius:var(--r-sm);cursor:pointer}
.command-option.selected{background:var(--accent-soft)}
.command-option span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.command-option small{flex:none;max-width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.command-empty{padding:22px 18px;color:var(--muted)}
.command-foot{display:flex;gap:16px;padding:10px 18px;border-top:1px solid var(--border);font-size:12px;color:var(--faint)}
.command-foot kbd{margin-right:4px}

/* sign-in */
.signed-out .app-shell{display:block}
.signed-out .sidebar,.signed-out .topbar,.signed-out .bottom-nav{display:none!important}
.login-panel{max-width:420px;margin:12vh auto}
.login-panel form{display:grid;gap:16px}
.login-panel label{display:grid;gap:6px;font-weight:600;font-size:13px}

/* tablet */
@media(max-width:1100px){
 .grid{grid-template-columns:minmax(0,1fr)}
 .metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
 main{padding:20px}
 .topbar{padding:0 20px}
}
/* phone: sidebar becomes a drawer opened from the hamburger; quick links in a bottom bar */
@media(max-width:760px){
 .app-shell{display:block}
 .sidebar{position:fixed;z-index:20;top:0;left:0;bottom:0;width:280px;height:100vh;transform:translateX(-105%);transition:transform .25s ease;box-shadow:var(--shadow-lg)}
 .app-shell.nav-open .sidebar{transform:none}
 .close-nav{display:grid}
 .side-nav a{min-height:44px}
 .nav-backdrop{position:fixed;inset:0;z-index:15;background:var(--scrim)}
 .app-shell.nav-open .nav-backdrop{display:block}
 .menu-button{display:grid}
 .topbar{padding:0 12px;gap:8px}
 .search-button .long{display:none}.search-button .short{display:inline}
 .status-pill{display:none}
 main{padding:16px 14px 90px}
 .heading{flex-direction:column;align-items:flex-start;gap:10px}
 h1{font-size:20px}
 .metrics{gap:10px}.metric{padding:14px}.metric strong{font-size:22px}
 td,th{padding:10px 12px}
 .panel-head,.panel-body{padding:12px 14px}
 .toolbar input{min-width:0;width:100%}.toolbar label{width:100%}.toolbar select{width:100%}
 dialog{padding:16px}
 dialog.command{margin-top:8px}
 .bottom-nav{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;z-index:10;background:var(--surface);border-top:1px solid var(--border);padding:6px 4px calc(6px + env(safe-area-inset-bottom))}
 .bottom-nav a,.bottom-nav button{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:10px;font-weight:600;color:var(--muted);border:0;background:none;min-height:44px;padding:4px 0;border-radius:var(--r-sm)}
 .bottom-nav svg{width:20px;height:20px}
 .bottom-nav a.active{color:var(--accent-text)}
}
@media(prefers-reduced-motion:reduce){.sidebar{transition:none}}

/* page details for the redesign */
.heading .eyebrow{display:none}
.button-link{display:inline-flex;align-items:center;height:36px;padding:0 14px;border-radius:var(--r-sm);border:1px solid var(--border-strong);background:var(--surface);font-weight:600;white-space:nowrap}
.button-link.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.heading .button-link{color:var(--text)}.heading .button-link.primary{color:var(--on-accent)}
.good{color:var(--good)}.bad{color:var(--bad)}.warn{color:var(--warn)}
td.r,th.r{text-align:right}
.stack{display:grid;gap:16px;align-content:start}.stack .panel{margin:0}
.grid>.panel{margin:0}.grid{margin-bottom:16px}
.who{display:flex;align-items:center;gap:10px;color:var(--text)}
.who small{font-size:12px}
.avatar{width:28px;height:28px;border-radius:50%;background:var(--accent-soft);color:var(--accent-text);display:grid;place-items:center;font-weight:700;font-size:11px;flex:none}
.match-bar{display:block;width:100%;min-width:90px;height:6px;border:0;border-radius:999px;background:var(--chip);overflow:hidden;appearance:none;-webkit-appearance:none}
.match-bar::-webkit-progress-bar{background:var(--chip);border-radius:999px}
.match-bar::-webkit-progress-value{background:var(--good);border-radius:999px}
.match-bar::-moz-progress-bar{background:var(--good);border-radius:999px}
.attention{padding:4px 8px}
.attention-item{display:flex;align-items:center;gap:12px;width:100%;min-height:0;padding:10px;border:0;border-radius:var(--r-sm);background:none;text-align:left;font-weight:400}
.attention-item+.attention-item{border-top:1px solid var(--border);border-radius:0}
.attention-item:hover{background:var(--hover);border-radius:var(--r-sm)}
.attention-item>span:nth-child(2){flex:1;min-width:0}
.attention-item strong{font-weight:600}
.attention-item small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dot{width:8px;height:8px;border-radius:50%;flex:none;background:var(--warn)}.dot.bad{background:var(--bad)}
.facts{display:grid;gap:10px}.facts div{display:flex;justify-content:space-between;gap:12px}.facts span{color:var(--muted)}.facts a{color:var(--accent-text);font-weight:600}
@media(max-width:760px){.hide-phone{display:none}}
.sidebar-foot .profile>span{flex:1 1 100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 6px 4px}
.sidebar-foot .profile .profile-link{margin-right:auto}

.sprite{position:absolute;width:0;height:0;overflow:hidden}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.queue-table td{vertical-align:middle}
@media(max-width:760px){
 .queue-table thead{display:none}
 .queue-table,.queue-table tbody,.queue-table tr,.queue-table td{display:block;width:100%}
 .queue-table tr{display:grid;grid-template-columns:1fr auto;grid-template-areas:"who amt" "when when" "find rev" "act act";gap:6px 12px;padding:14px 16px;border-bottom:1px solid var(--border)}
 .queue-table td[data-label="Cashier"]{grid-area:who}.queue-table td[data-label="Requested"]{grid-area:amt}.queue-table td[data-label="Completed"]{grid-area:when}.queue-table td[data-label="Finding"]{grid-area:find}.queue-table td[data-label="Review"]{grid-area:rev;text-align:right}.queue-table td:last-child{grid-area:act}
 #content .queue-table tbody td{padding:0;border:0;text-align:left;width:auto}
 .queue-table td[data-label="Completed"],.queue-table td[data-label="Review"]{color:var(--muted);font-size:13px}
 #content .queue-table td[data-label="Requested"],#content .queue-table td[data-label="Review"]{text-align:right}.queue-table td[data-label="Requested"]{font-weight:600}
 .queue-table td:last-child{margin-top:4px}
 .queue-table td:last-child .button-link{width:100%;justify-content:center}
}
/* overview header controls, account card, reports */
.heading-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.period-select{position:relative;display:inline-flex;align-items:center}
.period-select svg{position:absolute;left:12px;width:16px;height:16px;color:var(--muted);pointer-events:none}
.period-select select{height:36px;padding:0 30px 0 34px;font-weight:500;background:var(--surface);cursor:pointer}
.heading .button-link{height:36px;padding:0 14px;display:inline-flex;align-items:center;border-radius:var(--r-sm)}
.badge.zero{background:transparent;color:var(--muted);box-shadow:inset 0 0 0 1px var(--border-strong);min-width:22px;justify-content:center}
.badge{min-width:22px;justify-content:center}
.panel-foot{padding:12px 18px;border-top:1px solid var(--border);font-size:13px}
.panel-foot a{color:var(--accent-text);font-weight:600}
.cashier-table .who small{white-space:nowrap}
.sidebar-foot{padding:12px 0 0}
.account-card{display:flex;align-items:center;gap:6px}
.account-link{flex:1;min-width:0;display:flex;align-items:center;gap:10px;padding:6px 8px;border-radius:var(--r-sm)}
.account-link:hover{background:var(--hover)}
.account-link>span:last-child{min-width:0}
.account-link strong{display:block;font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.account-link small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.avatar.large{width:34px;height:34px;font-size:12px}
.report-filters{display:flex;flex-wrap:wrap;align-items:flex-end;gap:14px}
.report-filters label{display:grid;gap:6px;font-size:12px;font-weight:600;color:var(--muted)}
.report-filters select{height:38px;min-width:200px;padding:0 10px;color:var(--text);font-weight:500}
.report-filters p{margin:0 0 9px}
.report-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:14px}
.report-card .panel-body{display:flex;flex-direction:column;align-items:flex-start;gap:6px;height:100%}
.report-card .panel-body>svg{width:22px;height:22px;color:var(--accent-text);margin-bottom:4px}
.report-card p{flex:1;margin:0 0 10px}
.report-card button,.report-card .button-link{display:inline-flex;align-items:center;gap:8px;height:38px;padding:0 14px}
.report-card button svg{width:16px;height:16px}
.activity code{font-family:var(--mono);font-size:12px;background:var(--chip);padding:1px 5px;border-radius:5px}
@media(max-width:1100px){.report-grid{grid-template-columns:1fr}}
@media(max-width:760px){.heading-actions{width:100%}.heading-actions .period-select{flex:1}.heading-actions .period-select select{width:100%}.report-filters select{min-width:0;width:100%}.report-filters label{flex:1 1 100%}}
@media(max-width:760px){.cashier-table .who small{white-space:normal}}
/* match the approved mockup's density */
#content .cashier-table tbody td{padding:11px 18px;line-height:1.4}
#content .cashier-table thead th{padding:10px 18px}
.heading{margin-bottom:20px}.heading h1{margin:0}.heading p{margin:4px 0 0}
.attention{padding:6px 8px}
/* profile */
.profile-hero{margin-bottom:14px}
.profile-hero .panel-body{display:flex;align-items:center;gap:18px;flex-wrap:wrap;padding:20px 22px}
.avatar.xl{width:64px;height:64px;font-size:22px}
.profile-id{flex:1;min-width:200px}.profile-id h2{font-size:20px;margin:0 0 4px}.profile-id p{margin:0;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.profile-dates{display:flex;gap:28px;margin:0}.profile-dates dt{font-size:12px;color:var(--muted)}.profile-dates dd{margin:2px 0 0;font-weight:600}
.metric strong.metric-text{font-size:20px;line-height:1.3;margin:10px 0 4px}
.profile-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;align-items:start;margin-bottom:16px}
.profile-grid>.stack{display:grid;gap:16px}.profile-grid .panel{margin:0}
.form-stack{display:grid;gap:14px}.form-stack h3{margin:0}
.form-stack label,.team-form label{display:grid;gap:6px;font-size:13px;font-weight:600}
.form-stack input,.form-stack select,.team-form input,.team-form select{height:38px;padding:0 11px;font-weight:400}
.form-stack input:disabled{background:var(--surface2);color:var(--muted)}
.form-stack small,.team-form small{font-weight:400}
.form-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.form-actions button{height:38px;padding:0 16px}
.form-actions [role=status],.form-actions [role=alert]{font-size:13px;color:var(--muted)}
.segmented{display:inline-flex;padding:3px;gap:3px;border-radius:10px;background:var(--chip)}
.segmented button{height:32px;padding:0 14px;border:0;border-radius:8px;background:transparent;color:var(--muted);font-weight:600}
.segmented button[aria-checked=true]{background:var(--surface);color:var(--text);box-shadow:var(--shadow)}
.session-row{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid var(--border)}
.session-row button{height:36px;padding:0 14px}
.team-form{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;align-items:end;border-top:1px solid var(--border)}
.team-form h3,.team-form .form-actions{grid-column:1/-1}.team-form h3{margin:0}
.team-table button{height:32px;padding:0 12px}
small.inline{display:inline;font-weight:400}
@media(max-width:900px){.profile-grid{grid-template-columns:1fr}.team-form{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.team-form{grid-template-columns:1fr}.profile-dates{gap:18px}.session-row{flex-direction:column;align-items:flex-start}}
.table-wrap{position:relative}
.sr-only{top:0;left:0;margin:-1px;padding:0;border:0;clip-path:inset(50%)}
@media(max-width:560px){.team-table th:nth-child(3),.team-table td:nth-child(3){display:none}#content .team-table td,#content .team-table th{padding:10px 12px}}
/* setup progress on the empty workspace */
.setup-card .panel-head h2{margin:0}
.setup-progress{display:inline-flex;align-items:center;gap:10px;font-size:13px;font-weight:600;color:var(--muted)}
.setup-progress progress{width:120px;height:6px;appearance:none;border:0;border-radius:999px;background:var(--chip);overflow:hidden}
.setup-progress progress::-webkit-progress-bar{background:var(--chip);border-radius:999px}
.setup-progress progress::-webkit-progress-value{background:var(--good);border-radius:999px}
.setup-progress progress::-moz-progress-bar{background:var(--good);border-radius:999px}
.setup-title{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.setup-status{margin:4px 0 2px;color:var(--text);font-weight:500}
.setup-step.done .activity-number{background:var(--good-soft);color:var(--good)}
.setup-step.error .activity-number{background:var(--bad-soft);color:var(--bad)}
.setup-step.error .setup-status{color:var(--bad)}
.setup-step.waiting .activity-number{background:var(--warn-soft);color:var(--warn)}
.setup-step.todo .activity-number{background:var(--chip);color:var(--muted)}
.setup-step.done .setup-title strong{color:var(--muted)}
/* devices waiting for a cashier */
.unmatched-devices{border-bottom:1px solid var(--border);display:grid;gap:4px}
.unmatched-devices h3{margin:0 0 6px;display:flex;align-items:center;gap:8px}
.unmatched-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border-radius:var(--r-sm);background:var(--warn-soft)}
.unmatched-row small{color:var(--text);opacity:.8}
.unmatched-row button{flex:none;height:34px;padding:0 14px}
@media(max-width:560px){.unmatched-row{flex-direction:column;align-items:flex-start}}
/* withdrawal detail: tools, panels and review */
.request-actions{display:grid;gap:14px;padding:18px 22px 22px;border-top:1px solid var(--border);background:var(--surface2)}
.request-tools{display:flex;flex-wrap:wrap;gap:8px}
.request-tools button,.request-tools .button-link{height:36px;padding:0 14px;font-weight:600;font-size:13px}
.request-tools button:disabled{opacity:.55}
.request-more{display:grid;gap:10px}.request-more:empty{display:none}
.request-panel,.allocated-payment-evidence,.tool-result{background:var(--surface);border:1px solid var(--border);border-radius:10px}
.request-panel>summary{display:flex;align-items:center;gap:10px;padding:12px 14px;cursor:pointer;font-weight:600;font-size:13px;list-style:none}
.request-panel>summary::-webkit-details-marker{display:none}
.request-panel>summary::before{content:"";width:7px;height:7px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(-45deg);transition:transform .15s;flex:none}
.request-panel[open]>summary::before{transform:rotate(45deg)}
.request-panel[open]>summary{border-bottom:1px solid var(--border)}
.request-panel>:not(summary){padding:12px 14px}
.request-panel form,.allocation-form{display:grid;gap:10px;max-width:640px}
.request-panel label,.allocation-form label{display:grid;gap:6px;font-size:12px;font-weight:600;color:var(--muted)}
.request-panel textarea,.allocation-form textarea{min-height:70px}
.tool-result,.allocated-payment-evidence{padding:14px 16px}.tool-result h3,.allocated-payment-evidence h3{margin:0 0 6px}.tool-result p{margin:4px 0;color:var(--text);font-size:13px}
.review-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px 18px;display:grid;gap:12px}
.review-card-head h3{margin:0}.review-card-head small{margin-top:2px}
.review-history:empty{display:none}.review-history>p{margin:0;font-size:13px}
.review-history .history{border-left:3px solid var(--accent-line);padding:4px 0 4px 12px;margin-bottom:8px}.review-history .history p{margin:2px 0;color:var(--text)}
.review-form{display:grid;grid-template-columns:220px minmax(0,1fr);gap:12px;align-items:end}
.review-form .wide{grid-column:1/-1}
.review-form label{display:grid;gap:6px;font-size:12px;font-weight:600;color:var(--muted)}
.review-form select,.review-form input{height:38px;padding:0 10px;color:var(--text);font-weight:400}
.review-form textarea{min-height:76px;padding:10px 12px;resize:vertical;color:var(--text);font-weight:400}
.review-form .form-actions p{margin:0;font-size:13px}
@media(max-width:700px){.review-form{grid-template-columns:1fr}.request-actions{padding:14px}}
/* request details read as two columns on wide screens */
/* request details: label above value, in a grid, so the long list reads at a glance */
.completed-proof>section:first-child dl{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:0;margin:12px -22px -20px;border-top:1px solid var(--border)}
.completed-proof>section:first-child .proof-row{display:block;padding:10px 22px;border-bottom:1px solid var(--border)}
.completed-proof>section:first-child .proof-row dt{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--faint);margin-bottom:3px}
.completed-proof>section:first-child .proof-row dd{text-align:left;font-size:13px;font-weight:500}
.completed-proof h3{margin:18px 0 8px}
.completed-proof>section>h3:first-child{margin-top:0}
.request-more>details{margin:0}
/* cashier pickers: compact cards, as many per row as fit */
#content .cashier-cards{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
#content .cashier-card{min-height:0;padding:14px 16px;gap:12px;border:1px solid var(--border);box-shadow:var(--shadow);transition:border-color .15s,box-shadow .15s}
#content .cashier-card:hover{border-color:var(--accent-line);box-shadow:0 0 0 3px var(--accent-softer)}
#content .cashier-card h2{font-size:16px;margin:4px 0 2px}
.cashier-card .eyebrow,.cashier-card>span:first-child{font-size:10px}
#content .cashier-card-totals{gap:6px}#content .cashier-card-totals span{padding:7px 8px;font-size:11px}#content .cashier-card-totals strong{font-size:13px}
#content .status-strip,#content .completed-status-tabs{flex-wrap:wrap}
/* password help */
.password-help{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:-6px}
.team-form .password-help{grid-column:1/-1;margin-top:0}
.password-meter{width:120px;height:6px;border-radius:999px;background:var(--chip);overflow:hidden}
.password-meter span{display:block;height:100%;width:0;border-radius:999px;background:var(--bad);transition:width .2s,background .2s}
.password-meter span[data-score="2"]{background:var(--warn)}.password-meter span[data-score="3"],.password-meter span[data-score="4"]{background:var(--good)}
.password-label{font-size:12px;font-weight:600;color:var(--muted);min-width:70px}
.link-button{border:0;background:none;padding:0;height:auto;min-height:0;color:var(--accent-text);font-weight:600;font-size:12px;cursor:pointer}
.link-button:hover{text-decoration:underline}
.password-suggestion{flex-basis:100%;display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px dashed var(--accent-line);border-radius:8px;background:var(--accent-softer)}
.password-suggestion code{font-family:var(--mono);font-size:13px;letter-spacing:.03em;overflow-wrap:anywhere;flex:1}
/* CBE Birr receipt service */
.receipt-service-form{display:grid;gap:12px;max-width:760px}
.receipt-service-form label{display:grid;gap:6px;font-size:13px;font-weight:600}
.receipt-service-form input{height:38px;padding:0 11px;font-family:var(--mono);font-size:13px;font-weight:400}
.receipt-service-form small{font-weight:400}
.receipt-service-form code{font-family:var(--mono);font-size:12px;background:var(--chip);padding:1px 5px;border-radius:5px}
.receipt-service-form .form-actions button{height:36px;padding:0 14px}
.receipt-service-form [role=status]{font-size:13px}.receipt-service-form [role=status].good{color:var(--good)}.receipt-service-form [role=status].bad{color:var(--bad)}
/* cashier cards: totals never overflow the card */
#content .cashier-cards{grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}
#content .cashier-card{min-width:0;overflow:hidden}
#content .cashier-card-totals{grid-template-columns:repeat(auto-fit,minmax(96px,1fr))}
#content .cashier-card-totals span{min-width:0;color:var(--muted);line-height:1.3}
#content .cashier-card-totals strong{color:var(--text);overflow-wrap:anywhere}

/* overview charts */
.chart-row{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:16px;margin-bottom:16px;align-items:stretch}
.chart-panel{margin:0;display:flex;flex-direction:column}
.chart-panel .panel-head{align-items:flex-start}
.chart-legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--muted)}.chart-legend span{display:inline-flex;align-items:center;gap:6px}.chart-legend b{color:var(--text);font-weight:600}
.key{display:inline-block;width:10px;height:10px;border-radius:3px;flex:none}.key-matched{background:var(--chart-matched)}.key-missing{background:var(--chart-missing)}
.chart-body{position:relative;padding:8px 14px 4px}
.chart-body svg{display:block;width:100%;height:auto}
.bar-matched{fill:var(--chart-matched)}.bar-missing{fill:var(--chart-missing)}
.chart-grid{stroke:var(--chart-grid);stroke-width:1}
.chart-axis{fill:var(--chart-axis-ink);font-size:11px;font-variant-numeric:tabular-nums}
.chart-hit{fill:transparent;cursor:pointer}
.chart-day.active .chart-hit{fill:var(--hover)}
.chart-tip{position:absolute;top:6px;transform:translateX(-50%);display:grid;gap:3px;padding:8px 10px;border:1px solid var(--border);border-radius:8px;background:var(--surface);box-shadow:var(--shadow-lg);font-size:12px;pointer-events:none;white-space:nowrap;z-index:2}
.chart-tip span{display:flex;align-items:center;gap:6px;color:var(--muted)}
.chart-table{border-top:1px solid var(--border);margin-top:auto}
.chart-table>summary{padding:10px 18px;font-size:12px;font-weight:600;color:var(--accent-text);cursor:pointer}
.method-list{display:grid;gap:18px}
.method-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:6px}.method-head span{font-size:12px;color:var(--muted)}
.method-bar{display:block;width:100%;height:10px;border-radius:4px;background:var(--chip)}
.method-foot{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-top:6px;font-size:12px;color:var(--muted)}.method-foot span{display:inline-flex;align-items:center;gap:6px}
.custom-range{display:inline-flex;align-items:center;gap:6px}.custom-range input{height:36px;padding:0 8px;color:var(--text)}.custom-range button{height:36px;padding:0 12px}
@media(max-width:1100px){.chart-row{grid-template-columns:1fr}}
@media(max-width:760px){.custom-range{width:100%;flex-wrap:wrap}.custom-range label{flex:1}.custom-range input{width:100%}}

/* matched is blue everywhere, as in the charts */
.match-bar::-webkit-progress-value{background:var(--chart-matched)!important}.match-bar::-moz-progress-bar{background:var(--chart-matched)!important}
/* overview chart row: cards keep their own height */
.chart-row{align-items:start}
.method-hint{margin:8px 0 0;padding:8px 10px;border-radius:8px;background:var(--bad-soft);color:var(--bad);font-size:12px}
.method-hint a{color:inherit;font-weight:600;text-decoration:underline}
/* overview: full-width daily chart; panels end at their content instead of stretching to the tallest */
.chart-row{grid-template-columns:minmax(0,1fr)}
#content .grid{align-items:start}
/* withdrawals: collapsible filters, date fields that fit, status tabs in one swipeable row */
.filter-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 18px;border-bottom:1px solid var(--border)}
.filter-summary{display:flex;align-items:center;gap:10px;min-width:0}
.filter-summary svg{width:18px;height:18px;color:var(--muted);flex:none}
.filter-summary span{min-width:0}.filter-summary strong{display:block;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.filter-toggle{flex:none;height:34px;padding:0 14px;font-weight:600;font-size:13px}
.filter-bar.open .filter-toggle{background:var(--chip)}
#content .completed-toolbar label{min-width:0}
#content .completed-toolbar input[type=date]{min-width:0;width:100%;max-width:100%;display:block;-webkit-appearance:none;appearance:none;text-align:left;min-height:40px}
#content .completed-toolbar input[type=date]::-webkit-date-and-time-value{text-align:left}
#content .completed-status-tabs{flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;-webkit-overflow-scrolling:touch;scroll-padding:0 18px}
#content .completed-status-tabs::-webkit-scrollbar{display:none}
#content .completed-status-tabs button{min-height:36px;padding:0 12px;font-size:13px}
@media(max-width:760px){.filter-bar{padding:12px 14px}#content .completed-status-tabs{padding:10px 14px}}
/* every date field fits its container (iPhone Safari gives them a wide minimum otherwise) */
input[type=date],input[type=datetime-local]{min-width:0;max-width:100%;-webkit-appearance:none;appearance:none;text-align:left;min-height:38px;padding:0 10px}
input[type=date]::-webkit-date-and-time-value,input[type=datetime-local]::-webkit-date-and-time-value{text-align:left}
.toolbar label{min-width:0}
/* owner report and receipt retry as proper cards */
.owner-report{margin:0 0 16px}
.owner-report>form.toolbar{padding:14px 18px;margin:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;align-items:end}
.owner-report>form.toolbar input,.owner-report>form.toolbar select{width:100%;height:38px}
.owner-report>form.toolbar button{height:38px}
.owner-report>:not(summary):not(form){padding:0 18px 16px}
.receipt-retry .panel-body{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:14px 18px}
.receipt-retry strong{display:block;font-size:14px}
.receipt-retry-actions{display:flex;gap:8px;flex-wrap:wrap}.receipt-retry-actions button,.receipt-retry-actions .button-link{height:36px;padding:0 14px;font-size:13px}
/* pagers wrap neatly on phones */
@media(max-width:760px){
 .pagination,.table-pagination{flex-direction:row!important;flex-wrap:wrap;align-items:center!important;justify-content:space-between;gap:8px}
 .pagination>div,.table-pagination>div{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
 .pagination button,.table-pagination button{height:34px;padding:0 10px;font-size:13px}
 .receipt-retry-actions{width:100%}.receipt-retry-actions>*{flex:1;justify-content:center}
}
@media(max-width:600px){.completed-proof>section:first-child dl{margin:12px -16px -16px}.completed-proof>section:first-child .proof-row{padding:10px 16px}}
#content .audit-stepper{scrollbar-width:none}#content .audit-stepper::-webkit-scrollbar{display:none}
/* tables keep every column on phones and scroll sideways inside their card */
.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}
@media(max-width:760px){
 .cashier-table{min-width:600px}
 .cashier-table .who small{white-space:nowrap}
 .cashier-table th:first-child,.cashier-table td:first-child{position:sticky;left:0;z-index:1;background:var(--surface);box-shadow:1px 0 0 var(--border)}
 .cashier-table thead th:first-child{background:var(--surface2)}
 #content .hour-proof-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
/* cashier audit day and hour lists: rows as wide as the header, so columns line up while scrolling */
.audit-day-row,.audit-hour-row{min-width:1050px}
.audit-day-row>span:first-child,.audit-hour-row>span:first-child{white-space:nowrap}
#content .evidence-tabs{scrollbar-width:none}#content .evidence-tabs::-webkit-scrollbar{display:none}
@media(min-width:761px){#content .completed-toolbar select{min-width:190px}#content .completed-toolbar input[type=date]{min-width:150px}}

/* Wallets learned from SMS (Setup & sources) */
.wallets-table{min-width:760px}
.wallets-table td small{display:block;color:var(--muted);font-size:12px;margin-top:2px}
.wallets-table td small.warn{color:var(--warn,#b26a00)}
.wallets-table tr.muted-row td{opacity:.6}
.wallet-actions,.wallets-table td:nth-child(3),.wallets-table td:nth-child(6){white-space:nowrap}
.wallet-actions button+button{margin-left:6px}
.wallets-table .wallet-name{display:block;font-size:13px;margin-top:2px}
.wallets-table .wallet-name em{color:var(--muted);font-style:normal}
.wallets-table .learned-tag{display:inline;color:var(--muted);font-size:11px;margin-left:4px}
.wallet-rename{display:flex;gap:6px;align-items:center;margin-top:4px}
.wallet-rename input{min-width:150px;padding:4px 8px}
.wallets-table td:first-child{min-width:170px}
.wallets-table td:first-child{min-width:190px}
.wallets-table .wallet-number{white-space:nowrap}
.wallets-table .wallet-name{font-weight:500;color:var(--text,inherit)}

/* CBE Birr receipt link health */
.banner.danger{background:var(--bad-soft);color:var(--bad);border-color:color-mix(in srgb,var(--bad) 30%,transparent);line-height:1.5}
.banner.danger a{color:inherit;font-weight:600;text-decoration:underline;margin-left:4px}
#receipt-health:empty{display:none}
#receipt-health{padding-bottom:0}
.receipt-health{margin:0;font-size:13px}
.receipt-health.warn{color:var(--warn)}
