@import url('https://fonts.googleapis.com/css2?family=Sarabun:wght@300;400;600;700;800&display=swap');
:root{
  --bg:#f4f7fc;--card:#ffffff;--card-hover:#fafbff;--text:#1e2a3b;
  --muted:#6b7a90;--border:#e2e8f2;--border-hover:#c7d2e0;
  --primary:#4f46e5;--primary-light:#eef2ff;--primary-soft:rgba(79,70,229,.08);
  --teal:#0d9488;--teal-light:#f0fdfa;
  --amber:#d97706;--amber-light:#fffbeb;
  --rose:#e11d48;--rose-light:#fff1f2;
  --emerald:#059669;--emerald-light:#ecfdf5;
  --violet:#7c3aed;--violet-light:#f5f3ff;
  --sky:#0284c7;--sky-light:#f0f9ff;
  --radius:14px;--shadow:0 1px 3px rgba(0,0,0,.06),0 4px 16px rgba(0,0,0,.04);
  --shadow-lg:0 4px 24px rgba(0,0,0,.08);
}
*{box-sizing:border-box;margin:0;padding:0}
body{
  background:var(--bg);color:var(--text);
  font-family:'Sarabun',system-ui,-apple-system,sans-serif;
  min-height:100vh;line-height:1.6;
}
.page{padding:20px 28px;max-width:1600px;margin:0 auto}

/* Header */
.header{
  display:flex;align-items:center;gap:16px;
  background:#fff;border:1px solid var(--border);border-radius:var(--radius);
  padding:18px 28px;margin-bottom:16px;box-shadow:var(--shadow);
}
.header-icon{
  width:48px;height:48px;border-radius:12px;
  background:linear-gradient(135deg,var(--primary),var(--violet));
  display:flex;align-items:center;justify-content:center;font-size:24px;
  color:#fff;box-shadow:0 4px 12px rgba(79,70,229,.25);
}
.header .title{font-size:22px;font-weight:800;color:var(--text);letter-spacing:-.3px}
.header .badge{
  display:inline-block;background:var(--primary-light);color:var(--primary);
  padding:4px 14px;border-radius:999px;font-size:12px;font-weight:700;
  border:1px solid rgba(79,70,229,.15);margin-left:8px;
}
.header .sub{font-size:13px;color:var(--muted);margin-left:auto;font-weight:500}

/* Controls */
.controls{
  display:flex;flex-wrap:wrap;align-items:center;gap:10px;
  background:#fff;border:1px solid var(--border);border-radius:var(--radius);
  padding:14px 24px;margin-bottom:16px;box-shadow:var(--shadow);
}
.btn{
  border:1px solid var(--border);background:#fff;color:var(--text);
  padding:9px 18px;border-radius:10px;cursor:pointer;font-family:inherit;
  font-size:14px;font-weight:600;transition:all .2s;
}
.btn:hover{border-color:var(--primary);color:var(--primary);background:var(--primary-light);transform:translateY(-1px)}
.btn.active{
  background:var(--primary);color:#fff;
  border-color:var(--primary);box-shadow:0 2px 8px rgba(79,70,229,.25);
}
.controls input[type="text"]{
  border:1px solid var(--border);border-radius:10px;padding:9px 14px;
  background:#fff;color:var(--text);font-family:inherit;font-size:14px;
  width:160px;transition:border-color .2s;
}
.controls input[type="text"]:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(79,70,229,.1)}
.range-sep{color:var(--muted);font-size:13px;font-weight:600}

