:root{
  --granite:#F4F1EA; --paper:#FFFFFF; --ink:#1A1816; --ink-soft:#5A554E;
  --green:#1E3A2E; --green-deep:#12241C; --gold:#B4863B; --copper:#A65A32; --line:#E2DCD2;
  --danger:#A6402F; --danger-bg:#FBEAE6;
  --success:#1E3A2E; --success-bg:#E9F1EC;
  --warn:#8C662A; --warn-bg:#FBF6EC;
  --radius-sm:8px; --radius-md:12px; --shadow-sm:0 2px 8px rgba(26,24,22,0.06);
}
*{box-sizing:border-box;}
body{margin:0; background:var(--granite); color:var(--ink); font-family:'IBM Plex Sans',-apple-system,sans-serif; line-height:1.5; -webkit-font-smoothing:antialiased;}
h1,h2,h3,h4{font-family:'Source Serif 4',Georgia,serif; font-weight:600; margin:0;}
p{margin:0;}
a{color:inherit; text-decoration:none;}
:focus-visible{outline:3px solid var(--gold); outline-offset:2px;}
table{border-collapse:collapse; width:100%;}

.admin-shell{display:flex; min-height:100vh;}

/* ---------- Sidebar ---------- */
.admin-sidebar{width:220px; flex-shrink:0; background:var(--green-deep); color:#EFEAE0; padding:20px 14px; display:flex; flex-direction:column; gap:24px;}
.admin-brand{display:flex; align-items:center; gap:10px; padding:0 6px;}
.admin-brand-icon{width:30px; height:30px; border-radius:8px; background:var(--gold); color:#fff; display:flex; align-items:center; justify-content:center; flex-shrink:0;}
.admin-brand-icon svg{width:16px; height:16px; fill:none; stroke:currentColor; stroke-width:2.2; stroke-linecap:round; stroke-linejoin:round;}
.admin-brand-text{font-family:'Source Serif 4',serif; font-weight:600; font-size:1rem; line-height:1.15;}
.admin-brand-text span{display:block; font-family:'IBM Plex Sans',sans-serif; font-weight:400; font-size:0.68rem; color:#9FB0A6; margin-top:1px;}

.admin-nav{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:2px;}
.admin-nav a{display:flex; align-items:center; gap:10px; padding:9px 10px; border-radius:var(--radius-sm); font-size:0.87rem; font-weight:500; color:#CBD6CF;}
.admin-nav a:hover{background:rgba(255,255,255,0.06); color:#fff;}
.admin-nav a.active{background:var(--gold); color:#fff; font-weight:600;}
.admin-nav svg{width:16px; height:16px; fill:none; stroke:currentColor; stroke-width:2.2; stroke-linecap:round; stroke-linejoin:round; flex-shrink:0;}

.admin-sidebar-footer{margin-top:auto; border-top:1px solid rgba(255,255,255,0.1); padding-top:14px; font-size:0.78rem; color:#9FB0A6;}
.admin-sidebar-footer a{display:block; padding:6px 10px; border-radius:var(--radius-sm); color:#CBD6CF; font-weight:500;}
.admin-sidebar-footer a:hover{background:rgba(255,255,255,0.06); color:#fff;}

/* ---------- Main column ---------- */
.admin-main{flex:1; min-width:0; display:flex; flex-direction:column;}
.admin-topbar{background:var(--paper); border-bottom:1px solid var(--line); padding:14px 28px; display:flex; align-items:center; justify-content:space-between; gap:16px;}
.admin-topbar h1{font-size:1.15rem;}
.admin-tenant-switcher select{font-family:inherit; font-size:0.82rem; padding:7px 10px; border-radius:var(--radius-sm); border:1px solid var(--line); background:var(--paper);}
.admin-content{padding:28px; flex:1;}

/* ---------- Shared components ---------- */
.card{background:var(--paper); border:1px solid var(--line); border-radius:var(--radius-md); box-shadow:var(--shadow-sm); padding:20px;}
.card + .card{margin-top:16px;}
.card h3{font-size:1rem; margin-bottom:4px;}
.card-muted{color:var(--ink-soft); font-size:0.85rem;}

.stat-grid{display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:14px; margin-bottom:20px;}
.stat-card{background:var(--paper); border:1px solid var(--line); border-radius:var(--radius-md); padding:16px 18px; box-shadow:var(--shadow-sm);}
.stat-card .stat-label{font-size:0.74rem; text-transform:uppercase; letter-spacing:0.04em; color:var(--ink-soft); font-weight:600;}
.stat-card .stat-value{font-family:'Source Serif 4',serif; font-size:1.6rem; margin-top:4px;}

.progress-track{background:var(--granite); border-radius:99px; height:8px; overflow:hidden; margin-top:8px;}
.progress-fill{background:var(--green); height:100%; border-radius:99px;}

.btn{display:inline-flex; align-items:center; justify-content:center; gap:6px; padding:9px 16px; border-radius:var(--radius-sm); font-weight:600; font-size:0.85rem; font-family:inherit; border:1px solid transparent; cursor:pointer; text-decoration:none;}
.btn-primary{background:var(--green); color:#fff;}
.btn-primary:hover{background:var(--green-deep);}
.btn-secondary{background:var(--paper); color:var(--ink); border-color:var(--line);}
.btn-secondary:hover{background:var(--granite);}
.btn-danger{background:var(--danger-bg); color:var(--danger); border-color:#EBC6BC;}
.btn-danger:hover{background:#F5D8D0;}
.btn-sm{padding:6px 11px; font-size:0.78rem;}

.form-row{margin-bottom:16px;}
.form-row label{display:block; font-size:0.82rem; font-weight:600; margin-bottom:6px; color:var(--ink);}
.form-row .hint{display:block; font-size:0.76rem; color:var(--ink-soft); font-weight:400; margin-top:4px;}
.form-row input[type=text], .form-row input[type=email], .form-row input[type=number],
.form-row input[type=password], .form-row input[type=date], .form-row textarea, .form-row select{
  width:100%; padding:10px 12px; border-radius:var(--radius-sm); border:1px solid var(--line);
  font-family:inherit; font-size:0.9rem; background:var(--paper); color:var(--ink);
}
.form-row textarea{resize:vertical; min-height:90px;}
.form-check{display:flex; align-items:center; gap:8px; font-size:0.85rem; font-weight:500;}
.form-grid-2{display:grid; grid-template-columns:1fr 1fr; gap:16px;}
@media(max-width:640px){.form-grid-2{grid-template-columns:1fr;}}

.alert{padding:11px 14px; border-radius:var(--radius-sm); font-size:0.85rem; margin-bottom:16px;}
.alert-error{background:var(--danger-bg); color:var(--danger); border:1px solid #EBC6BC;}
.alert-success{background:var(--success-bg); color:var(--success); border:1px solid #C9DCCF;}
.alert-warn{background:var(--warn-bg); color:var(--warn); border:1px solid #EFE2C8;}

.badge{display:inline-flex; padding:3px 9px; border-radius:99px; font-size:0.72rem; font-weight:600; text-transform:uppercase; letter-spacing:0.02em;}
.badge-paid{background:var(--success-bg); color:var(--success);}
.badge-pending{background:var(--warn-bg); color:var(--warn);}
.badge-awaiting_manual_confirmation{background:#EBF0F7; color:#2B4C7E;}
.badge-failed, .badge-cancelled{background:var(--danger-bg); color:var(--danger);}

.data-table{background:var(--paper); border:1px solid var(--line); border-radius:var(--radius-md); overflow:hidden; box-shadow:var(--shadow-sm);}
.data-table table{width:100%;}
.data-table th{text-align:left; font-size:0.72rem; text-transform:uppercase; letter-spacing:0.04em; color:var(--ink-soft); padding:11px 16px; border-bottom:1px solid var(--line); background:var(--granite);}
.data-table td{padding:12px 16px; border-bottom:1px solid var(--line); font-size:0.86rem; vertical-align:middle;}
.data-table tr:last-child td{border-bottom:none;}
.data-table .muted{color:var(--ink-soft); font-size:0.8rem;}

.section-header-row{display:flex; align-items:center; justify-content:space-between; margin-bottom:16px; gap:12px; flex-wrap:wrap;}

.tabs{display:flex; gap:4px; border-bottom:1px solid var(--line); margin-bottom:20px;}
.tabs a{padding:9px 14px; font-size:0.86rem; font-weight:600; color:var(--ink-soft); border-bottom:2px solid transparent; margin-bottom:-1px;}
.tabs a.active{color:var(--green); border-bottom-color:var(--green);}

.filter-bar{display:flex; gap:10px; flex-wrap:wrap; margin-bottom:16px; align-items:center;}
.filter-bar select, .filter-bar input{padding:8px 10px; border-radius:var(--radius-sm); border:1px solid var(--line); font-family:inherit; font-size:0.83rem; background:var(--paper);}

.pagination{display:flex; gap:6px; margin-top:16px; justify-content:center;}
.pagination a, .pagination span{padding:6px 11px; border-radius:var(--radius-sm); font-size:0.82rem; border:1px solid var(--line); background:var(--paper);}
.pagination .current{background:var(--green); color:#fff; border-color:var(--green);}

.empty-state{text-align:center; padding:40px 20px; color:var(--ink-soft);}

/* ---------- Breadcrumb + neutral badge ---------- */
.breadcrumb{display:flex; align-items:center; gap:8px; font-size:0.83rem; color:var(--ink-soft); margin-bottom:16px; flex-wrap:wrap;}
.breadcrumb a{color:var(--ink-soft); font-weight:600; text-decoration:none;}
.breadcrumb a:hover{color:var(--ink); text-decoration:underline;}
.breadcrumb .sep{color:var(--line);}
.breadcrumb .current{color:var(--ink); font-weight:600;}

.badge-neutral{background:var(--granite); color:var(--ink-soft);}

/* ============================================================
   TRANSACTIONS — APPEND-ONLY SNIPPET
   Add to the end of admin/assets/admin.css (after the breadcrumb block).
   Uses only existing design tokens (--green, --gold, --line, etc.).
   ============================================================ */

/* ---------- Filter panel ---------- */
.filter-panel{padding:18px 20px 16px; margin-bottom:20px;}
.quick-range{display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-bottom:16px; padding-bottom:14px; border-bottom:1px solid var(--line);}
.quick-range-label{font-size:0.72rem; text-transform:uppercase; letter-spacing:0.05em; color:var(--ink-soft); font-weight:600; margin-right:4px;}
.chip{display:inline-flex; align-items:center; padding:5px 13px; border-radius:99px; border:1px solid var(--line); background:var(--paper); font-size:0.78rem; font-weight:600; color:var(--ink-soft); transition:background .15s, color .15s, border-color .15s;}
.chip:hover{background:var(--granite); color:var(--ink);}
.chip.active{background:var(--green); border-color:var(--green); color:#fff;}
.filter-grid{display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:14px 16px;}
.filter-grid .form-row{margin-bottom:0;}
.filter-grid .form-row-wide{grid-column:span 2;}
.filter-actions{display:flex; gap:8px; justify-content:flex-end; margin-top:16px;}
@media(max-width:640px){
  .filter-grid .form-row-wide{grid-column:auto;}
  .filter-actions{justify-content:stretch;}
  .filter-actions .btn{flex:1;}
}

/* ---------- Summary + results bar ---------- */
.stat-card .stat-sub{font-size:0.78rem; color:var(--ink-soft); margin-top:2px;}
.results-bar{display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; margin-bottom:12px;}
.results-count{font-size:0.83rem; color:var(--ink-soft);}
.results-count strong{color:var(--ink); font-weight:600;}
.export-actions{display:flex; gap:8px;}
.btn .icon{width:14px; height:14px; fill:none; stroke:currentColor; stroke-width:2.2; stroke-linecap:round; stroke-linejoin:round; flex-shrink:0;}

/* ---------- Table refinements ---------- */
.data-table.scroll{overflow-x:auto;}
.data-table.scroll table{min-width:860px;}
.data-table tbody tr:hover{background:#FBF9F4;}
.data-table th.num, .data-table td.num{text-align:right; white-space:nowrap;}
.data-table th.actions, .data-table td.actions{text-align:right; white-space:nowrap;}
.data-table td.actions .inline-form{display:inline; margin-left:6px;}
.ref-code{font-family:'IBM Plex Mono',ui-monospace,SFMono-Regular,Menlo,monospace; font-size:0.78rem; letter-spacing:0.01em;}
.cell-primary{font-weight:500;}
.amount-cell{font-weight:600;}
.pagination a:hover{background:var(--granite);}
.pagination .gap{border:none; background:none; color:var(--ink-soft); padding-left:2px; padding-right:2px;}

/* ---------- Transaction detail ---------- */
.detail-header{display:flex; align-items:flex-start; justify-content:space-between; gap:16px; flex-wrap:wrap; margin-bottom:20px;}
.detail-title{display:flex; align-items:center; gap:12px; flex-wrap:wrap;}
.detail-title h2{font-size:1.3rem; word-break:break-all;}
.detail-sub{color:var(--ink-soft); font-size:0.83rem; margin-top:6px;}
.detail-side{display:flex; align-items:center; gap:14px; flex-wrap:wrap;}
.detail-amount{font-family:'Source Serif 4',Georgia,serif; font-size:1.9rem; font-weight:600; line-height:1;}

.detail-grid{display:grid; grid-template-columns:repeat(auto-fit,minmax(320px,1fr)); gap:16px; align-items:start;}
.detail-grid > .card{margin-top:0;}
.detail-card h3{font-family:'IBM Plex Sans',-apple-system,sans-serif; font-size:0.72rem; text-transform:uppercase; letter-spacing:0.06em; color:var(--ink-soft); font-weight:600; margin-bottom:6px; padding-bottom:10px; border-bottom:1px solid var(--line);}

.kv{margin:0;}
.kv-row{display:flex; justify-content:space-between; gap:16px; padding:9px 0; border-bottom:1px solid var(--line); font-size:0.86rem;}
.kv-row:last-child{border-bottom:none; padding-bottom:0;}
.kv-row dt{color:var(--ink-soft); flex:0 0 40%;}
.kv-row dd{margin:0; text-align:right; word-break:break-word; font-weight:500;}
.kv-row dd.empty{color:var(--ink-soft); opacity:0.5; font-weight:400;}

.timeline{list-style:none; margin:10px 0 0; padding:0 0 0 14px; border-left:2px solid var(--line);}
.timeline li{position:relative; padding:0 0 16px 18px; font-size:0.86rem;}
.timeline li:last-child{padding-bottom:0;}
.timeline li::before{content:''; position:absolute; left:-21px; top:4px; width:10px; height:10px; border-radius:50%; background:var(--paper); border:2px solid var(--line);}
.timeline li.done::before{background:var(--green); border-color:var(--green);}
.timeline .t-label{display:block; font-weight:600;}
.timeline .t-time{display:block; color:var(--ink-soft); font-size:0.8rem; margin-top:1px;}
.timeline li:not(.done) .t-label{color:var(--ink-soft); font-weight:500;}

.raw-payload{margin-top:16px; padding:0; overflow:hidden;}
.raw-payload summary{cursor:pointer; padding:14px 20px; font-weight:600; font-size:0.86rem; list-style:none;}
.raw-payload summary::-webkit-details-marker{display:none;}
.raw-payload summary::before{content:'\25B8'; display:inline-block; margin-right:8px; color:var(--ink-soft); transition:transform .15s;}
.raw-payload[open] summary::before{transform:rotate(90deg);}
.raw-payload pre{margin:0; padding:16px 20px; background:var(--green-deep); color:#D8E3DC; font-family:'IBM Plex Mono',ui-monospace,Menlo,monospace; font-size:0.78rem; line-height:1.6; overflow:auto; max-height:380px;}

/* ============================================================
   ITEM GROUPS — card grid (admin/items/index.php)
   1 column on phones, 2 on tablets, 3 on small laptops, 4 on desktop.
   ============================================================ */
.section-title{font-size:1rem;}

.group-grid{display:grid; grid-template-columns:minmax(0,1fr); gap:16px;}
@media(min-width:640px){.group-grid{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(min-width:960px){.group-grid{grid-template-columns:repeat(3,minmax(0,1fr));}}
@media(min-width:1280px){.group-grid{grid-template-columns:repeat(4,minmax(0,1fr));}}
.group-grid > .card{margin-top:0;}

.group-card{display:flex; flex-direction:column; justify-content:space-between; height:100%; transition:box-shadow .15s, border-color .15s;}
.group-card:hover{border-color:#D3CBBE; box-shadow:0 4px 14px rgba(26,24,22,0.09);}
.group-card-top{display:flex; justify-content:space-between; align-items:flex-start; gap:10px;}
.group-card h4{font-size:1.02rem; margin:12px 0 4px;}
.group-card .tagline{margin-bottom:14px; min-height:2.6em; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;}
.group-key{display:inline-block; max-width:100%; background:var(--granite); padding:2px 6px; border-radius:4px; font-size:0.75rem; color:var(--ink-soft); word-break:break-all;}
.group-card-footer{margin-top:16px; border-top:1px solid var(--line); padding-top:12px; display:flex; justify-content:space-between; align-items:center; gap:8px; flex-wrap:wrap;}
.group-card-actions{display:flex; gap:6px;}
.group-card-actions form{margin:0;}
.empty-cta{margin-top:10px;}

/* ============================================================
   APPLICATIONS (admin/applications/*) + sidebar tweaks
   ============================================================ */

/* sidebar: classes that replace the old inline styles in layout.php */
.admin-nav-section{margin-top:10px; padding-top:10px; border-top:1px solid rgba(255,255,255,0.1);}
.admin-nav-section-label{padding:0 10px 6px; font-size:0.68rem; text-transform:uppercase; letter-spacing:0.05em; color:#9FB0A6; font-weight:600;}
.admin-sidebar-user{padding:0 10px 6px;}
.admin-topbar-tenant{color:var(--ink-soft); font-weight:400; font-size:0.9rem;}
.nav-badge{margin-left:auto; min-width:20px; padding:1px 7px; border-radius:99px; background:var(--gold); color:#fff; font-size:0.68rem; font-weight:600; text-align:center; line-height:1.5;}
.admin-nav a.active .nav-badge{background:#fff; color:var(--gold);}

/* application status badges */
.badge-new{background:#EBF0F7; color:#2B4C7E;}
.badge-in_review{background:var(--warn-bg); color:var(--warn);}
.badge-approved{background:var(--success-bg); color:var(--success);}
.badge-rejected{background:var(--danger-bg); color:var(--danger);}

/* review page: details on the left, actions on the right */
.app-layout{display:grid; grid-template-columns:minmax(0,1fr) 340px; gap:20px; align-items:start;}
@media(max-width:960px){.app-layout{grid-template-columns:minmax(0,1fr);}}
.app-stack{display:flex; flex-direction:column; gap:16px;}
.app-stack > .card{margin-top:0;}
.app-actions{display:flex; flex-direction:column; gap:16px;}
.app-actions > .card{margin-top:0;}
.app-actions .card h3{margin-bottom:6px;}
@media(min-width:961px){.app-actions{position:sticky; top:20px;}}
.btn-block{display:flex; width:100%;}
.btn:disabled{opacity:0.5; cursor:not-allowed;}
.form-row textarea{width:100%;}

/* one-time invite link shown after approval */
.invite-box{margin-top:12px;}
.invite-box label{display:block; font-size:0.78rem; font-weight:600; margin-bottom:5px;}
.invite-box input{width:100%; padding:9px 11px; border:1px solid var(--line); border-radius:var(--radius-sm); font-family:'IBM Plex Mono',ui-monospace,Menlo,monospace; font-size:0.74rem; background:var(--paper); color:var(--ink);}