
:root{--bg:#f6f7f2;--card:#fff;--ink:#243126;--muted:#718070;--accent:#8daa42;--accent2:#d9e8a8;--danger:#b85656;--shadow:0 10px 35px rgba(28,54,26,.10);--r:22px}
*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto Sans Thai","Noto Sans SC",Arial,sans-serif;background:linear-gradient(180deg,#f8faef,#f1f5e9);color:var(--ink);min-height:100vh}
a{text-decoration:none;color:inherit}.top{position:sticky;top:0;z-index:20;background:rgba(255,255,255,.88);backdrop-filter:blur(14px);border-bottom:1px solid #e9eddf}.topin{max-width:1180px;margin:auto;padding:12px 18px;display:flex;align-items:center;gap:16px}.brand{font-weight:800;font-size:20px}.spacer{flex:1}.pill{background:#eef3df;padding:9px 12px;border-radius:999px}
.wrap{max-width:1180px;margin:0 auto;padding:18px}.grid{display:grid;grid-template-columns:repeat(12,1fr);gap:16px}.card{background:var(--card);border-radius:var(--r);box-shadow:var(--shadow);padding:20px;animation:rise .35s ease both}.hero{grid-column:span 12;text-align:center;padding:26px}.scanbtn{display:flex;align-items:center;justify-content:center;gap:14px;margin:10px auto 0;border:0;border-radius:28px;background:linear-gradient(135deg,#94b84a,#729b29);color:white;font-size:24px;font-weight:800;min-height:104px;width:min(100%,520px);box-shadow:0 18px 34px rgba(112,153,42,.28);cursor:pointer;transition:.2s}.scanbtn:active{transform:scale(.98)}
.kpi{grid-column:span 3}.kpi b{font-size:28px;display:block}.muted{color:var(--muted)}.section{grid-column:span 12}.btn{border:0;background:var(--accent);color:white;padding:12px 16px;border-radius:14px;font-weight:700;cursor:pointer}.btn.secondary{background:#eef3df;color:#30432e}.btn.danger{background:var(--danger)}
input,select,textarea{width:100%;padding:13px 14px;border:1px solid #dfe6d5;border-radius:14px;background:white;font-size:16px}.row{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.nav{display:flex;gap:8px;flex-wrap:wrap}
.table{width:100%;border-collapse:collapse}.table th,.table td{padding:11px;border-bottom:1px solid #edf0e9;text-align:left}.badge{display:inline-block;padding:5px 9px;border-radius:999px;background:#eef3df;font-size:12px}
.overlay{position:fixed;inset:0;background:rgba(18,28,18,.58);display:none;align-items:center;justify-content:center;z-index:100}.overlay.show{display:flex}.loaderbox{background:white;border-radius:24px;padding:30px;width:min(90%,380px);text-align:center}.ring{width:72px;height:72px;border:7px solid #e7ecd9;border-top-color:var(--accent);border-radius:50%;margin:0 auto 16px;animation:spin .85s linear infinite}
.login{max-width:460px;margin:7vh auto;padding:18px}.login .card{padding:30px}.logoDot{width:54px;height:54px;border-radius:18px;background:linear-gradient(135deg,#a6c75d,#6f922f);margin-bottom:18px}
.preview{width:100%;max-height:52vh;object-fit:contain;border-radius:18px;background:#edf0e9}
@keyframes spin{to{transform:rotate(360deg)}}@keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media(max-width:760px){.kpi{grid-column:span 6}.wrap{padding:12px}.topin{padding:10px 12px}.nav a:not(.important){display:none}.row{grid-template-columns:1fr}.scanbtn{font-size:22px;min-height:120px}.card{padding:16px}}

.scannerPage{overflow-x:hidden}.scannerShell{max-width:760px;margin:0 auto;padding:12px}.cameraStage{position:relative;height:min(72vh,760px);min-height:520px;background:#111;border-radius:26px;overflow:hidden;box-shadow:var(--shadow)}#cameraVideo{width:100%;height:100%;object-fit:cover;background:#111}.cameraShade{pointer-events:none;position:absolute;inset:0;background:rgba(0,0,0,.12)}.scanFrame{position:absolute;left:8%;right:8%;top:10%;bottom:18%;border:1px solid rgba(255,255,255,.55);border-radius:16px;box-shadow:0 0 0 2000px rgba(0,0,0,.30)}.corner{position:absolute;width:38px;height:38px;border-color:#fff;border-style:solid}.corner.tl{left:-2px;top:-2px;border-width:4px 0 0 4px;border-radius:14px 0 0}.corner.tr{right:-2px;top:-2px;border-width:4px 4px 0 0;border-radius:0 14px 0 0}.corner.bl{left:-2px;bottom:-2px;border-width:0 0 4px 4px;border-radius:0 0 0 14px}.corner.br{right:-2px;bottom:-2px;border-width:0 4px 4px 0;border-radius:0 0 14px}.scannerHint{position:absolute;left:20px;right:20px;top:20px;text-align:center;color:#fff;font-weight:700;text-shadow:0 1px 4px #000}.cameraStatus{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#fff;padding:30px;text-align:center;pointer-events:none}.shutter{position:absolute;left:50%;bottom:22px;transform:translateX(-50%);width:82px;height:82px;border-radius:50%;border:5px solid rgba(255,255,255,.95);background:rgba(255,255,255,.25);padding:7px;cursor:pointer}.shutter span{display:block;width:100%;height:100%;border-radius:50%;background:#fff;box-shadow:0 2px 12px rgba(0,0,0,.3)}.shutter:active{transform:translateX(-50%) scale(.94)}.fallbackRow{text-align:center;padding:12px}.fallbackBtn{display:inline-block;padding:10px 16px;border-radius:999px;background:#eef3df;color:#40523a;font-weight:700;cursor:pointer}.previewStage,.metaStage{padding:4px}.previewCard{position:relative;background:#111;border-radius:24px;min-height:55vh;display:flex;align-items:center;justify-content:center;overflow:hidden}.previewCard img{max-width:92%;max-height:68vh;object-fit:contain;transition:transform .2s}.previewTools{position:absolute;right:12px;bottom:12px;display:flex;gap:8px}.miniBtn{border:0;border-radius:999px;background:rgba(255,255,255,.9);padding:10px 13px;font-weight:700}.previewActions{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:14px 0}.uploadAnalyse{width:100%;font-size:18px;margin-top:18px;min-height:54px}@media(max-width:600px){.scannerShell{padding:0}.cameraStage{border-radius:0;height:calc(100vh - 128px);min-height:520px}.scanFrame{left:7%;right:7%;top:8%;bottom:18%}.fallbackRow{background:var(--bg)}}

/* Ledger scanner/update 165 */
.receiptViewer{position:relative;background:#171a17;border-radius:20px;min-height:300px;max-height:75vh;display:flex;align-items:center;justify-content:center;overflow:auto}.receiptViewer img{max-width:96%;max-height:72vh;object-fit:contain;transition:transform .2s}

.langSelect{border:0;background:#eef3df;color:#30432e;padding:9px 10px;border-radius:999px;width:auto;font-weight:700}.logoutPill{background:#f3e7e7!important;color:#803c3c!important}.pwToggle{position:absolute;right:7px;top:7px;border:0;background:transparent;font-size:20px}.purposeHero{background:linear-gradient(135deg,#f0f6df,#f8faef);border:1px solid #dce8bf;padding:16px;border-radius:18px;margin:14px 0;display:flex;flex-direction:column;gap:4px}.purposeHero small{color:var(--muted)}.purposeHero strong{font-size:20px}.reviewHead{display:flex;gap:14px;justify-content:space-between;align-items:flex-start}.reviewActions{display:grid;grid-template-columns:1fr 1.3fr;gap:12px;margin-top:16px}.approveBtn{background:#668e27;min-height:52px;font-size:17px}.checkLine{display:flex!important;align-items:center;gap:8px;margin:14px 0}.checkLine input{width:auto}@media(max-width:760px){.nav{gap:5px}.topin{align-items:flex-start}.nav{justify-content:flex-end}.nav a.pill{display:inline-block;font-size:13px;padding:8px}.langSelect{font-size:13px;padding:8px}.reviewActions{grid-template-columns:1fr}.reviewHead{flex-direction:column}}

.kpiLink{position:relative;display:block;transition:.18s}.kpiLink:hover,.kpiLink:active{transform:translateY(-2px)}.kpiLink small{position:absolute;right:16px;bottom:12px;font-size:28px;color:#92a17f}.reviewMini{display:inline-block;padding:7px 10px;border-radius:999px;background:#eaf2d7;color:#476221;font-weight:800;white-space:nowrap}.listHeader{display:flex;align-items:center;justify-content:space-between;gap:12px}.filters{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;background:#f8faF2;padding:14px;border-radius:18px;margin:16px 0}.filters label{font-size:13px;color:var(--muted)}.filterActions{display:flex;gap:8px;align-items:end}.receiptCards{display:grid;gap:10px}.receiptListCard{display:block;padding:15px;border:1px solid #e4ead9;border-radius:18px;background:#fff;transition:.15s}.receiptListCard:active{transform:scale(.99)}.receiptListTop,.receiptListBottom,.receiptMeta{display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap}.receiptPurpose{font-size:18px;font-weight:800;margin:8px 0}.receiptMeta{color:var(--muted);font-size:14px}.flowLine{margin:9px 0;padding:8px 10px;background:#f2f6e6;border-radius:10px;font-weight:700}.loginError{background:#faeaea;color:#9a3434;padding:12px;border-radius:12px;margin:10px 0}.loginHelp{margin-top:18px;padding:12px;background:#f4f7eb;border-radius:12px;font-size:14px}.latestTable th,.latestTable td{min-width:100px}@media(max-width:760px){.filters{grid-template-columns:1fr 1fr}.filters>input{grid-column:span 2}.filterActions{grid-column:span 2}.latestTable th:nth-child(5),.latestTable td:nth-child(5){display:none}.receiptMeta{justify-content:flex-start}.receiptListBottom{margin-top:8px}}@media(max-width:430px){.filters{grid-template-columns:1fr}.filters>input,.filterActions{grid-column:span 1}}
.fileDrop{display:flex;min-height:180px;border:2px dashed #bfd09b;border-radius:22px;align-items:center;justify-content:center;flex-direction:column;gap:7px;background:#f7faef;cursor:pointer;text-align:center;padding:20px;transition:.18s}
.fileDrop.drag,.fileDrop:active{background:#edf4dd;border-color:#7fa233}
.fileDropIcon{font-size:42px;color:#78993a}
.fileDrop span{font-size:13px;color:var(--muted)}
.filePreview{margin-top:16px;border-radius:18px;background:#eef1e9;padding:10px}
.filePreview img{display:block;max-width:100%;max-height:58vh;margin:auto;border-radius:12px}
.filePreview iframe{width:100%;height:58vh;border:0;border-radius:12px;background:#fff}
.fileInfo{font-size:13px;color:var(--muted);padding:8px 4px 0}
.uploadFileBtn{display:flex;align-items:center;justify-content:center;margin:12px auto 0;padding:12px 18px;border-radius:999px;background:#eef3df;color:#40552e;font-weight:800;width:min(100%,520px)}
.linkedDocuments{margin-top:18px}.docList{display:grid;gap:8px}.docRow{display:grid;grid-template-columns:140px 1fr auto;gap:10px;align-items:center;padding:12px;border:1px solid #e4ead9;border-radius:14px;background:#fafcf5}.docRow small{color:var(--muted)}@media(max-width:640px){.docRow{grid-template-columns:1fr}.docRow small{font-size:12px}}
.manualExpenseBtn{display:flex;align-items:center;justify-content:center;margin:14px auto;padding:13px 18px;border-radius:999px;background:#f4efe1;color:#6c5620;font-weight:800;width:min(100%,520px)}
.currencySummary{display:flex;gap:10px;flex-wrap:wrap;margin:14px 0}.currencySummary>div{background:#f2f6e8;padding:12px 16px;border-radius:14px;min-width:110px}.currencySummary small,.reportingBox small{display:block;color:var(--muted);font-size:12px}.currencySummary b{font-size:20px}.reportingBox{display:flex;justify-content:space-between;gap:14px;align-items:end;background:#eef3f6;padding:14px;border-radius:16px;margin:12px 0 18px}.reportingBox select{width:auto}.fxLine{margin-top:8px;padding:8px 10px;background:#f3f5ef;border-radius:10px;color:#55604d;font-size:13px}.fxLine.missing{background:#fff1dd;color:#8a6121}.fxBox{margin-top:16px;padding:13px;background:#f1f5eb;border-radius:14px}.transactionsBtn{display:flex;align-items:center;justify-content:center;margin:12px auto;padding:12px 18px;border-radius:999px;background:#e7eef3;color:#36576a;font-weight:800;width:min(100%,520px)}
/* Unified navigation 275 */
.appTop{position:sticky;top:0;z-index:50;background:rgba(250,251,247,.96);backdrop-filter:blur(12px);border-bottom:1px solid #e5eadc}
.appTopRow{display:flex;align-items:center;gap:10px;max-width:1180px;margin:auto;padding:10px 14px}
.appTitle{font-weight:900;color:#263626;white-space:nowrap}
.backBtn{border:0;background:#eef3df;color:#40552e;padding:9px 12px;border-radius:999px;font-weight:800}
.mainMenu{max-width:1180px;margin:auto;padding:0 14px 10px;display:flex;gap:7px;overflow-x:auto;scrollbar-width:none}
.mainMenu::-webkit-scrollbar{display:none}
.mainMenu a{white-space:nowrap;padding:9px 12px;border-radius:999px;background:#fff;border:1px solid #e1e7d8;color:#344431;font-weight:750;font-size:14px}
.langSelect{width:auto;min-width:68px}

/* hide previous legacy topbars on pages with new menu */
.appTop ~ .top{display:none}

/* dashboard main actions */
.dashboardActionStack{display:grid;gap:10px;margin:16px 0}
.actionBig{display:flex!important;gap:12px;align-items:center;justify-content:center;min-height:64px;font-size:18px}
.secondaryAction{background:#e9f0f5!important;color:#35586b!important}
.cashAction{background:#f5eedc!important;color:#6a5624!important}

/* linked docs */
.infoBox{padding:14px;border-radius:14px;background:#f3f6ea;margin:14px 0}
.linkedDocuments{margin-top:20px}
.docList{display:grid;gap:8px}
.docRow{display:grid;grid-template-columns:145px 1fr auto;gap:10px;padding:12px;border:1px solid #e3e8db;border-radius:14px;background:#fbfcf8}
.docRow small{color:var(--muted)}

@media(max-width:700px){
 .appTopRow{padding:8px 10px}
 .mainMenu{padding:0 10px 8px}
 .mainMenu a{font-size:13px;padding:8px 10px}
 .docRow{grid-template-columns:1fr}
}
.attachmentParentCard{display:flex;gap:10px;flex-wrap:wrap;justify-content:space-between;padding:12px 14px;margin:10px 0;background:#f0f4e8;border-radius:14px}.attachmentParentCard span{color:#64705e}.docRow b{display:flex;gap:7px;align-items:center}.docStatusReady{color:#50772b}.docStatusReview{color:#986b1e}
/* Run 297 dashboard + document mobile cleanup */
body>.appTop:first-child{margin-bottom:0}
.dashboardActionStack{max-width:680px;margin:18px auto;display:grid;gap:10px}
.dashboardActionStack .actionBig{width:100%;box-sizing:border-box}

/* Legacy dashboard/header controls should not compete with the unified menu */
body>.top{display:none!important}

/* Document section */
.linkedDocuments{min-width:0}
.linkedDocuments>p{margin:10px 0}
.docActionBtn{
  display:flex!important;
  width:100%!important;
  max-width:100%!important;
  box-sizing:border-box!important;
  white-space:normal!important;
  overflow-wrap:anywhere!important;
  line-height:1.25!important;
  text-align:center!important;
  justify-content:center!important;
  padding:12px 14px!important;
}
.docList{min-width:0}
.docRow{
  min-width:0!important;
  width:100%!important;
  box-sizing:border-box!important;
  grid-template-columns:minmax(0,1fr)!important;
}
.docRow>*{min-width:0;overflow-wrap:anywhere}
.docRow span{font-size:14px}
.docRow small{font-size:12px}

/* Transaction editor mobile spacing */
@media(max-width:700px){
  .linkedDocuments h3{font-size:24px;margin-bottom:8px}
  .docActionBtn{font-size:15px!important}
  .dashboardActionStack{margin:12px 0}
}
.currencyPlus{font-size:12px;color:#7b8574}
.ledgerMovementBox{border:1px solid #dce7c8;border-radius:18px;padding:16px;margin:18px 0;background:#fbfdf7}
.ledgerMovementBox legend{font-weight:800;padding:0 8px}
.ledgerMovementGrid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.ledgerMovementGrid label{display:flex;flex-direction:column;gap:6px}
.ledgerMovementGrid input,.ledgerMovementGrid select{width:100%}
.ledgerMovementHint{font-size:13px;color:#66705f;margin:12px 0 0}
@media(max-width:720px){.ledgerMovementGrid{grid-template-columns:1fr}.ledgerMovementBox{padding:12px}}

/* LEDGER330_MOBILE_RECEIPT_REPAIR */
.ledger330MovementBox{
  position:relative !important;
  inset:auto !important;
  float:none !important;
  clear:both !important;
  display:block !important;
  width:100% !important;
  max-width:100% !important;
  box-sizing:border-box !important;
  z-index:auto !important;
  margin:18px 0 !important;
}

.ledger330MovementBox .ledgerMovementGrid{
  width:100% !important;
  max-width:100% !important;
  box-sizing:border-box !important;
}

.ledger330MovementBox input,
.ledger330MovementBox select,
.ledger330MovementBox textarea{
  width:100% !important;
  max-width:100% !important;
  min-width:0 !important;
  box-sizing:border-box !important;
}

.receipt-preview,
.receipt-image,
.receipt-original,
.preview-card,
.open-original,
figure,
figure img{
  max-width:100%;
}

@media(max-width:720px){
  .ledger330MovementBox{
    margin:14px 0 !important;
    padding:12px !important;
  }

  .ledger330MovementBox .ledgerMovementGrid{
    display:grid !important;
    grid-template-columns:minmax(0,1fr) !important;
    gap:10px !important;
  }

  .ledger330MovementBox label{
    min-width:0 !important;
  }
}

/* LEDGER330B_MOBILE_RECEIPT_REPAIR */
.ledger330bMovementBox{
  position:relative !important;
  top:auto !important;
  right:auto !important;
  bottom:auto !important;
  left:auto !important;
  inset:auto !important;
  float:none !important;
  clear:both !important;
  display:block !important;
  width:100% !important;
  max-width:100% !important;
  min-width:0 !important;
  height:auto !important;
  box-sizing:border-box !important;
  z-index:auto !important;
  overflow:visible !important;
  margin:18px 0 !important;
}

.ledger330bMovementBox .ledgerMovementGrid{
  width:100% !important;
  max-width:100% !important;
  min-width:0 !important;
  box-sizing:border-box !important;
}

.ledger330bMovementBox label{
  min-width:0 !important;
  max-width:100% !important;
}

.ledger330bMovementBox input,
.ledger330bMovementBox select,
.ledger330bMovementBox textarea{
  width:100% !important;
  max-width:100% !important;
  min-width:0 !important;
  box-sizing:border-box !important;
}

.receiptViewer{
  position:relative;
  overflow:hidden;
  max-width:100%;
}

.receiptViewer > img{
  display:block;
  width:100%;
  max-width:100%;
  height:auto;
}

@media(max-width:720px){
  .ledger330bMovementBox{
    margin:14px 0 !important;
    padding:12px !important;
  }

  .ledger330bMovementBox .ledgerMovementGrid{
    display:grid !important;
    grid-template-columns:minmax(0,1fr) !important;
    gap:10px !important;
  }
}