/* Filter Bar */
.filter-bar{
  display:flex;flex-wrap:wrap;align-items:center;gap:8px;
  background:#fff;border:1px solid var(--border);border-radius:var(--radius);
  padding:12px 20px;margin-bottom:16px;box-shadow:var(--shadow);
}
.filter-label{font-size:13px;font-weight:700;color:var(--muted);white-space:nowrap}
.filter-btn{
  border:1px solid var(--border);background:#fff;color:var(--text);
  padding:6px 14px;border-radius:8px;cursor:pointer;font-family:inherit;
  font-size:12px;font-weight:600;transition:all .2s;white-space:nowrap;
}
.filter-btn:hover{border-color:var(--primary);color:var(--primary);background:var(--primary-light)}
.filter-btn.active{background:var(--primary);color:#fff;border-color:var(--primary);box-shadow:0 2px 6px rgba(79,70,229,.2)}
.filter-groups{display:flex;flex-wrap:wrap;gap:6px}
.filter-detail-btn{background:var(--violet-light)!important;color:var(--violet)!important;border-color:rgba(124,58,237,.2)!important}
.filter-detail-btn:hover{background:var(--violet)!important;color:#fff!important}

/* Filter Dropdown */
.filter-select-wrap{position:relative}
.filter-dropdown{
  display:none;position:absolute;top:calc(100% + 8px);right:0;z-index:100;
  background:#fff;border:1px solid var(--border);border-radius:var(--radius);
  box-shadow:var(--shadow-lg);min-width:340px;max-height:440px;
  overflow:hidden;
}
.filter-dropdown.open{display:block}
.filter-dropdown-header{
  display:flex;align-items:center;justify-content:space-between;
  padding:14px 18px;border-bottom:1px solid var(--border);
  font-size:14px;font-weight:700;color:var(--text);
}
.filter-dd-close{
  border:none;background:none;cursor:pointer;font-size:16px;
  color:var(--muted);padding:4px 8px;border-radius:6px;transition:all .15s;
}
.filter-dd-close:hover{background:var(--rose-light);color:var(--rose)}
.filter-dd-actions{
  display:flex;gap:8px;padding:8px 18px;border-bottom:1px solid var(--border);
}
.filter-dd-btn{
  border:1px solid var(--border);background:#fff;color:var(--muted);
  padding:4px 12px;border-radius:6px;cursor:pointer;font-family:inherit;
  font-size:11px;font-weight:600;transition:all .15s;
}
.filter-dd-btn:hover{border-color:var(--primary);color:var(--primary);background:var(--primary-light)}
.filter-dd-list{max-height:260px;overflow-y:auto;padding:8px 0}
.filter-dd-group{
  padding:6px 18px;font-size:11px;font-weight:700;color:var(--muted);
  background:var(--bg);text-transform:uppercase;letter-spacing:.5px;
}
.filter-dd-item{
  display:flex;align-items:center;gap:10px;
  padding:8px 18px;cursor:pointer;transition:background .1s;
  font-size:13px;
}
.filter-dd-item:hover{background:var(--primary-soft)}
.filter-dd-item input[type="checkbox"]{
  width:16px;height:16px;cursor:pointer;
}
.filter-dd-item label{cursor:pointer;flex:1;user-select:none}
.filter-dd-apply{
  display:block;width:calc(100% - 36px);margin:12px 18px;
  padding:10px;border:none;border-radius:10px;
  background:var(--primary);color:#fff;font-family:inherit;
  font-size:13px;font-weight:700;cursor:pointer;
  transition:all .15s;
}
.filter-dd-apply:hover{background:var(--violet);box-shadow:0 2px 8px rgba(79,70,229,.3)}

/* Active filter label */
.filter-active{
  font-size:12px;color:var(--primary);font-weight:600;
  margin-left:auto;
}
.filter-active .filter-tag{
  display:inline-block;background:var(--primary-light);color:var(--primary);
  padding:2px 8px;border-radius:6px;font-size:11px;margin:1px;
  border:1px solid rgba(79,70,229,.15);
}

/* Tabs */
.tabs{
  display:flex;gap:4px;background:#fff;border:1px solid var(--border);
  border-radius:var(--radius);padding:5px;margin-bottom:16px;box-shadow:var(--shadow);
}
.tab{
  flex:1;text-align:center;padding:12px 16px;border-radius:10px;
  cursor:pointer;font-weight:700;font-size:14px;color:var(--muted);
  transition:all .25s;border:1px solid transparent;
}
.tab:hover{color:var(--text);background:var(--primary-light)}
.tab.active{
  color:#fff;background:var(--primary);
  box-shadow:0 2px 8px rgba(79,70,229,.2);
}
.tab-icon{margin-right:6px}

/* KPI Grid */
.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin-bottom:16px}
.kpi{
  background:#fff;border:1px solid var(--border);border-radius:var(--radius);
  padding:20px 22px;position:relative;overflow:hidden;transition:all .3s;
  box-shadow:var(--shadow);
}
.kpi:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}
.kpi::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;border-radius:var(--radius) var(--radius) 0 0}
.kpi:nth-child(1)::before{background:linear-gradient(90deg,var(--primary),var(--violet))}
.kpi:nth-child(2)::before{background:linear-gradient(90deg,var(--teal),var(--emerald))}
.kpi:nth-child(3)::before{background:linear-gradient(90deg,var(--amber),#f97316)}
.kpi:nth-child(4)::before{background:linear-gradient(90deg,var(--emerald),var(--teal))}
.kpi:nth-child(5)::before{background:linear-gradient(90deg,var(--sky),var(--primary))}
.kpi:nth-child(6)::before{background:linear-gradient(90deg,var(--violet),var(--rose))}
.kpi-label{font-size:13px;color:var(--muted);font-weight:600;margin-bottom:6px}
.kpi-value{font-size:28px;font-weight:800;letter-spacing:-.5px;color:var(--text)}
.kpi-sub{font-size:12px;color:var(--muted);margin-top:2px}
.kpi-icon{position:absolute;top:16px;right:18px;font-size:26px;opacity:.18}

/* Panels */
.panel{display:none}
.panel.active{display:block}

/* Cards */
.card{
  background:#fff;border:1px solid var(--border);border-radius:var(--radius);
  padding:22px;margin-bottom:16px;box-shadow:var(--shadow);
}
.card h3{font-size:15px;font-weight:700;color:var(--muted);margin-bottom:14px}

/* Tables */
.table-wrap{overflow-x:auto;border-radius:10px;border:1px solid var(--border)}
table{width:100%;border-collapse:collapse;font-size:13px}
thead{background:var(--primary-light)}
th{padding:12px 14px;text-align:left;font-weight:700;color:var(--primary);
  border-bottom:2px solid var(--border);white-space:nowrap;position:sticky;top:0;background:var(--primary-light);z-index:2}
td{padding:10px 14px;border-bottom:1px solid var(--border);white-space:nowrap}
tbody tr{transition:background .15s}
tbody tr:hover{background:var(--primary-soft)}
tbody tr:nth-child(even){background:#fafbff}

/* Badges */
.status-badge{display:inline-block;padding:3px 10px;border-radius:999px;font-size:11px;font-weight:700}
.status-admit{background:var(--emerald-light);color:var(--emerald);border:1px solid rgba(5,150,105,.2)}
.status-wait{background:var(--amber-light);color:var(--amber);border:1px solid rgba(217,119,6,.2)}
.status-hhc-y{background:var(--primary-light);color:var(--primary);border:1px solid rgba(79,70,229,.2)}
.status-hhc-n{background:#f8fafc;color:var(--muted);border:1px solid var(--border)}

/* Money */
.money{font-weight:700;font-variant-numeric:tabular-nums}
.money-pos{color:var(--emerald)}
.money-neg{color:var(--rose)}
.money-wait{color:var(--amber)}

/* Charts */
.chart-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:16px}
.chart-box{
  background:#fff;border:1px solid var(--border);border-radius:var(--radius);
  padding:22px;min-height:300px;box-shadow:var(--shadow);
}
.chart-box h3{font-size:14px;font-weight:700;color:var(--muted);margin-bottom:12px}
.chart-box canvas{width:100%!important;height:260px!important}

/* Summary row */
.summary-row{
  display:flex;align-items:center;gap:16px;
  background:var(--primary-light);border:1px solid rgba(79,70,229,.15);
  border-radius:var(--radius);padding:18px 28px;margin-bottom:16px;
}
.summary-item{text-align:center;flex:1}
.summary-label{font-size:13px;color:var(--muted);font-weight:600}
.summary-value{font-size:22px;font-weight:800;margin-top:4px;color:var(--text)}

/* Loading */
.loading{
  display:flex;align-items:center;justify-content:center;
  padding:60px;color:var(--muted);font-size:15px;
}
.loading::before{
  content:'';width:22px;height:22px;border:3px solid var(--border);
  border-top-color:var(--primary);border-radius:50%;margin-right:12px;
  animation:spin .8s linear infinite;
}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes fadeIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.fade-in{animation:fadeIn .35s ease-out}

/* Footer */
.footer{
  text-align:center;padding:16px;color:var(--muted);font-size:12px;
  border-top:1px solid var(--border);margin-top:24px;
}

/* Flatpickr Thai overrides */
.flatpickr-calendar{font-family:'Sarabun',sans-serif!important;border-radius:12px!important;box-shadow:var(--shadow-lg)!important;border:1px solid var(--border)!important}
.flatpickr-day.selected{background:var(--primary)!important;border-color:var(--primary)!important}
.flatpickr-day:hover{background:var(--primary-light)!important}

/* PDPA Badge */
.badge-pdpa{background:var(--emerald-light)!important;color:var(--emerald)!important;border-color:rgba(5,150,105,.2)!important;font-size:11px!important}

/* Search button */
.btn-search{background:var(--primary);color:#fff;border-color:var(--primary)}
.btn-search:hover{background:var(--violet);border-color:var(--violet);color:#fff}

/* Bed badge */
.bed-badge{
  display:inline-flex;align-items:center;gap:4px;
  background:var(--primary-light);color:var(--primary);
  padding:4px 12px;border-radius:8px;font-weight:700;font-size:13px;
  border:1px solid rgba(79,70,229,.15);
}
.bed-badge-lg{
  display:inline-flex;align-items:center;gap:6px;
  background:var(--primary);color:#fff;
  padding:6px 16px;border-radius:10px;font-weight:800;font-size:15px;
  box-shadow:0 2px 8px rgba(79,70,229,.2);
}

/* Bed card - grouped per bed */
.bed-card{
  background:#fff;border:1px solid var(--border);border-radius:var(--radius);
  margin-bottom:14px;overflow:hidden;box-shadow:var(--shadow);
  transition:all .2s;
}
.bed-card:hover{box-shadow:var(--shadow-lg);border-color:var(--border-hover)}
.bed-header{
  display:flex;align-items:center;justify-content:space-between;
  padding:16px 20px;background:linear-gradient(135deg,var(--primary-light),#f8f7ff);
  border-bottom:1px solid var(--border);
}
.bed-info{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.bed-meta{font-size:13px;color:var(--muted);font-weight:500}
.bed-total{font-size:14px;color:var(--muted)}
.bed-card .table-wrap{border:none;border-radius:0}
.bed-card table{font-size:12.5px}
.bed-card th{background:#fafbff;font-size:12px;padding:8px 14px}
.bed-card td{padding:8px 14px}

/* Subtotal row */
.subtotal-row{background:var(--primary-light)!important}
.subtotal-row td{border-bottom:none}

/* Grand total bar */
.grand-total{
  display:flex;align-items:center;justify-content:space-between;
  background:linear-gradient(135deg,var(--primary-light),var(--violet-light));
  border:2px solid rgba(79,70,229,.2);border-radius:var(--radius);
  padding:18px 28px;margin-top:16px;
}
.grand-total span{font-size:15px;font-weight:700;color:var(--text)}

/* Bed items list (visual bar style) */
.bed-items-list{padding:12px 20px}
.bed-item-row{
  display:grid;grid-template-columns:1fr 120px 80px 110px;
  align-items:center;gap:12px;padding:10px 0;
  border-bottom:1px solid var(--border);
}
.bed-item-row:last-child{border-bottom:none}
.bed-item-name{font-size:13px;font-weight:600;color:var(--text)}
.bed-item-bar{height:8px;background:var(--border);border-radius:99px;overflow:hidden}
.bed-item-fill{height:100%;background:linear-gradient(90deg,var(--primary),var(--violet));border-radius:99px;transition:width .6s ease-out;min-width:4px}
.bed-item-qty{font-size:12px;color:var(--muted);text-align:right;font-weight:600}
.bed-item-amount{font-size:13px;text-align:right}

/* Bed detail grid */
.bed-detail-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(450px,1fr));gap:14px}

/* Summary value small */
.summary-value small{font-size:13px;color:var(--muted);font-weight:500}

/* ========== Responsive ========== */

/* Tablet */
@media(max-width:1024px){
  .page{padding:16px}
  .bed-detail-grid{grid-template-columns:1fr}
  .chart-grid{grid-template-columns:1fr}
}

/* Mobile */
@media(max-width:768px){
  .page{padding:10px 8px}

  /* Header */
  .header{flex-wrap:wrap;padding:14px 16px;gap:10px}
  .header-icon{width:40px;height:40px;font-size:20px;border-radius:10px}
  .header .title{font-size:17px}
  .header .badge{font-size:10px;padding:3px 10px}
  .header .sub{margin-left:0;width:100%;font-size:12px;margin-top:4px}

  /* Controls */
  .controls{padding:10px 12px;gap:6px}
  .controls .btn{padding:8px 10px;font-size:11px;min-width:0}
  .controls input[type="text"]{width:100%;min-width:0}
  .range-sep{display:none}

  /* Filter bar */
  .filter-bar{padding:10px 12px;gap:6px}
  .filter-label{font-size:12px;width:100%}
  .filter-btn{padding:5px 10px;font-size:11px}
  .filter-groups{width:100%;overflow-x:auto;flex-wrap:nowrap;-webkit-overflow-scrolling:touch;padding-bottom:4px}
  .filter-groups::-webkit-scrollbar{height:3px}
  .filter-groups::-webkit-scrollbar-thumb{background:var(--border);border-radius:99px}
  .filter-select-wrap{width:100%}
  .filter-detail-btn{width:100%;text-align:center}
  .filter-dropdown{position:fixed;top:auto;bottom:0;left:0;right:0;min-width:100%;max-height:70vh;border-radius:16px 16px 0 0;z-index:999}
  .filter-active{width:100%;margin-left:0;margin-top:4px}

  /* KPI */
  .kpi-grid{grid-template-columns:repeat(2,1fr);gap:8px}
  .kpi{padding:14px 12px}
  .kpi-value{font-size:20px}
  .kpi-label{font-size:11px}
  .kpi-sub{font-size:11px}
  .kpi-icon{font-size:20px;top:10px;right:10px}

  /* Tabs */
  .tabs{flex-wrap:wrap;gap:3px;padding:4px}
  .tab{flex:none;width:calc(50% - 2px);font-size:11px;padding:10px 6px}
  .tab-icon{margin-right:4px;font-size:13px}

  /* Tables */
  .table-wrap{border-radius:8px;margin:0 -2px}
  table{font-size:12px}
  th{padding:8px 10px;font-size:11px}
  td{padding:8px 10px;font-size:12px}

  /* Bed cards */
  .bed-card{border-radius:10px}
  .bed-header{flex-direction:column;gap:8px;align-items:flex-start;padding:12px 14px}
  .bed-badge-lg{font-size:13px;padding:5px 12px}
  .bed-meta{font-size:11px}
  .bed-total{font-size:13px}
  .bed-card th{padding:6px 10px;font-size:11px}
  .bed-card td{padding:6px 10px;font-size:11px}

  /* Bed items list */
  .bed-items-list{padding:8px 12px}
  .bed-item-row{grid-template-columns:1fr 60px 80px;gap:6px;padding:8px 0}
  .bed-item-bar{display:none}
  .bed-item-name{font-size:12px}
  .bed-item-qty{font-size:11px}
  .bed-item-amount{font-size:12px}

  /* Bed detail grid */
  .bed-detail-grid{grid-template-columns:1fr;gap:10px}

  /* Grand total */
  .grand-total{padding:14px 16px;flex-direction:column;gap:6px;text-align:center}
  .grand-total span{font-size:13px}

  /* Summary */
  .summary-row{flex-direction:column;gap:10px;padding:14px 16px}
  .summary-value{font-size:18px}

  /* Chart */
  .chart-grid{grid-template-columns:1fr}
  .chart-box{padding:14px}
  .chart-box canvas{height:200px!important}

  /* Cards */
  .card{padding:14px;border-radius:10px}
  .card h3{font-size:14px}

  /* Footer */
  .footer{font-size:11px;padding:12px 8px}
}

/* Small phone */
@media(max-width:400px){
  .page{padding:6px 4px}
  .kpi-grid{grid-template-columns:1fr 1fr;gap:6px}
  .kpi{padding:12px 10px}
  .kpi-value{font-size:18px}
  .tab{width:calc(50% - 2px);font-size:10px;padding:8px 4px}
  .header .title{font-size:15px}
  .controls .btn{font-size:10px;padding:6px 8px}
  .filter-btn{font-size:10px;padding:4px 8px}
  .bed-item-row{grid-template-columns:1fr 70px;gap:4px}
  .bed-item-qty{display:none}
  td,th{padding:6px 8px;font-size:11px}
}

/* Print */
@media print{
  @page{size:A4 landscape;margin:10mm}
  .controls,.tabs,.filter-bar{display:none}
  .card,.kpi,.bed-card{border:1px solid #ddd;box-shadow:none;break-inside:avoid}
  .panel{display:block!important}
}
