:root{font-family:Inter,Segoe UI,Arial,sans-serif;color:#10233f;background:#f4f7fb}*{box-sizing:border-box}body{margin:0}.shell{min-height:100vh}.top{min-height:68px;background:#0d2b52;color:white;display:flex;align-items:center;padding:10px 28px;justify-content:space-between;box-shadow:0 2px 8px #0002}.brand{font-weight:800;font-size:23px;letter-spacing:.7px}.brand span{color:#d6ad4a}.tag,.tiny{font-size:12px}.tag{opacity:.8}.topright{display:flex;gap:10px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.rolebadge{font-size:11px;background:#ffffff1c;border:1px solid #ffffff2d;padding:5px 8px;border-radius:20px}.layout{display:grid;grid-template-columns:250px 1fr;min-height:calc(100vh - 68px)}aside{background:white;border-right:1px solid #dce4ee;padding:18px 12px}.nav{display:block;width:100%;border:0;background:transparent;text-align:left;padding:10px 13px;border-radius:9px;margin:2px 0;color:#29415f;cursor:pointer;font-weight:600}.nav:hover,.nav.active{background:#eef4fb;color:#0d2b52}.nav.danger{color:#a03939;margin-top:20px}main{padding:24px;min-width:0}.workbar{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-bottom:18px;font-size:12px;color:#708197}.workbar label{margin:0}.workbar input{padding:7px 9px;border:1px solid #ccd7e5;border-radius:8px}.card{background:white;border:1px solid #e1e7ef;border-radius:14px;padding:20px;box-shadow:0 4px 18px #17375e0b;margin-bottom:18px}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:16px}.metric strong{display:block;font-size:26px;margin-top:8px}.muted{color:#708197}.login{min-height:100vh;display:grid;place-items:center;background:linear-gradient(145deg,#0d2b52,#173e70)}.loginbox{width:min(420px,92vw);background:white;border-radius:18px;padding:34px;box-shadow:0 25px 70px #0005}.loginbox h1{margin:0;color:#0d2b52}.loginbox h1 span{color:#c59a35}.loginbox input,.formrow input,.formgrid select,.moneyinput{width:100%;padding:11px;border:1px solid #ccd7e5;border-radius:9px;background:white}.loginbox input{margin-top:8px;margin-bottom:14px;font-size:15px}.primary{background:#0d2b52;color:white;border:0;padding:11px 16px;border-radius:9px;font-weight:700;cursor:pointer}.primarylite{background:#eef4fb!important;color:#0d2b52}.error{background:#fff0f0;color:#9b3030;padding:10px;border-radius:8px;margin:10px 0}.notice{background:#fff8e7;border:1px solid #ead7a3;padding:16px;border-radius:12px}.table{width:100%;border-collapse:collapse}.table th,.table td{padding:11px;border-bottom:1px solid #edf1f5;text-align:left;vertical-align:top}.table th{font-size:12px;color:#667990;text-transform:uppercase;letter-spacing:.3px}.pill{display:inline-block;padding:4px 8px;border-radius:20px;background:#eef4fb;font-size:12px;white-space:nowrap}.pill.success{background:#e8f7ef;color:#28754d}.pill.bad{background:#fff0f0;color:#a03939}.headrow{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:18px}.formrow,.formgrid{display:flex;gap:14px;align-items:end;flex-wrap:wrap}.formgrid>div,.formrow>div{min-width:180px;flex:1}label{display:block;font-weight:650;margin-bottom:6px}.small{border:1px solid #cbd6e3;background:white;padding:7px 9px;border-radius:7px;cursor:pointer}.actions{display:flex;gap:7px;flex-wrap:wrap}.topgap{margin-top:16px}.tablewrap{overflow:auto}.chips{display:flex;gap:5px;flex-wrap:wrap}.chips span,.tabs span{background:#f2f5f9;border-radius:20px;padding:5px 8px;font-size:11px}.actiontiles{display:flex;gap:12px;flex-wrap:wrap;margin:12px 0 18px}.tile{border:1px solid #d3deea;background:white;color:#0d2b52;border-radius:12px;padding:15px 22px;font-weight:800;cursor:pointer}.tile.entry{border-color:#b9dfca;color:#28754d}.tile.exit{border-color:#edc3c3;color:#a03939}.tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px}.training{border-top:5px solid #d6ad4a;padding-top:10px}.statusline{display:flex;gap:8px;align-items:center;flex-wrap:wrap}h1{margin-top:0}h2{font-size:18px}
@media screen and (max-width:800px){.layout{grid-template-columns:1fr}aside{display:flex;overflow:auto;padding:8px;position:sticky;top:0;z-index:3}.nav{min-width:max-content}main{padding:14px}.top{padding:10px 15px}.workbar{justify-content:space-between}.headrow{align-items:flex-start}.table{min-width:720px}.card{padding:15px}}
.formgrid input,.formrow select,.formgrid select{width:100%;padding:11px;border:1px solid #ccd7e5;border-radius:9px;background:white}.compact{width:100%;min-width:150px;padding:7px 8px;border:1px solid #ccd7e5;border-radius:7px;background:white}.inline{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.formcard{border-left:4px solid #0d2b52}.validationbox{padding:16px 0;border-bottom:1px solid #e8edf3}.validationbox:last-child{border-bottom:0}.reportgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin-bottom:18px}.reportcard{display:block;width:100%;text-align:left;background:white;border:1px solid #e1e7ef;border-radius:14px;padding:20px;box-shadow:0 4px 18px #17375e0b;color:#10233f;cursor:pointer}.reportcard:hover{border-color:#9eb5d0;transform:translateY(-1px)}.reportcard h2{margin-top:0}.printable{background:white}
@media print{.top,aside,.workbar,.noprint,.reportgrid,#msg{display:none!important}.layout{display:block}.shell,main,body{background:white!important;padding:0!important}.printable{border:0;box-shadow:none;margin:0;padding:0}.card{box-shadow:none}.table{min-width:0}}
.permissiongrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:8px}.checkline{display:flex;gap:8px;align-items:flex-start;border:1px solid #e5eaf0;border-radius:9px;padding:9px;background:#fafbfd;font-weight:400}.checkline input{width:auto;margin-top:3px}.checkline small{display:block;color:#708197;margin-top:2px}
.transfer-count{display:inline-block;padding:2px 8px;border-radius:18px;background:#b82820;color:white;font-weight:700;margin-left:6px}.transfer-count[hidden]{display:none}.transfer-alert{border:1px solid #e9b757;background:#fff7e4;border-radius:12px;padding:14px 18px;margin-bottom:18px}.transfer-alert p{margin:8px 0}.live-cash{border-left:4px solid #186d8c}.live-cash .rates{margin:18px 0 8px;background:#f2f8fc}.ecartbox{padding:14px;background:#eef6f1;border-radius:10px;margin-top:12px}.rates p{margin:8px 0}.cash-metrics strong{font-size:26px}

input[type=number]{max-width:100%;padding:8px;border:1px solid #ccd7e5;border-radius:7px}details{margin:12px 0}summary{cursor:pointer;font-weight:650}tr[hidden]{display:none!important}button:disabled{opacity:.55;cursor:wait}.list-search{margin-bottom:14px}
@media print{#transferAlert,.list-search{display:none!important}#content>*:not(.printable){display:none!important}#content>.printable{display:block!important}.printable details>*{display:block!important}.printable summary{display:block!important}.tablewrap{overflow:visible}.table{min-width:0!important;table-layout:auto;font-size:10pt}.table th,.table td{padding:5px;overflow-wrap:anywhere}thead{display:table-header-group}tr{break-inside:avoid}h2,h3{break-after:avoid}.printable button{display:none!important}@page{size:A4 landscape;margin:12mm}}

/* V2.9.17: constrain intrinsic widths; scrolling belongs to navigation/tables. */
@media screen and (max-width:800px){
 .shell,.layout,main,#content{width:100%;min-width:0;max-width:100%}
 .layout{grid-template-columns:minmax(0,1fr)}
 .layout>aside{min-width:0;max-width:100%;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}
 aside .nav{flex:0 0 auto;width:auto;min-width:0;white-space:nowrap;min-height:44px;margin:2px}
 aside .nav.danger{margin-top:2px}
 .top{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;padding:12px}
 .top>div,.topright,.headrow>*,.card,.formgrid>div,.formrow>div{min-width:0;max-width:100%}
 .topright{font-size:13px;gap:6px;overflow-wrap:anywhere}
 .brand{font-size:21px}.tag{font-size:11px}
 main{padding:12px}.card{padding:14px}
 .workbar{flex-wrap:wrap;justify-content:flex-start;gap:8px}
 .workbar input{min-width:0;max-width:100%;font-size:16px}
 .workbar>span{margin-left:auto}
 .headrow{flex-wrap:wrap;gap:10px}
 h1{font-size:26px;overflow-wrap:anywhere}h2,h3,p,.notice,.error{overflow-wrap:anywhere}
 .grid,.reportgrid,.permissiongrid{grid-template-columns:minmax(0,1fr)}
 .formgrid>div,.formrow>div{flex-basis:100%}
 input,select,textarea{font-size:16px;max-width:100%;min-width:0}
 button{max-width:100%}.compact{min-width:0}
 .loginbox{padding:24px}.loginbox input{font-size:16px}
 .tablewrap{width:100%;max-width:100%;min-width:0;overflow-x:auto;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}
 .tablewrap:focus-visible{outline:2px solid #186d8c;outline-offset:2px}
}

/* V2.9.18: print content height, never the screen viewport height. */
@media print{
 html,body,#app,.shell,.layout,main,#content{
  height:auto!important;min-height:0!important;max-height:none!important;
  width:auto!important;min-width:0!important;max-width:none!important;
  margin:0!important;padding:0!important;overflow:visible!important;
 }
 .layout,main,#content{display:block!important}
 #content>.printable{margin:0!important;padding:0!important;border:0!important;border-radius:0!important}
 .tablewrap{width:auto!important;max-width:none!important;max-height:none!important;overflow:visible!important}
 .table th,.table td{overflow-wrap:normal;word-break:normal}
 /* Totals belong at the end, not repeated on every printed page. */
 tfoot{display:table-row-group}
}

/* V2.9.19: mobile navigation uses its content height, even on short pages. */
@media screen and (max-width:800px){
 .layout{grid-template-rows:auto 1fr}
 .layout>aside{align-self:start;align-items:center;height:auto;min-height:0}
}
