@import url('https://fonts.googleapis.com/css2?family=Sarabun:wght@400;500;600;700&family=JetBrains+Mono:wght@400;600&display=swap');

:root{
  --primary:#4F5BD5;
  --primary-2:#7C6AF2;
  --primary-soft:#EEF0FD;
  --ink:#1E2138;
  --ink-soft:#8C90A6;
  --bg:#F4F6FB;
  --surface:#FFFFFF;
  --line:#EDEFF7;

  --blue-bg:#E9EEFE; --blue:#4361EE;
  --green-bg:#E4F8ED; --green:#1DA463;
  --red-bg:#FDEAEC;  --red:#E5484D;
  --amber-bg:#FFF4DE; --amber:#DB9A1E;
  --purple-bg:#F1EBFE; --purple:#8B5CF6;
  --teal:#0EA5A8; --teal-2:#2DD4C8;

  --radius-lg:20px;
  --radius:14px;
  --radius-sm:10px;
  --shadow: 0 1px 2px rgba(30,33,56,.04), 0 8px 24px rgba(30,33,56,.06);

  --font: 'Sarabun', sans-serif;
  --font-mono:'JetBrains Mono', monospace;
}

*{box-sizing:border-box;}

body{
  margin:0;
  font-family:var(--font);
  background:var(--bg);
  color:var(--ink);
  font-size:14.5px;
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
}

a{color:inherit; text-decoration:none;}

.layout{display:flex; min-height:100vh;}

/* ================= SIDEBAR ================= */
.sidebar{
  width:250px;
  flex-shrink:0;
  background:var(--surface);
  border-right:1px solid var(--line);
  padding:26px 18px;
  display:flex;
  flex-direction:column;
}

.brand{display:flex; flex-direction:column; gap:10px; padding:0 6px 6px;}
.brand-icon{
  width:42px; height:42px; border-radius:13px;
  background:linear-gradient(135deg, var(--teal), var(--teal-2));
  display:flex; align-items:center; justify-content:center;
  box-shadow:0 6px 14px rgba(14,165,168,.35);
  flex-shrink:0;
}
.brand-icon svg{width:22px; height:22px; stroke:#fff;}
.brand-text .name{font-weight:700; font-size:17px; letter-spacing:-.01em;}
.brand-text .tag{font-size:11.5px; color:var(--ink-soft); margin-top:1px;}

/* โลโก้/รูปหอพักแบบภาพถ่าย ใช้แทนไอคอนตึกเดิม */
.brand-photo{
  display:block; width:100%; aspect-ratio:4/3;
  object-fit:cover; border-radius:var(--radius-lg);
  box-shadow:0 6px 14px rgba(14,165,168,.25);
}

.menu-label{
  font-size:11px; font-weight:700; letter-spacing:.09em;
  color:#B5B9CC; margin:26px 10px 10px; text-transform:uppercase;
}

.nav{display:flex; flex-direction:column; gap:3px;}
.nav a{
  display:flex; align-items:center; gap:12px;
  padding:11px 14px;
  border-radius:12px;
  font-size:14.5px; font-weight:500;
  color:#565A72;
  transition:background .15s ease, color .15s ease;
}
.nav a svg{width:19px; height:19px; stroke:currentColor; flex-shrink:0;}
.nav a:hover{background:#F6F7FC; color:var(--ink);}
.nav a.active{
  background:linear-gradient(135deg, var(--primary), var(--primary-2));
  color:#fff;
  box-shadow:0 8px 16px rgba(79,91,213,.28);
}

.sidebar-foot{
  margin-top:auto;
  padding:14px;
  border-radius:var(--radius);
  background:var(--bg);
  font-size:12px;
  color:var(--ink-soft);
  display:flex;
  align-items:center;
  gap:9px;
}
.sidebar-foot svg{width:16px; height:16px; stroke:var(--ink-soft); flex-shrink:0;}

.logout-link{
  display:flex; align-items:center; gap:9px;
  margin-top:10px; padding:11px 14px;
  border-radius:12px;
  font-size:13.5px; font-weight:500;
  color:var(--red);
}
.logout-link:hover{background:var(--red-bg);}
.logout-link svg{width:17px; height:17px; stroke:currentColor; flex-shrink:0;}

/* ================= LOGIN ================= */
.login-page{
  min-height:100vh;
  display:flex; align-items:center; justify-content:center;
  background:linear-gradient(135deg, var(--teal) 0%, var(--teal-2) 100%);
  padding:20px;
}
.login-card{
  background:var(--surface);
  border-radius:var(--radius-lg);
  padding:40px 36px;
  width:100%; max-width:380px;
  box-shadow:0 20px 60px rgba(30,33,56,.25);
}
.login-brand{display:flex; flex-direction:column; align-items:center; gap:12px; margin-bottom:26px;}
.login-brand .brand-icon{width:52px; height:52px; border-radius:16px;}
.login-brand .brand-icon svg{width:26px; height:26px;}
.login-brand .name{font-size:19px; font-weight:700;}
.login-brand .tag{font-size:12.5px; color:var(--ink-soft);}

/* ================= MAIN / TOPBAR ================= */
.main{flex:1; min-width:0;}

.topbar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:20px;
  padding:22px 36px;
  background:var(--surface);
  border-bottom:1px solid var(--line);
  flex-wrap:wrap;
}
.topbar h1{font-size:23px; font-weight:700; margin:0; letter-spacing:-.01em;}
.topbar .sub{font-size:13px; color:var(--ink-soft); margin-top:2px;}
.topbar-actions{display:flex; flex-wrap:wrap; align-items:center; gap:12px;}

.content{padding:28px 36px 60px; max-width:1280px;}

/* ================= BUTTONS ================= */
.btn{
  display:inline-flex; align-items:center; gap:7px;
  padding:10px 18px;
  border-radius:11px;
  border:1px solid transparent;
  font-family:var(--font);
  font-size:14px; font-weight:600;
  cursor:pointer;
  background:var(--primary);
  color:#fff;
  box-shadow:0 6px 14px rgba(79,91,213,.25);
  white-space:nowrap;
}
.btn:hover{background:#4350C4;}
.btn.brass{background:linear-gradient(135deg, var(--primary), var(--primary-2));}
.btn.brass:hover{filter:brightness(1.05);}
.btn.ghost{background:var(--surface); color:var(--ink); border-color:var(--line); box-shadow:none;}
.btn.ghost:hover{border-color:#D6D9EC; background:#FAFBFF;}
.btn.danger{background:var(--red); box-shadow:0 6px 14px rgba(229,72,77,.22);}
.btn.danger:hover{background:#D33338;}
.btn.small{padding:7px 13px; font-size:12.5px; border-radius:9px; box-shadow:none;}

/* ================= HERO CARD ================= */
.hero{
  position:relative;
  border-radius:var(--radius-lg);
  padding:26px 28px;
  background:linear-gradient(135deg, var(--primary) 0%, var(--primary-2) 100%);
  color:#fff;
  overflow:hidden;
  display:flex;
  flex-direction:column;
  justify-content:space-between;
  min-height:190px;
}
.hero::after{
  content:"";
  position:absolute; right:-40px; top:-60px;
  width:220px; height:220px;
  background:radial-gradient(circle, rgba(255,255,255,.16), transparent 70%);
  border-radius:50%;
}
.hero .label{font-size:13.5px; opacity:.85; margin-bottom:10px;}
.hero .value{font-family:var(--font-mono); font-size:36px; font-weight:700; letter-spacing:-.02em;}
.hero .trend{
  display:inline-flex; align-items:center; gap:6px;
  margin-top:16px;
  background:rgba(255,255,255,.16);
  padding:7px 13px;
  border-radius:20px;
  font-size:12.5px;
  width:fit-content;
  backdrop-filter:blur(4px);
}
.hero-icon{
  position:absolute; top:24px; right:26px;
  width:44px; height:44px; border-radius:13px;
  background:rgba(255,255,255,.18);
  display:flex; align-items:center; justify-content:center;
}
.hero-icon svg{width:22px; height:22px; stroke:#fff;}

/* ================= STAT / GRID ================= */
.stat-row{display:grid; grid-template-columns:repeat(4, 1fr); gap:16px; margin-bottom:26px;}
.hero-row{display:grid; grid-template-columns:1.6fr 1fr 1fr 1fr; gap:16px; margin-bottom:26px; align-items:stretch;}

.stat-card{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--radius-lg);
  padding:20px 20px 18px;
  box-shadow:var(--shadow);
  display:flex;
  flex-direction:column;
  justify-content:center;
}
.stat-icon{
  width:42px; height:42px; border-radius:12px;
  display:flex; align-items:center; justify-content:center;
  margin-bottom:14px;
}
.stat-icon svg{width:21px; height:21px;}
.stat-icon.blue{background:var(--blue-bg);} .stat-icon.blue svg{stroke:var(--blue);}
.stat-icon.green{background:var(--green-bg);} .stat-icon.green svg{stroke:var(--green);}
.stat-icon.red{background:var(--red-bg);} .stat-icon.red svg{stroke:var(--red);}
.stat-icon.amber{background:var(--amber-bg);} .stat-icon.amber svg{stroke:var(--amber);}
.stat-icon.purple{background:var(--purple-bg);} .stat-icon.purple svg{stroke:var(--purple);}

.stat-card .value{font-family:var(--font-mono); font-size:27px; font-weight:700;}
.stat-card .label{font-size:13px; color:var(--ink-soft); margin-top:4px;}

/* ================= QUICK MENU ================= */
.quick-title{display:flex; justify-content:space-between; align-items:center; margin-bottom:14px;}
.quick-title h2{font-size:16px; font-weight:700; margin:0;}
.quick-grid{display:grid; grid-template-columns:repeat(5, 1fr); gap:14px; margin-bottom:28px;}
.quick-tile{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:20px 14px;
  text-align:center;
  box-shadow:var(--shadow);
  transition:transform .15s ease, box-shadow .15s ease;
}
.quick-tile:hover{transform:translateY(-3px); box-shadow:0 10px 24px rgba(30,33,56,.09);}
.quick-tile .qi{
  width:46px; height:46px; border-radius:13px;
  display:flex; align-items:center; justify-content:center;
  margin:0 auto 10px;
}
.quick-tile .qi svg{width:22px; height:22px;}
.quick-tile .qt{font-size:13px; font-weight:600;}

/* ================= CARD / TABLE ================= */
.card{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--radius-lg);
  padding:24px;
  margin-bottom:22px;
  box-shadow:var(--shadow);
}
.card h2{font-size:16px; font-weight:700; margin:0 0 16px; display:flex; align-items:center; gap:8px;}
.card h2 .dot{width:7px; height:7px; border-radius:50%; background:var(--primary);}

/* กันตารางล้นจอมือถือ/แท็บเล็ต: แทนที่จะบีบคอลัมน์จนตัวหนังสือตกบรรทัดรัวๆ
   ให้ตารางคงความกว้างธรรมชาติไว้แล้วเลื่อนแนวนอนแทน (มาตรฐานการทำ responsive table) */
.table-wrap{width:100%; overflow-x:auto; -webkit-overflow-scrolling:touch;}
.table-wrap table{min-width:600px;}

table{width:100%; border-collapse:collapse; font-size:14px;}
th{
  text-align:left; font-size:11.5px; text-transform:uppercase; letter-spacing:.05em;
  color:var(--ink-soft); padding:10px 12px; border-bottom:1px solid var(--line);
  white-space:nowrap;
}
td{padding:13px 12px; border-bottom:1px solid var(--line); vertical-align:middle; white-space:nowrap;}
tr:last-child td{border-bottom:none;}
tbody tr:hover{background:#FAFBFF;}
.num{font-family:var(--font-mono);}
.right{text-align:right;}
.muted{color:var(--ink-soft); font-size:12.5px;}
/* เซลล์บางประเภทมีเนื้อหาหลายบรรทัดตั้งใจ (ชื่อยาว/ทะเบียนรถหลายคัน) ต้องขึ้นบรรทัดใหม่ได้ตามปกติ */
td.wrap{white-space:normal;}

/* ================= BADGES ================= */
.badge{display:inline-block; padding:4px 11px; border-radius:20px; font-size:11.5px; font-weight:700;}
.badge.leaf{background:var(--green-bg); color:var(--green);}
.badge.rust{background:var(--red-bg); color:var(--red);}
.badge.slate{background:var(--blue-bg); color:var(--blue);}
.badge.brass{background:var(--amber-bg); color:var(--amber);}

/* ================= FORMS ================= */
.form-grid{display:grid; grid-template-columns:1fr 1fr; gap:16px 20px;}
.field{display:flex; flex-direction:column; gap:6px;}
.field.full{grid-column:1/-1;}
.field label{font-size:12.5px; font-weight:600; color:#565A72;}
input, select, textarea{
  font-family:var(--font); font-size:14px;
  padding:10px 13px;
  border:1px solid var(--line);
  border-radius:var(--radius-sm);
  background:#FBFBFE;
  color:var(--ink);
}
input:focus, select:focus, textarea:focus{
  outline:none;
  border-color:var(--primary);
  background:#fff;
  box-shadow:0 0 0 4px var(--primary-soft);
}
.form-actions{display:flex; gap:10px; margin-top:22px;}

/* search box in topbar */
.search-box{
  display:flex; align-items:center; gap:8px;
  background:var(--bg);
  border:1px solid var(--line);
  border-radius:12px;
  padding:9px 15px;
  min-width:230px;
}
.search-box svg{width:16px; height:16px; stroke:var(--ink-soft); flex-shrink:0;}
.search-box input{border:none; background:transparent; padding:0; font-size:13.5px; flex:1;}
.search-box input:focus{box-shadow:none;}
.icon-btn{
  width:40px; height:40px; border-radius:12px;
  background:var(--surface); border:1px solid var(--line);
  display:flex; align-items:center; justify-content:center;
}
.icon-btn svg{width:18px; height:18px; stroke:var(--ink-soft);}

/* ================= FLASH ================= */
.flash{
  padding:12px 16px; border-radius:var(--radius-sm);
  background:var(--green-bg); color:var(--green);
  font-size:13.5px; font-weight:600; margin-bottom:20px;
}
.flash.flash-error{background:var(--red-bg); color:var(--red);}

/* ================= EMPTY ================= */
.empty{text-align:center; padding:50px 20px; color:var(--ink-soft);}
.empty .big{font-family:var(--font-mono); font-size:13px; letter-spacing:.08em; margin-bottom:6px;}

/* ================= CHARTS ================= */
.chart-row{display:grid; grid-template-columns:1.5fr 1fr; gap:16px; margin-bottom:22px;}
.bar-chart{display:flex; align-items:flex-end; gap:10px; height:160px; padding-top:10px;}
.bar-chart .bar-col{flex:1; display:flex; flex-direction:column; align-items:center; justify-content:flex-end; height:100%; gap:8px;}
.bar-chart .bar{
  width:100%; max-width:34px;
  border-radius:8px 8px 3px 3px;
  background:linear-gradient(180deg, var(--primary-2), var(--primary));
  min-height:4px;
}
.bar-chart .bar-label{font-size:11px; color:var(--ink-soft);}
.bar-chart .bar-val{font-size:10.5px; color:var(--ink-soft); font-family:var(--font-mono);}

.donut-wrap{display:flex; flex-direction:column; align-items:center; justify-content:center; gap:16px; height:100%;}
.donut{width:132px; height:132px; border-radius:50%; display:flex; align-items:center; justify-content:center; position:relative;}
.donut .center{
  width:88px; height:88px; border-radius:50%; background:var(--surface);
  display:flex; flex-direction:column; align-items:center; justify-content:center;
}
.donut .center .n{font-family:var(--font-mono); font-weight:700; font-size:18px;}
.donut .center .l{font-size:10.5px; color:var(--ink-soft);}
.legend{display:flex; flex-direction:column; gap:8px; width:100%;}
.legend-item{display:flex; align-items:center; gap:8px; font-size:12.5px;}
.legend-dot{width:9px; height:9px; border-radius:50%; flex-shrink:0;}

/* ================= INVOICE / RECEIPT ================= */
.receipt-wrap{display:flex; justify-content:center; padding:20px 0 60px;}
.receipt{
  width:100%; max-width:380px; background:var(--surface); padding:32px 26px 24px;
  border-radius:var(--radius-lg);
  box-shadow:var(--shadow);
  border:1px solid var(--line);
}
.receipt-head{text-align:center; margin-bottom:18px;}
.receipt-head .brand-photo{width:150px; margin:0 auto 10px;}
.receipt-head .title{font-weight:700; font-size:18px;}
.receipt-head .meta{font-family:var(--font-mono); font-size:11.5px; color:var(--ink-soft); margin-top:4px;}
.receipt-divider{border-top:1px dashed var(--line); margin:14px 0;}
.receipt-row{display:flex; justify-content:space-between; font-size:13.5px; padding:4px 0;}
.receipt-row .num{font-family:var(--font-mono);}
.receipt-row.small{font-size:12px; color:var(--ink-soft);}
.receipt-total{
  display:flex; justify-content:space-between; font-family:var(--font-mono);
  font-size:19px; font-weight:700; padding-top:12px; margin-top:8px;
  border-top:2px solid var(--ink);
}
.receipt-status{text-align:center; margin-top:16px; font-size:12px;}
.receipt-bank{margin-top:4px;}
.receipt-bank-title{font-size:12px; font-weight:700; margin-bottom:6px;}
.print-actions{display:flex; flex-wrap:wrap; justify-content:center; align-items:center; gap:14px; margin-top:18px;}
.paper-toggle{display:flex; align-items:center; gap:14px; font-size:13.5px;}
.paper-toggle label{display:flex; align-items:center; gap:6px; cursor:pointer;}
.paper-toggle input{width:auto;}

/* A4 sheet (2 copies per page) - hidden except when printing in A4 mode */
.a4-sheet{display:none;}

/* ================= BANK INFO / PARTIAL PAYMENT ================= */
.bank-card{
  width:100%; max-width:380px; margin:0 auto; background:var(--surface);
  border:1px solid var(--line); border-radius:var(--radius-lg);
  padding:20px 22px; box-shadow:var(--shadow);
}
.bank-card h3{
  font-size:13.5px; font-weight:700; margin:0 0 14px;
  display:flex; align-items:center; gap:8px;
}
.bank-row{
  display:flex; align-items:center; gap:12px;
  padding:11px 0; border-bottom:1px solid var(--line);
}
.bank-row:last-child{border-bottom:none;}
.bank-dot{width:11px; height:11px; border-radius:50%; flex-shrink:0;}
.bank-row .label{font-size:12.5px; color:var(--ink-soft);}
.bank-row .num{font-family:var(--font-mono); font-weight:700; font-size:14.5px;}
.bank-note{font-size:11.5px; color:var(--ink-soft); margin-top:10px; text-align:center;}

.pay-card{
  width:100%; max-width:380px; margin:16px auto 0; background:var(--surface);
  border:1px solid var(--line); border-radius:var(--radius-lg);
  padding:20px 22px; box-shadow:var(--shadow);
}
.pay-card h3{font-size:13.5px; font-weight:700; margin:0 0 12px;}
.pay-row{display:flex; gap:10px;}
.pay-row input{flex:1;}
.pay-note{font-size:11px; color:var(--ink-soft); margin-top:8px;}

@media print{
  .sidebar, .topbar, .print-actions{display:none !important;}
  .content{padding:0; max-width:none;}
  .receipt-wrap{padding:0;}
  .receipt{box-shadow:none;}

  /* ฟอร์มบันทึกยอดชำระเป็นอินพุตที่กดบนกระดาษไม่ได้ ไม่ต้องพิมพ์ออกมา
     (เดิมพิมพ์ติดไปด้วยแล้วโดนตัดข้ามหน้ากระดาษ ทำให้ปุ่ม/ช่องกรอกล้น) */
  .pay-card{display:none !important;}

  /* กันการ์ดโดนตัดขาดครึ่งเวลาพิมพ์ข้ามหน้ากระดาษ */
  .receipt, .bank-card{page-break-inside:avoid; break-inside:avoid;}

  /* ตัดหน้ากระดาษระหว่างบิล/แผ่น - กำหนดผ่าน CSS ที่มีเงื่อนไข body class เท่านั้น
     (ห้ามใช้ inline style บนดิว ๆ เพราะพบว่าบางเบราว์เซอร์ยังคงตัดหน้าเปล่าตามสไตล์ inline
     แม้ element นั้นจะถูกซ่อนด้วย display:none อยู่ก็ตาม เช่นตอนสลับไปโหมด A4) */
  body:not(.paper-a4) .receipt-wrap.not-last{page-break-after:always;}
  body.paper-a4 .a4-sheet.not-last{page-break-after:always;}

  /* โหมดใบเสร็จ (ค่าเริ่มต้น): พิมพ์ใบแจ้งหนี้ใบเดียวตามปกติ ซ่อนแผ่น A4 */
  .a4-sheet{display:none !important;}

  /* โหมด A4: ซ่อนใบเสร็จปกติ/บัตรธนาคาร แล้วพิมพ์ A4 สำเนา 2 ชุดต่อแผ่นแทน */
  body.paper-a4 .receipt-wrap,
  body.paper-a4 .bank-card{display:none !important;}
  body.paper-a4 .a4-sheet{
    display:flex !important;
    flex-direction:column;
    width:100%;
  }
  @page{size:A4; margin:10mm;}
  /* สำคัญ: ห้ามใช้ max-height + overflow:hidden ตรงนี้เด็ดขาด เพราะเคยพบว่าบิลที่มีข้อมูลเยอะ
     (เบอร์โทร/ค่าใช้จ่ายอื่น/ชื่อยาว ฯลฯ) ทำให้เนื้อหาสูงเกินกล่อง แล้วเลขบัญชีธนาคารแถวสุดท้าย
     โดนตัดหายไปเงียบ ๆ โดยไม่มีใครสังเกต (อันตรายมาก เพราะเป็นข้อมูลการเงิน) จึงเปลี่ยนมาใช้
     min-height แทน + page-break-inside:avoid เพื่อให้ "บิลปกติทั่วไป" ยังคงพอดี 2 ห้อง/แผ่นได้
     แต่ถ้าบิลไหนเนื้อหายาวเป็นพิเศษ ระบบจะดันไปพิมพ์แผ่นถัดไปแทนการตัดข้อมูลทิ้ง */
  body.paper-a4 .a4-copy{
    min-height:124mm;
    overflow:visible;
    display:flex;
    justify-content:center;
    padding-bottom:4mm;
    margin-bottom:4mm;
    border-bottom:1px dashed #999;
    page-break-inside:avoid; break-inside:avoid;
  }
  body.paper-a4 .a4-copy:last-child{border-bottom:none; margin-bottom:0; padding-bottom:0;}
  body.paper-a4 .a4-copy .receipt{
    box-shadow:none;
    border:none;
    padding:5px 6px;
    width:100%;
    max-width:340px;
    font-size:12.5px;
  }
  body.paper-a4 .a4-copy .receipt-total{font-size:13px; padding-top:5px; margin-top:3px;}
  /* ย่อรูปโลโก้/แถว/ระยะห่างให้กระชับมากขึ้น ป้องกันเนื้อหาล้นเกินครึ่งแผ่น A4
     (วัดจริงแล้วเนื้อหาสูงเกินกล่องที่จัดไว้ ทำให้ห้องที่ 2 โดนดันไปอีกแผ่น) */
  body.paper-a4 .a4-copy .brand-photo{width:36px; margin:0 auto 3px;}
  body.paper-a4 .a4-copy .receipt-head{margin-bottom:4px;}
  body.paper-a4 .a4-copy .receipt-head .title{font-size:13px;}
  body.paper-a4 .a4-copy .receipt-divider{margin:3px 0;}
  body.paper-a4 .a4-copy .receipt-row{padding:0.5px 0;}
  body.paper-a4 .a4-copy .receipt-status{margin-top:4px;}
  body.paper-a4 .a4-copy .receipt-bank{margin-top:0;}
  body.paper-a4 .a4-copy .receipt-bank-title{margin-bottom:2px;}
  /* ตัดแถวเบอร์โทรออกในโหมด A4 (ข้อมูลซ้ำซ้อน ประหยัดที่เพราะพื้นที่ครึ่งแผ่นจำกัดมาก) */
  body.paper-a4 .a4-copy .receipt-row-phone{display:none;}
}

@media (max-width:1050px){
  .stat-row, .hero-row{grid-template-columns:repeat(2,1fr);}
  .quick-grid{grid-template-columns:repeat(3,1fr);}
  .chart-row{grid-template-columns:1fr;}
}
@media (max-width:800px){
  .layout{flex-direction:column;}
  .sidebar{width:100%; flex-direction:row; align-items:center; padding:14px 18px; overflow-x:auto;}
  .brand{flex-direction:row; align-items:center;}
  .brand-photo{width:42px; aspect-ratio:1/1; border-radius:12px; flex-shrink:0;}
  .brand-text .tag, .menu-label, .sidebar-foot{display:none;}
  .nav{flex-direction:row;}
  .content{padding:20px;}
  .topbar{padding:16px 20px;}
  .stat-row, .hero-row, .quick-grid{grid-template-columns:repeat(2,1fr);}
  .form-grid{grid-template-columns:1fr;}
  .receipt, .bank-card, .pay-card{padding-left:18px; padding-right:18px;}
  .pay-row{flex-wrap:wrap;}
  .pay-row button{width:100%;}
  .card{padding:16px;}
  .search-box{min-width:0; flex:1 1 100%; order:99;}
}
@media (max-width:420px){
  .content{padding:14px;}
  .receipt{padding:24px 16px 18px;}
  .card{padding:12px;}
  .btn{padding:9px 14px; font-size:13px;}
  .btn.small{padding:6px 11px; font-size:12px;}
  .table-wrap table{min-width:520px;}
}
