/*
Theme Name: ThaiOrganic Hub Modular
Theme URI: https://thaiorganicshub.com
Author: ThaiOrganicHub / AxxoChem
Description: ThaiOrganicHub ERP front-end theme. UI-only; business logic lives in plugins.
Version: 3.31.99
Requires at least: 7.0
Requires PHP: 8.1
Text Domain: thaiorganic-hub
*/

:root{
  --brand:#174f3f;--brand-deep:#0d3e31;--brand-soft:#e8f3ed;--accent:#6f4d8b;
  --ink:#102f27;--muted:#435f55;--line:#dce7e1;--bg:#f3f8f5;--white:#fff;
  --warn:#9a6500;--danger:#b42318;--shadow:0 12px 34px rgba(18,72,52,.08);--sidebar-w:245px
}
*{box-sizing:border-box}html{margin-top:0!important}
body{margin:0;font-family:"TH Sarabun New","Sarabun",Tahoma,sans-serif;color:var(--ink);background:var(--bg);font-size:21px;line-height:1.55}
body.admin-bar{padding-top:0}#wpadminbar{display:none!important}button,input,select,textarea{font:inherit}.hidden{display:none!important}
.primary,.secondary,button{border:0;border-radius:11px;padding:10px 15px;cursor:pointer}.primary{background:var(--brand);color:#fff;font-weight:700}.secondary{background:#e8f3ed;color:var(--brand);font-weight:650}.danger{background:#fee4e2;color:#b42318}

.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at top,#fff 0,#f2f8f5 44%,#eaf3ee 100%)}
.login-card{width:min(470px,100%);background:#fff;padding:38px 42px;border-radius:24px;box-shadow:0 24px 70px rgba(19,66,50,.12);text-align:center;border:1px solid #e7efeb}
.login-brand-logo{display:block;width:min(265px,76%);height:auto;margin:0 auto 22px}.login-card h1{font-size:37px;margin:8px 0 4px;color:var(--brand-deep)}
.login-card p{color:var(--muted);margin:0 0 24px}.login-card label{text-align:left;display:block;margin:13px 0;font-weight:650}
.login-card input[type=text],.login-card input[type=password]{width:100%;margin-top:6px;border:1px solid #cbdcd3;border-radius:10px;padding:11px 13px}
.login-card input[type=submit]{width:100%;margin-top:10px;border:0;border-radius:10px;padding:12px;background:var(--brand);color:#fff;font-weight:700}
.fallback-logo{width:min(280px,80%);height:auto;margin-bottom:16px}

.toh-app{display:grid;grid-template-columns:var(--sidebar-w) 1fr;min-height:100vh}
.toh-sidebar{background:linear-gradient(180deg,#104737 0%,#0c3b2f 100%);color:#fff;padding:14px 10px 14px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;border-right:1px solid rgba(255,255,255,.08)}
.logo{
  display:flex;
  align-items:center;
  justify-content:center;
  min-height:52px;
  padding:3px 8px;
  margin:2px 6px 8px;
  background:transparent;
  border-radius:0;
  box-shadow:none
}
.logo img{
  display:block;
  width:auto;
  max-width:118px;
  max-height:38px;
  object-fit:contain
}
#toh-nav{overflow-y:auto;overflow-x:hidden;padding:0 3px 15px;scrollbar-width:thin;scrollbar-color:#5c8a78 transparent}
#toh-nav::-webkit-scrollbar{width:7px}#toh-nav::-webkit-scrollbar-thumb{background:#5c8a78;border-radius:999px}
nav button,.logout{
  width:100%;
  text-align:left;
  background:transparent;
  color:#f0f7f4;
  margin:2px 0;
  padding:9px 10px;
  font-size:18px;
  font-weight:600
}
nav button{display:flex;align-items:center;gap:10px;border:1px solid transparent;transition:.15s ease}
nav button:hover{background:rgba(255,255,255,.08);color:#fff;border-color:rgba(255,255,255,.08)}
nav button.active{background:#1f6651;color:#fff;box-shadow:inset 3px 0 0 #cfe7dc;font-weight:700}
.nav-icon{
  width:21px;
  display:inline-grid;
  place-items:center;
  font-size:14px;
  opacity:.95
}
.nav-head{
  padding:15px 10px 5px;
  font-size:14px;
  color:#c7ded5;
  letter-spacing:.01em;
  font-weight:700
}
.logout{margin-top:auto;border-top:1px solid rgba(255,255,255,.14);border-radius:0;font-weight:700;padding-top:14px}.logout:hover{color:#fff;background:rgba(255,255,255,.06)}

.toh-main{min-width:0}.toh-header{min-height:92px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:14px 30px;gap:18px;position:sticky;top:0;z-index:20;box-shadow:0 3px 12px rgba(18,72,52,.03)}
.toh-header h1{font-size:35px;margin:0;color:#082e26;line-height:1.1;font-weight:700}.toh-header p{margin:5px 0 0;color:#4a675d;font-size:19px;font-weight:600}
.header-actions{margin-left:auto;display:flex;align-items:center;gap:14px}
.notify-btn{position:relative;width:46px;height:46px;min-width:46px;padding:0;border-radius:50%;background:#edf6f1;color:var(--brand);display:grid;place-items:center;border:1px solid #dcebe4}
.notify-btn:hover{background:#e2f1e9}.notify-btn svg{width:22px;height:22px}
.notify-count{position:absolute;right:-4px;top:-5px;min-width:20px;height:20px;padding:0 5px;border-radius:999px;background:#c9342c;color:#fff;display:none;place-items:center;font-size:11px;line-height:20px;border:2px solid #fff;font-family:Tahoma,sans-serif}
.notify-count.has-count{display:grid}
.user-profile{display:flex;align-items:center;gap:11px;min-width:0;padding:5px 0}.user-avatar{width:50px;height:50px;border-radius:50%;object-fit:cover;border:2px solid #dcebe4;background:#eef3f0;flex:0 0 auto}
.user-meta{min-width:0}.user-name{display:block;font-size:22px;font-weight:700;color:#11372d;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:260px}
.user-position{display:block;color:#4c695f;font-size:18px;font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:260px}
.menu{display:none;background:#e9f3ee;color:var(--brand);font-size:20px}

.content{padding:28px 30px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.stat,.panel{background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:0 5px 20px rgba(25,67,51,.04)}
.stat{padding:22px 24px}.stat small{color:#405e54;font-size:19px;font-weight:650}.stat strong{display:block;font-size:40px;margin-top:6px;color:#0b3c30;font-weight:700}
.dashboard-grid{display:grid;grid-template-columns:1.35fr 1fr;gap:20px;margin-top:20px}.panel{padding:22px;overflow:auto}
.panel-head,.toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.panel h2{font-size:29px;margin:0;color:#10382d;font-weight:700}.toolbar input,.toolbar select{max-width:360px}
.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;white-space:nowrap}th,td{text-align:left;padding:12px 10px;border-bottom:1px solid #e8efeb;font-size:19px;color:#11342b}th{color:#35564b;font-size:17px;font-weight:700}
tr.clickable:hover{background:#f0f7f3;cursor:pointer}.badge{display:inline-block;padding:4px 9px;border-radius:999px;background:#e6f2ec;color:#176448;font-size:13px;font-weight:700}
.badge.pending_approval,.badge.submitted,.badge.qc_hold{background:#fff2cc;color:#8a5c00}.badge.rejected,.badge.cancelled,.badge.voided{background:#fee4e2;color:#b42318}
.empty{padding:36px;text-align:center;color:#557168;font-size:20px;font-weight:600}input,select,textarea{border:1px solid #cbdcd3;border-radius:9px;padding:10px;background:#fff;color:var(--ink)}
dialog{width:min(920px,94vw);max-height:90vh;border:0;border-radius:20px;padding:26px;box-shadow:0 30px 90px rgba(0,0,0,.25);overflow:auto}dialog::backdrop{background:#10271eaa}
.dialog-head{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:1px solid var(--line);padding-bottom:14px;margin-bottom:18px}.dialog-head h2{margin:0;font-size:28px}.dialog-head p{margin:4px 0;color:var(--muted)}
.icon-btn{font-size:25px;background:#edf4f0;padding:3px 11px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px}.form-grid label{display:flex;flex-direction:column;gap:6px;font-weight:650;font-size:18px}.form-grid .wide{grid-column:1/-1}
.line-row{display:grid;grid-template-columns:1.7fr .55fr .7fr .5fr .7fr .65fr auto;gap:8px;margin:8px 0}.line-row input,.line-row select{min-width:0;width:100%}
.dialog-actions{display:flex;justify-content:flex-end;gap:10px;border-top:1px solid var(--line);margin-top:22px;padding-top:17px}.detail-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:18px}
.detail-grid div{background:#f2f7f4;padding:12px;border-radius:10px}.detail-grid small{display:block;color:var(--muted)}
#toh-toast{position:fixed;right:22px;top:20px;z-index:100;background:#163c2f;color:#fff;padding:12px 18px;border-radius:10px;transform:translateY(-90px);transition:.25s}#toh-toast.show{transform:translateY(0)}
.notify-pop{position:fixed;right:26px;top:84px;width:min(420px,calc(100vw - 30px));max-height:70vh;overflow:auto;background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:0 12px 34px rgba(18,72,52,.18);z-index:50;padding:12px}
.notify-item{padding:10px;border-bottom:1px solid #edf2ef}.notify-item:last-child{border:0}.notify-item small{color:var(--muted)}
.master-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}.muted{color:var(--muted)}
.wp-fallback{max-width:760px;margin:80px auto;background:#fff;padding:30px;border-radius:18px;box-shadow:var(--shadow);text-align:center}
.module-section{margin-top:18px;padding-top:10px;border-top:1px solid var(--line)}.checkbox-field{display:flex!important;flex-direction:row!important;align-items:center;gap:8px;padding-top:25px}.checkbox-field input{width:auto}.section-title{margin:22px 0 10px;font-size:23px}

@media(max-width:1120px){:root{--sidebar-w:265px}.stats{grid-template-columns:repeat(2,1fr)}.dashboard-grid{grid-template-columns:1fr}.line-row{grid-template-columns:1fr 1fr 1fr}.line-row>*:first-child{grid-column:1/-1}}
@media(max-width:980px){.toh-app{grid-template-columns:1fr}.toh-sidebar{position:fixed;z-index:30;width:285px;transform:translateX(-100%);transition:.2s}.toh-sidebar.open{transform:none}.menu{display:block}.content{padding:18px}.toh-header{padding:12px 18px}}
@media(max-width:720px){.user-meta{display:none}.user-avatar{width:42px;height:42px}.toh-header h1{font-size:25px}.toh-header p{font-size:14px}}
@media(max-width:620px){.stats{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.form-grid .wide{grid-column:auto}.line-row{grid-template-columns:1fr 1fr}.line-row>*:first-child{grid-column:1/-1}.detail-grid{grid-template-columns:1fr}.content{padding:12px}dialog{padding:18px}}


/* v3.2.2 readability boost */
.toh-sidebar nav button,
.toh-sidebar .logout{font-size:21px!important}
.toh-sidebar .nav-head{font-size:17px!important}
.toh-header h1{font-size:35px!important}
.toh-header p{font-size:19px!important}
.stat small{font-size:19px!important}
.stat strong{font-size:40px!important}
.panel h2{font-size:29px!important}
table th{font-size:17px!important}
table td{font-size:19px!important}
.toolbar input,.toolbar select,
input,select,textarea,button{font-size:19px}
.form-grid label{font-size:18px!important}
.user-name{font-size:22px!important}
.user-position{font-size:18px!important}
.badge{font-size:15px!important}
.empty{font-size:20px!important}


/* v3.2.3 sidebar compact mode */
.toh-sidebar nav button,
.toh-sidebar .logout{
  font-size:18px!important;
  padding:9px 10px!important;
}
.toh-sidebar .nav-head{
  font-size:14px!important;
  padding:15px 10px 5px!important;
}
.toh-sidebar .nav-icon{
  width:21px!important;
  font-size:14px!important;
}
@media(max-width:1120px){
  :root{--sidebar-w:230px}
}
@media(max-width:980px){
  .toh-sidebar{width:250px}
}


/* v3.2.4 branching workflow */
.badge.success{background:#dcfce7!important;color:#166534!important;border:1px solid #86efac}
.badge.danger{background:#fee2e2!important;color:#b91c1c!important;border:1px solid #fca5a5}
.badge.warning{background:#fef3c7!important;color:#92400e!important;border:1px solid #fcd34d}
.badge.info{background:#dbeafe!important;color:#1d4ed8!important;border:1px solid #93c5fd}
.badge.neutral{background:#eef2f1!important;color:#31564a!important;border:1px solid #cbd9d4}
.transition-picker{display:flex;align-items:flex-end;gap:10px;margin-right:auto;padding:12px 14px;background:#f6faf8;border:1px solid var(--line);border-radius:12px}
.transition-picker label{display:flex;flex-direction:column;gap:5px;font-weight:700;color:#21483b}
.transition-picker select{min-width:260px;background:#fff}
@media(max-width:620px){.transition-picker{width:100%;flex-direction:column;align-items:stretch}.transition-picker select{min-width:0;width:100%}}


/* v3.2.5 CRM assignment and follow-up */
.field-help{
  display:block;
  margin-top:3px;
  color:#526d63;
  font-size:14px;
  font-weight:500
}
.due-edit{
  display:flex;
  align-items:center;
  gap:7px;
  margin-top:8px
}
.due-edit input{
  width:auto;
  min-width:150px;
  padding:6px 8px;
  font-size:15px
}
.due-edit button{
  padding:7px 10px;
  font-size:15px
}
.task-actions{
  display:flex;
  gap:7px;
  flex-wrap:wrap
}

/* v3.2.6 CRM amount editor */
#toh-lead-value{max-width:160px}


/* v3.2.7 CRM owner / admin delete */
.owner-chip{
  display:inline-flex;
  align-items:center;
  min-height:30px;
  padding:4px 10px;
  border-radius:999px;
  background:#eef6f2;
  color:#174f3f;
  border:1px solid #d1e6dc;
  font-weight:700;
  white-space:nowrap
}
.lead-delete-btn{
  border:1px solid #f1aaa6;
  background:#fff4f3;
  color:#b42318;
  border-radius:9px;
  padding:7px 12px;
  font-weight:700;
  cursor:pointer
}
.lead-delete-btn:hover{
  background:#fee4e2;
  border-color:#e77872;
  color:#8d1d14
}


/* v3.2.8 Lead owner filter + Excel export */
.crm-toolbar{
  align-items:flex-end
}
.crm-filter-group{
  display:flex;
  gap:10px;
  flex:1;
  min-width:0
}
.crm-filter-group input{
  flex:1;
  min-width:230px
}
.crm-filter-group select{
  min-width:230px;
  max-width:320px
}
.crm-toolbar-actions{
  display:flex;
  gap:10px;
  flex-wrap:wrap;
  justify-content:flex-end
}
.excel-export-btn{
  background:#e8f4ed!important;
  color:#17623f!important;
  border:1px solid #bcdccb!important;
  font-weight:700!important
}
.excel-export-btn:hover{
  background:#d9ecdf!important
}
.filter-summary{
  display:flex;
  gap:16px;
  align-items:center;
  flex-wrap:wrap;
  margin:-2px 0 14px;
  padding:8px 12px;
  background:#f6faf8;
  border:1px solid #e1ebe6;
  border-radius:10px;
  color:#49675c;
  font-size:16px;
  font-weight:600
}
@media(max-width:850px){
  .crm-toolbar{
    align-items:stretch;
    flex-direction:column
  }
  .crm-filter-group{
    width:100%;
    flex-direction:column
  }
  .crm-filter-group input,
  .crm-filter-group select{
    min-width:0;
    max-width:none;
    width:100%
  }
  .crm-toolbar-actions{
    width:100%;
    justify-content:flex-start
  }
}


/* v3.2.9 CRM Dashboard */
.dashboard-section{
  margin-bottom:24px
}
.section-heading{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:16px;
  margin-bottom:14px
}
.section-heading h2{
  margin:0;
  font-size:28px;
  color:#10382d
}
.section-heading p{
  margin:4px 0 0;
  color:#526d63;
  font-size:17px;
  font-weight:600
}
.crm-kpi-grid{
  grid-template-columns:repeat(4,minmax(0,1fr))
}
.crm-stat{
  position:relative;
  overflow:hidden
}
.crm-stat::before{
  content:"";
  position:absolute;
  left:0;
  top:0;
  bottom:0;
  width:5px
}
.crm-stat.pipeline::before{
  background:#2e6c59
}
.crm-stat.won::before{
  background:#22a06b
}
.crm-stat.lost::before{
  background:#d84a44
}
.crm-stat.unqualified::before{
  background:#c66a28
}
.crm-stat.won strong{
  color:#127a4f
}
.crm-stat.lost strong{
  color:#b42318
}
.crm-stat.unqualified strong{
  color:#9a4f16
}
.stat-foot{
  display:block;
  margin-top:8px;
  color:#5c746b;
  font-size:15px;
  font-weight:600
}
.crm-breakdown-panel{
  margin-top:18px
}
.crm-breakdown-panel table td:nth-child(2),
.crm-breakdown-panel table th:nth-child(2){
  text-align:center
}
.crm-breakdown-panel table td:nth-child(3),
.crm-breakdown-panel table th:nth-child(3){
  text-align:right
}
.system-stat-grid{
  grid-template-columns:repeat(3,minmax(0,1fr))
}
.compact-stat strong{
  font-size:32px!important
}
@media(max-width:1150px){
  .crm-kpi-grid{
    grid-template-columns:repeat(2,minmax(0,1fr))
  }
}
@media(max-width:700px){
  .crm-kpi-grid,
  .system-stat-grid{
    grid-template-columns:1fr
  }
}


/* =========================================================
   v3.3.0 Quotation Page
   ========================================================= */
.quotation-flow{
  display:flex;
  flex-direction:column;
  gap:18px
}
.quotation-steps{
  display:grid;
  grid-template-columns:repeat(6,minmax(0,1fr));
  gap:8px;
  padding:10px;
  border:1px solid #dfeae5;
  border-radius:14px;
  background:#f8fbf9
}
.quote-step{
  display:flex;
  align-items:center;
  gap:8px;
  min-height:48px;
  padding:8px 10px;
  border-radius:10px;
  color:#587169;
  font-size:15px;
  font-weight:700
}
.quote-step b{
  display:grid;
  place-items:center;
  width:27px;
  height:27px;
  border-radius:50%;
  background:#e3eee9;
  color:#245845
}
.quote-step.active{
  background:#eaf5ef;
  color:#184d3b
}
.quote-step.active b{
  background:#205c48;
  color:#fff
}
.quote-panel-head{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:15px
}
.quote-panel-head h2,
.quote-list-panel h2{
  margin:0
}
.quote-count{
  display:inline-flex;
  align-items:center;
  min-height:34px;
  padding:5px 12px;
  border-radius:999px;
  background:#e9f4ee;
  color:#1a6047;
  border:1px solid #cae2d5;
  font-weight:700;
  white-space:nowrap
}
.quote-convert-btn{
  white-space:nowrap
}
.quote-line-row{
  display:grid;
  grid-template-columns:
    minmax(180px,1.5fr)
    minmax(190px,1.4fr)
    .55fr
    .75fr
    .65fr
    .55fr
    auto;
  gap:8px;
  margin:8px 0;
  align-items:center
}
.quote-line-row input,
.quote-line-row select{
  min-width:0;
  width:100%
}
.quote-line-remove{
  min-width:42px
}
.quote-source-bar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:12px 14px;
  margin-bottom:16px;
  border-radius:11px;
  background:#f4f8f6;
  border:1px solid #dce7e2
}
.quote-source-bar>div{
  display:flex;
  flex-direction:column;
  gap:4px
}
.quote-source-bar small{
  color:#62786f;
  font-size:14px
}
.quote-source-bar strong{
  font-size:18px
}
.quote-total-box{
  width:min(440px,100%);
  margin:16px 0 0 auto;
  padding:12px 14px;
  border:1px solid #dce7e2;
  border-radius:12px;
  background:#fafcfb
}
.quote-total-box>div{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:20px;
  padding:5px 0
}
.quote-total-box .grand{
  margin-top:5px;
  padding-top:10px;
  border-top:2px solid #2c624f;
  font-size:20px;
  color:#174b3a
}
.quote-note{
  margin-top:14px;
  padding:12px 14px;
  border-radius:10px;
  background:#fafcfb;
  border:1px solid #e1e9e5
}
.quote-note small{
  display:block;
  margin-bottom:4px;
  color:#60756d;
  font-weight:700
}
.quote-detail-actions{
  flex-wrap:wrap
}
.danger-action{
  border:1px solid #eeaaa5;
  background:#fff4f3;
  color:#b42318;
  border-radius:10px;
  padding:10px 16px;
  font-weight:700;
  cursor:pointer
}
.danger-action:hover{
  background:#fee4e2
}
@media(max-width:1200px){
  .quotation-steps{
    grid-template-columns:repeat(3,minmax(0,1fr))
  }
  .quote-line-row{
    grid-template-columns:1fr 1fr 1fr
  }
  .quote-line-row>*:first-child,
  .quote-line-row>*:nth-child(2){
    grid-column:span 1
  }
}
@media(max-width:700px){
  .quotation-steps{
    grid-template-columns:1fr 1fr
  }
  .quote-panel-head{
    flex-direction:column
  }
  .quote-line-row{
    grid-template-columns:1fr 1fr
  }
  .quote-line-row>*:first-child,
  .quote-line-row>*:nth-child(2){
    grid-column:1/-1
  }
}


/* =========================================================
   v3.3.1 Contact Master / Import
   ========================================================= */
.master-partner-toolbar{
  align-items:flex-end
}
.master-toolbar-actions{
  display:flex;
  gap:10px;
  flex-wrap:wrap;
  justify-content:flex-end
}
.partner-import-note{
  display:flex;
  gap:12px;
  flex-wrap:wrap;
  align-items:center;
  margin:10px 0 14px;
  padding:10px 12px;
  border:1px solid #dbe8e2;
  border-radius:10px;
  background:#f7faf8;
  color:#4f6b61;
  font-size:15px
}
.partner-import-note strong{
  color:#174e3c
}
#toh-import-progress{
  margin-left:auto;
  color:#1d6a4d;
  font-weight:700
}
.master-filter-row{
  display:flex;
  gap:10px;
  align-items:center;
  flex-wrap:wrap;
  margin:0 0 14px
}
.master-filter-row input{
  flex:1;
  min-width:280px
}
.master-filter-row select{
  min-width:220px
}
.master-count{
  display:inline-flex;
  gap:5px;
  align-items:center;
  white-space:nowrap;
  color:#557066;
  font-size:15px
}
.row-sub{
  display:block;
  margin-top:2px;
  color:#72857e;
  font-size:12px
}
.partner-type-chip{
  display:inline-flex;
  align-items:center;
  min-height:29px;
  padding:3px 9px;
  border-radius:999px;
  font-size:13px;
  font-weight:700;
  white-space:nowrap
}
.partner-type-chip.customer{
  background:#e7f4ed;
  color:#176246;
  border:1px solid #c7e2d4
}
.partner-type-chip.supplier{
  background:#edf1f8;
  color:#385474;
  border:1px solid #d4deec
}
.partner-type-chip.both{
  background:#f5efe2;
  color:#80601c;
  border:1px solid #e6d6ac
}
.master-section-title{
  grid-column:1/-1;
  margin:12px 0 2px;
  padding:7px 0;
  border-bottom:1px solid #dce6e1;
  color:#184d3b;
  font-size:18px;
  font-weight:800
}
#toh-master-fields textarea{
  resize:vertical
}
#toh-master-fields input[readonly],
#toh-master-fields textarea[readonly]{
  background:#f2f5f3;
  color:#62756e
}
@media(max-width:850px){
  .master-partner-toolbar{
    align-items:stretch;
    flex-direction:column
  }
  .master-toolbar-actions{
    justify-content:flex-start
  }
  .master-filter-row{
    flex-direction:column;
    align-items:stretch
  }
  .master-filter-row input,
  .master-filter-row select{
    width:100%;
    min-width:0
  }
  #toh-import-progress{
    margin-left:0;
    width:100%
  }
}


/* =========================================================
   v3.3.3 Searchable Customer / Partner field
   ========================================================= */
.partner-search-label{
  position:relative
}
.partner-combobox{
  position:relative
}
.partner-combobox>input{
  width:100%;
  padding-right:36px
}
.partner-id-select{
  display:none!important
}
.partner-search-results{
  display:none;
  position:absolute;
  z-index:10020;
  left:0;
  right:0;
  top:calc(100% + 6px);
  max-height:320px;
  overflow:auto;
  padding:6px;
  border:1px solid #cdded6;
  border-radius:12px;
  background:#fff;
  box-shadow:0 14px 32px rgba(17,66,51,.16)
}
.partner-search-results.open{
  display:block
}
.partner-search-option{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  width:100%;
  padding:10px 12px;
  border:0;
  border-radius:9px;
  background:#fff;
  color:#183d31;
  text-align:left;
  cursor:pointer
}
.partner-search-option:hover{
  background:#eef7f2
}
.partner-search-option strong{
  font-size:16px;
  line-height:1.35
}
.partner-search-option span{
  margin-top:3px;
  color:#61766e;
  font-size:13px;
  line-height:1.35
}
.partner-search-hint,
.partner-search-empty{
  padding:12px;
  color:#657970;
  font-size:14px
}
.partner-search-empty{
  color:#9a4c45
}


/* v3.3.4 Lead customer/contact autofill */
.lead-contact-picker{
  grid-column:1/-1;
  display:grid;
  grid-template-columns:minmax(280px,1fr) 1fr;
  gap:12px;
  align-items:end;
  margin:2px 0 4px;
  padding:12px;
  border:1px solid #d8e6df;
  border-radius:11px;
  background:#f7fbf9
}
.lead-contact-picker label{
  margin:0
}
.lead-contact-status{
  min-height:44px;
  display:flex;
  align-items:center;
  padding:8px 10px;
  color:#557067;
  font-size:14px;
  font-weight:600
}
@media(max-width:760px){
  .lead-contact-picker{
    grid-template-columns:1fr
  }
}


/* v3.3.6 Master Data forms + Excel reports */
#toh-master-fields{
  max-height:68vh;
  overflow:auto;
  padding-right:5px
}
#toh-master-dialog{
  width:min(1050px,94vw)
}
.excel-export-btn{
  white-space:nowrap
}


/* =========================================================
   v3.3.7 Performance: Lazy Product Search
   ========================================================= */
.product-combobox{
  position:relative;
  min-width:0
}
.product-combobox>.product-search-input{
  width:100%
}
.product-id-select{
  display:none!important
}
.product-search-results{
  display:none;
  position:absolute;
  z-index:10030;
  left:0;
  right:0;
  top:calc(100% + 5px);
  max-height:310px;
  overflow:auto;
  padding:6px;
  border:1px solid #cdded6;
  border-radius:11px;
  background:#fff;
  box-shadow:0 14px 32px rgba(17,66,51,.16)
}
.product-search-results.open{
  display:block
}
.product-search-option{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  width:100%;
  padding:9px 11px;
  border:0;
  border-radius:8px;
  background:#fff;
  color:#183d31;
  text-align:left;
  cursor:pointer
}
.product-search-option:hover{
  background:#eef7f2
}
.product-search-option strong{
  font-size:15px;
  line-height:1.35
}
.product-search-option span{
  margin-top:3px;
  color:#61766e;
  font-size:12px;
  line-height:1.35
}
.product-search-hint,
.product-search-empty{
  padding:11px;
  color:#657970;
  font-size:13px
}
.product-search-empty{
  color:#9a4c45
}


/* v3.3.8 Master Data server pagination */
.master-pagination{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  margin:12px 0;
  padding:10px 12px;
  border:1px solid #dfe9e4;
  border-radius:10px;
  background:#f8fbf9
}
.master-page-info{
  color:#526d63;
  font-size:15px;
  font-weight:600
}
.master-page-actions{
  display:flex;
  gap:8px
}
.master-page-actions button:disabled{
  opacity:.45;
  cursor:not-allowed
}
@media(max-width:700px){
  .master-pagination{align-items:stretch;flex-direction:column}
  .master-page-actions{width:100%}
  .master-page-actions button{flex:1}
}


/* =========================================================
   v3.4.0 Quotation product column headers
   ========================================================= */
.quote-line-header{
  display:grid;
  grid-template-columns:
    minmax(180px,1.5fr)
    minmax(190px,1.4fr)
    .55fr
    .75fr
    .65fr
    .55fr
    auto;
  gap:8px;
  align-items:end;
  margin:10px 0 4px;
  padding:0 2px;
  color:#315f50;
  font-size:14px;
  font-weight:800
}
.quote-line-header>div{
  padding:0 6px 5px;
  white-space:nowrap
}
.quote-line-field{
  min-width:0
}
.quote-line-field>input,
.quote-line-field>select{
  width:100%
}
.quote-line-action{
  display:flex;
  align-items:center;
  justify-content:center
}

@media(max-width:1200px){
  .quote-line-header{
    display:none
  }

  .quote-line-row{
    grid-template-columns:1fr 1fr
  }

  .quote-line-row>[data-col-label]{
    position:relative;
    padding-top:22px
  }

  .quote-line-row>[data-col-label]::before{
    content:attr(data-col-label);
    position:absolute;
    left:2px;
    top:0;
    color:#4d6b61;
    font-size:12px;
    font-weight:800
  }

  .quote-line-row>.product-combobox,
  .quote-line-row>.quote-line-field:nth-of-type(1){
    grid-column:span 1
  }
}

@media(max-width:700px){
  .quote-line-row{
    grid-template-columns:1fr
  }

  .quote-line-row>[data-col-label]{
    grid-column:1/-1!important
  }
}


/* =========================================================
   v3.4.1 Clear column labels for ALL module line items
   ========================================================= */
.generic-line-header{
  display:grid;
  grid-template-columns:
    1.7fr
    .55fr
    .7fr
    .5fr
    .7fr
    .65fr
    auto;
  gap:8px;
  align-items:end;
  margin:10px 0 3px;
  padding:0 2px;
  color:#315f50;
  font-size:14px;
  font-weight:800
}
.generic-line-header>div{
  padding:0 6px 5px;
  white-space:normal;
  line-height:1.25
}
.generic-line-field{
  min-width:0
}
.generic-line-field>input,
.generic-line-field>select{
  width:100%
}
.generic-line-action{
  display:flex;
  align-items:center;
  justify-content:center
}

/* Desktop keeps one clear table-like header. */
@media(min-width:1121px){
  .generic-line-field::before{
    display:none
  }
}

/* Tablet/mobile: each field gets its own label above it. */
@media(max-width:1120px){
  .generic-line-header{
    display:none
  }

  .line-row>.generic-line-field{
    position:relative;
    padding-top:22px
  }

  .line-row>.generic-line-field::before{
    content:attr(data-col-label);
    position:absolute;
    left:2px;
    top:0;
    color:#4d6b61;
    font-size:12px;
    font-weight:800;
    line-height:1.2
  }

  .line-row>.product-combobox{
    grid-column:1/-1
  }
}

@media(max-width:720px){
  .line-row{
    grid-template-columns:1fr
  }

  .line-row>.generic-line-field{
    grid-column:1/-1!important
  }
}


/* =========================================================
   v3.4.2 Purchase Request (PR)
   ========================================================= */
.pr-dialog{
  width:min(1320px,96vw);
  max-height:94vh
}
#toh-pr-form{
  padding:4px
}
#toh-pr-dialog-subtitle{
  margin:4px 0 0;
  color:#60776e
}
.pr-info-card{
  display:grid;
  grid-template-columns:
    repeat(3,minmax(0,1fr));
  gap:12px;
  padding:14px;
  margin:14px 0 18px;
  border:1px solid #dbe7e1;
  border-radius:14px;
  background:#f8fbf9
}
.pr-info-card>div,
.pr-info-card>label{
  min-width:0
}
.pr-info-card>div{
  display:flex;
  flex-direction:column;
  gap:6px;
  padding:7px 4px
}
.pr-info-card small{
  color:#60776e;
  font-weight:700
}
.pr-info-card strong{
  color:#164a39;
  font-size:18px
}
.pr-section-head{
  display:flex;
  justify-content:space-between;
  align-items:flex-end;
  gap:14px;
  margin:8px 0 8px
}
.pr-section-head h3{
  margin:0
}
.pr-section-head p{
  margin:3px 0 0;
  color:#60776e;
  font-size:14px
}
.pr-line-header{
  display:grid;
  grid-template-columns:
    1.65fr
    .55fr
    .55fr
    .85fr
    1fr
    1fr
    auto;
  gap:8px;
  padding:0 3px 5px;
  color:#315f50;
  font-size:13px;
  font-weight:800
}
.pr-line-row{
  display:grid;
  grid-template-columns:
    1.65fr
    .55fr
    .55fr
    .85fr
    1fr
    1fr
    auto;
  gap:8px;
  align-items:center;
  margin-bottom:9px
}
.pr-line-field,
.pr-product-box{
  min-width:0
}
.pr-line-field>input,
.pr-product-box>input{
  width:100%
}
.pr-line-field input[readonly]{
  background:#f1f5f3;
  color:#536b62
}
.pr-line-action{
  display:flex;
  justify-content:center
}
.pr-reason{
  display:block;
  margin-top:16px
}
.pr-reason textarea{
  width:100%
}
.pr-attachment-box{
  margin-top:14px;
  padding:14px;
  border:1px dashed #bcd2c7;
  border-radius:12px;
  background:#fbfdfc
}
.pr-attachment-box>div:first-child{
  display:flex;
  flex-direction:column;
  margin-bottom:10px
}
.pr-attachment-box small{
  color:#61786f
}
#toh-pr-files{
  width:100%
}
.pr-files-title{
  margin:10px 0 5px;
  color:#47685b;
  font-weight:800
}
.pr-file-chip,
.pr-file-link{
  display:inline-flex;
  margin:4px 6px 0 0;
  padding:5px 9px;
  border:1px solid #d4e3dc;
  border-radius:8px;
  background:#f3f8f5
}
.pr-file-link{
  color:#15543e;
  text-decoration:none
}
.pr-actions{
  position:sticky;
  bottom:0;
  margin-top:16px;
  padding:12px 0 2px;
  background:#fff
}
.pr-start-cards{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:14px;
  margin-bottom:18px
}
.pr-start-card{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:5px;
  padding:16px;
  border:1px solid #d7e6df;
  border-radius:14px;
  background:#fff;
  color:#173f32;
  text-align:left;
  cursor:pointer
}
.pr-start-card:hover{
  background:#f1f8f4;
  border-color:#bad6c9
}
.pr-start-card strong{
  font-size:19px
}
.pr-start-card span{
  color:#60766e;
  font-size:14px;
  line-height:1.45
}
.pr-detail-note{
  margin:14px 0;
  padding:12px;
  border:1px solid #dce7e2;
  border-radius:10px;
  background:#f8fbf9
}
.pr-detail-note small{
  display:block;
  margin-bottom:4px;
  color:#60766e;
  font-weight:800
}
.pr-detail-files{
  display:flex;
  flex-wrap:wrap;
  gap:8px
}
.low-stock-pr-panel{
  margin-top:18px
}
.low-stock-pr-btn{
  white-space:nowrap
}

@media(max-width:1100px){
  .pr-info-card{
    grid-template-columns:1fr 1fr
  }

  .pr-line-header{
    display:none
  }

  .pr-line-row{
    grid-template-columns:1fr 1fr
  }

  .pr-line-row>[data-col-label]{
    position:relative;
    padding-top:20px
  }

  .pr-line-row>[data-col-label]::before{
    content:attr(data-col-label);
    position:absolute;
    top:0;
    left:2px;
    color:#4d6b61;
    font-size:12px;
    font-weight:800
  }

  .pr-product-box{
    grid-column:1/-1
  }
}

@media(max-width:700px){
  .pr-start-cards,
  .pr-info-card,
  .pr-line-row{
    grid-template-columns:1fr
  }

  .pr-line-row>[data-col-label]{
    grid-column:1/-1
  }

  .pr-section-head{
    align-items:stretch;
    flex-direction:column
  }
}


/* =========================================================
   v3.4.3 Enhanced PR form
   ========================================================= */
.pr-form-section{
  margin:16px 0 20px
}
.pr-form-section-title{
  display:flex;
  align-items:center;
  gap:10px;
  margin-bottom:10px
}
.pr-form-section-title>b{
  display:grid;
  place-items:center;
  width:31px;
  height:31px;
  flex:0 0 31px;
  border-radius:50%;
  background:#1c5a45;
  color:#fff
}
.pr-form-section-title>div{
  display:flex;
  flex-direction:column;
  gap:2px
}
.pr-form-section-title strong{
  font-size:19px;
  color:#173f32
}
.pr-form-section-title small{
  color:#60766e
}
.pr-form-section-title>.secondary{
  margin-left:auto
}
.pr-line-header-enhanced,
.pr-line-row-enhanced{
  grid-template-columns:
    1.45fr
    1.15fr
    .48fr
    .48fr
    .78fr
    .8fr
    .75fr
    .75fr
    .9fr
    .85fr
    auto
}
.pr-line-row-enhanced textarea{
  width:100%;
  min-height:56px;
  resize:vertical
}
.pr-estimate-summary{
  display:flex;
  justify-content:flex-end;
  align-items:stretch;
  gap:12px;
  margin-top:14px
}
.pr-estimate-summary>div{
  display:flex;
  flex-direction:column;
  justify-content:center;
  min-width:150px;
  padding:11px 14px;
  border:1px solid #d9e6e0;
  border-radius:11px;
  background:#f8fbf9
}
.pr-estimate-summary small{
  color:#60766e;
  font-weight:700
}
.pr-estimate-summary strong{
  margin-top:3px;
  font-size:21px;
  color:#174b39
}
.pr-estimate-grand{
  min-width:280px!important
}
.pr-estimate-grand span{
  margin-top:2px;
  color:#7a6650;
  font-size:12px
}
.pr-detail-estimate{
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  margin:15px 0 20px;
  padding:12px 15px;
  border-radius:11px;
  background:#f3f8f5;
  border:1px solid #d7e5de
}
.pr-detail-estimate span{
  color:#5c7369;
  font-weight:700
}
.pr-detail-estimate strong{
  font-size:25px;
  color:#17503c
}
.pr-detail-estimate small{
  color:#806f58
}

@media(max-width:1280px){
  .pr-line-header-enhanced{
    display:none
  }

  .pr-line-row-enhanced{
    grid-template-columns:repeat(2,minmax(0,1fr))
  }

  .pr-line-row-enhanced>[data-col-label]{
    position:relative;
    padding-top:22px
  }

  .pr-line-row-enhanced>[data-col-label]::before{
    content:attr(data-col-label);
    position:absolute;
    left:2px;
    top:0;
    color:#4d6b61;
    font-size:12px;
    font-weight:800
  }

  .pr-line-row-enhanced>.pr-product-box{
    grid-column:1/-1
  }
}

@media(max-width:720px){
  .pr-estimate-summary{
    flex-direction:column
  }

  .pr-estimate-summary>div,
  .pr-estimate-grand{
    width:100%;
    min-width:0!important
  }

  .pr-line-row-enhanced{
    grid-template-columns:1fr
  }

  .pr-line-row-enhanced>[data-col-label]{
    grid-column:1/-1
  }
}


/* =========================================================
   v3.4.4 PR form cleanup / back to simple layout
   ========================================================= */
#toh-pr-date[readonly]{
  background:#f1f5f3;
  color:#36584c;
  cursor:not-allowed
}
.pr-info-card{
  grid-template-columns:repeat(3,minmax(0,1fr))
}
.pr-line-card{
  display:block;
  margin:0 0 12px;
  padding:13px;
  border:1px solid #d9e6e0;
  border-radius:12px;
  background:#fbfdfc
}
.pr-line-main{
  display:grid;
  grid-template-columns:
    minmax(230px,1.7fr)
    .55fr
    .55fr
    .9fr
    1fr
    auto;
  gap:9px;
  align-items:end
}
.pr-line-extra{
  display:grid;
  grid-template-columns:
    minmax(260px,1.6fr)
    .7fr
    .7fr
    1fr
    minmax(180px,1fr);
  gap:9px;
  align-items:end;
  margin-top:10px;
  padding-top:10px;
  border-top:1px dashed #dbe6e1
}
.pr-line-main label,
.pr-line-extra label{
  display:flex;
  flex-direction:column;
  gap:5px;
  min-width:0
}
.pr-line-main label>span,
.pr-line-extra label>span,
.pr-line-delete>span{
  color:#3d6255;
  font-size:13px;
  font-weight:800
}
.pr-line-main input,
.pr-line-extra input,
.pr-line-extra textarea{
  width:100%
}
.pr-line-extra textarea{
  min-height:58px;
  resize:vertical
}
.pr-line-delete{
  display:flex;
  flex-direction:column;
  gap:5px;
  align-items:center
}
.pr-line-delete button{
  min-width:48px
}
.pr-spec-field{
  min-width:0
}
.pr-note-field{
  min-width:0
}

/* Hide old wide header if cached markup exists. */
.pr-line-header-enhanced{
  display:none!important
}

@media(max-width:1180px){
  .pr-info-card{
    grid-template-columns:1fr 1fr
  }

  .pr-line-main{
    grid-template-columns:1fr 1fr 1fr
  }

  .pr-product-box{
    grid-column:1/-1
  }

  .pr-line-extra{
    grid-template-columns:1fr 1fr
  }

  .pr-spec-field,
  .pr-note-field{
    grid-column:1/-1
  }
}

@media(max-width:720px){
  .pr-info-card,
  .pr-line-main,
  .pr-line-extra{
    grid-template-columns:1fr
  }

  .pr-product-box,
  .pr-spec-field,
  .pr-note-field{
    grid-column:1/-1
  }

  .pr-line-delete{
    align-items:stretch
  }
}


/* =========================================================
   v3.5.0 Purchase Order
   ========================================================= */
.po-flow-note{
  margin-bottom:15px;
  padding:12px 14px;
  border:1px solid #d6e4dd;
  border-radius:11px;
  background:#f6faf8;
  color:#496a5e
}
.po-flow-note strong{
  color:#184c3a
}
.po-dialog{
  width:min(1320px,96vw);
  max-height:94vh
}
.po-info-card{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:12px;
  padding:14px;
  margin:14px 0 18px;
  border:1px solid #dbe7e1;
  border-radius:14px;
  background:#f8fbf9
}
.po-info-card>div{
  display:flex;
  flex-direction:column;
  gap:6px;
  padding:7px 4px
}
.po-info-card small{
  color:#60776e;
  font-weight:700
}
.po-info-card strong{
  color:#164a39;
  font-size:18px
}
.po-info-card label{
  min-width:0
}
.po-address-field{
  grid-column:span 2
}
.po-section-head{
  display:flex;
  justify-content:space-between;
  align-items:flex-end;
  gap:14px;
  margin:8px 0 10px
}
.po-section-head h3{
  margin:0
}
.po-section-head p{
  margin:3px 0 0;
  color:#60766e;
  font-size:14px
}
.po-line-card{
  margin:0 0 12px;
  padding:13px;
  border:1px solid #d9e6e0;
  border-radius:12px;
  background:#fbfdfc
}
.po-line-main{
  display:grid;
  grid-template-columns:
    minmax(220px,1.55fr)
    .48fr
    .48fr
    .72fr
    .62fr
    .52fr
    .72fr
    auto;
  gap:8px;
  align-items:end
}
.po-line-extra{
  display:grid;
  grid-template-columns:1fr 1.3fr 1fr;
  gap:9px;
  align-items:end;
  margin-top:10px;
  padding-top:10px;
  border-top:1px dashed #dbe6e1
}
.po-line-main label,
.po-line-extra label{
  display:flex;
  flex-direction:column;
  gap:5px;
  min-width:0
}
.po-line-main label>span,
.po-line-extra label>span,
.po-line-delete>span{
  color:#3d6255;
  font-size:13px;
  font-weight:800
}
.po-line-main input,
.po-line-extra input,
.po-line-extra textarea{
  width:100%
}
.po-line-extra textarea{
  min-height:58px;
  resize:vertical
}
.po-line-delete{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:5px
}
.po-line-delete button{
  min-width:48px
}
.po-summary{
  display:flex;
  justify-content:flex-end;
  gap:10px;
  flex-wrap:wrap;
  margin-top:14px
}
.po-summary>div{
  min-width:150px;
  padding:10px 13px;
  border:1px solid #d8e5df;
  border-radius:10px;
  background:#f8fbf9
}
.po-summary span{
  display:block;
  color:#60766e;
  font-size:13px;
  font-weight:700
}
.po-summary strong{
  display:block;
  margin-top:3px;
  color:#174c39;
  font-size:19px
}
.po-summary>.po-grand{
  min-width:200px;
  background:#edf7f2
}
.po-summary>.po-grand strong{
  font-size:24px
}
.po-notes{
  display:block;
  margin-top:15px
}
.po-notes textarea{
  width:100%
}
.po-attachment-box{
  margin-top:14px;
  padding:14px;
  border:1px dashed #bcd2c7;
  border-radius:12px;
  background:#fbfdfc
}
.po-attachment-box>div:first-child{
  display:flex;
  flex-direction:column;
  margin-bottom:10px
}
.po-actions{
  position:sticky;
  bottom:0;
  margin-top:16px;
  padding:12px 0 2px;
  background:#fff
}
.po-detail-address{
  margin:14px 0;
  padding:11px 13px;
  border:1px solid #dce7e2;
  border-radius:10px;
  background:#f8fbf9
}
.po-detail-address small{
  display:block;
  margin-bottom:4px;
  color:#60766e;
  font-weight:800
}
.po-detail-total{
  display:flex;
  justify-content:flex-end;
  align-items:center;
  gap:14px;
  margin:12px 0 18px;
  padding:10px 13px;
  border-radius:10px;
  background:#f3f8f5
}
.po-detail-total span{
  color:#60766e;
  font-weight:700
}
.po-detail-total strong{
  color:#174c39;
  font-size:24px
}
.danger-action{
  color:#9a302b!important;
  border-color:#e4b7b4!important
}

@media(max-width:1150px){
  .po-info-card{
    grid-template-columns:1fr 1fr
  }

  .po-address-field{
    grid-column:1/-1
  }

  .po-line-main{
    grid-template-columns:1fr 1fr
  }

  .po-product-box{
    grid-column:1/-1
  }

  .po-line-extra{
    grid-template-columns:1fr
  }
}

@media(max-width:720px){
  .po-info-card,
  .po-line-main{
    grid-template-columns:1fr
  }

  .po-address-field,
  .po-product-box{
    grid-column:1/-1
  }

  .po-summary{
    flex-direction:column
  }

  .po-summary>div{
    width:100%
  }

  .po-section-head{
    flex-direction:column;
    align-items:stretch
  }
}


/* v3.6.0 Supplier quotation comparison */
.sourcing-dialog{width:min(1480px,97vw);max-height:95vh}.sourcing-rule{display:flex;justify-content:space-between;gap:12px;padding:10px 13px;margin:10px 0 14px;border:1px solid #e3c98e;border-radius:10px;background:#fff8e8;color:#775f2f}.sourcing-rule.ready{border-color:#add7bf;background:#eef9f2;color:#275c3e}.sourcing-compare-wrap{overflow:auto;border:1px solid #d7e4de;border-radius:12px;margin-bottom:15px}.sourcing-compare-table{min-width:800px;width:100%;border-collapse:collapse}.sourcing-compare-table th,.sourcing-compare-table td{padding:8px 10px;border:1px solid #dce7e2;vertical-align:top}.sourcing-compare-table thead th{background:#e9f3ee;text-align:center}.sourcing-compare-table tbody th{width:180px;background:#f7faf8;text-align:left}.sourcing-selected-badge{display:inline-block;padding:2px 6px;border-radius:999px;background:#dff5e7;color:#236541;font-size:11px}.sourcing-file-link{display:block;color:#175640}.sourcing-vendors{display:grid;gap:15px}.sourcing-vendor-card{padding:14px;border:1px solid #d9e5df;border-radius:14px;background:#fbfdfc}.sourcing-vendor-card.complete{border-color:#a9d6bc}.sourcing-vendor-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.sourcing-vendor-head h3{margin:0}.sourcing-vendor-head span{font-size:12px;color:#60766d}.sourcing-vendor-head strong{font-size:23px;color:#17503b}.sourcing-vendor-info{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}.sourcing-supplier-field{grid-column:span 2}.sourcing-supplier-field small{display:block;margin-top:4px;color:#6b7e76;font-size:11px}.sourcing-wide-field{grid-column:span 2}.sourcing-new-supplier-note{padding:8px;color:#6a776f;font-size:12px;border-top:1px solid #edf2ef}.sourcing-line-table{margin-top:12px;overflow:auto}.sourcing-line-header,.sourcing-line-row{display:grid;grid-template-columns:minmax(220px,1.7fr) .55fr .75fr .65fr .55fr .8fr;gap:7px;min-width:850px;align-items:center}.sourcing-line-header{padding:0 4px 5px;color:#3b6254;font-size:12px;font-weight:800}.sourcing-line-row{padding:6px 4px;border-top:1px solid #e3ebe7}.sourcing-line-row>div:first-child{display:flex;flex-direction:column}.sourcing-line-row input{width:100%}.sourcing-line-row input[readonly]{background:#f1f5f3}.sourcing-vendor-note{display:block;margin-top:10px}.sourcing-vendor-note textarea{width:100%}.sourcing-files-box{display:grid;grid-template-columns:1fr 1fr 1.2fr;gap:10px;align-items:center;margin-top:10px;padding:10px;border:1px dashed #bfd4ca;border-radius:10px;background:#f8fbf9}.sourcing-files-box a{display:inline-flex;margin:2px 4px 2px 0;padding:4px 7px;border:1px solid #d5e3dc;border-radius:6px;color:#175640;text-decoration:none}.sourcing-card-actions{display:flex;justify-content:flex-end;margin-top:10px}.sourcing-selection-box{display:grid;grid-template-columns:.7fr 1.5fr;gap:12px;margin-top:16px;padding:13px;border:1px solid #b9d7c9;border-radius:12px;background:#f0f8f4}.sourcing-selection-box textarea{width:100%}@media(max-width:1100px){.sourcing-vendor-info{grid-template-columns:1fr 1fr}.sourcing-supplier-field,.sourcing-wide-field{grid-column:1/-1}.sourcing-files-box,.sourcing-selection-box{grid-template-columns:1fr}}@media(max-width:650px){.sourcing-vendor-info{grid-template-columns:1fr}.sourcing-supplier-field,.sourcing-wide-field{grid-column:1}}


/* =========================================================
   v3.6.1 Sourcing Form — organized table layout
   ========================================================= */
.sourcing-dialog{
  width:min(1540px,98vw);
}
.sourcing-form-title{
  display:flex;
  justify-content:space-between;
  align-items:flex-end;
  gap:12px;
  margin:18px 0 8px;
}
.sourcing-form-title h3{
  margin:0;
  color:#174c39;
  font-size:18px;
}
.sourcing-form-title p{
  margin:3px 0 0;
  color:#60766e;
  font-size:13px;
}
.sourcing-entry-scroll,
.sourcing-price-scroll{
  overflow:auto;
  border:1px solid #d7e4de;
  border-radius:12px;
  background:#fff;
}
.sourcing-entry-table,
.sourcing-price-table{
  width:100%;
  border-collapse:collapse;
  table-layout:fixed;
}
.sourcing-entry-table{
  min-width:1120px;
}
.sourcing-entry-table th,
.sourcing-entry-table td,
.sourcing-price-table th,
.sourcing-price-table td{
  border:1px solid #dce7e2;
  padding:8px;
  vertical-align:top;
}
.sourcing-entry-table thead th,
.sourcing-price-table thead th{
  background:#e9f3ee;
  color:#214f3e;
}
.sourcing-entry-table tbody>tr>th{
  width:185px;
  background:#f7faf8;
  text-align:left;
  color:#45675a;
  font-weight:800;
}
.sourcing-label-col{
  width:185px;
}
.sourcing-entry-table input,
.sourcing-entry-table select,
.sourcing-entry-table textarea,
.sourcing-price-table input{
  width:100%;
  min-width:0;
}
.sourcing-entry-table textarea{
  resize:vertical;
}
.required-mark{
  margin-left:3px;
  color:#b43c35;
}
.sourcing-vendor-column-head{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:8px;
}
.sourcing-vendor-column-head>div{
  display:flex;
  flex-direction:column;
  gap:3px;
}
.sourcing-vendor-column-head span{
  width:max-content;
  padding:2px 7px;
  border-radius:999px;
  font-size:11px;
  font-weight:700;
}
.sourcing-vendor-column-head .complete{
  background:#dff3e6;
  color:#296140;
}
.sourcing-vendor-column-head .incomplete{
  background:#fff2d8;
  color:#7a6028;
}
.sourcing-head-total{
  white-space:nowrap;
  color:#174c39;
  font-size:17px;
}
.sourcing-supplier-cell small{
  display:block;
  margin-top:4px;
  color:#6a7c74;
  font-size:11px;
}
.sourcing-file-cell{
  display:flex;
  flex-direction:column;
  gap:7px;
}
.sourcing-existing-files a{
  display:block;
  width:max-content;
  max-width:100%;
  margin:2px 0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.sourcing-price-title{
  margin-top:22px;
}
.sourcing-price-table{
  min-width:1500px;
}
.sourcing-price-table thead tr:first-child th{
  text-align:center;
  font-size:13px;
}
.sourcing-price-table thead tr:nth-child(2) th{
  text-align:center;
  font-size:11px;
}
.sourcing-price-table tbody td{
  vertical-align:middle;
}
.sourcing-product-name{
  width:250px;
}
.sourcing-product-name strong,
.sourcing-product-name small{
  display:block;
}
.sourcing-product-name small{
  margin-top:2px;
  color:#6c7f76;
}
.sourcing-qty-cell{
  width:100px;
  text-align:center;
  white-space:nowrap;
}
.sourcing-price-table input{
  min-width:88px;
  text-align:right;
}
.sourcing-price-table input[readonly]{
  background:#f1f5f3;
  color:#3d5f53;
}
.sourcing-price-table tfoot th{
  background:#edf7f2;
}
.sourcing-vendor-grand{
  text-align:right!important;
  color:#174c39;
  font-size:16px!important;
}
.sourcing-selection-box{
  position:sticky;
  bottom:58px;
  z-index:4;
  box-shadow:0 -5px 16px rgba(31,74,57,.07);
}
.sourcing-dialog>.dialog-actions{
  position:sticky;
  bottom:0;
  z-index:5;
  background:#fff;
  padding-top:10px;
}
@media(max-width:900px){
  .sourcing-dialog{
    width:98vw;
  }
  .sourcing-selection-box{
    position:static;
  }
}


/* =========================================================
   v3.6.2 Sourcing form usability
   ========================================================= */

/* Selection controls stay at the actual bottom of the form */
.sourcing-selection-box{
  position:static!important;
  bottom:auto!important;
  z-index:auto!important;
  box-shadow:none!important;
  margin-top:24px!important;
}
.sourcing-dialog>.dialog-actions{
  position:static!important;
  bottom:auto!important;
  z-index:auto!important;
}

/* Price comparison: one product block, 3 vendor rows */
.sourcing-product-compare-list{
  display:grid;
  gap:14px;
}
.sourcing-product-compare{
  border:1px solid #d4e3dc;
  border-radius:12px;
  overflow:hidden;
  background:#fff;
}
.sourcing-product-head{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:16px;
  padding:12px 14px;
  background:#edf6f1;
  border-bottom:1px solid #d4e3dc;
}
.sourcing-product-title{
  min-width:0;
  flex:1 1 auto;
}
.sourcing-product-title small{
  display:block;
  margin-bottom:3px;
  color:#647b71;
  font-size:11px;
  font-weight:800;
}
.sourcing-product-title strong{
  display:block;
  color:#173f32;
  font-size:15px;
  line-height:1.45;
  white-space:normal;
  overflow-wrap:anywhere;
  word-break:break-word;
}
.sourcing-product-qty{
  flex:0 0 155px;
  padding:7px 10px;
  border:1px solid #d7e4de;
  border-radius:9px;
  background:#fff;
  text-align:right;
}
.sourcing-product-qty small{
  display:block;
  color:#6b7d75;
  font-size:11px;
}
.sourcing-product-qty strong{
  display:block;
  margin-top:2px;
  color:#174c39;
  font-size:16px;
}
.sourcing-product-table-wrap{
  overflow-x:auto;
}
.sourcing-product-price-table{
  width:100%;
  min-width:690px;
  border-collapse:collapse;
  table-layout:fixed;
}
.sourcing-product-price-table th,
.sourcing-product-price-table td{
  padding:8px;
  border:1px solid #dce7e2;
  vertical-align:middle;
}
.sourcing-product-price-table thead th{
  background:#f7faf8;
  color:#45675a;
  text-align:center;
  font-size:12px;
}
.sourcing-product-price-table thead th:first-child{
  width:190px;
}
.sourcing-product-price-table tbody th{
  background:#fbfdfc;
  text-align:left;
}
.sourcing-product-price-table tbody th span{
  display:block;
  color:#214e3e;
  font-weight:800;
}
.sourcing-product-price-table tbody th small{
  display:block;
  margin-top:2px;
  color:#74867e;
  font-size:11px;
  white-space:normal;
  overflow-wrap:anywhere;
}
.sourcing-product-price-table input{
  width:100%;
  min-width:90px;
  text-align:right;
}
.sourcing-product-price-table input[readonly]{
  background:#f1f5f3;
  color:#3d6054;
}
.sourcing-vendor-totals-box{
  display:grid;
  grid-template-columns:1.2fr repeat(3,1fr);
  gap:9px;
  margin-top:14px;
}
.sourcing-vendor-totals-box>div{
  padding:10px 12px;
  border:1px solid #d6e4dd;
  border-radius:10px;
  background:#f8fbf9;
}
.sourcing-vendor-totals-box span,
.sourcing-vendor-totals-box small{
  display:block;
  color:#667b72;
}
.sourcing-vendor-totals-box strong{
  display:block;
  margin-top:3px;
  color:#174c39;
  font-size:18px;
}
.sourcing-vendor-total-label{
  display:flex;
  flex-direction:column;
  justify-content:center;
}
.sourcing-vendor-total-label strong{
  margin:0!important;
  font-size:15px!important;
}

/* Supplier information table remains compact */
.sourcing-entry-table{
  min-width:1040px!important;
}
.sourcing-entry-table tbody>tr>th{
  width:200px!important;
}
.sourcing-entry-table td{
  min-width:245px;
}

@media(max-width:900px){
  .sourcing-product-head{
    flex-direction:column;
    align-items:stretch;
  }

  .sourcing-product-qty{
    flex-basis:auto;
    width:100%;
    text-align:left;
  }

  .sourcing-vendor-totals-box{
    grid-template-columns:1fr;
  }
}


/* =========================================================
   v3.6.3 Front-layer validation / notification toast
   ========================================================= */

/*
 * Popover = Browser Top Layer, so validation messages stay above
 * PR / Sourcing / PO modal dialogs.
 */
#toh-toast[popover]{
  position:fixed!important;
  inset:auto!important;
  left:50%!important;
  right:auto!important;
  top:22px!important;
  margin:0!important;
  width:min(560px,calc(100vw - 36px))!important;
  max-width:min(560px,calc(100vw - 36px))!important;
  border:0!important;
  z-index:2147483647!important;
  transform:translate(-50%,-110px)!important;
  box-shadow:0 12px 38px rgba(15,48,37,.28)!important;
  text-align:center;
  font-weight:800;
  line-height:1.45;
}
#toh-toast[popover].show{
  transform:translate(-50%,0)!important;
}

/* Fallback when Popover API is not available */
dialog #toh-toast.toast-in-dialog{
  position:fixed!important;
  left:50%!important;
  right:auto!important;
  top:22px!important;
  z-index:2147483647!important;
  width:min(560px,calc(100vw - 36px))!important;
  max-width:min(560px,calc(100vw - 36px))!important;
  transform:translate(-50%,-110px)!important;
  box-shadow:0 12px 38px rgba(15,48,37,.28)!important;
  text-align:center;
  font-weight:800;
}
dialog #toh-toast.toast-in-dialog.show{
  transform:translate(-50%,0)!important;
}


/* =========================================================
   v3.6.4 Print / PDF actions in every document module
   ========================================================= */
.output-action-btn{
  white-space:nowrap;
}
.output-action-btn[id$="-pdf"]{
  font-weight:800;
}
@media(max-width:720px){
  .dialog-actions .output-action-btn{
    width:100%;
  }
}


/* =========================================================
   v3.7.0 Admin Access Control
   ========================================================= */
.access-kpis{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:12px;
  margin-bottom:14px;
}
.access-tabs{
  display:flex;
  gap:6px;
  margin-bottom:14px;
  padding:5px;
  width:max-content;
  max-width:100%;
  border:1px solid #d7e4de;
  border-radius:10px;
  background:#f6faf8;
}
.access-tabs button{
  border:0;
  border-radius:7px;
  padding:8px 14px;
  background:transparent;
  color:#4e6a60;
  font:inherit;
  font-weight:800;
  cursor:pointer;
}
.access-tabs button.active{
  background:#255846;
  color:#fff;
}
.access-role-layout{
  display:grid;
  grid-template-columns:360px minmax(0,1fr);
  gap:14px;
  align-items:start;
}
.access-section-title{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:12px;
  margin-bottom:10px;
}
.access-section-title h2{
  margin:0;
  color:#173f32;
}
.access-section-title p{
  margin:3px 0 0;
  color:#637970;
}
.access-role-cards{
  display:grid;
  gap:8px;
}
.access-role-card{
  display:block;
  width:100%;
  padding:12px;
  border:1px solid #d8e4de;
  border-radius:11px;
  background:#fff;
  color:inherit;
  text-align:left;
  font:inherit;
  cursor:pointer;
  transition:.16s ease;
}
.access-role-card:hover{
  border-color:#91b8a7;
  transform:translateY(-1px);
}
.access-role-card.active{
  border-color:#2c7157;
  box-shadow:0 0 0 2px rgba(44,113,87,.08);
  background:#f2f9f5;
}
.access-role-card-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:8px;
}
.access-role-card-head>div{
  display:flex;
  flex-direction:column;
  gap:2px;
}
.access-role-card-head small{
  color:#6a7d75;
  font-weight:700;
}
.access-role-card-head strong{
  color:#174c39;
  font-size:15px;
}
.access-user-count,
.access-lock-badge{
  padding:3px 7px;
  border-radius:999px;
  background:#eef5f1;
  color:#49685c;
  font-size:11px;
  font-weight:800;
  white-space:nowrap;
}
.access-lock-badge{
  background:#e3f4e8;
  color:#2d6844;
}
.access-role-stats{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:5px;
  margin-top:10px;
}
.access-role-stats span{
  padding:5px 4px;
  border-radius:7px;
  background:#f7faf8;
  color:#71827b;
  text-align:center;
  font-size:10px;
}
.access-role-stats b{
  display:block;
  color:#275847;
  font-size:14px;
}
.access-editor-panel{
  margin:0!important;
}
.access-editor-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin-bottom:12px;
}
.access-editor-head h3{
  margin:0;
  color:#174c39;
  font-size:20px;
}
.access-editor-head p{
  margin:3px 0 0;
  color:#687c74;
}
.access-help-box,
.access-user-note,
.access-warning,
.access-system-note{
  margin:0 0 12px;
  padding:10px 12px;
  border:1px solid #d8e5df;
  border-radius:9px;
  background:#f7faf8;
  color:#506a60;
  line-height:1.55;
}
.access-warning{
  border-color:#ead2a6;
  background:#fff8e9;
  color:#725b2c;
}
.access-system-note{
  margin-top:14px;
  background:#fbfcfb;
  font-size:12px;
}
.access-admin-lock{
  padding:5px 9px;
  border-radius:999px;
  background:#dff3e6;
  color:#2a6241;
  font-size:12px;
  font-weight:800;
  white-space:nowrap;
}
.access-permission-groups{
  display:grid;
  gap:12px;
}
.access-permission-group{
  overflow:hidden;
  border:1px solid #d9e5df;
  border-radius:10px;
  background:#fff;
}
.access-permission-group h4{
  margin:0;
  padding:8px 11px;
  background:#edf6f1;
  color:#24533f;
  font-size:14px;
}
.access-permission-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  padding:9px 11px;
  border-top:1px solid #edf2ef;
}
.access-permission-group h4+
.access-permission-row{
  border-top:0;
}
.access-permission-row>div:first-child{
  min-width:0;
}
.access-permission-row strong{
  color:#254c3e;
}
.access-permission-row small{
  display:block;
  margin-top:2px;
  color:#71817b;
  line-height:1.4;
}
.access-permission-row code{
  display:block;
  width:max-content;
  max-width:100%;
  margin-top:3px;
  color:#819089;
  font-size:10px;
  overflow-wrap:anywhere;
}
.access-permission-name{
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:6px;
}
.access-action-tag{
  padding:2px 6px;
  border-radius:999px;
  background:#eef4f1;
  color:#527066;
  font-size:10px;
  font-weight:800;
}
.access-toggle-row{
  cursor:pointer;
}
.access-switch{
  position:relative;
  flex:0 0 46px;
  width:46px;
  height:26px;
}
.access-switch input{
  position:absolute;
  opacity:0;
  pointer-events:none;
}
.access-switch span{
  position:absolute;
  inset:0;
  border-radius:999px;
  background:#cbd7d2;
  transition:.18s ease;
}
.access-switch span:after{
  content:"";
  position:absolute;
  top:3px;
  left:3px;
  width:20px;
  height:20px;
  border-radius:50%;
  background:#fff;
  box-shadow:0 1px 4px rgba(0,0,0,.18);
  transition:.18s ease;
}
.access-switch input:checked+span{
  background:#2a7357;
}
.access-switch input:checked+span:after{
  transform:translateX(20px);
}
.access-user-titlebar input{
  width:min(390px,100%);
}
.access-user-dialog{
  width:min(1100px,95vw);
  max-height:94vh;
}
.access-user-summary{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:9px;
  margin-bottom:12px;
}
.access-user-summary>div{
  padding:9px 10px;
  border:1px solid #d9e5df;
  border-radius:9px;
  background:#f8fbf9;
}
.access-user-summary small{
  display:block;
  color:#71827b;
}
.access-user-summary strong{
  display:block;
  margin-top:2px;
  color:#254f3e;
}
.access-user-permission-row{
  display:grid;
  grid-template-columns:minmax(0,1fr) 320px;
  gap:14px;
  align-items:center;
  padding:9px 11px;
  border-top:1px solid #edf2ef;
}
.access-user-permission-row:first-of-type{
  border-top:0;
}
.access-user-control{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:8px;
}
.access-user-control select{
  min-width:150px;
}
.access-effective{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:110px;
  padding:4px 7px;
  border-radius:999px;
  font-size:11px;
  font-weight:800;
}
.access-effective.allow{
  background:#e2f4e8;
  color:#276441;
}
.access-effective.deny{
  background:#f8e6e4;
  color:#93413b;
}

@media(max-width:1150px){
  .access-kpis{
    grid-template-columns:1fr 1fr;
  }
  .access-role-layout{
    grid-template-columns:1fr;
  }
  .access-role-cards{
    grid-template-columns:1fr 1fr;
  }
}
@media(max-width:760px){
  .access-kpis,
  .access-role-cards,
  .access-user-summary{
    grid-template-columns:1fr;
  }
  .access-section-title,
  .access-editor-head{
    align-items:stretch;
    flex-direction:column;
  }
  .access-user-titlebar input{
    width:100%;
  }
  .access-user-permission-row{
    grid-template-columns:1fr;
  }
  .access-user-control{
    justify-content:flex-start;
    flex-wrap:wrap;
  }
}


/* =========================================================
   v3.8.0 Inventory Control Center
   ========================================================= */
.inventory-stats{
  grid-template-columns:repeat(7,minmax(0,1fr));
}
.inventory-stats .stat{
  min-width:0;
}
.inventory-stat-warning{
  background:#fffaf0!important;
}
.inventory-stat-danger{
  background:#fff4f3!important;
}
.inventory-stat-hold{
  background:#fff8e8!important;
}
.inventory-tabs{
  display:flex;
  gap:6px;
  margin:14px 0;
  padding:5px;
  overflow:auto;
  border:1px solid #d7e4de;
  border-radius:11px;
  background:#f6faf8;
}
.inventory-tabs button{
  flex:0 0 auto;
  padding:8px 13px;
  border:0;
  border-radius:8px;
  background:transparent;
  color:#536e64;
  font:inherit;
  font-weight:800;
  cursor:pointer;
}
.inventory-tabs button.active{
  background:#255846;
  color:#fff;
}
.inventory-guide{
  padding:16px;
  border:1px solid #d7e4de;
  border-radius:13px;
  background:#fff;
}
.inventory-guide h2{
  margin:0;
}
.inventory-guide p{
  margin:4px 0 12px;
  color:#647970;
}
.inventory-rule-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:9px;
}
.inventory-rule-grid>div{
  padding:10px;
  border:1px solid #dce7e2;
  border-radius:9px;
  background:#f7faf8;
}
.inventory-rule-grid strong,
.inventory-rule-grid span{
  display:block;
}
.inventory-rule-grid strong{
  color:#174c39;
}
.inventory-rule-grid span{
  margin-top:3px;
  color:#687d74;
  font-size:12px;
}
.inventory-class-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:10px;
  margin-top:12px;
}
.inventory-class-card{
  display:flex;
  flex-direction:column;
  justify-content:space-between;
  min-height:145px;
  padding:12px;
  border:1px solid #d7e4de;
  border-radius:11px;
  background:#fff;
}
.inventory-class-card>div:first-child strong,
.inventory-class-card>div:first-child small{
  display:block;
}
.inventory-class-card>div:first-child strong{
  color:#174c39;
}
.inventory-class-card>div:first-child small{
  margin-top:4px;
  color:#6b7d75;
  line-height:1.45;
}
.inventory-class-numbers{
  display:flex;
  gap:8px;
  margin-top:12px;
}
.inventory-class-numbers span{
  flex:1;
  padding:6px;
  border-radius:7px;
  background:#f4f8f6;
  color:#708078;
  text-align:center;
  font-size:10px;
}
.inventory-class-numbers b{
  display:block;
  color:#285846;
  font-size:15px;
}
.inventory-alert-panel{
  margin-top:14px;
}
.inventory-alert-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:9px;
}
.inventory-alert-grid button{
  padding:11px;
  border:1px solid #d7e4de;
  border-radius:9px;
  background:#fff;
  text-align:left;
  font:inherit;
  cursor:pointer;
}
.inventory-alert-grid button:hover{
  border-color:#8fb7a5;
  background:#f6faf8;
}
.inventory-alert-grid strong,
.inventory-alert-grid span{
  display:block;
}
.inventory-alert-grid strong{
  color:#204f3d;
}
.inventory-alert-grid span{
  margin-top:3px;
  color:#71827b;
  font-size:12px;
}
.inventory-lot-expired{
  background:#fff2f1;
}
.inventory-lot-near{
  background:#fffaf0;
}
.inventory-qty-in{
  color:#1f6a43;
  font-weight:800;
}
.inventory-qty-out{
  color:#9b433d;
  font-weight:800;
}
.inventory-profile-head{
  align-items:flex-end;
}
.inventory-profile-filters{
  display:flex;
  gap:7px;
}
.inventory-profile-filters input{
  min-width:240px;
}
.inventory-pagination{
  display:flex;
  justify-content:center;
  align-items:center;
  gap:12px;
  margin-top:12px;
}
.inventory-profile-dialog{
  width:min(900px,94vw);
}
.inventory-profile-form-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:11px;
}
.inventory-purchase-toggle{
  display:flex!important;
  flex-direction:row!important;
  align-items:center;
  gap:8px!important;
  padding-top:24px;
}
.inventory-purchase-toggle input{
  width:auto!important;
}
.inventory-profile-notes{
  grid-column:1/-1;
}
.inventory-profile-notes textarea{
  width:100%;
}
.inventory-profile-recommendation{
  display:flex;
  flex-direction:column;
  gap:3px;
  margin-top:12px;
  padding:10px 12px;
  border:1px solid #d7e4de;
  border-radius:9px;
  background:#f4f9f6;
}
.inventory-profile-recommendation strong{
  color:#22523f;
}
.inventory-profile-recommendation span{
  color:#687c74;
}
.inventory-movement-dialog{
  width:min(920px,94vw);
}
.inventory-move-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:11px;
}
.inventory-product-search-field{
  grid-column:span 1;
}
.inventory-move-note{
  grid-column:1/-1;
}
.inventory-move-note textarea{
  width:100%;
}
.inventory-lot-dialog{
  width:min(600px,92vw);
}
.inventory-lot-form-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:11px;
}
@media(max-width:1250px){
  .inventory-stats{
    grid-template-columns:repeat(4,1fr);
  }
  .inventory-class-grid,
  .inventory-rule-grid{
    grid-template-columns:1fr 1fr;
  }
}
@media(max-width:800px){
  .inventory-stats,
  .inventory-class-grid,
  .inventory-rule-grid,
  .inventory-alert-grid{
    grid-template-columns:1fr;
  }
  .inventory-profile-head{
    align-items:stretch;
    flex-direction:column;
  }
  .inventory-profile-filters{
    flex-direction:column;
  }
  .inventory-profile-filters input{
    min-width:0;
  }
  .inventory-profile-form-grid,
  .inventory-move-grid,
  .inventory-lot-form-grid{
    grid-template-columns:1fr;
  }
  .inventory-profile-notes,
  .inventory-move-note{
    grid-column:1;
  }
}


/* =========================================================
   v3.9.0 Inventory Excel Import / Export
   ========================================================= */
.inventory-command-bar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  margin-bottom:12px;
  padding:11px 13px;
  border:1px solid #d7e4de;
  border-radius:11px;
  background:#fff;
}
.inventory-command-bar>div:first-child{
  display:flex;
  flex-direction:column;
  gap:2px;
}
.inventory-command-bar strong{
  color:#174c39;
}
.inventory-command-bar span{
  color:#667b72;
  font-size:12px;
}
.inventory-command-actions{
  display:flex;
  gap:8px;
  flex:0 0 auto;
}
.inventory-import-dialog{
  width:min(1180px,96vw);
  max-height:94vh;
}
.inventory-import-warning{
  display:flex;
  flex-direction:column;
  gap:3px;
  margin-bottom:12px;
  padding:10px 12px;
  border:1px solid #ead3a9;
  border-radius:9px;
  background:#fff8e9;
  color:#735b2c;
}
.inventory-import-actions{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
}
.button-link{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:38px;
  padding:8px 13px;
  border-radius:8px;
  text-decoration:none;
  cursor:pointer;
}
.inventory-file-button{
  color:#fff;
}
.inventory-import-file-name{
  margin:9px 0 12px;
  color:#60766e;
  font-size:12px;
}
.inventory-import-preview-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  margin-bottom:7px;
}
.inventory-import-preview-head span{
  color:#6c7e76;
  font-size:12px;
}
.inventory-import-preview{
  margin-top:8px;
}
.inventory-import-validation{
  margin-top:12px;
}
.inventory-import-ok{
  display:flex;
  flex-direction:column;
  gap:3px;
  padding:10px 12px;
  border:1px solid #b8d9c6;
  border-radius:9px;
  background:#eef9f2;
  color:#285f40;
}
.inventory-import-errors{
  margin:8px 0 0;
  padding-left:20px;
}
.inventory-import-errors li{
  margin-bottom:3px;
}
@media(max-width:800px){
  .inventory-command-bar{
    align-items:stretch;
    flex-direction:column;
  }
  .inventory-command-actions{
    flex-direction:column;
  }
}


/* =========================================================
   v3.10.0 Master Data Forms — employee friendly
   ========================================================= */
#toh-master-dialog{
  width:min(1120px,96vw)!important;
  max-height:94vh;
  padding:0!important;
  overflow:hidden;
}
#toh-master-form{
  display:flex;
  flex-direction:column;
  max-height:94vh;
  min-height:min(720px,90vh);
}
.master-dialog-head{
  position:sticky;
  top:0;
  z-index:6;
  margin:0!important;
  padding:18px 22px 14px;
  border-bottom:1px solid #dce7e2;
  background:#fff;
}
.master-dialog-head h2{
  margin:0;
  color:#173f32;
  font-size:24px;
}
.master-dialog-head p{
  margin:4px 0 0;
  color:#657a71;
  font-size:13px;
}
.master-form-content{
  flex:1;
  min-height:0;
  overflow:auto;
  padding:16px 22px 20px;
  background:#f7faf8;
}
.master-form-guide{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  margin-bottom:12px;
  padding:11px 13px;
  border:1px solid #cfe0d8;
  border-radius:11px;
  background:#eef7f2;
}
.master-form-guide>div:first-child{
  min-width:0;
}
.master-form-guide strong,
.master-form-guide span{
  display:block;
}
.master-form-guide strong{
  color:#1b513e;
  font-size:15px;
}
.master-form-guide span{
  margin-top:2px;
  color:#5f776d;
  font-size:12px;
}
.master-form-guide-status{
  flex:0 0 auto;
  padding:5px 9px;
  border-radius:999px;
  background:#fff;
  color:#547066;
  font-size:11px;
  font-weight:800;
}
.master-form-tabs{
  display:flex;
  gap:6px;
  margin-bottom:12px;
  padding:5px;
  overflow-x:auto;
  border:1px solid #d8e4de;
  border-radius:11px;
  background:#fff;
}
.master-form-tab{
  display:flex;
  align-items:center;
  gap:6px;
  flex:0 0 auto;
  min-height:38px;
  padding:7px 11px;
  border:0;
  border-radius:8px;
  background:transparent;
  color:#557066;
  font:inherit;
  font-size:12px;
  font-weight:800;
  cursor:pointer;
}
.master-form-tab:hover{
  background:#edf5f1;
}
.master-form-tab.active{
  background:#255846;
  color:#fff;
}
.master-form-tab.advanced:not(.active){
  background:#f5f6f5;
}
.master-form-tab small{
  padding:1px 5px;
  border-radius:999px;
  background:rgba(255,255,255,.18);
  font-size:9px;
}
.master-form-section[hidden]{
  display:none!important;
}
.master-form-section{
  overflow:hidden;
  border:1px solid #d8e4de;
  border-radius:13px;
  background:#fff;
  box-shadow:0 4px 14px rgba(28,73,57,.04);
}
.master-form-section-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:13px 15px;
  border-bottom:1px solid #e3ece7;
  background:#fbfdfc;
}
.master-form-section-head h3{
  margin:0;
  color:#194d3b;
  font-size:17px;
}
.master-form-section-head p{
  margin:3px 0 0;
  color:#70837b;
  font-size:12px;
}
.master-advanced-badge{
  flex:0 0 auto;
  padding:4px 8px;
  border-radius:999px;
  background:#f0f1f0;
  color:#68756f;
  font-size:10px;
  font-weight:800;
}
.master-fields-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:12px 14px;
  padding:15px;
}
.master-field{
  display:flex;
  flex-direction:column;
  gap:6px;
  min-width:0;
  margin:0;
  padding:0;
  font-size:14px!important;
  font-weight:650;
}
.master-field.wide{
  grid-column:1/-1;
}
.master-field-label{
  color:#294d40;
  font-size:13px;
  font-weight:800;
}
.master-required-star{
  margin-left:2px;
  color:#ba4037;
}
.master-field input,
.master-field select,
.master-field textarea{
  width:100%;
  min-height:42px;
  padding:9px 11px;
  border:1px solid #cddbd5;
  border-radius:9px;
  background:#fff;
  color:#183d31;
  font:inherit;
  font-size:14px;
  outline:none;
  transition:.15s ease;
}
.master-field textarea{
  min-height:88px;
  resize:vertical;
}
.master-field input:focus,
.master-field select:focus,
.master-field textarea:focus{
  border-color:#4f9277;
  box-shadow:0 0 0 3px rgba(79,146,119,.10);
}
.master-field input::placeholder,
.master-field textarea::placeholder{
  color:#9aa8a2;
}
.master-field-help{
  color:#7a8a84;
  font-size:10.5px;
  font-weight:500;
  line-height:1.4;
}
.master-field-error input,
.master-field-error select,
.master-field-error textarea{
  border-color:#c95d54!important;
  background:#fff8f7!important;
  box-shadow:0 0 0 3px rgba(201,93,84,.08)!important;
}
.master-field-error .master-field-label{
  color:#9d4039;
}
.master-dialog-actions{
  position:sticky;
  bottom:0;
  z-index:7;
  display:flex!important;
  align-items:center;
  justify-content:space-between!important;
  gap:12px;
  margin:0!important;
  padding:12px 22px!important;
  border-top:1px solid #dce7e2;
  background:#fff;
  box-shadow:0 -5px 18px rgba(25,67,52,.06);
}
.master-required-note{
  color:#6d7f77;
  font-size:11px;
}
.master-required-note b{
  color:#ba4037;
}
.master-action-buttons{
  display:flex;
  gap:8px;
}
.master-action-buttons button{
  min-width:110px;
}
/* Keep old selector from forcing an inner scroll now that the whole form body scrolls */
#toh-master-fields{
  max-height:none!important;
  overflow:visible!important;
  padding-right:22px!important;
}
@media(max-width:760px){
  #toh-master-form{
    min-height:92vh;
  }
  .master-dialog-head,
  .master-form-content,
  .master-dialog-actions{
    padding-left:14px!important;
    padding-right:14px!important;
  }
  .master-fields-grid{
    grid-template-columns:1fr;
    padding:12px;
  }
  .master-field.wide{
    grid-column:1;
  }
  .master-form-guide,
  .master-form-section-head,
  .master-dialog-actions{
    align-items:stretch;
    flex-direction:column;
  }
  .master-action-buttons{
    width:100%;
  }
  .master-action-buttons button{
    flex:1;
  }
}


/* =========================================================
   v3.10.1 Master Data Forms — continuous vertical form
   ========================================================= */
.master-form-tabs{display:none!important}
.master-form-section[hidden]{display:block!important}
.master-form-sections-continuous{display:grid;gap:18px}

.master-dialog-head h2{color:#0f3328!important;font-size:30px!important;font-weight:850!important;letter-spacing:-.2px}
.master-dialog-head p{color:#36584c!important;font-size:16px!important;font-weight:600!important;line-height:1.5}
.master-form-content{padding:20px 24px 28px!important;background:#f5f8f6!important}
.master-form-guide{padding:14px 16px!important;margin-bottom:12px!important;border-color:#b9d3c7!important;background:#e9f4ee!important}
.master-form-guide strong{color:#123d30!important;font-size:18px!important;font-weight:850!important}
.master-form-guide span{color:#365b4d!important;font-size:14px!important;font-weight:600!important;line-height:1.5}
.master-form-guide-status{color:#264f40!important;font-size:13px!important}
.master-continuous-note{display:flex;align-items:center;gap:10px;margin-bottom:16px;padding:10px 14px;border-left:4px solid #2b7458;border-radius:8px;background:#fff;color:#284f41}
.master-continuous-note strong{flex:0 0 auto;color:#154636;font-size:15px;font-weight:850}
.master-continuous-note span{color:#45675b;font-size:14px;font-weight:600}
.master-form-section{overflow:visible!important;border:1px solid #c9dcd3!important;border-radius:14px!important;background:#fff!important;box-shadow:0 4px 16px rgba(23,63,50,.05)!important}
.master-form-section-head{display:grid!important;grid-template-columns:40px minmax(0,1fr) auto;align-items:center!important;gap:12px!important;padding:16px 18px!important;border-bottom:1px solid #d9e6e0!important;background:#eef6f2!important}
.master-section-number{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;background:#255846;color:#fff;font-size:17px;font-weight:900}
.master-section-heading-text{min-width:0}
.master-form-section-head h3{color:#123d30!important;font-size:21px!important;font-weight:850!important;line-height:1.3}
.master-form-section-head p{margin-top:4px!important;color:#46675c!important;font-size:14px!important;font-weight:600!important;line-height:1.5}
.master-advanced-badge{color:#475e55!important;font-size:12px!important;font-weight:800!important}
.master-fields-grid{gap:16px 18px!important;padding:20px!important}
.master-field{gap:8px!important;font-size:17px!important;font-weight:650!important}
.master-field-label{color:#173f32!important;font-size:16px!important;font-weight:850!important;line-height:1.35}
.master-required-star{color:#b63730!important;font-size:17px!important;font-weight:900!important}
.master-field input,.master-field select,.master-field textarea{min-height:50px!important;padding:11px 13px!important;border-color:#b9cec4!important;border-radius:9px!important;background:#fff!important;color:#102f26!important;font-size:17px!important;font-weight:600!important;line-height:1.4}
.master-field textarea{min-height:108px!important}
.master-field input::placeholder,.master-field textarea::placeholder{color:#73877e!important;opacity:1!important;font-weight:500!important}
.master-field-help{color:#4f6a5f!important;font-size:13px!important;font-weight:600!important;line-height:1.5!important}
.master-dialog-actions{padding:14px 24px!important}
.master-required-note{color:#4d665c!important;font-size:13px!important;font-weight:650!important}
.master-action-buttons button{min-width:128px!important;min-height:44px!important;font-size:15px!important;font-weight:800!important}
.master-field-error{padding:8px;margin:-8px;border-radius:10px;background:#fff2f0}
.master-field-error .master-field-label{color:#8f302b!important}

@media(max-width:760px){
  .master-dialog-head h2{font-size:25px!important}
  .master-dialog-head p{font-size:15px!important}
  .master-form-content{padding:16px 14px 24px!important}
  .master-continuous-note{align-items:flex-start;flex-direction:column}
  .master-form-section-head{grid-template-columns:36px minmax(0,1fr)!important}
  .master-advanced-badge{grid-column:2;justify-self:start}
  .master-fields-grid{padding:16px!important}
  .master-field-label{font-size:16px!important}
  .master-field input,.master-field select,.master-field textarea{font-size:16px!important}
}


/* =========================================================
   v3.10.2 Master Data dialog — scrolling fix
   =========================================================
   Scroll the whole modal instead of nesting a second scroll area.
   This prevents the action bar from floating over fields and works
   consistently with long continuous Product / Partner / Location forms.
*/
#toh-master-dialog{
  height:auto!important;
  max-height:94vh!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
}
#toh-master-form{
  display:block!important;
  height:auto!important;
  max-height:none!important;
  min-height:0!important;
  overflow:visible!important;
}
.master-dialog-head{
  position:sticky!important;
  top:0!important;
  z-index:8!important;
}
.master-form-content{
  display:block!important;
  flex:none!important;
  min-height:0!important;
  max-height:none!important;
  overflow:visible!important;
}
.master-dialog-actions{
  position:static!important;
  bottom:auto!important;
  z-index:auto!important;
  margin-top:18px!important;
  box-shadow:none!important;
}
#toh-master-fields{
  max-height:none!important;
  overflow:visible!important;
  padding-right:24px!important;
}
#toh-master-dialog::-webkit-scrollbar{
  width:12px;
}
#toh-master-dialog::-webkit-scrollbar-track{
  background:#eef4f1;
  border-radius:999px;
}
#toh-master-dialog::-webkit-scrollbar-thumb{
  background:#7ca08f;
  border:3px solid #eef4f1;
  border-radius:999px;
}
#toh-master-dialog::-webkit-scrollbar-thumb:hover{
  background:#5d8874;
}
@media(max-width:760px){
  #toh-master-dialog{
    max-height:96vh!important;
  }
  #toh-master-form{
    min-height:0!important;
  }
}


/* =========================================================
   v3.11.0 Customer Relations · Visit / Speaker
   ========================================================= */
.customer-visit-dialog{
  width:min(1180px,96vw);
  max-height:94vh;
  padding:0;
  overflow:auto;
}
.customer-visit-dialog>form{
  display:block;
  min-height:100%;
}
.customer-visit-head{
  position:sticky;
  top:0;
  z-index:8;
  margin:0;
  padding:18px 22px;
  background:#fff;
  border-bottom:1px solid var(--line);
}
.customer-visit-form-body{
  padding:18px 22px 8px;
}
.customer-visit-section{
  margin-bottom:18px;
  border:1px solid #d8e6df;
  border-radius:14px;
  overflow:hidden;
  background:#fff;
}
.customer-visit-section-head{
  display:flex;
  gap:14px;
  align-items:flex-start;
  padding:13px 16px;
  background:#eef7f2;
  border-bottom:1px solid #d8e6df;
}
.customer-visit-section-head>span{
  display:grid;
  place-items:center;
  flex:0 0 38px;
  width:38px;
  height:38px;
  border-radius:50%;
  background:var(--brand);
  color:#fff;
  font-size:18px;
  font-weight:800;
}
.customer-visit-section-head h3{
  margin:0;
  color:#173f32;
  font-size:24px;
}
.customer-visit-section-head p{
  margin:2px 0 0;
  color:#49685d;
  font-size:17px;
}
.customer-visit-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:14px 18px;
  padding:18px 22px 22px;
}
.customer-visit-grid label{
  display:flex;
  flex-direction:column;
  gap:7px;
  color:#173f32;
  font-size:19px;
  font-weight:750;
}
.customer-visit-grid label.wide,
.customer-visit-grid .wide{
  grid-column:1/-1;
}
.customer-visit-grid input,
.customer-visit-grid select,
.customer-visit-grid textarea{
  width:100%;
  min-height:48px;
  border:1px solid #b9d0c5;
  border-radius:10px;
  padding:10px 12px;
  color:#17352d;
  background:#fff;
  font-size:19px;
}
.customer-visit-grid textarea{
  min-height:90px;
  resize:vertical;
}
.customer-visit-grid small{
  color:#557268;
  font-size:15px;
  font-weight:500;
}
.customer-visit-grid b,
.customer-visit-required-note b{
  color:#b42318;
}
.customer-visit-quote-check{
  display:flex!important;
  flex-direction:row!important;
  align-items:flex-start;
  gap:10px!important;
  padding:12px 14px;
  border:1px solid #d6e5dd;
  border-radius:10px;
  background:#f7fbf9;
}
.customer-visit-quote-check input{
  width:auto!important;
  min-height:0!important;
  margin-top:4px;
}
.customer-visit-quote-check span,
.customer-visit-quote-check small{
  display:block;
}
.customer-visit-existing-files{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  align-items:center;
}
.customer-visit-existing-files a,
.customer-visit-files a{
  display:inline-flex;
  padding:6px 9px;
  border-radius:8px;
  background:#eaf5ef;
  color:#245a45;
  text-decoration:none;
  font-weight:700;
}
.customer-visit-actions{
  position:static!important;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  padding:14px 22px 20px;
  background:#fff;
  border-top:1px solid var(--line);
}
.customer-visit-actions>div{
  display:flex;
  gap:8px;
}
.customer-visit-toolbar{
  align-items:center;
}
.customer-visit-guide{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:10px;
  margin:12px 0 16px;
}
.customer-visit-guide>div{
  padding:10px 12px;
  border:1px solid #d8e5df;
  border-radius:10px;
  background:#f8fbf9;
}
.customer-visit-guide strong,
.customer-visit-guide span{
  display:block;
}
.customer-visit-guide strong{
  color:#1f513e;
}
.customer-visit-guide span{
  margin-top:2px;
  color:#617a70;
  font-size:16px;
}
.customer-visit-detail-status{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin-bottom:14px;
  padding:10px 12px;
  border:1px solid #d7e4de;
  border-radius:10px;
  background:#f7faf8;
}
.customer-visit-detail-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px;
}
.customer-visit-detail-grid>div{
  padding:10px 12px;
  border:1px solid #dce7e2;
  border-radius:9px;
  background:#fff;
}
.customer-visit-detail-grid>div.wide{
  grid-column:1/-1;
}
.customer-visit-detail-grid small,
.customer-visit-detail-grid strong{
  display:block;
}
.customer-visit-detail-grid small{
  color:#667b72;
}
.customer-visit-detail-grid strong{
  margin-top:2px;
  white-space:pre-wrap;
}
.customer-visit-files,
.customer-visit-quotation-box{
  margin-top:14px;
  padding:12px;
  border:1px solid #d7e4de;
  border-radius:10px;
  background:#fff;
}
.customer-visit-files h3{
  margin:0 0 8px;
}
.customer-visit-quotation-box{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  background:#f3f9f6;
}
.customer-visit-quotation-box strong,
.customer-visit-quotation-box span{
  display:block;
}
.customer-visit-quotation-box span{
  margin-top:2px;
  color:#617970;
}
.customer-visit-detail-actions{
  margin-top:14px;
  flex-wrap:wrap;
}
@media(max-width:800px){
  .customer-visit-grid,
  .customer-visit-guide,
  .customer-visit-detail-grid{
    grid-template-columns:1fr;
  }
  .customer-visit-grid label.wide,
  .customer-visit-grid .wide,
  .customer-visit-detail-grid>div.wide{
    grid-column:1;
  }
  .customer-visit-actions,
  .customer-visit-quotation-box,
  .customer-visit-detail-status{
    align-items:stretch;
    flex-direction:column;
  }
  .customer-visit-actions>div{
    width:100%;
  }
  .customer-visit-actions button{
    flex:1;
  }
}


/* =========================================================
   v3.11.1 Customer Visit date + required marker UX
   ========================================================= */
.customer-visit-label-text{
  display:inline!important;
  width:auto;
  line-height:1.35;
}
.customer-visit-label-text b{
  display:inline!important;
  margin-left:3px;
  color:#b42318;
  font-weight:900;
}
.customer-visit-grid input[readonly]{
  background:#edf3f0;
  color:#294f41;
  cursor:not-allowed;
  font-weight:700;
}


/* =========================================================
   v3.11.2 Universal Close Button
   ทุก Modal/Form/Detail มีปุ่มปิดด้านล่าง
   ========================================================= */
.dialog-actions .dialog-close-action{
  margin-right:auto;
  flex:0 0 auto;
  min-width:105px;
  background:#edf4f0;
  color:#194d3a;
  border:1px solid #cfe0d8;
  font-weight:800;
}
.dialog-actions .dialog-close-action:hover{
  background:#e1eee7;
}
.universal-dialog-actions{
  margin-top:18px;
  padding-top:14px;
  border-top:1px solid var(--line);
}
@media(max-width:720px){
  .dialog-actions .dialog-close-action{
    width:100%;
    margin-right:0;
  }
}


/* =========================================================
   v3.11.3 Universal Close — far right + dark red
   ========================================================= */
.dialog-actions .dialog-close-action{
  order:999!important;
  margin-left:auto!important;
  margin-right:0!important;
  min-width:108px;
  background:#FFF8F8!important;
  color:#8B1E1E!important;
  border:1.5px solid #B64A4A!important;
  font-weight:900!important;
  font-size:15px!important;
  letter-spacing:.15px;
}
.dialog-actions .dialog-close-action:hover{
  background:#FDECEC!important;
  color:#6F1515!important;
  border-color:#8B1E1E!important;
}
.dialog-actions .dialog-close-action:focus-visible{
  outline:3px solid rgba(139,30,30,.22)!important;
  outline-offset:2px;
}

/*
 * On small screens Close remains the last action and full width,
 * so the finishing action is still easy to find.
 */
@media(max-width:720px){
  .dialog-actions .dialog-close-action{
    order:999!important;
    width:100%!important;
    margin-left:0!important;
    margin-right:0!important;
  }
}


/* =========================================================
   v3.11.4 Sales navigation + latest sidebar brand
   ========================================================= */
.toh-sidebar .logo{
  min-height:94px!important;
  padding:4px 6px 8px!important;
  margin:0 4px 8px!important;
}
.sidebar-logo-card{
  width:100%;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:5px;
}
.sidebar-logo-card img{
  display:block;
  width:auto!important;
  max-width:188px!important;
  max-height:70px!important;
  object-fit:contain;
}
.sidebar-hub-name{
  color:#F6FBF8;
  font-size:14px;
  font-weight:700;
  letter-spacing:.35px;
  line-height:1.15;
  text-align:center;
  text-shadow:0 1px 1px rgba(0,0,0,.16);
}
@media(max-width:1120px){
  .sidebar-logo-card img{
    max-width:170px!important;
    max-height:64px!important;
  }
  .sidebar-hub-name{font-size:13px;}
}


/* =========================================================
   v3.11.5 Latest print logo + larger sidebar branding
   ========================================================= */

/* โลโก้ Sidebar ใหญ่ขึ้นประมาณ 35% จากความสูงเดิม 70px -> 95px */
.toh-sidebar .logo{
  min-height:152px!important;
  padding:7px 4px 10px!important;
  margin:0 2px 8px!important;
  overflow:visible!important;
}
.sidebar-logo-card{
  gap:7px!important;
}
.sidebar-logo-card img{
  width:auto!important;
  max-width:220px!important;
  max-height:95px!important;
  object-fit:contain!important;
}

/* ThaiorganicsHub ใหญ่ขึ้น 100% จาก 14px -> 28px */
.sidebar-hub-name{
  font-size:28px!important;
  font-weight:800!important;
  letter-spacing:.25px!important;
  line-height:1.1!important;
  color:#F6FBF8!important;
}

/* Responsive: ยังเพิ่มจากค่าเดิมประมาณ 35% / 100% เช่นกัน */
@media(max-width:1120px){
  .toh-sidebar .logo{
    min-height:142px!important;
  }

  .sidebar-logo-card img{
    max-width:216px!important;
    max-height:86px!important;
  }

  .sidebar-hub-name{
    font-size:26px!important;
  }
}

/*
 * Print logo ล่าสุดมีสัดส่วนกว้างกว่าของเดิม
 * ให้พื้นที่หัวเอกสารเพียงพอใน Visit / PR / PO / Generic docs
 */
@media print{
  img.logo{
    object-fit:contain!important;
  }
}


/* =========================================================
   v3.11.6 Sidebar branding adjustment
   ========================================================= */

/* พื้นหลังโลโก้เป็นสีขาว */
.toh-sidebar .logo{
  background:#FFFFFF!important;
  border-radius:14px!important;
  margin:10px 10px 12px!important;
  padding:10px 8px 12px!important;
  min-height:152px!important;
  box-shadow:0 2px 10px rgba(0,0,0,.06)!important;
  overflow:visible!important;
}

.sidebar-logo-card{
  width:100%!important;
  gap:7px!important;
}

/* โลโก้คงขนาดจาก v3.11.5 */
.sidebar-logo-card img{
  width:auto!important;
  max-width:220px!important;
  max-height:95px!important;
  object-fit:contain!important;
}

/* ThaiorganicsHub ลดลง 25%: 28px -> 21px */
.sidebar-hub-name{
  font-size:21px!important;
  font-weight:800!important;
  line-height:1.1!important;
  letter-spacing:.2px!important;
  color:#173F32!important;
  text-align:center!important;
}

/* จอแคบ ลดตามสัดส่วนจากค่า responsive เดิม */
@media(max-width:1120px){
  .toh-sidebar .logo{
    min-height:142px!important;
    margin:8px 8px 10px!important;
  }

  .sidebar-logo-card img{
    max-width:216px!important;
    max-height:86px!important;
  }

  .sidebar-hub-name{
    font-size:19.5px!important;
  }
}


/* =========================================================
   v3.11.7 Sidebar logo only adjustment
   - remove white background from sidebar logo area
   - use latest uploaded logo only for left sidebar
   ========================================================= */
.toh-sidebar .logo{
  background:transparent !important;
  box-shadow:none !important;
  border-radius:0 !important;
  padding:8px 6px 8px !important;
  margin:10px 8px 8px !important;
  min-height:auto !important;
}

.sidebar-logo-card{
  background:transparent !important;
  border:none !important;
  box-shadow:none !important;
  gap:8px !important;
}

.sidebar-logo-card img{
  width:auto !important;
  max-width:220px !important;
  max-height:98px !important;
  object-fit:contain !important;
  background:transparent !important;
}

@media(max-width:1120px){
  .toh-sidebar .logo{
    padding:6px 4px 8px !important;
    margin:8px 6px 8px !important;
  }
  .sidebar-logo-card img{
    max-width:210px !important;
    max-height:90px !important;
  }
}


/* =========================================================
   v3.11.8 Sidebar hub name color
   ========================================================= */
.sidebar-hub-name{
  color:#FFFFFF!important;
}


/* =========================================================
   v3.11.9 Lead document date + Call / Visit activity
   ========================================================= */
#toh-doc-form input.fixed-document-date{
  background:#EFF4F1!important;
  color:#2F5144!important;
  font-weight:800!important;
  cursor:not-allowed;
}
.lead-callvisit-dialog{
  width:min(980px,95vw);
  max-height:94vh;
}
.lead-callvisit-customer{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:9px;
  margin-bottom:14px;
}
.lead-callvisit-customer>div{
  padding:10px 11px;
  border:1px solid #D7E4DE;
  border-radius:9px;
  background:#F7FAF8;
}
.lead-callvisit-customer small,
.lead-callvisit-customer strong,
.lead-callvisit-customer span{
  display:block;
}
.lead-callvisit-customer small{
  color:#6E8078;
}
.lead-callvisit-customer strong{
  margin-top:2px;
  color:#174C39;
  font-size:15px;
}
.lead-callvisit-customer span{
  margin-top:2px;
  color:#5D746A;
}
.lead-callvisit-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:11px;
}
.lead-callvisit-grid label{
  color:#173F32;
  font-weight:800;
}
.lead-callvisit-grid label.wide{
  grid-column:1/-1;
}
.lead-callvisit-grid label b{
  color:#A62D2D;
}
.lead-callvisit-grid input,
.lead-callvisit-grid select,
.lead-callvisit-grid textarea{
  width:100%;
  margin-top:5px;
}
.lead-callvisit-grid textarea{
  resize:vertical;
}
#toh-lead-visit-location-wrap{
  display:none;
}
#toh-lead-visit-location-wrap.required-visit-location{
  display:block;
}
.lead-callvisit-recommend{
  display:flex;
  flex-direction:column;
  gap:3px;
  margin-top:13px;
  padding:10px 12px;
  border:1px solid #D7E4DE;
  border-radius:9px;
  background:#F1F7F4;
}
.lead-callvisit-recommend strong{
  color:#20533F;
}
.lead-callvisit-recommend span{
  color:#61766D;
  line-height:1.5;
}
@media(max-width:760px){
  .lead-callvisit-customer,
  .lead-callvisit-grid{
    grid-template-columns:1fr;
  }
  .lead-callvisit-grid label.wide{
    grid-column:1;
  }
}


/* =========================================================
   v3.12.0 Lead / Quotation owner visibility
   ========================================================= */
.owner-visibility-notice{
  display:flex;align-items:center;gap:12px;margin-bottom:12px;padding:10px 12px;
  border:1px solid #CFE0D8;border-radius:10px;background:#F2F8F5;
}
.owner-visibility-notice strong{color:#174C39;white-space:nowrap}
.owner-visibility-notice span{color:#5F756B;line-height:1.45}
.owner-scope-chip{
  display:inline-flex;align-items:center;min-height:42px;padding:0 12px;
  border:1px solid #CFE0D8;border-radius:9px;background:#F1F7F4;
  color:#285846;font-weight:800;white-space:nowrap;
}
#toh-doc-form select[name="owner_id"]:disabled{
  background:#EFF4F1!important;color:#315547!important;opacity:1!important;cursor:not-allowed;
}
@media(max-width:760px){.owner-visibility-notice{align-items:flex-start;flex-direction:column;gap:3px}}


/* =========================================================
   v3.12.1 Clickable Notifications / Deep Link
   ========================================================= */
.notify-pop{
  width:min(590px,calc(100vw - 28px))!important;
}
.notify-pop-head>div{
  display:flex;
  flex-direction:column;
  gap:2px;
}
.notify-pop-head small{
  color:#6A7E75;
  font-size:12px;
}
.notify-item{
  display:flex!important;
  width:100%;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  padding:14px 16px!important;
  border:0!important;
  border-top:1px solid #E4ECE8!important;
  border-radius:0!important;
  background:#FFFFFF!important;
  color:#173F32!important;
  font:inherit!important;
  text-align:left!important;
}
.notify-item.is-unread{
  background:#F1F8F4!important;
  box-shadow:inset 4px 0 0 #2E765A;
}
.notify-item.is-read{
  background:#FFFFFF!important;
}
.notify-item.is-clickable{
  cursor:pointer;
}
.notify-item.is-clickable:hover{
  background:#EAF5EF!important;
}
.notify-item:disabled{
  opacity:.65;
  cursor:wait!important;
}
.notify-item-main{
  display:flex;
  min-width:0;
  flex:1;
  flex-direction:column;
  gap:5px;
}
.notify-item-main strong{
  color:#173F32;
  font-size:15px;
}
.notify-message{
  color:#4D685E;
  line-height:1.5;
}
.notify-item-main small{
  color:#7A8B84;
}
.notify-open-action{
  flex:0 0 auto;
  color:#1D654C;
  font-weight:900;
  white-space:nowrap;
}
.notification-target-row{
  animation:notificationTargetPulse 1.1s ease-in-out 3;
}
@keyframes notificationTargetPulse{
  0%,100%{
    background:transparent;
  }
  50%{
    background:#E4F4EA;
  }
}
@media(max-width:650px){
  .notify-item{
    align-items:flex-start;
    flex-direction:column;
    gap:8px;
  }
  .notify-open-action{
    align-self:flex-end;
  }
}


/* v3.12.4 Quotation Sales Forecast */
.sales-probability-badge{display:inline-flex;align-items:center;gap:6px;min-width:126px;padding:5px 8px;border-radius:999px;border:1px solid transparent;font-size:12px;white-space:nowrap}
.sales-probability-badge b{font-size:13px}.sales-probability-badge.initial{background:#F2F4F3;border-color:#D8E0DC;color:#53655E}.sales-probability-badge.low{background:#FFF8E8;border-color:#E9D69B;color:#725D20}.sales-probability-badge.medium{background:#FFF1E4;border-color:#E8C49E;color:#8A5526}.sales-probability-badge.high{background:#EAF5EF;border-color:#B7D9C5;color:#266446}.sales-probability-badge.won{background:#DDF6E7;border-color:#89D0A4;color:#155C35}.sales-probability-badge.lost{background:#F9E8E6;border-color:#E1AAA4;color:#94443D}
.quotation-forecast-editor,.quote-forecast-update-box{margin-top:12px;padding:12px;border:1px solid #D5E3DC;border-radius:10px;background:#F7FBF9}.quotation-forecast-editor-head strong,.quotation-forecast-editor-head small,.quote-forecast-update-box>div strong,.quote-forecast-update-box>div small{display:block}.quotation-forecast-editor-head strong,.quote-forecast-update-box>div strong{color:#174C39;font-size:16px}.quotation-forecast-editor-head small,.quote-forecast-update-box>div small{margin-top:2px;color:#687D74}.quotation-forecast-editor-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}.quotation-forecast-editor-grid label,.quote-forecast-update-box label{color:#173F32;font-weight:800}.quotation-forecast-editor-grid input,.quotation-forecast-editor-grid select,.quote-forecast-update-box input,.quote-forecast-update-box select{width:100%;margin-top:5px}.quotation-probability-guide{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;margin-top:10px}.quotation-probability-guide span{padding:7px;border-radius:8px;background:#FFF;border:1px solid #E0E9E4;color:#60756C;font-size:11px;text-align:center}.quotation-probability-guide b{display:block;color:#204F3D;font-size:13px}.quote-forecast-update-box{display:grid;grid-template-columns:minmax(230px,1.4fr) 1fr 1fr;gap:10px;align-items:end;margin-bottom:16px}
@media(max-width:850px){.quotation-forecast-editor-grid,.quote-forecast-update-box{grid-template-columns:1fr}.quotation-probability-guide{grid-template-columns:1fr}}


/* =========================================================
   v3.12.5 Admin-only Test Data Delete
   ========================================================= */
.dialog-actions .admin-delete-test-data{
  order:998!important;
  margin-left:auto!important;
  margin-right:0!important;
  min-width:150px;
  min-height:42px;
  padding:8px 13px;
  border:1.5px solid #B53D36!important;
  border-radius:9px;
  background:#FFF5F4!important;
  color:#8E2621!important;
  font:inherit;
  font-weight:900!important;
  cursor:pointer;
}
.dialog-actions .admin-delete-test-data:hover{
  background:#FCE5E2!important;
  border-color:#8E2621!important;
}
.dialog-actions .admin-delete-test-data:disabled{
  opacity:.55;
  cursor:wait;
}
@media(max-width:720px){
  .dialog-actions .admin-delete-test-data{
    width:100%;
    margin-left:0!important;
  }
}


/* =========================================================
   v3.12.6 Admin Audit Log
   ========================================================= */
.audit-admin-banner{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  margin-bottom:12px;
  padding:12px 14px;
  border:1px solid #CFE0D8;
  border-radius:11px;
  background:#F2F8F5;
}
.audit-admin-banner>div{
  display:flex;
  flex-direction:column;
  gap:3px;
}
.audit-admin-banner strong{
  color:#174C39;
  font-size:16px;
}
.audit-admin-banner span{
  color:#60756C;
}
.audit-stats{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:10px;
  margin-bottom:12px;
}
.audit-filter-panel{
  margin-bottom:12px;
}
.audit-filter-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:10px;
}
.audit-filter-grid label{
  color:#173F32;
  font-weight:800;
}
.audit-filter-grid input,
.audit-filter-grid select{
  width:100%;
  margin-top:5px;
}
.audit-search-field{
  grid-column:span 1;
}
.audit-filter-actions{
  display:flex;
  justify-content:flex-end;
  gap:8px;
  margin-top:12px;
}
.audit-table th{
  white-space:nowrap;
}
.audit-table td{
  vertical-align:top;
}
.audit-row{
  cursor:pointer;
}
.audit-row:hover{
  background:#F5FAF7;
}
.audit-date-cell strong,
.audit-date-cell small{
  display:block;
}
.audit-date-cell small{
  margin-top:2px;
  color:#829089;
}
.audit-pagination{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:12px;
  margin-top:12px;
}
.audit-detail-dialog{
  width:min(1000px,95vw);
  max-height:94vh;
}
.audit-detail-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:9px;
}
.audit-detail-grid>div{
  padding:9px 10px;
  border:1px solid #D8E5DF;
  border-radius:9px;
  background:#F8FBF9;
}
.audit-detail-grid>div.wide{
  grid-column:1/-1;
}
.audit-detail-grid small,
.audit-detail-grid strong,
.audit-detail-grid span{
  display:block;
}
.audit-detail-grid small{
  color:#71827B;
}
.audit-detail-grid strong{
  margin-top:2px;
  color:#254F3E;
}
.audit-detail-grid span{
  margin-top:2px;
  color:#657A71;
}
.audit-payload{
  margin-top:12px;
  border:1px solid #D8E5DF;
  border-radius:9px;
  overflow:hidden;
}
.audit-payload-head{
  display:flex;
  justify-content:space-between;
  gap:10px;
  padding:9px 11px;
  background:#EDF6F1;
}
.audit-payload-head strong{
  color:#24533F;
}
.audit-payload-head span{
  color:#6B7D75;
  font-size:11px;
}
.audit-payload pre{
  max-height:420px;
  margin:0;
  padding:12px;
  overflow:auto;
  background:#15231E;
  color:#DCECE4;
  font-family:ui-monospace,SFMono-Regular,Consolas,monospace;
  font-size:12px;
  line-height:1.5;
  white-space:pre-wrap;
  overflow-wrap:anywhere;
}
@media(max-width:1050px){
  .audit-filter-grid{
    grid-template-columns:1fr 1fr;
  }
  .audit-detail-grid{
    grid-template-columns:1fr 1fr;
  }
}
@media(max-width:720px){
  .audit-admin-banner{
    align-items:stretch;
    flex-direction:column;
  }
  .audit-stats,
  .audit-filter-grid,
  .audit-detail-grid{
    grid-template-columns:1fr;
  }
  .audit-filter-actions{
    flex-direction:column;
  }
  .audit-detail-grid>div.wide{
    grid-column:1;
  }
}


/* =========================================================
   v3.12.7 Sidebar department reorganization
   UI/navigation only — business modules remain unchanged.
   ========================================================= */


/* =========================================================
   v3.13.0 Pretty URL Router
   ========================================================= */
.router-error-panel{
  max-width:760px;
  margin:24px auto;
  text-align:center;
}
.router-error-panel code{
  display:inline-block;
  margin:4px 0 14px;
  padding:4px 7px;
  border-radius:6px;
  background:#EEF4F1;
  color:#315848;
  overflow-wrap:anywhere;
}


/* =========================================================
   v3.14.0 Sales Order from Approved Quotation
   ========================================================= */
.sales-order-process{
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:8px;
  margin-bottom:12px;
}
.sales-order-process span{
  display:flex;
  align-items:center;
  gap:7px;
  padding:9px 10px;
  border:1px solid #D5E4DD;
  border-radius:9px;
  background:#F7FBF9;
  color:#456358;
  font-size:12px;
}
.sales-order-process b{
  display:inline-flex;
  width:23px;
  height:23px;
  align-items:center;
  justify-content:center;
  border-radius:50%;
  background:#1F624A;
  color:#FFF;
}
.sales-order-create-dialog{
  width:min(1240px,97vw);
  max-height:95vh;
}
.so-picker-toolbar{
  display:flex;
  justify-content:space-between;
  gap:10px;
  margin-bottom:10px;
}
.so-picker-toolbar input{
  flex:1;
  min-width:260px;
}
.so-source-summary{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:8px;
  margin-bottom:10px;
}
.so-source-summary>div{
  padding:9px 10px;
  border:1px solid #D9E6E0;
  border-radius:9px;
  background:#F8FBF9;
}
.so-source-summary small,
.so-source-summary strong{
  display:block;
}
.so-source-summary small{color:#71837A}
.so-source-summary strong{margin-top:2px;color:#214F3D}
.so-guidance{
  display:flex;
  flex-direction:column;
  gap:2px;
  margin-bottom:10px;
  padding:9px 11px;
  border-left:4px solid #2F755A;
  background:#EFF7F3;
}
.so-guidance strong{color:#20503D}
.so-guidance span{color:#657A71;font-size:12px}
.so-line-editor-table input[type="number"]{
  width:105px;
  min-width:90px;
}
.so-line-editor-table input[type="checkbox"]{
  width:18px;
  height:18px;
}
.so-order-form-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:9px;
  margin-top:12px;
}
.so-order-form-grid label{
  color:#214B3B;
  font-weight:800;
}
.so-order-form-grid label.wide{grid-column:1/-1}
.so-order-form-grid input,
.so-order-form-grid select,
.so-order-form-grid textarea{
  width:100%;
  margin-top:5px;
}
.so-order-form-grid b{color:#A72D2D}
.so-total-preview{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:14px;
  margin-top:12px;
  padding:10px 12px;
  border-top:1px solid #D7E4DE;
}
.so-total-preview span{color:#60756B}
.so-total-preview strong{color:#164D38;font-size:20px}
@media(max-width:900px){
  .sales-order-process,
  .so-source-summary,
  .so-order-form-grid{
    grid-template-columns:1fr 1fr;
  }
}
@media(max-width:650px){
  .sales-order-process,
  .so-source-summary,
  .so-order-form-grid{
    grid-template-columns:1fr;
  }
  .so-order-form-grid label.wide{grid-column:1}
  .so-picker-toolbar{flex-direction:column}
}


/* =========================================================
   v3.14.1 Sales Order <-> Inventory
   ========================================================= */
.so-stock-panel{
  margin:16px 0;
  padding:13px;
  border:1px solid #D4E3DC;
  border-radius:11px;
  background:#F8FBF9;
}
.so-stock-panel-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
  margin-bottom:10px;
}
.so-stock-panel-head h3{
  margin:0;
  color:#174C39;
}
.so-stock-panel-head p{
  margin:3px 0 0;
  color:#62786E;
}
.so-stock-warning{
  display:flex;
  gap:8px;
  align-items:center;
  margin-bottom:10px;
  padding:9px 11px;
  border-radius:9px;
}
.so-stock-warning strong{
  white-space:nowrap;
}
.so-stock-warning.danger{
  border:1px solid #E3B2AC;
  background:#FFF1EF;
  color:#8A3B34;
}
.so-stock-warning.ready{
  border:1px solid #B9D9C7;
  background:#EFF8F3;
  color:#245F44;
}
.so-stock-table{
  min-width:1120px;
}
.so-stock-table td,
.so-stock-table th{
  vertical-align:top;
}
.so-stock-lots{
  min-width:210px;
  font-size:12px;
  line-height:1.55;
}
.so-stock-flow-note{
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:6px;
  margin-top:10px;
}
.so-stock-flow-note span{
  padding:8px;
  border:1px solid #DCE7E2;
  border-radius:8px;
  background:#FFFFFF;
  color:#63776E;
  font-size:11px;
  text-align:center;
}
.so-stock-flow-note b{
  display:block;
  margin-bottom:2px;
  color:#24543F;
}
.danger-text{
  color:#9A3A32!important;
  font-weight:800;
}
@media(max-width:850px){
  .so-stock-panel-head{
    flex-direction:column;
  }
  .so-stock-flow-note{
    grid-template-columns:1fr;
  }
}


/* =========================================================
   v3.14.2 VAT Inclusive Quotation / Sales Order
   ========================================================= */
.vat-pricing-mode{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
  margin:12px 0;
  padding:10px 12px;
  border-radius:9px;
  font-size:12px;
}
.vat-pricing-mode strong{
  white-space:nowrap;
}
.vat-pricing-mode.inclusive{
  border:1px solid #B9D9C7;
  background:#EFF8F3;
  color:#245F44;
}
.vat-pricing-mode.legacy{
  border:1px solid #E4CBA7;
  background:#FFF8EA;
  color:#77581E;
}
.vat-recalc-btn{
  border-color:#C89E55!important;
  color:#75571E!important;
  background:#FFF9ED!important;
}
.so-price-summary{
  margin-top:14px;
  margin-left:auto;
  width:min(460px,100%);
}
@media(max-width:700px){
  .vat-pricing-mode{
    flex-direction:column;
  }
  .vat-pricing-mode strong{
    white-space:normal;
  }
}


/* =========================================================
   v3.14.3 Compact Dialog / Form Action Bar
   เป้าหมาย:
   - ปุ่มท้ายฟอร์มไม่ยืดสูงตาม Transition Picker
   - Footer ของ Dialog มองเห็นครบและใช้งานง่าย
   - Print / PDF / Delete Test / Close มีขนาดพอดี
   - ใช้กับทุก Dialog/Detail ทั่วระบบ
   ========================================================= */

/*
 * สาเหตุเดิม:
 * .dialog-actions เป็น flex แต่ไม่ได้กำหนด align-items
 * ค่าเริ่มต้นคือ stretch ทำให้ปุ่มทุกปุ่มสูงเท่ากับรายการที่สูงที่สุด
 * เช่น transition-picker จึงทำให้ Print/PDF/Delete/Close สูงผิดปกติ
 */
dialog .dialog-actions:not(.master-dialog-actions){
  align-items:center!important;
  align-content:center!important;
  flex-wrap:wrap!important;
  column-gap:8px!important;
  row-gap:8px!important;
  min-height:0!important;
  padding-top:12px!important;
  padding-bottom:4px!important;
}

/*
 * Workflow selector แยกเป็นแถวของตัวเอง
 * เพื่อไม่บีบปุ่ม Print/PDF/Delete/Close
 */
dialog .dialog-actions:not(.master-dialog-actions) > .transition-picker{
  flex:1 1 100%!important;
  width:100%!important;
  min-width:0!important;
  margin:0 0 2px 0!important;
  padding:9px 11px!important;
  align-items:flex-end!important;
}

dialog .dialog-actions .transition-picker label{
  flex:1 1 auto!important;
  min-width:0!important;
  gap:4px!important;
  font-size:14px!important;
  line-height:1.35!important;
}

dialog .dialog-actions .transition-picker select{
  width:100%!important;
  min-width:0!important;
  min-height:40px!important;
  height:40px!important;
  padding:7px 10px!important;
  font-size:15px!important;
}

dialog .dialog-actions .transition-picker button{
  min-width:82px!important;
}

/*
 * ปุ่ม Action ทุกฟอร์มให้เป็นขนาดมาตรฐานเดียวกัน
 * ไม่ใช้ width/height เต็มพื้นที่อีก
 */
dialog .dialog-actions:not(.master-dialog-actions) > button,
dialog .dialog-actions:not(.master-dialog-actions) .output-action-btn,
dialog .dialog-actions:not(.master-dialog-actions) .admin-delete-test-data,
dialog .dialog-actions:not(.master-dialog-actions) .dialog-close-action{
  align-self:center!important;
  flex:0 0 auto!important;
  width:auto!important;
  max-width:100%!important;
  min-height:40px!important;
  height:auto!important;
  padding:8px 13px!important;
  border-radius:9px!important;
  font-size:15px!important;
  line-height:1.25!important;
  white-space:nowrap!important;
}

/* พิมพ์ / PDF */
dialog .dialog-actions .output-action-btn{
  min-width:118px!important;
  font-weight:750!important;
}

/* ลบข้อมูลทดสอบ */
dialog .dialog-actions .admin-delete-test-data{
  min-width:132px!important;
  min-height:40px!important;
  padding:8px 13px!important;
  font-size:15px!important;
}

/* Close */
dialog .dialog-actions .dialog-close-action{
  min-width:86px!important;
  min-height:40px!important;
  padding:8px 14px!important;
  font-size:15px!important;
}

/*
 * Action footer ใน Detail/Form:
 * ให้พื้นหลังชัดและไม่โดนเนื้อหาด้านล่างกลืน
 */
#toh-detail-dialog .dialog-actions:not(.master-dialog-actions),
#toh-doc-dialog .dialog-actions:not(.master-dialog-actions),
.toh-dialog .dialog-actions:not(.master-dialog-actions){
  position:static!important;
  bottom:auto!important;
  z-index:auto!important;
  margin-top:18px!important;
  padding:12px 0 4px!important;
  background:#FFFFFF!important;
  box-shadow:none!important;
}

/*
 * ป้องกันท้าย Dialog ถูกชนขอบ viewport
 */
dialog{
  max-height:92vh!important;
  scroll-padding-bottom:88px;
}

#toh-detail-body{
  padding-bottom:2px;
}

/*
 * Forms ที่มีปุ่ม Save/Cancel แบบปกติ
 * ยังคง compact เช่นเดียวกัน
 */
dialog .dialog-actions:not(.master-dialog-actions) .primary,
dialog .dialog-actions:not(.master-dialog-actions) .secondary{
  min-height:40px;
}

/*
 * Tablet / Mobile:
 * แสดงปุ่มเป็น 2 คอลัมน์เมื่อพื้นที่ไม่พอ
 * แทนการขยายปุ่มเดียวเต็มหน้าจอแบบเดิม
 */
@media(max-width:720px){
  dialog .dialog-actions:not(.master-dialog-actions){
    justify-content:flex-end!important;
  }

  dialog .dialog-actions:not(.master-dialog-actions) > .transition-picker{
    flex-basis:100%!important;
  }

  dialog .dialog-actions:not(.master-dialog-actions) > button,
  dialog .dialog-actions:not(.master-dialog-actions) .output-action-btn,
  dialog .dialog-actions:not(.master-dialog-actions) .admin-delete-test-data,
  dialog .dialog-actions:not(.master-dialog-actions) .dialog-close-action{
    flex:1 1 calc(50% - 5px)!important;
    width:auto!important;
    min-width:0!important;
    white-space:normal!important;
  }

  dialog .dialog-actions .transition-picker{
    flex-direction:row!important;
  }

  dialog .dialog-actions .transition-picker label{
    width:auto!important;
  }

  dialog .dialog-actions .transition-picker button{
    flex:0 0 auto!important;
    width:auto!important;
  }
}

@media(max-width:480px){
  dialog .dialog-actions .transition-picker{
    flex-direction:column!important;
    align-items:stretch!important;
  }

  dialog .dialog-actions .transition-picker button{
    width:100%!important;
  }
}


/* =========================================================
   v3.14.4 Form Actions at Real Bottom
   ปุ่มท้ายฟอร์มต้องอยู่ล่างสุดของเนื้อหาและเลื่อนตามฟอร์ม
   ห้าม Freeze / Sticky / Fixed
   ========================================================= */
#toh-detail-dialog .dialog-actions:not(.master-dialog-actions),
#toh-doc-dialog .dialog-actions:not(.master-dialog-actions),
.toh-dialog .dialog-actions:not(.master-dialog-actions){
  position:static!important;
  inset:auto!important;
  transform:none!important;
}

dialog .dialog-actions:not(.master-dialog-actions){
  scroll-margin-bottom:16px;
}


/* =========================================================
   v3.14.5 Sales Order Location Selector
   ========================================================= */
.so-location-panel{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  margin:14px 0;
  padding:13px 14px;
  border:1px solid #CFE0D8;
  border-radius:11px;
  background:#F7FBF8;
}

.so-location-panel.required{
  border-color:#D6A65C;
  background:#FFF9EE;
}

.so-location-panel.readonly{
  background:#F8FAF9;
}

.so-location-copy{
  display:flex;
  flex-direction:column;
  gap:3px;
  min-width:230px;
}

.so-location-copy small{
  color:#4E6C60;
}

.so-location-copy strong{
  color:#173F31;
  font-size:15px;
}

.so-location-copy span{
  color:#73847D;
  font-size:12px;
}

.so-location-controls{
  display:flex;
  align-items:center;
  gap:8px;
  flex:1;
  justify-content:flex-end;
}

.so-location-controls select{
  width:min(430px,100%);
  min-height:40px;
  padding:7px 10px;
}

.so-location-controls button{
  min-height:40px!important;
  padding:8px 14px!important;
  white-space:nowrap;
}

.so-location-create-field{
  padding:10px!important;
  border:1px solid #CFE0D8!important;
  border-radius:9px!important;
  background:#F7FBF8!important;
}

.so-location-create-field > b{
  color:#9A6A19;
  font-size:11px;
}

@media(max-width:760px){
  .so-location-panel{
    flex-direction:column;
    align-items:stretch;
  }

  .so-location-controls{
    width:100%;
    justify-content:stretch;
  }

  .so-location-controls select{
    flex:1;
  }
}

@media(max-width:500px){
  .so-location-controls{
    flex-direction:column;
  }

  .so-location-controls select,
  .so-location-controls button{
    width:100%;
  }
}


/* =========================================================
   v3.15.0 Production Receipt
   ========================================================= */
.production-receipt-start-card{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:18px;
  padding:18px 20px;
  margin-bottom:16px;
  border:1px solid #CFE0D7;
  border-radius:13px;
  background:#F4F9F6;
}
.production-receipt-start-card > div{
  display:flex;
  flex-direction:column;
  gap:4px;
}
.production-receipt-start-card strong{
  color:#174735;
  font-size:17px;
}
.production-receipt-start-card span{
  color:#6D8077;
  font-size:13px;
}

.production-receipt-dialog{
  width:min(1480px,96vw)!important;
  max-width:1480px!important;
}

.production-receipt-guide{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:8px;
  margin:4px 0 16px;
}
.production-receipt-guide div{
  display:flex;
  align-items:center;
  gap:8px;
  padding:9px 10px;
  border:1px solid #D8E5DE;
  border-radius:9px;
  background:#F8FBF9;
}
.production-receipt-guide b{
  display:grid;
  place-items:center;
  width:25px;
  height:25px;
  border-radius:50%;
  background:#245B43;
  color:#fff;
  flex:0 0 auto;
}
.production-receipt-guide span{
  font-size:12px;
  color:#536E62;
}

.production-receipt-form-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
}
.production-receipt-form-grid label{
  display:flex;
  flex-direction:column;
  gap:5px;
}
.production-receipt-form-grid .wide{
  grid-column:1/-1;
}
.production-receipt-form-grid input,
.production-receipt-form-grid select,
.production-receipt-form-grid textarea{
  min-height:40px;
}

.production-receipt-source-summary{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:8px;
  margin:14px 0;
}
.production-receipt-source-summary:empty{
  display:none;
}
.production-receipt-source-summary > div{
  padding:10px;
  border:1px solid #D8E5DE;
  border-radius:9px;
  background:#fff;
}
.production-receipt-source-summary small,
.production-receipt-detail-head small{
  display:block;
  color:#75887F;
  font-size:11px;
}
.production-receipt-source-summary strong,
.production-receipt-detail-head strong{
  display:block;
  color:#174735;
}
.production-receipt-source-summary span,
.production-receipt-detail-head span{
  color:#71847A;
  font-size:11px;
}

.production-receipt-lines-wrap{
  margin-top:14px;
  padding-top:12px;
  border-top:1px solid #DDE7E2;
}
.production-receipt-line-table{
  min-width:1320px;
}
.production-receipt-line-table input{
  min-width:110px;
}
.production-receipt-line-table .prc-line-enabled{
  min-width:auto;
}
.production-receipt-line-table tr.disabled-row{
  opacity:.52;
}
.production-receipt-rule{
  display:flex;
  justify-content:space-between;
  gap:12px;
  margin-top:12px;
  padding:10px 12px;
  border:1px solid #C9DDD2;
  border-radius:9px;
  background:#F1F8F4;
  color:#315D49;
  font-size:12px;
}

.production-receipt-empty-source{
  display:flex;
  flex-direction:column;
  gap:4px;
  padding:22px;
  text-align:center;
  border:1px dashed #C5D7CE;
  border-radius:10px;
  color:#647B70;
}
.production-receipt-empty-source strong{
  color:#234C3A;
}

.production-receipt-detail-head{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:9px;
  margin:14px 0;
}
.production-receipt-detail-head > div{
  padding:10px 11px;
  border:1px solid #D8E5DE;
  border-radius:9px;
  background:#FAFCFB;
}

.production-receipt-stock-rule{
  display:flex;
  justify-content:space-between;
  gap:10px;
  margin:12px 0;
  padding:10px 12px;
  border:1px solid #E1C88E;
  border-radius:9px;
  background:#FFF9EA;
  color:#71591E;
}
.production-receipt-stock-rule.released{
  border-color:#B9D9C7;
  background:#EFF8F3;
  color:#245F44;
}
.production-receipt-detail-table{
  min-width:1020px;
}
.inventory-mini-rule{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
  color:#687D73;
  font-size:11px;
}
.inventory-mini-rule span{
  padding:6px 8px;
  border:1px solid #D9E5DF;
  border-radius:99px;
  background:#F8FBF9;
}

@media(max-width:900px){
  .production-receipt-guide,
  .production-receipt-source-summary,
  .production-receipt-detail-head{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}

@media(max-width:700px){
  .production-receipt-start-card{
    flex-direction:column;
    align-items:stretch;
  }
  .production-receipt-form-grid{
    grid-template-columns:1fr;
  }
  .production-receipt-form-grid .wide{
    grid-column:auto;
  }
  .production-receipt-guide,
  .production-receipt-source-summary,
  .production-receipt-detail-head{
    grid-template-columns:1fr;
  }
  .production-receipt-rule,
  .production-receipt-stock-rule{
    flex-direction:column;
  }
}


/* =========================================================
   v3.16.0 Production Forms / BOM Excel Import
   ========================================================= */
.production-workflow-card{
  display:flex;align-items:center;justify-content:space-between;gap:18px;
  margin-bottom:16px;padding:15px 18px;border:1px solid #D0E1D8;border-radius:12px;background:#F5F9F7;
}
.production-workflow-copy{display:flex;flex-direction:column;gap:3px;min-width:260px}
.production-workflow-copy strong{font-size:17px;color:#174735}
.production-workflow-copy span{font-size:12px;color:#6E8077}
.production-workflow-steps{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.production-workflow-steps span{display:flex;align-items:center;gap:5px;padding:6px 8px;border:1px solid #D8E4DE;border-radius:999px;background:#fff;font-size:11px;color:#50685E}
.production-workflow-steps b{display:grid;place-items:center;width:19px;height:19px;border-radius:50%;background:#245B43;color:#fff;font-size:10px}
.production-toolbar{gap:12px}
.production-form-dialog{width:min(1420px,96vw)!important;max-width:1420px!important}
.production-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}
.production-form-grid label{display:flex;flex-direction:column;gap:5px}
.production-form-grid .wide{grid-column:1/-1}
.production-form-grid input,.production-form-grid select,.production-form-grid textarea{min-height:40px}
.production-section-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:18px}
#toh-bom-components,#toh-powder-inputs{display:flex;flex-direction:column;gap:7px;margin-top:8px}
.bom-component-row{display:grid;grid-template-columns:minmax(220px,1.8fr) 135px 105px 82px 85px 120px 70px minmax(130px,1fr) 42px;gap:6px;align-items:start}
.powder-input-row{display:grid;grid-template-columns:minmax(240px,1.8fr) 130px 110px 80px 150px minmax(130px,1fr) 42px;gap:6px;align-items:start}
.bom-component-row input,.bom-component-row select,.powder-input-row input,.powder-input-row select{min-height:38px;width:100%}
.bom-import-dialog{width:min(1100px,95vw)!important;max-width:1100px!important}
.bom-import-box{padding:6px 0}
.bom-import-actions-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.bom-import-result{min-height:130px;padding:12px;border:1px solid #DBE6E0;border-radius:10px;background:#FAFCFB}
.bom-import-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:10px}
.bom-import-kpis>div{padding:9px;border:1px solid #D9E5DF;border-radius:8px;background:#fff}
.bom-import-kpis small{display:block;color:#71847A}.bom-import-kpis strong{font-size:18px;color:#214B39}
.bom-import-errors{margin-top:10px;padding:10px;border:1px solid #E3B6B1;border-radius:8px;background:#FFF2F0;color:#893E37}
.bom-import-errors div{margin-top:4px}
.bom-import-ok{margin-top:10px;padding:10px;border:1px solid #B9D9C7;border-radius:8px;background:#EFF8F3;color:#245F44;font-weight:700}
.production-bom-summary,.production-detail-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:14px 0}
.production-bom-summary>div,.production-detail-grid>div{padding:10px;border:1px solid #D9E5DF;border-radius:9px;background:#FAFCFB}
.production-bom-summary small,.production-detail-grid small{display:block;color:#74877E;font-size:11px}
.production-bom-summary strong,.production-detail-grid strong{display:block;color:#174735}
.production-preview-table,.production-detail-table{min-width:980px}
.production-empty-warning{padding:14px;border:1px dashed #D5B46D;border-radius:9px;background:#FFF9EC;color:#73591D;text-align:center}
.production-routing{margin:10px 0;padding:11px;border:1px solid #D7E4DE;border-radius:9px;background:#F8FBF9}
.production-routing small{display:block;color:#71847A}.production-routing strong{display:block;margin-top:3px;color:#244F3C;white-space:pre-wrap}
.production-actual-box{margin-top:14px;padding:12px;border:1px solid #D2E1DA;border-radius:10px;background:#FAFCFB}
.production-actual-box.readonly{background:#F7F8F8}
.production-actual-header,.production-process-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin-bottom:10px}
.production-process-grid{grid-template-columns:repeat(3,minmax(0,1fr));padding:12px;border:1px solid #D9E5DF;border-radius:9px;background:#F6FAF8}
.production-process-grid label,.production-actual-header label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:#536D61}
.production-process-grid .wide{grid-column:1/-1}
.production-process-grid input,.production-actual-header input,.production-actual-header select{min-height:38px}
.production-save-actual{display:flex;justify-content:flex-end;margin-top:10px}
@media(max-width:1100px){
  .bom-component-row,.powder-input-row{grid-template-columns:repeat(2,minmax(0,1fr))}
  .production-bom-summary,.production-detail-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .production-actual-header{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:760px){
  .production-workflow-card{flex-direction:column;align-items:stretch}
  .production-workflow-steps{justify-content:flex-start}
  .production-form-grid,.production-bom-summary,.production-detail-grid,.production-process-grid,.production-actual-header{grid-template-columns:1fr}
  .production-form-grid .wide,.production-process-grid .wide{grid-column:auto}
  .bom-component-row,.powder-input-row{grid-template-columns:1fr}
  .bom-import-kpis{grid-template-columns:1fr}
}

/* v3.17.0 Supplier Goods Receipt */
.gr-start-card{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:18px 20px;margin-bottom:16px;border:1px solid #CFE0D7;border-radius:13px;background:#F4F9F6}.gr-start-card>div{display:flex;flex-direction:column;gap:4px}.gr-start-card strong{color:#174735;font-size:17px}.gr-start-card span{color:#6D8077;font-size:13px}.goods-receipt-dialog{width:min(1500px,97vw)!important;max-width:1500px!important}.gr-guide{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:4px 0 16px}.gr-guide div{display:flex;align-items:center;gap:8px;padding:9px 10px;border:1px solid #D8E5DE;border-radius:9px;background:#F8FBF9}.gr-guide b{display:grid;place-items:center;width:25px;height:25px;border-radius:50%;background:#245B43;color:#fff;flex:0 0 auto}.gr-guide span{font-size:12px;color:#536E62}.gr-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.gr-form-grid label{display:flex;flex-direction:column;gap:5px}.gr-form-grid .wide{grid-column:1/-1}.gr-form-grid input,.gr-form-grid select,.gr-form-grid textarea{min-height:40px}.gr-checkbox-label{flex-direction:row!important;align-items:center;align-self:end;min-height:40px;padding:8px 10px;border:1px solid #D7E3DD;border-radius:8px;background:#F8FBF9}.gr-checkbox-label input{min-height:auto}.gr-po-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:14px 0}.gr-po-summary:empty{display:none}.gr-po-summary>div{padding:10px;border:1px solid #D8E5DE;border-radius:9px;background:#fff}.gr-po-summary small{display:block;color:#75887F;font-size:11px}.gr-po-summary strong{display:block;color:#174735}.gr-lines-wrap{margin-top:14px;padding-top:12px;border-top:1px solid #DDE7E2}.gr-line-table{min-width:1520px}.gr-line-table input{min-width:105px}.gr-line-table .gr-line-enabled{min-width:auto}.gr-line-table tr.disabled-row{opacity:.52}.gr-stock-rule{display:flex;justify-content:space-between;gap:12px;margin-top:12px;padding:10px 12px;border:1px solid #C9DDD2;border-radius:9px;background:#F1F8F4;color:#315D49;font-size:12px}.gr-empty-source{display:flex;flex-direction:column;gap:4px;padding:22px;text-align:center;border:1px dashed #C5D7CE;border-radius:10px;color:#647B70}.gr-detail-head{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin:14px 0}.gr-detail-head>div{padding:10px 11px;border:1px solid #D8E5DE;border-radius:9px;background:#FAFCFB}.gr-detail-head small{display:block;color:#75887F;font-size:11px}.gr-detail-head strong{display:block;color:#174735}.gr-detail-head span{color:#71847A;font-size:11px}.gr-stock-status{display:flex;justify-content:space-between;gap:10px;margin:12px 0;padding:10px 12px;border:1px solid #E1C88E;border-radius:9px;background:#FFF9EA;color:#71591E}.gr-stock-status.released{border-color:#B9D9C7;background:#EFF8F3;color:#245F44}.gr-stock-status.rejected{border-color:#E9B9B9;background:#FFF2F2;color:#8A2828}.gr-detail-table{min-width:1150px}.gr-attachments{margin-top:15px}.gr-file-list{display:flex;gap:8px;flex-wrap:wrap}.gr-file-list a{display:inline-flex;align-items:center;padding:7px 10px;border:1px solid #D2E2DA;border-radius:8px;background:#F6FAF8;color:#245B43;text-decoration:none}.po-receiving-panel{margin:16px 0;padding:14px;border:1px solid #CFE0D8;border-radius:12px;background:#F7FBF9}.po-receiving-title{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px}.po-receiving-title>div{display:flex;flex-direction:column}.po-receiving-title strong{color:#174735}.po-receiving-title span{color:#6E8178;font-size:12px}.po-receiving-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:10px}.po-receiving-stats>div{padding:9px;border:1px solid #D9E5DF;border-radius:8px;background:#fff}.po-receiving-stats small{display:block;color:#75877F}.po-receiving-stats strong{color:#174735;font-size:16px}.po-receiving-table{min-width:650px}@media(max-width:900px){.gr-guide,.gr-po-summary,.gr-detail-head,.po-receiving-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:700px){.gr-start-card,.po-receiving-title,.gr-stock-rule,.gr-stock-status{flex-direction:column;align-items:stretch}.gr-form-grid{grid-template-columns:1fr}.gr-form-grid .wide{grid-column:auto}.gr-guide,.gr-po-summary,.gr-detail-head,.po-receiving-stats{grid-template-columns:1fr}}


/* =========================================================
   v3.17.1 Global Required Field Marker
   กติกาทั้งระบบ:
   หัวข้อ *        ← อยู่บรรทัดเดียวกัน
   [ input ]       ← control อยู่บรรทัดถัดไป
   ========================================================= */

.toh-field-caption{
  display:inline-flex!important;
  flex-direction:row!important;
  align-items:baseline!important;
  justify-content:flex-start!important;
  gap:4px!important;
  width:max-content!important;
  max-width:100%!important;
  min-width:0!important;
  flex-wrap:wrap!important;
  line-height:1.35!important;
}

/*
 * Required marker สีแดงมาตรฐานเดียวทั้งระบบ
 */
.toh-required-star,
.required-mark,
.master-required-star,
.master-required-note b,
.customer-visit-required-note b{
  color:#C62828!important;
  font-weight:900!important;
  font-style:normal!important;
  text-decoration:none!important;
  line-height:1!important;
}

.toh-required-star{
  display:inline!important;
  flex:0 0 auto!important;
  margin-left:1px!important;
  margin-right:0!important;
  vertical-align:baseline!important;
}

/*
 * ป้องกัน CSS ของแต่ละ Module ทำให้ * กลายเป็นคนละบรรทัด
 */
.form-grid label > .toh-field-caption,
.gr-form-grid label > .toh-field-caption,
.production-form-grid label > .toh-field-caption,
.production-receipt-form-grid label > .toh-field-caption,
.so-order-form-grid label > .toh-field-caption,
.customer-visit-grid label > .toh-field-caption,
.lead-callvisit-grid label > .toh-field-caption,
.quotation-forecast-editor-grid label > .toh-field-caption,
.quote-forecast-update-box label > .toh-field-caption{
  align-self:flex-start!important;
}

/*
 * Checkbox / Radio label เป็นแนวนอนอยู่แล้ว
 */
label:has(> input[type="checkbox"]) > .toh-required-star,
label:has(> input[type="radio"]) > .toh-required-star{
  margin-left:4px!important;
}

/*
 * Master Data มีโครงสร้าง label แยกจาก form label ทั่วไป
 * ใช้สีแดงมาตรฐานเดียวกัน
 */
.master-required-star{
  margin-left:3px!important;
}

/*
 * Marker note เช่น "* ข้อมูลจำเป็น"
 */
.master-required-note b,
.customer-visit-required-note b{
  margin-right:3px!important;
}


/* =========================================================
   v3.17.2 Required Marker Stability Fix
   ป้องกัน * เคลื่อน / เลื่อนไปทางขวาเมื่อ MutationObserver ทำงาน
   ========================================================= */

.toh-field-caption{
  display:inline-flex!important;
  width:auto!important;
  max-width:100%!important;
  flex:0 0 auto!important;
  white-space:normal!important;
}

.toh-field-caption > .toh-required-star{
  position:static!important;
  inset:auto!important;
  transform:none!important;
  margin-left:4px!important;
  margin-right:0!important;
  flex:0 0 auto!important;
}

.toh-required-star{
  position:static!important;
  transform:none!important;
  translate:none!important;
}

/*
 * ถ้ามี Theme/Module เก่าใส่ margin/padding กับ <b>*</b>
 * ให้ reset เพื่อไม่ดัน marker ออกไปเรื่อย ๆ
 */
.toh-field-caption > b:has(.toh-required-star),
.toh-field-caption > span:has(> .toh-required-star){
  margin:0!important;
  padding:0!important;
}

/*
 * Label ที่ normalize แล้วต้องไม่ถูกจัด layout ซ้ำ
 */
label.toh-required-normalized{
  contain:layout style;
}


/* =========================================================
   v3.18.0 HR Leave Request
   ========================================================= */
.leave-summary-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  padding:17px 19px;
  margin-bottom:14px;
  border:1px solid #D4E3DB;
  border-radius:12px;
  background:#F6FAF8;
}
.leave-summary-head>div{
  display:flex;
  flex-direction:column;
  gap:3px;
}
.leave-summary-head strong{
  color:#174735;
  font-size:17px;
}
.leave-summary-head span{
  color:#71827A;
  font-size:12px;
}

.leave-balance-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(180px,1fr));
  gap:10px;
  margin-bottom:14px;
}
.leave-balance-card{
  padding:13px;
  border:1px solid #D8E5DE;
  border-radius:11px;
  background:#fff;
}
.leave-balance-card-head{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:8px;
}
.leave-balance-card-head strong{
  color:#214E3C;
}
.leave-balance-card-head span{
  color:#84938C;
  font-size:10px;
}
.leave-balance-number{
  margin-top:9px;
  color:#174735;
  font-size:26px;
  font-weight:850;
}
.leave-balance-number small{
  display:inline;
  margin-left:3px;
  font-size:10px;
  color:#74867D;
  font-weight:500;
}
.leave-balance-number.policy{
  font-size:18px;
}
.leave-balance-mini{
  display:flex;
  gap:7px;
  flex-wrap:wrap;
  margin-top:7px;
  color:#6D7E76;
  font-size:10px;
}
.leave-balance-mini span{
  padding:4px 6px;
  border-radius:99px;
  background:#F3F7F5;
}

.leave-tabs{
  display:flex;
  gap:6px;
  flex-wrap:wrap;
  margin-bottom:12px;
}
.leave-tab{
  width:auto!important;
  min-height:36px!important;
  padding:7px 12px!important;
  border-radius:99px!important;
}
.leave-tab.active{
  border-color:#245B43!important;
  background:#245B43!important;
  color:#fff!important;
}

.leave-calendar-note{
  color:#6F8179;
  font-size:11px;
}

.leave-list-table{
  min-width:1080px;
}
.leave-payroll-chip{
  display:inline-block;
  padding:4px 7px;
  border-radius:99px;
  background:#F2F4F3;
  color:#7A8881;
  font-size:10px;
}
.leave-payroll-chip.ready{
  background:#EAF6EF;
  color:#267148;
}

.leave-policy-note{
  margin-top:12px;
  padding:10px 12px;
  border:1px solid #E5D9B8;
  border-radius:8px;
  background:#FFFBEF;
  color:#77602B;
  font-size:11px;
}

.leave-link-error{
  display:flex;
  flex-direction:column;
  gap:5px;
  padding:25px;
  text-align:center;
}
.leave-link-error strong{
  color:#8B2B2B;
  font-size:17px;
}

.leave-dialog{
  width:min(1050px,95vw)!important;
  max-width:1050px!important;
}
.leave-employee-strip{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:8px;
  margin-bottom:14px;
}
.leave-employee-strip>div{
  padding:10px;
  border:1px solid #D9E5DF;
  border-radius:9px;
  background:#F8FBF9;
}
.leave-employee-strip small,
.leave-detail-grid small,
.leave-detail-status small,
.leave-text-grid small,
.leave-approval-notes small{
  display:block;
  color:#788981;
  font-size:11px;
}
.leave-employee-strip strong,
.leave-detail-grid strong,
.leave-detail-status strong{
  display:block;
  color:#184735;
}
.leave-employee-strip span,
.leave-detail-status span{
  color:#71827A;
  font-size:11px;
}

.leave-form-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
}
.leave-form-grid label{
  display:flex;
  flex-direction:column;
  gap:5px;
}
.leave-form-grid .wide{
  grid-column:1/-1;
}
.leave-form-grid input,
.leave-form-grid select,
.leave-form-grid textarea{
  min-height:40px;
}

.leave-days-preview{
  display:flex;
  flex-direction:column;
  justify-content:center;
  min-height:74px;
  padding:10px 12px;
  border:1px solid #CFE0D7;
  border-radius:9px;
  background:#F1F8F4;
}
.leave-days-preview span{
  color:#647B70;
  font-size:11px;
}
.leave-days-preview strong{
  color:#175038;
  font-size:18px;
}
.leave-days-preview small{
  color:#829188;
}

.leave-form-note{
  display:flex;
  justify-content:space-between;
  gap:10px;
  margin-top:13px;
  padding:10px 12px;
  border:1px solid #CFE0D7;
  border-radius:9px;
  background:#F5FAF7;
  color:#38624F;
  font-size:11px;
}

.leave-detail-status{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:9px;
  margin-bottom:12px;
}
.leave-detail-status>div,
.leave-detail-grid>div{
  padding:10px 11px;
  border:1px solid #D9E5DF;
  border-radius:9px;
  background:#FAFCFB;
}

.leave-detail-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:9px;
  margin-bottom:12px;
}

.leave-balance-detail{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:8px;
  margin:12px 0;
  padding:12px;
  border:1px solid #CDE0D6;
  border-radius:10px;
  background:#F2F8F5;
}
.leave-balance-detail>div{
  text-align:center;
}
.leave-balance-detail small{
  display:block;
  color:#75887E;
}
.leave-balance-detail strong{
  color:#175038;
  font-size:18px;
}
.leave-balance-detail.policy{
  display:flex;
  flex-direction:column;
  gap:3px;
  text-align:left;
}

.leave-detail-section{
  margin-top:15px;
  padding-top:13px;
  border-top:1px solid #DFE8E3;
}
.leave-detail-section h3{
  margin:0 0 9px;
}
.leave-text-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:9px;
}
.leave-text-grid>div,
.leave-approval-notes>div{
  padding:10px;
  border:1px solid #E0E9E4;
  border-radius:8px;
  background:#FAFCFB;
}
.leave-text-grid .wide{
  grid-column:1/-1;
}
.leave-text-grid p,
.leave-approval-notes p{
  margin:4px 0 0;
  white-space:pre-wrap;
}

.leave-files{
  display:flex;
  gap:7px;
  flex-wrap:wrap;
}
.leave-files a{
  padding:7px 10px;
  border:1px solid #D5E3DB;
  border-radius:8px;
  background:#F6FAF8;
  color:#235B43;
  text-decoration:none;
}

.leave-approval-notes{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:8px;
}
.leave-approval-notes .danger{
  border-color:#EABFBF;
  background:#FFF5F5;
}

.leave-timeline{
  display:flex;
  flex-direction:column;
}
.leave-timeline-row{
  display:grid;
  grid-template-columns:18px 1fr;
  gap:8px;
  padding:7px 0;
}
.leave-timeline-dot{
  width:9px;
  height:9px;
  margin-top:6px;
  border-radius:50%;
  background:#4E876A;
}
.leave-timeline-row>div:last-child{
  display:flex;
  flex-direction:column;
}
.leave-timeline-row span{
  color:#7B8A83;
  font-size:10px;
}
.leave-timeline-row p{
  margin:3px 0 0;
  color:#52685E;
}

@media(max-width:800px){
  .leave-employee-strip,
  .leave-detail-status,
  .leave-detail-grid,
  .leave-balance-detail{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}

@media(max-width:650px){
  .leave-summary-head,
  .leave-form-note{
    flex-direction:column;
    align-items:stretch;
  }

  .leave-form-grid,
  .leave-employee-strip,
  .leave-detail-status,
  .leave-detail-grid,
  .leave-balance-detail,
  .leave-text-grid,
  .leave-approval-notes{
    grid-template-columns:1fr;
  }

  .leave-form-grid .wide,
  .leave-text-grid .wide{
    grid-column:auto;
  }
}


/* =========================================================
   v3.19.0 FARM Operations
   ========================================================= */

.farm-start-card{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:18px;
  margin-bottom:15px;
  padding:17px 19px;
  border:1px solid #CFE0D7;
  border-radius:12px;
  background:#F4F9F6;
}
.farm-start-card>div{
  display:flex;
  flex-direction:column;
  gap:3px;
}
.farm-start-card strong{
  color:#174735;
  font-size:17px;
}
.farm-start-card span{
  color:#6E8077;
  font-size:12px;
}
.farm-trace-chip{
  padding:6px 9px;
  border:1px solid #D5E3DC;
  border-radius:99px;
  background:#F7FAF8;
  color:#557064;
  font-size:10px;
}
.farm-list-table{
  min-width:1050px;
}
.farm-plot-table{
  min-width:1150px;
}
.farm-mini-btn{
  min-height:32px!important;
  padding:5px 9px!important;
  font-size:12px!important;
}

.farm-plot-dialog{
  width:min(950px,95vw)!important;
}
.farm-crop-dialog{
  width:min(1120px,96vw)!important;
}
.farm-activity-dialog{
  width:min(1320px,97vw)!important;
}
.farm-harvest-dialog{
  width:min(1050px,95vw)!important;
}

.farm-form-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
}
.farm-form-grid label{
  display:flex;
  flex-direction:column;
  gap:5px;
}
.farm-form-grid .wide{
  grid-column:1/-1;
}
.farm-form-grid input,
.farm-form-grid select,
.farm-form-grid textarea{
  min-height:40px;
}

.farm-material-section{
  margin-top:15px;
  padding-top:13px;
  border-top:1px solid #DDE7E2;
}
.farm-material-rows{
  display:flex;
  flex-direction:column;
  gap:8px;
}
.farm-material-row{
  display:grid;
  grid-template-columns:minmax(280px,2.4fr) 120px 100px minmax(150px,1fr) auto;
  gap:8px;
  align-items:start;
  padding:9px;
  border:1px solid #D9E5DF;
  border-radius:9px;
  background:#FAFCFB;
}
.farm-material-row input{
  min-height:39px;
}

.farm-harvest-rule{
  display:flex;
  justify-content:space-between;
  gap:12px;
  margin-top:13px;
  padding:10px 12px;
  border:1px solid #CFE0D7;
  border-radius:9px;
  background:#F2F8F5;
  color:#345E4A;
  font-size:11px;
}

.farm-detail-status{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:8px;
  margin-bottom:11px;
}
.farm-detail-status>div,
.farm-detail-grid>div{
  padding:10px 11px;
  border:1px solid #D9E5DF;
  border-radius:9px;
  background:#FAFCFB;
}
.farm-detail-status small,
.farm-detail-grid small{
  display:block;
  color:#75877F;
  font-size:11px;
}
.farm-detail-status strong,
.farm-detail-grid strong{
  display:block;
  color:#184735;
}
.farm-detail-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:8px;
}
.farm-detail-section{
  margin-top:15px;
  padding-top:13px;
  border-top:1px solid #DEE8E3;
}
.farm-detail-section h3{
  margin:0 0 9px;
}
.farm-long-text{
  margin:0;
  padding:10px;
  border:1px solid #E0E9E4;
  border-radius:8px;
  background:#FAFCFB;
  white-space:pre-wrap;
}

.farm-trace-list{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
}
.farm-trace-item{
  display:flex!important;
  flex-direction:column!important;
  align-items:flex-start!important;
  width:auto!important;
  min-width:180px!important;
  min-height:52px!important;
  padding:8px 10px!important;
  border:1px solid #CFE0D7!important;
  border-radius:8px!important;
  background:#F5FAF7!important;
  color:#234F3C!important;
}
.farm-trace-item span{
  color:#6E8077;
  font-size:10px;
}
.farm-trace-empty{
  padding:10px;
  color:#7A8982;
  border:1px dashed #D4E1DB;
  border-radius:8px;
}

.farm-event-list{
  display:flex;
  flex-direction:column;
}
.farm-event-row{
  display:grid;
  grid-template-columns:18px 1fr;
  gap:8px;
  padding:7px 0;
}
.farm-event-dot{
  width:9px;
  height:9px;
  margin-top:6px;
  border-radius:50%;
  background:#4E876A;
}
.farm-event-row>div:last-child{
  display:flex;
  flex-direction:column;
}
.farm-event-row span{
  color:#7C8B84;
  font-size:10px;
}
.farm-event-row p{
  margin:3px 0 0;
  color:#52685E;
}

@media(max-width:900px){
  .farm-detail-status,
  .farm-detail-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }

  .farm-material-row{
    grid-template-columns:1fr 110px 90px;
  }

  .farm-material-row .product-search-wrap{
    grid-column:1/-1;
  }
}

@media(max-width:650px){
  .farm-start-card,
  .farm-harvest-rule{
    flex-direction:column;
    align-items:stretch;
  }

  .farm-form-grid,
  .farm-detail-status,
  .farm-detail-grid{
    grid-template-columns:1fr;
  }

  .farm-form-grid .wide{
    grid-column:auto;
  }

  .farm-material-row{
    grid-template-columns:1fr;
  }

  .farm-material-row .product-search-wrap{
    grid-column:auto;
  }
}


/* =========================================================
   v3.19.1 Inventory Farm Intake / Warehouse Receipt
   ========================================================= */

.farm-intake-process{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:8px;
  margin-bottom:12px;
}
.farm-intake-process>div{
  display:grid;
  grid-template-columns:30px 1fr;
  grid-template-rows:auto auto;
  column-gap:9px;
  padding:11px;
  border:1px solid #D6E4DD;
  border-radius:10px;
  background:#F8FBF9;
}
.farm-intake-process b{
  grid-row:1/3;
  display:grid;
  place-items:center;
  width:30px;
  height:30px;
  border-radius:50%;
  background:#245B43;
  color:#fff;
}
.farm-intake-process span{
  color:#76877F;
  font-size:10px;
}
.farm-intake-process strong{
  color:#194A37;
  font-size:12px;
}

.farm-intake-notice{
  display:flex;
  justify-content:space-between;
  gap:14px;
  margin-bottom:12px;
  padding:11px 13px;
  border:1px solid #C8DED2;
  border-radius:10px;
  background:#F1F8F4;
  color:#315E49;
  font-size:11px;
}
.farm-intake-notice strong{
  flex:0 0 auto;
}

.farm-intake-summary{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:9px;
  margin-bottom:13px;
}
.farm-intake-summary>div{
  padding:12px;
  border:1px solid #D7E4DD;
  border-radius:10px;
  background:#fff;
}
.farm-intake-summary>div.danger{
  border-color:#E7BEBE;
  background:#FFF6F6;
}
.farm-intake-summary small{
  display:block;
  color:#71837A;
  font-size:10px;
}
.farm-intake-summary strong{
  display:block;
  margin:2px 0;
  color:#174735;
  font-size:23px;
}
.farm-intake-summary span{
  color:#839189;
  font-size:10px;
}

.farm-intake-tabs{
  display:flex;
  gap:6px;
  flex-wrap:wrap;
  margin-bottom:11px;
}
.farm-intake-tab{
  width:auto!important;
  min-height:34px!important;
  padding:6px 11px!important;
  border-radius:99px!important;
}
.farm-intake-tab.active{
  border-color:#245B43!important;
  background:#245B43!important;
  color:#fff!important;
}
.farm-intake-readonly-note{
  color:#788981;
  font-size:10px;
}
.farm-intake-table{
  min-width:1550px;
}
.farm-intake-stock-chip{
  display:inline-flex;
  padding:4px 7px;
  border-radius:99px;
  background:#F2F5F3;
  color:#77877F;
  font-size:10px;
}
.farm-intake-stock-chip.success{
  background:#EAF6EF;
  color:#267148;
}

.farm-intake-error{
  display:flex;
  flex-direction:column;
  gap:5px;
  padding:24px;
  text-align:center;
}
.farm-intake-error strong{
  color:#8A2D2D;
}

.farm-intake-detail-status{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:8px;
  margin-bottom:10px;
}
.farm-intake-detail-status>div,
.farm-intake-detail-grid>div{
  padding:10px;
  border:1px solid #D9E5DF;
  border-radius:9px;
  background:#FAFCFB;
}
.farm-intake-detail-status small,
.farm-intake-detail-grid small,
.farm-intake-stock-result small{
  display:block;
  color:#75877F;
  font-size:10px;
}
.farm-intake-detail-status strong,
.farm-intake-detail-grid strong,
.farm-intake-stock-result strong{
  display:block;
  color:#184735;
}
.farm-intake-detail-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:8px;
}

.farm-intake-stock-result{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:8px;
  margin-top:12px;
  padding:11px;
  border:1px solid #BFDCCB;
  border-radius:10px;
  background:#EFF8F3;
}
.farm-intake-stock-result>div{
  padding:6px;
}

.farm-intake-receive-form{
  margin-top:14px;
  padding:14px;
  border:1px solid #CDE0D6;
  border-radius:11px;
  background:#F8FBF9;
}
.farm-intake-form-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:11px;
}
.farm-intake-form-grid label{
  display:flex;
  flex-direction:column;
  gap:5px;
}
.farm-intake-form-grid .wide{
  grid-column:1/-1;
}
.farm-intake-form-grid input,
.farm-intake-form-grid select,
.farm-intake-form-grid textarea{
  min-height:40px;
}
.farm-intake-confirm-rule{
  display:flex;
  justify-content:space-between;
  gap:12px;
  margin-top:11px;
  padding:9px 11px;
  border:1px solid #C8DDD2;
  border-radius:8px;
  background:#F0F8F4;
  color:#345E4A;
  font-size:10px;
}

.farm-intake-issue-alert{
  display:flex;
  flex-direction:column;
  gap:4px;
  margin-top:12px;
  padding:11px 12px;
  border:1px solid #E5B9B9;
  border-radius:9px;
  background:#FFF4F4;
  color:#862C2C;
}
.farm-intake-issue-alert small{
  color:#9A6C6C;
}

.farm-intake-detail-section{
  margin-top:15px;
  padding-top:12px;
  border-top:1px solid #DEE8E3;
}
.farm-intake-detail-section h3{
  margin:0 0 8px;
}
.farm-intake-timeline{
  display:flex;
  flex-direction:column;
}
.farm-intake-timeline-row{
  display:grid;
  grid-template-columns:18px 1fr;
  gap:8px;
  padding:7px 0;
}
.farm-intake-timeline-dot{
  width:9px;
  height:9px;
  margin-top:6px;
  border-radius:50%;
  background:#4E876A;
}
.farm-intake-timeline-row>div:last-child{
  display:flex;
  flex-direction:column;
}
.farm-intake-timeline-row span{
  color:#7C8B84;
  font-size:10px;
}
.farm-intake-timeline-row p{
  margin:3px 0 0;
  color:#52685E;
}

.farm-warehouse-waiting{
  display:flex;
  justify-content:space-between;
  gap:12px;
  margin-top:13px;
  padding:10px 12px;
  border:1px solid #C9DDD2;
  border-radius:9px;
  background:#F2F8F5;
  color:#355E4B;
  font-size:11px;
}
.farm-warehouse-waiting.issue{
  border-color:#E5B9B9;
  background:#FFF4F4;
  color:#862C2C;
}

@media(max-width:850px){
  .farm-intake-process,
  .farm-intake-summary,
  .farm-intake-detail-status,
  .farm-intake-detail-grid,
  .farm-intake-stock-result{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}

@media(max-width:650px){
  .farm-intake-notice,
  .farm-intake-confirm-rule,
  .farm-warehouse-waiting{
    flex-direction:column;
  }

  .farm-intake-process,
  .farm-intake-summary,
  .farm-intake-detail-status,
  .farm-intake-detail-grid,
  .farm-intake-stock-result,
  .farm-intake-form-grid{
    grid-template-columns:1fr;
  }

  .farm-intake-form-grid .wide{
    grid-column:auto;
  }
}


/* =========================================================
   v3.20.0 Payroll
   ========================================================= */

.payroll-confidential-banner{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  margin-bottom:13px;
  padding:14px 16px;
  border:1px solid #CADDD3;
  border-radius:11px;
  background:#F3F8F5;
}
.payroll-confidential-banner>div,
.payroll-confidential-banner:not(:has(>div)){
  color:#305B48;
}
.payroll-confidential-banner strong{
  display:block;
  color:#173F31;
}
.payroll-confidential-banner span{
  display:block;
  margin-top:2px;
  color:#647B70;
  font-size:11px;
}

.payroll-summary-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:9px;
  margin-bottom:13px;
}
.payroll-summary-grid>div{
  padding:12px;
  border:1px solid #D8E4DE;
  border-radius:10px;
  background:#fff;
}
.payroll-summary-grid small{
  display:block;
  color:#75867E;
  font-size:10px;
}
.payroll-summary-grid strong{
  display:block;
  margin:2px 0;
  color:#174735;
  font-size:20px;
}
.payroll-summary-grid span{
  color:#84928B;
  font-size:10px;
}

.payroll-policy-chip{
  padding:6px 9px;
  border:1px solid #D7E3DD;
  border-radius:99px;
  color:#697B72;
  background:#F8FAF9;
  font-size:10px;
}

.payroll-list-table{
  min-width:1180px;
}
.payroll-list-table .num,
.payroll-employee-table .num{
  text-align:right;
}

.payroll-warning-text{
  color:#9A5B1A!important;
}
.payroll-ok-chip,
.payroll-warning-chip{
  display:inline-flex;
  padding:4px 7px;
  border-radius:99px;
  font-size:10px;
}
.payroll-ok-chip{
  background:#EAF6EF;
  color:#267148;
}
.payroll-warning-chip{
  background:#FFF3DF;
  color:#9A5B1A;
}

.payroll-create-dialog{
  width:min(920px,95vw)!important;
}
.payroll-line-dialog{
  width:min(1050px,96vw)!important;
}
.payroll-pay-dialog{
  width:min(760px,94vw)!important;
}
.payroll-form-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:11px;
}
.payroll-form-grid label{
  display:flex;
  flex-direction:column;
  gap:5px;
}
.payroll-form-grid .wide{
  grid-column:1/-1;
}
.payroll-form-grid input,
.payroll-form-grid select,
.payroll-form-grid textarea{
  min-height:40px;
}

.payroll-policy-note,
.payroll-paid-warning{
  display:flex;
  justify-content:space-between;
  gap:12px;
  margin-top:13px;
  padding:10px 12px;
  border:1px solid #E3D4AB;
  border-radius:9px;
  background:#FFF9EA;
  color:#765D25;
  font-size:11px;
}
.payroll-paid-warning{
  border-color:#D5C3C3;
  background:#FFF7F7;
  color:#7E3838;
}

.payroll-detail-head{
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:8px;
  margin-bottom:11px;
}
.payroll-detail-head>div{
  padding:10px;
  border:1px solid #D9E5DF;
  border-radius:9px;
  background:#FAFCFB;
}
.payroll-detail-head small,
.payroll-total-grid small,
.payroll-payment-result small,
.payroll-line-info small{
  display:block;
  color:#75877F;
  font-size:10px;
}
.payroll-detail-head strong,
.payroll-payment-result strong,
.payroll-line-info strong{
  color:#184735;
}

.payroll-total-grid{
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:8px;
}
.payroll-total-grid>div{
  padding:11px;
  border:1px solid #D6E4DD;
  border-radius:9px;
  background:#F8FBF9;
}
.payroll-total-grid>div.primary-total{
  border-color:#9FC8B3;
  background:#EDF7F1;
}
.payroll-total-grid>div.warning{
  border-color:#E7C897;
  background:#FFF8EC;
}
.payroll-total-grid strong{
  display:block;
  color:#174735;
  font-size:16px;
}

.payroll-confidential-note{
  margin-top:10px;
  padding:10px;
  border:1px solid #D9E4DF;
  border-radius:8px;
  background:#FBFCFC;
}
.payroll-confidential-note small{
  color:#778880;
}
.payroll-confidential-note p{
  margin:4px 0 0;
  white-space:pre-wrap;
}

.payroll-detail-section{
  margin-top:15px;
  padding-top:13px;
  border-top:1px solid #DEE8E3;
}
.payroll-detail-section h3{
  margin:0 0 8px;
}

.payroll-employee-table{
  min-width:1650px;
}
.payroll-employee-table td{
  vertical-align:top;
}
.payroll-net-cell strong{
  color:#174735;
}
.payroll-leave-paid{
  color:#357054;
}
.payroll-row-actions{
  display:flex;
  gap:5px;
  flex-wrap:wrap;
}
.payroll-mini-btn{
  min-height:30px!important;
  padding:4px 8px!important;
  font-size:11px!important;
}

.payroll-line-info{
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:8px;
  margin-bottom:12px;
}
.payroll-line-info>div{
  padding:9px;
  border:1px solid #D9E5DF;
  border-radius:8px;
  background:#FAFCFB;
}
.payroll-line-sections{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:12px;
}
.payroll-line-sections section{
  padding:12px;
  border:1px solid #D9E5DF;
  border-radius:9px;
  background:#FBFCFC;
}
.payroll-line-sections h3{
  margin:0 0 10px;
}
.payroll-line-auto{
  display:flex;
  flex-direction:column;
  gap:3px;
  margin-top:12px;
  padding:10px;
  border:1px solid #CFE0D7;
  border-radius:8px;
  background:#F3F8F5;
  color:#3B604F;
  font-size:11px;
}

.payroll-payment-result{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:8px;
  margin-top:12px;
  padding:11px;
  border:1px solid #BFDCCB;
  border-radius:10px;
  background:#EFF8F3;
}

.payroll-timeline{
  display:flex;
  flex-direction:column;
}
.payroll-timeline-row{
  display:grid;
  grid-template-columns:18px 1fr;
  gap:8px;
  padding:7px 0;
}
.payroll-timeline-dot{
  width:9px;
  height:9px;
  margin-top:6px;
  border-radius:50%;
  background:#4E876A;
}
.payroll-timeline-row>div:last-child{
  display:flex;
  flex-direction:column;
}
.payroll-timeline-row span{
  color:#7C8B84;
  font-size:10px;
}
.payroll-timeline-row p{
  margin:3px 0 0;
  color:#52685E;
}

.payroll-self-head{
  margin-bottom:13px;
  padding:15px;
  border:1px solid #D4E2DB;
  border-radius:10px;
  background:#F6FAF8;
}
.payroll-self-head small,
.payroll-self-head span{
  display:block;
  color:#75877F;
}
.payroll-self-head strong{
  display:block;
  color:#174735;
  font-size:17px;
}

.payroll-my-payslip-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(210px,1fr));
  gap:10px;
  margin-bottom:13px;
}
.payroll-payslip-card{
  display:flex!important;
  flex-direction:column!important;
  align-items:flex-start!important;
  width:100%!important;
  min-height:130px!important;
  padding:14px!important;
  border:1px solid #D2E1D9!important;
  border-radius:10px!important;
  background:#fff!important;
  color:#194735!important;
  text-align:left!important;
}
.payroll-payslip-card span{
  color:#7B8B83;
  font-size:10px;
}
.payroll-payslip-card strong{
  margin-top:4px;
}
.payroll-payslip-card b{
  margin:8px 0 4px;
  font-size:20px;
}
.payroll-payslip-card small{
  color:#75877F;
}
.payroll-empty-payslip,
.payroll-page-error{
  padding:28px;
  border:1px dashed #D4E1DB;
  border-radius:10px;
  text-align:center;
}
.payroll-empty-payslip strong,
.payroll-empty-payslip span{
  display:block;
}

@media(max-width:1000px){
  .payroll-detail-head,
  .payroll-total-grid,
  .payroll-line-info{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }

  .payroll-line-sections{
    grid-template-columns:1fr;
  }
}

@media(max-width:700px){
  .payroll-confidential-banner,
  .payroll-policy-note,
  .payroll-paid-warning{
    flex-direction:column;
    align-items:stretch;
  }

  .payroll-summary-grid,
  .payroll-detail-head,
  .payroll-total-grid,
  .payroll-line-info,
  .payroll-payment-result,
  .payroll-form-grid{
    grid-template-columns:1fr;
  }

  .payroll-form-grid .wide{
    grid-column:auto;
  }
}


/* =========================================================
   v3.21.0 Location / Warehouse Master + Stock by Location
   ========================================================= */

.location-master-intro{
  display:flex;
  justify-content:space-between;
  gap:16px;
  align-items:flex-start;
  margin:14px 0;
  padding:14px 16px;
  border:1px solid #CFE0D7;
  border-radius:11px;
  background:#F4F9F6;
}
.location-master-intro h2{
  margin:0 0 4px;
}
.location-master-intro p{
  margin:0;
  color:#657A70;
  font-size:11px;
}
.location-code-rule{
  flex:0 0 auto;
  padding:9px 11px;
  border:1px solid #D6E4DD;
  border-radius:8px;
  background:#fff;
}
.location-code-rule strong,
.location-code-rule span{
  display:block;
}
.location-code-rule span{
  margin-top:2px;
  color:#71847A;
  font-size:10px;
}

.location-template-section{
  margin-bottom:14px;
  padding:13px;
  border:1px solid #D9E5DF;
  border-radius:10px;
  background:#FBFCFC;
}
.location-template-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(190px,1fr));
  gap:8px;
}
.location-template-card{
  display:flex!important;
  flex-direction:column!important;
  align-items:flex-start!important;
  min-height:95px!important;
  padding:10px 11px!important;
  border:1px solid #D2E1D9!important;
  border-radius:9px!important;
  background:#fff!important;
  color:#1C4C39!important;
  text-align:left!important;
}
.location-template-card span{
  margin-top:4px;
  font-weight:800;
  color:#245B43;
}
.location-template-card small{
  margin-top:3px;
  color:#74857D;
  line-height:1.4;
}

.location-master-table{
  min-width:1250px;
}
.location-type-chip,
.location-stock-chip{
  display:inline-flex;
  padding:4px 7px;
  border-radius:99px;
  font-size:10px;
  white-space:nowrap;
}
.location-type-chip.warehouse{background:#EDF5F1;color:#2C654B}
.location-type-chip.farm{background:#EEF7E8;color:#4F7434}
.location-type-chip.factory{background:#EEF1F6;color:#4E5C72}
.location-type-chip.store{background:#F5EFF8;color:#765486}
.location-type-chip.consignment{background:#FFF3E6;color:#8B5E26}
.location-type-chip.event{background:#FFF0F0;color:#914A4A}
.location-type-chip.office{background:#F2F3F4;color:#666}
.location-type-chip.other{background:#F3F3F3;color:#777}
.location-stock-chip.yes{background:#EAF6EF;color:#267148}
.location-stock-chip.no{background:#F2F3F4;color:#747474}

.inventory-location-overview{
  margin-top:14px;
}
.inventory-location-card-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
  gap:9px;
}
.inventory-location-card{
  display:flex!important;
  flex-direction:column!important;
  align-items:stretch!important;
  width:100%!important;
  min-height:120px!important;
  padding:12px!important;
  border:1px solid #D2E1D9!important;
  border-radius:10px!important;
  background:#fff!important;
  color:#1B4938!important;
  text-align:left!important;
}
.inventory-location-card>div:first-child{
  display:flex;
  flex-direction:column;
}
.inventory-location-card>div:first-child span{
  color:#5F776C;
  font-size:11px;
}
.inventory-location-card>small{
  margin:6px 0;
  color:#7A8A82;
}
.inventory-location-card-numbers{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:5px;
  margin-top:auto;
}
.inventory-location-card-numbers b{
  padding:6px;
  border-radius:6px;
  background:#F3F8F5;
  font-size:10px;
  text-align:center;
}

.inventory-location-head{
  align-items:flex-end;
}
.inventory-location-filters{
  display:flex;
  gap:7px;
  flex-wrap:wrap;
  justify-content:flex-end;
}
.inventory-location-filters select,
.inventory-location-filters input{
  min-height:38px;
}
.inventory-location-table{
  min-width:1350px;
}

@media(max-width:750px){
  .location-master-intro{
    flex-direction:column;
  }

  .location-code-rule{
    width:100%;
  }

  .inventory-location-filters{
    width:100%;
    justify-content:stretch;
  }

  .inventory-location-filters select,
  .inventory-location-filters input{
    width:100%;
  }
}


/* =========================================================
   v3.22.0 Stock Transfer
   ========================================================= */
.stock-transfer-flow{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin-bottom:11px}.stock-transfer-flow>div{display:grid;grid-template-columns:30px 1fr;grid-template-rows:auto auto;column-gap:8px;padding:10px;border:1px solid #D6E4DD;border-radius:9px;background:#F8FBF9}.stock-transfer-flow b{grid-row:1/3;display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:#245B43;color:#fff}.stock-transfer-flow span{font-size:10px;color:#788981}.stock-transfer-flow strong{font-size:11px;color:#194A37}.stock-transfer-note{display:flex;justify-content:space-between;gap:12px;margin-bottom:11px;padding:10px 12px;border:1px solid #CDE0D6;border-radius:9px;background:#F1F8F4;color:#315E49;font-size:11px}.stock-transfer-summary{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;margin-bottom:12px}.stock-transfer-summary>div{padding:10px;border:1px solid #D8E4DE;border-radius:9px;background:#fff}.stock-transfer-summary>div.warning{background:#FFF9EC;border-color:#E7D0A8}.stock-transfer-summary>div.danger{background:#FFF4F4;border-color:#E5B9B9}.stock-transfer-summary small,.stock-transfer-summary span{display:block;color:#76877F;font-size:10px}.stock-transfer-summary strong{display:block;color:#174735;font-size:19px}.stock-transfer-head,.stock-transfer-toolbar{gap:10px}.stock-transfer-toolbar select{min-width:190px}.stock-transfer-table{min-width:1350px}.stock-transfer-dialog{width:min(1250px,97vw)!important}.stock-transfer-action-dialog{width:min(850px,95vw)!important}.stock-transfer-receive-dialog{width:min(1000px,96vw)!important}.stock-transfer-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.stock-transfer-form-grid label{display:flex;flex-direction:column;gap:5px}.stock-transfer-form-grid .wide{grid-column:1/-1}.stock-transfer-form-grid input,.stock-transfer-form-grid select,.stock-transfer-form-grid textarea{min-height:40px}.stock-transfer-lines{margin-top:14px;padding-top:12px;border-top:1px solid #DDE7E2}.stock-transfer-line-head,.stock-transfer-line-row{display:grid;grid-template-columns:minmax(280px,2.3fr) 120px 100px minmax(160px,1fr) auto;gap:8px;align-items:start}.stock-transfer-line-head{padding:0 9px 5px;color:#72837A;font-size:10px}.stock-transfer-line-row{margin-bottom:7px;padding:8px;border:1px solid #D9E5DF;border-radius:8px;background:#FAFCFB}.stock-transfer-line-row input{min-height:39px}.stock-transfer-mini{min-height:34px!important;padding:5px 8px!important}.stock-transfer-detail-head{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin-bottom:9px}.stock-transfer-detail-head>div,.stock-transfer-shipping>div{padding:9px;border:1px solid #D9E5DF;border-radius:8px;background:#FAFCFB}.stock-transfer-detail-head small,.stock-transfer-shipping small{display:block;color:#75877F;font-size:10px}.stock-transfer-detail-head strong,.stock-transfer-shipping strong{color:#184735}.stock-transfer-shipping{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.stock-transfer-transit-banner{display:flex;justify-content:space-between;gap:12px;margin-top:11px;padding:10px 12px;border:1px solid #E5CE9E;border-radius:9px;background:#FFF9EA;color:#765D25;font-size:11px}.stock-transfer-transit-banner.danger{border-color:#E5B9B9;background:#FFF4F4;color:#862C2C}.stock-transfer-section{margin-top:14px;padding-top:12px;border-top:1px solid #DEE8E3}.stock-transfer-section h3{margin:0 0 8px}.stock-transfer-detail-table{min-width:1300px}.stock-transfer-outstanding{color:#A05A1E}.stock-transfer-lot-chip{display:flex;flex-direction:column;margin:2px 0;padding:5px 7px;border:1px solid #DCE6E1;border-radius:7px;background:#F8FBF9}.stock-transfer-lot-chip span{font-size:9px;color:#74857D}.stock-transfer-note-box{margin:0;white-space:pre-wrap}.stock-transfer-timeline-row{display:grid;grid-template-columns:18px 1fr;gap:8px;padding:7px 0}.stock-transfer-timeline-row i{width:9px;height:9px;margin-top:6px;border-radius:50%;background:#4E876A}.stock-transfer-timeline-row>div{display:flex;flex-direction:column}.stock-transfer-timeline-row span{font-size:10px;color:#7C8B84}.stock-transfer-timeline-row p{margin:3px 0 0}.stock-transfer-danger-note{display:flex;justify-content:space-between;gap:12px;margin-top:12px;padding:10px 12px;border:1px solid #E4C9A1;border-radius:8px;background:#FFF8EA;color:#795C25;font-size:11px}.stock-transfer-receive-lines{display:flex;flex-direction:column;gap:8px;margin:12px 0}.stock-transfer-receive-row{display:grid;grid-template-columns:1fr 170px;gap:12px;align-items:center;padding:10px;border:1px solid #D9E5DF;border-radius:8px;background:#FAFCFB}.stock-transfer-receive-row>div{display:flex;flex-direction:column}.stock-transfer-receive-row span{font-size:10px;color:#75877F}.stock-transfer-receive-row label,.stock-transfer-discrepancy-reason{display:flex;flex-direction:column;gap:5px}.stock-transfer-discrepancy-reason textarea{min-height:70px}.inventory-movement-actions{display:flex;gap:7px;flex-wrap:wrap}
@media(max-width:1000px){.stock-transfer-flow{grid-template-columns:repeat(2,minmax(0,1fr))}.stock-transfer-summary{grid-template-columns:repeat(3,minmax(0,1fr))}.stock-transfer-detail-head,.stock-transfer-shipping{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:680px){.stock-transfer-note,.stock-transfer-transit-banner,.stock-transfer-danger-note{flex-direction:column}.stock-transfer-flow,.stock-transfer-summary,.stock-transfer-detail-head,.stock-transfer-shipping,.stock-transfer-form-grid{grid-template-columns:1fr}.stock-transfer-form-grid .wide{grid-column:auto}.stock-transfer-line-head{display:none}.stock-transfer-line-row{grid-template-columns:1fr}.stock-transfer-receive-row{grid-template-columns:1fr}}

/* =========================================================
   v3.25.0 Online Order Center
   ========================================================= */
.online-order-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:12px;padding:14px 16px;border:1px solid #CFE0D7;border-radius:11px;background:#F4F9F6}.online-order-head>div{display:flex;flex-direction:column;gap:2px}.online-order-head strong{color:#174735;font-size:16px}.online-order-head span{color:#6F8178;font-size:11px}.online-summary{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;margin-bottom:12px}.online-summary>div{padding:11px;border:1px solid #D7E4DD;border-radius:10px;background:#fff}.online-summary small{display:block;color:#76877F;font-size:10px}.online-summary strong{display:block;color:#174735;font-size:19px}.online-toolbar{gap:8px}.online-toolbar input{flex:1}.online-toolbar select{min-width:165px}.online-order-table{min-width:1400px}.online-channel-chip{display:inline-flex;padding:4px 7px;border-radius:99px;background:#EEF6F2;color:#315F4A;font-size:10px}.online-order-dialog{width:min(1350px,97vw)!important}.online-section{margin-top:12px;padding:12px;border:1px solid #DBE6E0;border-radius:10px;background:#FBFCFC}.online-section h3{margin:0 0 9px}.online-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.online-form-grid label{display:flex;flex-direction:column;gap:5px}.online-form-grid .wide{grid-column:1/-1}.online-form-grid input,.online-form-grid select,.online-form-grid textarea{min-height:40px}.online-lines{display:flex;flex-direction:column;gap:7px}.online-order-line{display:grid;grid-template-columns:minmax(300px,2.2fr) 100px 90px 150px 140px auto;gap:7px;align-items:start;padding:8px;border:1px solid #D8E5DE;border-radius:8px;background:#fff}.online-order-line input{min-height:39px}.online-mini-btn{min-height:39px!important;padding:6px 9px!important}.online-live-total{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:7px;margin-top:10px}.online-live-total>div{padding:8px;border:1px solid #D8E4DE;border-radius:8px;background:#fff}.online-live-total>div.primary{background:#EEF8F2;border-color:#BBD8C8}.online-live-total small{display:block;color:#74867D;font-size:9px}.online-live-total strong{color:#174735}.online-detail-head{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.online-detail-head>div,.online-stock-summary>div{padding:10px;border:1px solid #D9E5DF;border-radius:8px;background:#FAFCFB}.online-detail-head small,.online-stock-summary small,.online-financial-grid small,.online-shipping-result small{display:block;color:#75877F;font-size:10px}.online-detail-head strong,.online-stock-summary strong,.online-shipping-result strong{color:#184735}.online-address-card{margin-top:10px;padding:11px;border:1px solid #D9E5DF;border-radius:9px;background:#FBFCFC}.online-address-card p{margin:5px 0 0;white-space:pre-wrap}.online-detail-section{margin-top:14px;padding-top:12px;border-top:1px solid #DEE8E3}.online-detail-section h3{margin:0 0 8px}.online-item-table{min-width:850px}.online-financial-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px}.online-financial-grid>div{padding:9px;border:1px solid #D9E5DF;border-radius:8px;background:#FAFCFB}.online-financial-grid .primary,.online-financial-grid .settled{background:#EDF8F2;border-color:#BCDACA}.online-financial-grid strong{display:block;color:#174735}.online-financial-grid span{font-size:9px;color:#72847B}.online-stock-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:8px}.online-stock-table{min-width:900px}.danger-text{color:#A33232;font-weight:700}.online-stock-note{padding:10px;border:1px dashed #D2E0D9;border-radius:8px;color:#73847C}.online-shipping-result{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:12px;padding:10px;border:1px solid #C5DDCF;border-radius:9px;background:#EFF8F3}.online-timeline>div{display:grid;grid-template-columns:16px 1fr;gap:8px;padding:6px 0}.online-timeline i{width:8px;height:8px;margin-top:5px;border-radius:50%;background:#4E876A}.online-timeline section{display:flex;flex-direction:column}.online-timeline span{font-size:9px;color:#7A8B82}.online-timeline p{margin:2px 0 0;color:#52685E}.num{text-align:right}@media(max-width:1000px){.online-summary{grid-template-columns:repeat(3,1fr)}.online-detail-head,.online-financial-grid,.online-live-total{grid-template-columns:repeat(2,1fr)}.online-order-line{grid-template-columns:1fr 100px 90px}.online-order-line .product-search-wrap{grid-column:1/-1}}@media(max-width:650px){.online-order-head{flex-direction:column;align-items:stretch}.online-summary,.online-detail-head,.online-financial-grid,.online-live-total,.online-form-grid,.online-shipping-result{grid-template-columns:1fr}.online-form-grid .wide{grid-column:auto}.online-order-line{grid-template-columns:1fr}.online-order-line .product-search-wrap{grid-column:auto}}

.online-line-header{display:grid;grid-template-columns:minmax(300px,2.2fr) 100px 90px 150px 140px auto;gap:7px;padding:0 8px 5px;color:#52685E;font-size:10px}.online-line-header b{color:#C62828}.online-action-dialog{width:min(820px,95vw)!important}.online-action-fields{padding-top:4px}.online-action-warning{display:flex;flex-direction:column;gap:3px;margin-top:12px;padding:10px 11px;border:1px solid #CEE0D6;border-radius:8px;background:#F3F8F5;color:#3A604E;font-size:11px}.online-action-warning:empty{display:none}.online-action-warning.danger{border-color:#E4BBBB;background:#FFF5F5;color:#8A3030}@media(max-width:1000px){.online-line-header{display:none}}
/* v3.25.0 Sales Forecast planning UX */
.forecast-help{display:flex;flex-direction:column;gap:4px;padding:14px 16px;margin-bottom:16px;border:1px solid #d8e8df;border-radius:14px;background:#f5faf7;color:#244d3c}.forecast-help strong{font-size:15px}.forecast-help span,.forecast-note{font-size:12px;color:#667b70}.forecast-note{padding:12px 4px 0}.forecast-page .table-wrap{margin-top:12px}

/* v3.26.0 Marketing Campaign management */
.campaign-page{display:grid;gap:18px}.campaign-kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}.campaign-kpis>div{background:#fff;border:1px solid #dce9e2;border-radius:18px;padding:18px;box-shadow:0 8px 24px rgba(13,74,57,.04)}.campaign-kpis small{display:block;color:#657b73;margin-bottom:8px}.campaign-kpis strong{font-size:1.35rem;color:#0d4a39}.campaign-help{display:flex;gap:10px;align-items:center;justify-content:space-between;background:#eef7f2;border:1px solid #d4e8dc;border-radius:16px;padding:14px 18px;color:#214f40}.campaign-help span{color:#60756e;font-size:.92rem}@media(max-width:1100px){.campaign-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.campaign-help{align-items:flex-start;flex-direction:column}}@media(max-width:650px){.campaign-kpis{grid-template-columns:1fr}}

/* My Profile v1.0 */
.profile-menu-wrap{position:relative}.profile-button{border:0;background:transparent;cursor:pointer;font:inherit;color:inherit}.profile-button:hover{background:#f3f8f5;border-radius:12px}.profile-dropdown{position:absolute;right:0;top:calc(100% + 8px);width:230px;background:#fff;border:1px solid #dce7e2;border-radius:12px;box-shadow:0 14px 38px rgba(31,65,52,.16);padding:7px;z-index:80}.profile-dropdown[hidden]{display:none}.profile-dropdown-head{padding:10px 11px;border-bottom:1px solid #edf2ef;margin-bottom:5px}.profile-dropdown-head strong,.profile-dropdown-head span{display:block}.profile-dropdown-head span{font-size:12px;color:#718078;margin-top:2px}.profile-dropdown button{display:block;width:100%;border:0;background:transparent;text-align:left;padding:10px 11px;border-radius:8px;cursor:pointer;font:inherit;color:#24483b}.profile-dropdown button:hover{background:#eef6f2}.my-profile-layout{display:grid;gap:18px;max-width:1100px}.profile-card{background:#fff;border:1px solid #dce7e2;border-radius:14px;padding:22px;box-shadow:0 2px 8px rgba(28,62,49,.04)}.profile-identity{display:flex;align-items:center;gap:20px}.profile-avatar-editor{display:grid;justify-items:center;gap:7px}.profile-avatar-editor img{width:104px;height:104px;border-radius:50%;object-fit:cover;border:3px solid #e1eee8;background:#eef3f0}.profile-avatar-editor small{font-size:11px;color:#77877f}.profile-upload-btn{cursor:pointer}.profile-identity h2{margin:0 0 5px}.profile-identity p{margin:0;color:#687b72}.profile-section-head{display:flex;justify-content:space-between;gap:15px;align-items:flex-start;margin-bottom:18px}.profile-section-head h3{margin:0 0 4px}.profile-section-head p{margin:0;color:#718078;font-size:13px}.editable-badge,.readonly-badge{font-size:12px;padding:5px 9px;border-radius:999px;white-space:nowrap}.editable-badge{background:#e9f6ef;color:#246346}.readonly-badge{background:#f1f3f2;color:#68766f}.profile-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.profile-form-grid label{display:grid;gap:6px;font-size:13px;font-weight:600;color:#38584b}.profile-form-grid .wide{grid-column:1/-1}.profile-form-grid input,.profile-form-grid select,.profile-form-grid textarea{width:100%;padding:10px 11px;border:1px solid #ccdcd5;border-radius:8px;background:#fff;font:inherit;color:#223f34}.profile-form-grid small{font-weight:400;color:#7c8a84}.profile-actions{display:flex;justify-content:flex-end;margin-top:18px}.employment-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.readonly-field{padding:12px;background:#f7faf8;border:1px solid #e4ece8;border-radius:9px;min-height:67px}.readonly-field span,.readonly-field strong{display:block}.readonly-field span{font-size:12px;color:#77877f;margin-bottom:5px}.readonly-field strong{font-size:14px;color:#29493c;overflow-wrap:anywhere}.profile-loading{padding:30px;text-align:center;color:#6b7d74}@media(max-width:850px){.employment-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:620px){.profile-form-grid,.employment-grid{grid-template-columns:1fr}.profile-identity{align-items:flex-start}.profile-section-head{display:block}.editable-badge,.readonly-badge{display:inline-block;margin-top:8px}}

/* Daily Sales Report v1.0 */
.daily-sales-page .daily-sales-filter{display:flex;gap:10px;align-items:end;flex-wrap:wrap}
.daily-sales-page .daily-sales-filter label{font-size:12px;color:var(--muted)}
.daily-sales-page .daily-sales-filter input,.daily-sales-page .daily-sales-filter select{display:block;margin-top:4px}
.daily-sales-page .kpi-grid{margin-bottom:16px}
#toh-ds-modal{width:min(760px,94vw);border:0;border-radius:18px;padding:22px;box-shadow:0 24px 70px rgba(0,0,0,.22)}
#toh-ds-modal::backdrop{background:rgba(15,23,42,.38)}
#toh-ds-modal .span-2{grid-column:1/-1}
@media(max-width:720px){.daily-sales-page .daily-sales-filter{align-items:stretch}.daily-sales-page .daily-sales-filter>*{width:100%}}

/* v3.31.1 Executive Daily Sales Dashboard */
.ds-exec{--ds-series-1:#2f80ed;--ds-series-2:#27ae60;--ds-series-3:#f2c94c;--ds-series-4:#9b51e0;--ds-series-5:#56ccf2;--ds-series-6:#f2994a;display:grid;gap:16px}.ds-exec-filter{display:flex;justify-content:space-between;align-items:end;gap:14px;padding:14px 16px;background:#fff;border:1px solid #e4e9ee;border-radius:14px}.ds-date-fields,.ds-quick{display:flex;align-items:end;gap:8px;flex-wrap:wrap}.ds-date-fields label{font-size:11px;color:#738078}.ds-date-fields input{display:block;margin-top:4px;min-height:38px}.ds-report-note{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:0 3px;color:#6d7c75}.ds-report-note span{font-weight:700;color:#315748}.ds-report-note small{font-size:11px}.ds-exec-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.ds-kpi-card{padding:18px 19px;background:#fff;border:1px solid #e5eaf0;border-radius:15px;box-shadow:0 5px 18px rgba(28,52,43,.045)}.ds-kpi-card span,.ds-kpi-card small{display:block}.ds-kpi-card span{font-size:12px;color:#64736c;font-weight:650}.ds-kpi-card strong{display:block;margin:7px 0 5px;font-size:25px;line-height:1.05;color:#193d30}.ds-kpi-card small{font-size:10px;color:#7d8a84}.ds-kpi-card small.good,.good-text{color:#208a55}.ds-kpi-card small.bad,.bad-text{color:#c74d4d}.ds-exec-grid{display:grid;gap:14px}.ds-exec-grid-main{grid-template-columns:minmax(0,1.65fr) minmax(300px,.85fr)}.ds-exec-grid-bottom{grid-template-columns:repeat(2,minmax(0,1fr))}.ds-chart-card{background:#fff;border:1px solid #e5eaf0;border-radius:15px;padding:16px 18px;box-shadow:0 5px 18px rgba(28,52,43,.035);min-width:0}.ds-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:12px}.ds-card-head h3{margin:0;color:#213f34;font-size:14px}.ds-card-head p{margin:3px 0 0;color:#83908a;font-size:10px}.ds-chip{display:inline-flex;padding:5px 9px;border-radius:999px;background:#f0f6f3;color:#46675a;font-size:10px;white-space:nowrap}.ds-chart-body{min-height:220px}.ds-line-svg{width:100%;height:220px;overflow:visible}.ds-gridline{stroke:#edf1f4;stroke-width:1}.ds-area{fill:rgba(47,128,237,.08)}.ds-line{fill:none;stroke:#2f80ed;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.ds-line-svg circle{fill:#fff;stroke:#2f80ed;stroke-width:2}.ds-axis-labels{display:flex;justify-content:space-between;color:#8a9691;font-size:9px;margin-top:-6px}.ds-bars{display:grid;gap:15px;padding:8px 0}.ds-bar-row{display:grid;gap:5px}.ds-bar-label{display:flex;justify-content:space-between;gap:8px;font-size:10px;color:#64736c}.ds-bar-label b{font-weight:650;color:#344f44;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ds-bar-track{height:9px;border-radius:99px;background:#eef2f4;overflow:hidden}.ds-bar-track i{display:block;height:100%;border-radius:99px;background:#2f80ed}.ds-donut-wrap,.ds-performance{min-height:220px;display:flex;align-items:center;justify-content:center;gap:28px}.ds-donut,.ds-perf-ring{width:150px;height:150px;border-radius:50%;display:grid;place-items:center;flex:0 0 auto}.ds-donut:after,.ds-perf-ring:after{content:"";grid-area:1/1;width:98px;height:98px;border-radius:50%;background:#fff}.ds-donut>div,.ds-perf-ring>div{grid-area:1/1;z-index:1;text-align:center}.ds-donut strong,.ds-perf-ring strong{display:block;color:#27483b;font-size:15px}.ds-donut span,.ds-perf-ring span{display:block;color:#84918b;font-size:9px}.ds-legend,.ds-perf-list{display:grid;gap:9px;min-width:180px}.ds-legend>div,.ds-perf-list>div{display:grid;grid-template-columns:10px 1fr auto;align-items:center;gap:7px;font-size:10px;color:#66766f}.ds-legend i,.ds-perf-list i{width:8px;height:8px;border-radius:50%}.ds-legend b,.ds-perf-list b{color:#294b3e}.ds-perf-ring{background:conic-gradient(#27ae60 0 calc(var(--good)*1%),#f2c94c calc(var(--good)*1%) calc((var(--good) + var(--warn))*1%),#eb5757 calc((var(--good) + var(--warn))*1%) 100%)}.good-dot{background:#27ae60}.warn-dot{background:#f2c94c}.bad-dot{background:#eb5757}.ds-detail-card{padding-bottom:10px}.ds-exec-table{min-width:900px}.ds-mini-progress{width:90px;height:5px;background:#eef1f2;border-radius:99px;overflow:hidden;display:inline-block;margin-right:6px;vertical-align:middle}.ds-mini-progress i{display:block;height:100%}.ds-mini-progress i.good{background:#27ae60}.ds-mini-progress i.warn{background:#f2c94c}.ds-mini-progress i.bad{background:#eb5757}.ds-status{display:inline-flex;padding:4px 8px;border-radius:99px;font-size:9px;white-space:nowrap}.ds-status.good{background:#eaf8f0;color:#1f8050}.ds-status.warn{background:#fff8df;color:#8a6b00}.ds-status.bad{background:#fff0f0;color:#b44343}.ds-quality{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:13px 16px;border:1px solid #e5eaf0;border-radius:14px;background:#fbfcfc}.ds-quality>div:first-child span,.ds-quality>div:first-child strong{display:block}.ds-quality>div:first-child span{font-size:10px;color:#83908a}.ds-quality>div:first-child strong{font-size:12px;color:#365448}.ds-quality-items{display:flex;gap:8px;flex-wrap:wrap}.ds-quality-items span{padding:6px 9px;background:#fff;border:1px solid #e5e9eb;border-radius:9px;color:#718078;font-size:9px}.ds-quality-items b{color:#294b3e;font-size:11px}.ds-empty{min-height:180px;display:grid;place-items:center;color:#8a9691;font-size:11px}@media(max-width:1050px){.ds-exec-kpis{grid-template-columns:repeat(2,1fr)}.ds-exec-grid-main,.ds-exec-grid-bottom{grid-template-columns:1fr}}@media(max-width:680px){.ds-exec-filter,.ds-report-note,.ds-quality{align-items:stretch;flex-direction:column}.ds-date-fields>*{flex:1;min-width:130px}.ds-date-fields input{width:100%}.ds-quick button{flex:1}.ds-exec-kpis{grid-template-columns:1fr 1fr}.ds-kpi-card{padding:14px}.ds-kpi-card strong{font-size:19px}.ds-donut-wrap,.ds-performance{flex-direction:column;gap:16px}.ds-chart-card{padding:14px}.ds-quality-items{display:grid;grid-template-columns:1fr 1fr}.ds-report-note small{text-align:left}}@media(max-width:420px){.ds-exec-kpis{grid-template-columns:1fr}}

/* Daily Sales compact entry v3.31.4 */
.ds-entry-compact .ds-entry-toolbar{align-items:center;gap:12px}.ds-date-block{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.ds-entry-date{font-size:13px;color:#64776f}.ds-workflow-badge{font-size:14px!important;padding:7px 12px!important}.ds-entry-panel{padding:14px 16px!important}.ds-entry-table{table-layout:fixed;width:100%;font-size:14px}.ds-entry-table th{font-size:13px;padding:10px 8px;white-space:normal;line-height:1.25}.ds-entry-table td{padding:8px;vertical-align:middle}.ds-entry-table th:nth-child(1){width:17%}.ds-entry-table th:nth-child(2){width:10%}.ds-entry-table th:nth-child(3){width:14%}.ds-entry-table th:nth-child(4){width:10%}.ds-entry-table th:nth-child(5){width:8%}.ds-entry-table th:nth-child(6){width:14%}.ds-entry-table th:nth-child(7){width:17%}.ds-entry-table th:nth-child(8){width:10%}.ds-entry-table input,.ds-entry-table select{min-height:42px;padding:8px 10px;font-size:15px}.ds-entry-table .ds-amount{font-size:17px;font-weight:700;text-align:right}.ds-status-large{min-width:130px!important;font-size:15px!important;font-weight:700!important;padding:8px 10px!important}.ds-row-save{min-height:40px;padding:8px 14px;white-space:nowrap}.ds-location strong{font-size:15px}.ds-target{white-space:nowrap}.ds-entry-actions{position:sticky;bottom:0;background:var(--viz-card,#fff);padding:12px 4px 4px;z-index:2}@media(max-width:1100px){.ds-entry-table{min-width:1050px}.ds-entry-panel .table-wrap{overflow-x:auto}}

/* =========================================================
   v3.31.16 Safe Search Dropdown Layout
   Keep autocomplete results in normal document flow so they
   never cover the fields below. No JS observers/portals/loops.
   Applies to shared partner/product pickers across forms.
   ========================================================= */
.partner-combobox > .partner-search-results,
.product-combobox > .product-search-results{
  position:static !important;
  left:auto !important;
  right:auto !important;
  top:auto !important;
  width:100% !important;
  margin-top:6px;
  max-height:280px;
  overflow-y:auto;
  overflow-x:hidden;
  z-index:auto !important;
}

.partner-combobox > .partner-search-results.open,
.product-combobox > .product-search-results.open{
  display:block;
}

/* Keep the search field and its results together as one form cell. */
.partner-combobox,
.product-combobox{
  position:relative;
  min-width:0;
}

/* =========================================================
   v3.31.16 Employee-friendly Stock Control Center
   UI only — no stock transaction logic changed
   ========================================================= */
.inventory-kpi-v315{grid-template-columns:repeat(7,minmax(125px,1fr));gap:12px;margin:14px 0 16px;overflow-x:auto;padding-bottom:2px}
.inventory-kpi-v315 .inventory-kpi-card{min-height:132px;padding:18px 16px;border:1px solid #dce9e3;border-radius:18px;box-shadow:0 7px 22px rgba(24,76,57,.05);display:flex;flex-direction:column;justify-content:center}
.inventory-kpi-v315 .inventory-kpi-card small{font-size:14px;color:#536c63;font-weight:700}.inventory-kpi-v315 .inventory-kpi-card strong{font-size:29px;line-height:1.15;margin:8px 0;color:#123f31}.inventory-kpi-v315 .inventory-kpi-card span{font-size:11px;color:#71857d}
.inventory-kpi-ready{background:#f0faf4!important}.inventory-kpi-value{background:#eff8fb!important}.inventory-stat-hold{background:#f7f2ff!important}
.inventory-work-alerts{margin:2px 0 16px;padding:14px;border:1px solid #f0d9d2;border-radius:16px;background:#fff9f7}.inventory-section-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}.inventory-section-heading h2{margin:0;color:#173f33;font-size:19px}.inventory-section-heading p{margin:3px 0 0;color:#72827c;font-size:12px}
.inventory-work-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:12px}.inventory-work-card{border:1px solid #e3e8e5;border-radius:12px;background:#fff;padding:13px 15px;text-align:left;cursor:pointer;font:inherit;transition:.15s}.inventory-work-card:hover{transform:translateY(-1px);box-shadow:0 6px 16px rgba(30,70,55,.08)}.inventory-work-card span,.inventory-work-card strong,.inventory-work-card small{display:block}.inventory-work-card span{font-weight:800;color:#3d5149}.inventory-work-card strong{font-size:25px;margin:4px 0;color:#183f33}.inventory-work-card small{color:#76877f}.inventory-work-card.warning{background:#fffaf0}.inventory-work-card.danger,.inventory-work-card.expired{background:#fff5f4}.inventory-work-card.hold{background:#f8f4ff}
.inventory-balance-panel{padding:0!important;overflow:hidden}.inventory-balance-head{padding:18px 20px 12px}.inventory-balance-tools{display:flex;gap:8px;align-items:center}.inventory-balance-tools input{min-width:280px}.inventory-simple-tabs{display:flex;gap:8px;padding:0 20px;border-bottom:1px solid #e0e9e5}.inventory-simple-tabs button{border:0;background:#eef6f2;color:#355d4e;padding:10px 18px;border-radius:10px 10px 0 0;font:inherit;font-weight:800;cursor:pointer}.inventory-simple-tabs button.active{background:#175a43;color:#fff}.inventory-balance-table{margin:0;padding:0 20px 8px}.inventory-balance-table table{margin-top:10px}.inventory-balance-table thead th{background:#f4f8f6;white-space:nowrap}.inventory-help-strip{display:flex;gap:8px;padding:12px 20px;background:#f7faf8;border-top:1px solid #e2ebe7;color:#60756c;font-size:12px}.inventory-help-strip strong{color:#285846}.inventory-tabs-v315{margin-top:0}.inventory-command-actions [data-inventory-tab="transfers"]{white-space:nowrap}
@media(max-width:1100px){.inventory-kpi-v315{grid-template-columns:repeat(4,minmax(150px,1fr))}.inventory-work-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.inventory-kpi-v315{grid-template-columns:repeat(2,minmax(145px,1fr))}.inventory-work-grid{grid-template-columns:1fr}.inventory-section-heading,.inventory-balance-head{align-items:stretch;flex-direction:column}.inventory-balance-tools{align-items:stretch;flex-direction:column}.inventory-balance-tools input{min-width:0;width:100%}.inventory-simple-tabs{overflow-x:auto}.inventory-help-strip{flex-direction:column}}


/* v3.31.22 Master Farm Layout (Org Zone) */
.farm-view-tabs-v322{display:flex;gap:8px;margin:0 0 14px}.farm-view-tabs-v322 button{border:1px solid #cfe0d7;background:#fff;color:#245b47;border-radius:10px;padding:10px 16px;font-weight:800}.farm-view-tabs-v322 button.active{background:#155a43;color:#fff;border-color:#155a43}
.farm-layout-workspace{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:14px;align-items:start}.farm-layout-card,.farm-layout-detail{background:#fff;border:1px solid #d7e5de;border-radius:16px;box-shadow:0 10px 28px rgba(21,90,67,.06)}.farm-layout-card{overflow:hidden}.farm-layout-legend{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:11px 14px;border-bottom:1px solid #e2ece7;font-size:13px}.farm-layout-legend span{display:flex;align-items:center;gap:6px}.farm-layout-legend i{width:13px;height:13px;border-radius:4px;display:inline-block}.farm-layout-legend i.registered{background:#70bf88}.farm-layout-legend i.unregistered{background:#e7ece9;border:1px solid #9eaea6}.farm-layout-legend i.inactive{background:#c7b1df}.farm-layout-legend small{margin-left:auto;color:#71847b}
.farm-layout-image-wrap{position:relative;width:100%;line-height:0;background:#eef4f1}.farm-layout-image{display:block;width:100%;height:auto}.farm-layout-hotspot{position:absolute;transform:translate(-50%,-50%);padding:0;border-radius:7px;background:rgba(255,255,255,.02);border:2px solid transparent;z-index:2;cursor:pointer;min-width:8px;min-height:8px}.farm-layout-hotspot span{position:absolute;left:50%;top:-24px;transform:translateX(-50%);background:#123f32;color:#fff;border-radius:6px;padding:2px 6px;font-size:10px;line-height:1.25;white-space:nowrap;opacity:0;pointer-events:none;transition:.12s}.farm-layout-hotspot:hover,.farm-layout-hotspot.selected{border-color:#0b78ff;background:rgba(11,120,255,.10);box-shadow:0 0 0 3px rgba(11,120,255,.15)}.farm-layout-hotspot:hover span,.farm-layout-hotspot.selected span{opacity:1}.farm-layout-hotspot.is-registered{border-color:rgba(39,145,74,.35)}.farm-layout-hotspot.is-inactive{border-color:rgba(112,73,153,.55);background:rgba(112,73,153,.08)}
.farm-layout-detail{position:sticky;top:14px;padding:16px;min-height:260px}.farm-layout-empty{min-height:230px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:#7a8e84;gap:5px}.farm-layout-detail-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;border-bottom:1px solid #e1ebe6;padding-bottom:12px}.farm-layout-detail-head small{color:#7b8f85}.farm-layout-detail-head h3{margin:2px 0;color:#154d39;font-size:25px}.farm-layout-detail-head strong{font-size:16px}.farm-layout-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0}.farm-layout-detail-grid>div{border:1px solid #e1ebe6;border-radius:10px;padding:9px}.farm-layout-detail-grid span,.farm-layout-detail-grid b{display:block}.farm-layout-detail-grid span{font-size:11px;color:#71847b}.farm-layout-detail-grid b{font-size:13px;color:#244d3d}.farm-layout-detail-actions{display:grid;gap:7px}.farm-layout-detail-actions button{width:100%}
@media(max-width:1180px){.farm-layout-workspace{grid-template-columns:1fr}.farm-layout-detail{position:static}.farm-layout-card{overflow-x:auto}.farm-layout-image-wrap{min-width:900px}}

/* v3.31.24 Farm Plot visual master map */
.farm-map-toolbar{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap;margin:12px 0}.farm-zone-filters{display:flex;gap:7px;flex-wrap:wrap}.farm-zone-filters button,.farm-view-tabs-v322 button{border:1px solid #d8e5df;background:#fff;color:#315b4d;border-radius:10px;padding:9px 13px;font-weight:700;cursor:pointer}.farm-zone-filters button.active,.farm-view-tabs-v322 button.active{background:#155b46;color:#fff;border-color:#155b46}.farm-zone-filters button span{margin-right:5px}.farm-schematic-map{position:relative;aspect-ratio:1.42/1;min-height:560px;background:linear-gradient(180deg,#eaf4df 0%,#dceccf 100%);overflow:hidden;border-radius:15px 15px 0 0;box-shadow:inset 0 0 0 1px #d5e4d7}.farm-schematic-map:before{content:"";position:absolute;inset:0;background-image:radial-gradient(circle at 15% 18%,rgba(42,123,58,.12) 0 2px,transparent 3px),radial-gradient(circle at 78% 25%,rgba(42,123,58,.1) 0 2px,transparent 3px);background-size:24px 24px,31px 31px;opacity:.35}.farm-map-road{position:absolute;background:#b9b9b1;border-left:3px solid #eee7d7;border-right:3px solid #eee7d7;z-index:1}.farm-map-road-v{left:40.2%;top:0;width:4.3%;height:100%}.farm-zone{position:absolute;transform:translate(-50%,-50%);z-index:3;border:2px solid #fff;border-radius:9px;box-shadow:0 2px 7px rgba(27,72,55,.22);display:flex;align-items:center;justify-content:center;gap:5px;min-width:55px;padding:2px 5px;cursor:pointer;transition:.15s;line-height:1}.farm-zone strong{font-size:11px;white-space:nowrap;background:rgba(255,255,255,.9);padding:3px 5px;border-radius:5px;color:#173f32}.farm-zone-icon{font-size:14px;filter:saturate(1.1)}.farm-zone-fld{background:#65a83f}.farm-zone-ric{background:#d7b52c}.farm-zone-nur{background:#b77be0}.farm-zone-pnd{background:#43aeea}.farm-zone-fac{background:#8a8e8c}.farm-zone-res{background:#e77a67}.farm-zone-rst{background:#ee7aa5}.farm-zone-com{background:#76aa6b}.farm-zone:hover,.farm-zone.selected{outline:3px solid rgba(14,104,79,.22);transform:translate(-50%,-50%) scale(1.04);z-index:5}.farm-zone.is-inactive{filter:grayscale(.55);opacity:.68}.farm-zone-dimmed{opacity:.15;filter:grayscale(.7)}.farm-map-north{position:absolute;right:2.2%;top:2%;z-index:2;font-weight:800;text-align:center;color:#1d4638}.farm-map-north span{font-size:28px}.farm-symbol-legend{display:grid;grid-template-columns:180px repeat(8,minmax(72px,1fr));gap:8px;align-items:center;padding:12px;background:#fff;border-top:1px solid #e1ebe6}.farm-symbol-legend>strong{background:#155b46;color:#fff;border-radius:12px;padding:12px}.farm-symbol-legend span{display:grid;grid-template-columns:28px auto;grid-template-areas:'icon code' 'icon name';column-gap:6px;align-items:center}.farm-symbol-legend b{grid-area:icon;font-size:22px}.farm-symbol-legend em{grid-area:code;font-style:normal;font-weight:800;color:#1b4f3e}.farm-symbol-legend small{grid-area:name;color:#607b70;font-size:10px}.farm-area-note{padding:11px;border-radius:9px;background:#f2f6f4;color:#617a70;font-size:13px}.farm-layout-detail-head h3{display:flex;align-items:center;gap:6px}.farm-form-grid label.wide{grid-column:1/-1}@media(max-width:1250px){.farm-symbol-legend{grid-template-columns:repeat(4,1fr)}.farm-symbol-legend>strong{grid-column:1/-1}.farm-schematic-map{min-width:900px}.farm-layout-card{overflow-x:auto}}

/* v3.31.31 Farm Plot usability + automatic operational status */
.farm-start-card-clean{margin-bottom:8px;padding:14px 18px}.farm-start-card-clean strong{font-size:1.12em}.farm-start-card-clean span{display:block;color:#6b8177;font-size:.88em;margin-top:2px}
.farm-map-toolbar-clean{background:#fff;border:1px solid #dbe7e1;border-radius:14px;padding:10px 12px;margin:8px 0 12px;box-shadow:0 5px 18px rgba(18,72,52,.04)}
.farm-status-legend{display:flex;gap:12px;flex-wrap:wrap;align-items:center;color:#49675b;font-size:13px}.farm-status-legend span{display:flex;align-items:center;gap:6px;white-space:nowrap}.farm-status-legend i,.farm-status-dot,.farm-status-pill i{display:inline-block;width:13px;height:13px;border-radius:4px;border:1px solid rgba(0,0,0,.08);flex:0 0 auto}
.farm-status-vacant{background:#bfc6c3!important}.farm-status-planned{background:#5aa9e6!important}.farm-status-growing{background:#5fbd72!important}.farm-status-near{background:#f2cf4a!important}.farm-status-harvest{background:#f39a52!important}.farm-status-rest{background:#a56bd8!important}
.farm-zone-fld.farm-status-vacant,.farm-zone-ric.farm-status-vacant{background:#bfc6c3}.farm-zone-fld.farm-status-planned,.farm-zone-ric.farm-status-planned{background:#5aa9e6}.farm-zone-fld.farm-status-growing,.farm-zone-ric.farm-status-growing{background:#5fbd72}.farm-zone-fld.farm-status-near,.farm-zone-ric.farm-status-near{background:#f2cf4a}.farm-zone-fld.farm-status-harvest,.farm-zone-ric.farm-status-harvest{background:#f39a52}.farm-zone-fld.farm-status-rest,.farm-zone-ric.farm-status-rest{background:#a56bd8}
.farm-status-pill{display:inline-flex;align-items:center;gap:6px;padding:5px 9px;border-radius:999px;background:#f5f8f6;color:#294d40;font-size:13px;font-weight:700}.farm-status-pill.farm-status-vacant i{background:#bfc6c3}.farm-status-pill.farm-status-planned i{background:#5aa9e6}.farm-status-pill.farm-status-growing i{background:#5fbd72}.farm-status-pill.farm-status-near i{background:#f2cf4a}.farm-status-pill.farm-status-harvest i{background:#f39a52}.farm-status-pill.farm-status-rest i{background:#a56bd8}
.farm-layout-detail-grid b{display:flex;align-items:center;gap:7px}.farm-layout-workspace{grid-template-columns:minmax(0,1fr) 330px}.farm-layout-detail{position:sticky;top:18px}.farm-schematic-map{min-height:640px}.farm-plot-table th,.farm-plot-table td{vertical-align:middle}
@media(max-width:1180px){.farm-status-legend{width:100%}.farm-layout-workspace{grid-template-columns:1fr}.farm-layout-detail{position:static}.farm-schematic-map{min-width:900px}}

/* v3.31.31 Full-width Farm Map + on-demand detail popup */
.farm-layout-workspace-full{display:block!important;grid-template-columns:none!important;width:100%}
.farm-layout-card-full{width:100%;max-width:none;margin:0}
.farm-layout-card-full .farm-schematic-map{width:100%;min-height:720px;aspect-ratio:1.65/1}
.farm-layout-popup{width:min(620px,calc(100vw - 32px));max-width:620px;border:0;border-radius:18px;padding:0;background:transparent;box-shadow:none;overflow:visible}
.farm-layout-popup::backdrop{background:rgba(9,38,29,.46);backdrop-filter:blur(2px)}
.farm-layout-detail-popup{position:relative!important;top:auto!important;width:100%;min-height:0;max-height:min(82vh,760px);overflow:auto;margin:0;padding:22px;border-radius:18px;box-shadow:0 24px 70px rgba(7,43,31,.25)}
.farm-layout-popup-head-actions{display:flex;align-items:center;gap:10px}
.farm-layout-popup-close{width:38px;height:38px;border:0;border-radius:10px;background:#eef5f1;color:#164d3b;font-size:25px;line-height:1;cursor:pointer;display:grid;place-items:center}
.farm-layout-popup-close:hover{background:#e1eee8}
#toh-farm-map-view{width:100%}
@media(max-width:1180px){.farm-layout-card-full{overflow:auto}.farm-layout-card-full .farm-schematic-map{min-width:900px;min-height:640px}.farm-layout-detail-popup{position:relative!important}}

/* v3.31.32 Farm map alignment + restore top registration action */
.farm-toolbar-right{display:flex;align-items:center;justify-content:flex-end;gap:14px;flex:1;min-width:0}.farm-register-top{white-space:nowrap;padding:10px 18px;box-shadow:0 5px 14px rgba(21,91,70,.12)}
@media(max-width:1320px){.farm-toolbar-right{width:100%;justify-content:space-between;flex-wrap:wrap}.farm-status-legend{flex:1}.farm-register-top{margin-left:auto}}
@media(max-width:760px){.farm-register-top{width:100%;margin-left:0}.farm-toolbar-right{align-items:stretch}}


/* v3.31.35 Farm map: right cluster alignment, visible register action, modern modal */
.farm-map-toolbar-clean{position:relative;z-index:12;display:flex!important;align-items:center!important;justify-content:space-between!important;gap:16px!important;min-height:68px;padding:12px 16px!important;margin:8px 0 14px!important;background:#fff!important;border:1px solid #d8e6df!important;border-radius:16px!important;box-shadow:0 8px 24px rgba(18,72,52,.06)!important}
.farm-view-tabs-v322{display:flex;gap:8px;flex:0 0 auto}.farm-toolbar-right{display:flex!important;align-items:center!important;justify-content:flex-end!important;gap:18px!important;flex:1 1 auto!important}.farm-status-legend{justify-content:flex-end}.farm-register-top{display:inline-flex!important;align-items:center;justify-content:center;min-height:44px!important;padding:10px 20px!important;border-radius:12px!important;background:#155b46!important;color:#fff!important;border:1px solid #155b46!important;font-weight:700!important;font-size:15px!important;box-shadow:0 6px 16px rgba(21,91,70,.18)!important;visibility:visible!important;opacity:1!important}
.farm-register-top:hover{background:#0f4938!important;transform:translateY(-1px)}
.farm-layout-popup{width:min(680px,calc(100vw - 28px))!important;max-width:680px!important;border:0!important;border-radius:22px!important;padding:0!important;background:transparent!important;overflow:visible!important}
.farm-layout-popup::backdrop{background:rgba(6,32,24,.58)!important;backdrop-filter:blur(4px)}
.farm-layout-detail-popup{background:#fff!important;border:1px solid rgba(211,228,220,.9)!important;border-radius:22px!important;padding:0!important;overflow:hidden!important;max-height:min(86vh,780px)!important;box-shadow:0 30px 90px rgba(5,37,27,.32)!important}
.farm-layout-detail-popup .farm-layout-detail-head{padding:22px 24px 18px!important;margin:0!important;background:linear-gradient(135deg,#f8fcfa 0%,#edf7f2 100%)!important;border-bottom:1px solid #dceae3!important;align-items:center!important}
.farm-layout-detail-popup .farm-layout-detail-head h3{font-size:28px!important;margin:4px 0!important;color:#123f32!important}.farm-layout-detail-popup .farm-layout-detail-head small{font-size:12px!important;color:#71867c!important}.farm-layout-detail-popup .farm-layout-detail-head strong{display:block;margin-top:5px;color:#365f50!important}
.farm-layout-popup-head-actions{display:flex;align-items:center;gap:10px}.farm-layout-popup-close{width:42px!important;height:42px!important;border-radius:12px!important;background:#fff!important;border:1px solid #d9e7e0!important;box-shadow:0 3px 10px rgba(20,72,54,.06)!important}
.farm-layout-detail-popup .farm-layout-detail-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:10px!important;margin:0!important;padding:18px 24px!important;background:#fff}.farm-layout-detail-popup .farm-layout-detail-grid>div{min-height:70px;padding:12px 14px!important;border:1px solid #deebe5!important;border-radius:13px!important;background:#fbfdfc!important}.farm-layout-detail-popup .farm-layout-detail-grid span{font-size:11px!important;margin-bottom:5px!important}.farm-layout-detail-popup .farm-layout-detail-grid b{font-size:14px!important;color:#1d4d3c!important}
.farm-layout-detail-popup .farm-layout-detail-actions{display:grid!important;grid-template-columns:1fr 1fr;gap:10px!important;padding:0 24px 24px!important}.farm-layout-detail-popup .farm-layout-detail-actions .primary{grid-column:1/-1;min-height:48px;border-radius:12px!important;font-size:15px!important}.farm-layout-detail-popup .farm-layout-detail-actions .secondary{min-height:44px;border-radius:12px!important}.farm-layout-detail-popup .farm-area-note{grid-column:1/-1}
@media(max-width:1320px){.farm-map-toolbar-clean{align-items:flex-start!important}.farm-toolbar-right{flex-wrap:wrap!important}.farm-status-legend{justify-content:flex-start}.farm-register-top{margin-left:auto!important}}
@media(max-width:760px){.farm-map-toolbar-clean{display:block!important}.farm-view-tabs-v322{margin-bottom:10px}.farm-toolbar-right{display:block!important}.farm-status-legend{margin-bottom:10px}.farm-register-top{width:100%!important}.farm-layout-detail-popup .farm-layout-detail-grid{grid-template-columns:1fr!important}.farm-layout-detail-popup .farm-layout-detail-actions{grid-template-columns:1fr!important}.farm-layout-detail-popup .farm-layout-detail-actions .primary{grid-column:auto}}


/* v3.31.36 — HR Leave Approval UX */
.leave-workflow-card{margin:0 0 16px;padding:16px;border:1px solid #cfe0d7;border-radius:14px;background:linear-gradient(180deg,#f8fcfa 0%,#f1f8f4 100%)}
.leave-workflow-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.leave-workflow-head>div{display:flex;flex-direction:column;gap:2px}.leave-workflow-head strong{color:#123f30;font-size:16px}.leave-workflow-head span{color:#6f8279;font-size:11px}
.leave-workflow-steps{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.leave-workflow-step{position:relative;display:flex;align-items:center;gap:7px;min-height:46px;padding:8px 9px;border:1px solid #dce7e1;border-radius:10px;background:#fff;color:#7b8a83}.leave-workflow-step strong{font-size:11px;font-weight:600}.leave-step-dot{display:grid;place-items:center;flex:0 0 26px;width:26px;height:26px;border-radius:50%;background:#edf2ef;color:#72837b;font-weight:700}.leave-workflow-step.done{border-color:#b9d9c8;background:#f3faf6;color:#1d6246}.leave-workflow-step.done .leave-step-dot{background:#287653;color:#fff}.leave-workflow-step.current{border-color:#6da98b;background:#eaf6ef;color:#124d36;box-shadow:0 0 0 2px rgba(45,119,83,.08)}.leave-workflow-step.current .leave-step-dot{background:#155d42;color:#fff}.leave-next-action{margin-top:12px;padding:10px 12px;border-radius:9px;background:#fff;color:#47685a;font-size:12px}.leave-next-action strong{color:#174d38}.leave-flow-alert{padding:6px 10px;border-radius:999px;background:#fff2c9;color:#785b00!important;font-weight:700}.leave-flow-alert.danger{background:#ffeded;color:#9b2d2d!important}
#toh-detail-body .dialog-actions{position:sticky;bottom:-1px;z-index:3;margin:18px -2px -2px;padding:12px;background:rgba(255,255,255,.96);border-top:1px solid #dfe8e3;box-shadow:0 -8px 20px rgba(20,64,47,.06);backdrop-filter:blur(8px)}#toh-detail-body .dialog-actions [data-leave-action="submit"],#toh-detail-body .dialog-actions [data-leave-action="manager_approve"],#toh-detail-body .dialog-actions [data-leave-action="hr_approve"]{min-width:180px;font-weight:700}
@media(max-width:800px){.leave-workflow-steps{grid-template-columns:1fr}.leave-workflow-step{min-height:40px}.leave-workflow-head{align-items:flex-start;flex-direction:column}}
.leave-row-actions{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.leave-row-actions button{white-space:nowrap}.leave-row-actions .danger,#toh-leave-admin-delete{background:#fff1f0;border:1px solid #f1b7b2;color:#a82820}.leave-row-actions .danger:hover,#toh-leave-admin-delete:hover{background:#fee4e2}

/* v3.31.44 Plant Master Product Master picker */
.plant-product-search-wrap{position:relative;width:100%}
.plant-product-search-wrap>input[type=text],.plant-product-search-wrap>#toh-plant-product-search{width:100%}
.plant-product-search-wrap>.product-search-results{z-index:12050}


/* v3.31.45 Plant Master picker visibility hotfix
   Keep the dropdown inside the dialog (no portal/observer), but open it upward
   so the dialog scroll container cannot cover/clip the choices. */
#toh-farm-plant-dialog .plant-product-search-wrap{position:relative;z-index:40}
#toh-farm-plant-dialog .plant-product-search-wrap>.product-search-results{
  top:auto!important;
  bottom:calc(100% + 8px)!important;
  left:0!important;
  right:0!important;
  z-index:2147483000!important;
  max-height:260px!important;
  overflow-y:auto!important;
  background:#fff!important;
  border:1px solid #c9ddd3!important;
  border-radius:12px!important;
  box-shadow:0 18px 42px rgba(14,57,43,.22)!important;
}
#toh-farm-plant-dialog .plant-product-search-wrap>.product-search-results.open{display:block!important}
#toh-farm-plant-dialog .plant-product-search-wrap>.product-search-results .product-search-option{position:relative;z-index:1}

/* v3.31.46 — simplified employee-friendly BOM form */
.bom-simple-components{display:flex;flex-direction:column;gap:10px;margin-bottom:18px}
.bom-component-row.bom-component-simple{display:grid;grid-template-columns:minmax(300px,2fr) minmax(120px,.65fr) minmax(100px,.55fr) minmax(220px,1.2fr) 44px;gap:10px;align-items:end;padding:14px;border:1px solid #dbe8e1;border-radius:14px;background:#fbfdfc}
.bom-component-simple label{display:flex;flex-direction:column;gap:6px;min-width:0}
.bom-component-simple label>span{font-size:14px;font-weight:600;color:#315448}
.bom-component-simple input{width:100%;min-height:42px}
.bom-component-simple .bom-comp-remove{height:42px;min-width:42px}
.bom-simple-texts{margin-top:8px}
@media(max-width:980px){.bom-component-row.bom-component-simple{grid-template-columns:1fr 1fr}.bom-component-simple .bom-simple-product,.bom-component-simple .bom-simple-note{grid-column:1/-1}}
@media(max-width:640px){.bom-component-row.bom-component-simple{grid-template-columns:1fr}.bom-component-simple .bom-simple-product,.bom-component-simple .bom-simple-note{grid-column:auto}}

/* v3.31.47 — Production Run uses integer Batch count (min 1, step 1, no max) */
/* v3.31.49 - Advance Request workflow */
.advance-line-header,.advance-line-row{grid-template-columns:minmax(260px,2.2fr) minmax(150px,.8fr) minmax(220px,1.5fr) 64px!important}
.advance-line-row .advance-description input,.advance-line-row .advance-evidence input{width:100%}
@media(max-width:900px){.advance-line-header{display:none!important}.advance-line-row{grid-template-columns:1fr!important}.advance-line-row .generic-line-field{display:grid;grid-template-columns:120px 1fr;gap:10px;align-items:center}.advance-line-row .generic-line-field:before{content:attr(data-col-label);font-weight:700;color:#456257}}

/* v3.31.56 Farm Map Management Snapshot */
.farm-exec-summary{margin:18px 0;padding:16px;border:1px solid #dbe9df;border-radius:18px;background:#f8fcf9}.farm-exec-title{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-bottom:12px}.farm-exec-title h4{margin:2px 0 0;font-size:18px}.farm-exec-title small,.farm-exec-kpis small,.farm-exec-grid small,.farm-exec-note small{color:#65766d}.farm-exec-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.farm-exec-kpis>div,.farm-exec-grid>div{padding:12px;border:1px solid #e0ebe4;border-radius:13px;background:#fff}.farm-exec-kpis strong{display:block;font-size:17px;margin:3px 0}.farm-exec-kpis span{font-size:12px;color:#66756d}.farm-exec-progress{margin:14px 0}.farm-exec-progress>div{display:flex;justify-content:space-between;margin-bottom:6px}.farm-exec-progress progress{width:100%;height:12px}.farm-exec-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.farm-exec-grid b{display:block;margin-top:3px}.farm-exec-alert{margin-top:12px;padding:11px 13px;border-radius:12px;background:#edf6ef}.farm-exec-alert.is-alert{background:#fff4df}.farm-exec-note{margin-top:10px;padding:10px 12px;border-left:3px solid #2d765d;background:#fff}.farm-exec-note p{margin:4px 0 0}@media(max-width:900px){.farm-exec-kpis,.farm-exec-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}


/* v3.31.57 — Executive Farm Map modal: large, readable, scrollable */
#toh-farm-layout-dialog.farm-layout-popup{
  width:min(1080px,calc(100vw - 48px))!important;
  max-width:1080px!important;
  max-height:92vh!important;
  margin:auto!important;
  padding:0!important;
  border:0!important;
  border-radius:26px!important;
  overflow:hidden!important;
  background:#fff!important;
  box-shadow:0 36px 110px rgba(5,37,27,.38)!important;
}
#toh-farm-layout-dialog.farm-layout-popup::backdrop{background:rgba(5,30,23,.62)!important;backdrop-filter:blur(6px)}
#toh-farm-layout-detail.farm-layout-detail-popup{
  width:100%!important;
  max-width:none!important;
  height:auto!important;
  max-height:92vh!important;
  min-height:0!important;
  margin:0!important;
  padding:0!important;
  overflow-x:hidden!important;
  overflow-y:auto!important;
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
  border:0!important;
  border-radius:26px!important;
  background:#f6faf8!important;
  box-shadow:none!important;
}
#toh-farm-layout-detail .farm-layout-detail-head{
  position:sticky!important;top:0;z-index:20;
  padding:24px 30px 20px!important;
  background:linear-gradient(135deg,rgba(248,252,250,.98),rgba(232,246,239,.98))!important;
  backdrop-filter:blur(12px);
  box-shadow:0 1px 0 #d9e8e1,0 10px 30px rgba(20,72,54,.05);
}
#toh-farm-layout-detail .farm-layout-detail-head small{font-size:15px!important;line-height:1.35!important;color:#6b8177!important}
#toh-farm-layout-detail .farm-layout-detail-head h3{font-size:34px!important;line-height:1.15!important;margin:5px 0!important;letter-spacing:.2px}
#toh-farm-layout-detail .farm-layout-detail-head strong{font-size:18px!important;line-height:1.4!important}
#toh-farm-layout-detail .farm-layout-popup-head-actions{gap:12px!important;flex:0 0 auto}
#toh-farm-layout-detail .farm-layout-popup-head-actions .badge{font-size:16px!important;padding:9px 15px!important;border-radius:999px!important}
#toh-farm-layout-detail .farm-layout-popup-close{width:50px!important;height:50px!important;font-size:30px!important;border-radius:15px!important}
#toh-farm-layout-detail .farm-layout-detail-grid{
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
  gap:12px!important;padding:22px 30px 8px!important;background:transparent!important;
}
#toh-farm-layout-detail .farm-layout-detail-grid>div{min-height:88px!important;padding:15px 17px!important;border-radius:16px!important;background:#fff!important;box-shadow:0 4px 16px rgba(18,72,52,.04)}
#toh-farm-layout-detail .farm-layout-detail-grid span{font-size:14px!important;line-height:1.35!important;margin-bottom:7px!important;color:#71847b!important}
#toh-farm-layout-detail .farm-layout-detail-grid b{font-size:18px!important;line-height:1.4!important;color:#183f32!important}
#toh-farm-layout-detail .farm-exec-summary{margin:16px 30px 22px!important;padding:22px!important;border-radius:22px!important;background:#fff!important;border:1px solid #d9e8e1!important;box-shadow:0 10px 30px rgba(18,72,52,.06)!important}
#toh-farm-layout-detail .farm-exec-title{margin-bottom:18px!important;padding-bottom:15px;border-bottom:1px solid #e5eee9}
#toh-farm-layout-detail .farm-exec-title small{font-size:14px!important;text-transform:uppercase;letter-spacing:.6px;color:#6d8278!important}
#toh-farm-layout-detail .farm-exec-title h4{font-size:25px!important;line-height:1.25!important;margin:3px 0 0!important;color:#123f32!important}
#toh-farm-layout-detail .farm-status-pill{font-size:16px!important;padding:9px 14px!important;white-space:nowrap}
#toh-farm-layout-detail .farm-exec-kpis{grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:12px!important}
#toh-farm-layout-detail .farm-exec-kpis>div{min-height:118px!important;padding:16px!important;border-radius:17px!important;background:linear-gradient(180deg,#fff,#f8fcfa)!important}
#toh-farm-layout-detail .farm-exec-kpis small{font-size:14px!important;line-height:1.3!important}
#toh-farm-layout-detail .farm-exec-kpis strong{font-size:24px!important;line-height:1.25!important;margin:7px 0 4px!important;color:#124c39!important}
#toh-farm-layout-detail .farm-exec-kpis span{font-size:14px!important;line-height:1.35!important}
#toh-farm-layout-detail .farm-exec-progress{margin:20px 0!important;padding:15px 17px;border-radius:16px;background:#f3f8f5}
#toh-farm-layout-detail .farm-exec-progress>div{font-size:16px!important;margin-bottom:9px!important}
#toh-farm-layout-detail .farm-exec-progress progress{height:16px!important;border-radius:999px;overflow:hidden}
#toh-farm-layout-detail .farm-exec-grid{grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:10px!important}
#toh-farm-layout-detail .farm-exec-grid>div{min-height:82px!important;padding:13px 14px!important;border-radius:14px!important}
#toh-farm-layout-detail .farm-exec-grid small{font-size:13px!important;line-height:1.3!important}
#toh-farm-layout-detail .farm-exec-grid b{font-size:16px!important;line-height:1.35!important;margin-top:6px!important;color:#244d3d!important}
#toh-farm-layout-detail .farm-exec-alert{font-size:16px!important;line-height:1.5!important;margin-top:16px!important;padding:14px 16px!important;border-radius:14px!important}
#toh-farm-layout-detail .farm-exec-note{font-size:16px!important;line-height:1.5!important;padding:13px 16px!important}
#toh-farm-layout-detail .farm-layout-detail-actions{
  position:sticky!important;bottom:0;z-index:18;
  grid-template-columns:1.35fr 1fr 1fr!important;gap:10px!important;
  padding:16px 30px 22px!important;margin-top:0!important;
  background:rgba(246,250,248,.96)!important;border-top:1px solid #dce9e3;backdrop-filter:blur(12px)
}
#toh-farm-layout-detail .farm-layout-detail-actions .primary{grid-column:auto!important;min-height:52px!important;font-size:17px!important}
#toh-farm-layout-detail .farm-layout-detail-actions .secondary{min-height:52px!important;font-size:16px!important;background:#fff!important;border:1px solid #d4e5dd!important}
@media(max-width:900px){
  #toh-farm-layout-dialog.farm-layout-popup{width:calc(100vw - 20px)!important;max-height:94vh!important}
  #toh-farm-layout-detail.farm-layout-detail-popup{max-height:94vh!important}
  #toh-farm-layout-detail .farm-layout-detail-head{padding:18px 20px 16px!important}
  #toh-farm-layout-detail .farm-layout-detail-head h3{font-size:28px!important}
  #toh-farm-layout-detail .farm-layout-detail-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;padding:18px 20px 6px!important}
  #toh-farm-layout-detail .farm-exec-summary{margin:14px 20px 18px!important;padding:18px!important}
  #toh-farm-layout-detail .farm-exec-kpis,#toh-farm-layout-detail .farm-exec-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  #toh-farm-layout-detail .farm-layout-detail-actions{padding:14px 20px 18px!important;grid-template-columns:1fr!important}
}
@media(max-width:560px){
  #toh-farm-layout-detail .farm-layout-detail-grid,#toh-farm-layout-detail .farm-exec-kpis,#toh-farm-layout-detail .farm-exec-grid{grid-template-columns:1fr!important}
  #toh-farm-layout-detail .farm-layout-detail-head{align-items:flex-start!important}
  #toh-farm-layout-detail .farm-layout-popup-head-actions .badge{display:none}
}

/* v3.31.58 — Executive Farm modal compact/readable layout */
#toh-farm-layout-dialog.farm-layout-popup{
  width:min(1040px,calc(100vw - 40px))!important;
  max-width:1040px!important;
  max-height:90dvh!important;
  overflow:hidden!important;
  border-radius:20px!important;
}
#toh-farm-layout-detail.farm-layout-detail-popup{
  max-height:90dvh!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  scrollbar-gutter:stable;
  padding-bottom:0!important;
}
#toh-farm-layout-detail .farm-layout-detail-head{
  padding:16px 22px 14px!important;
}
#toh-farm-layout-detail .farm-layout-detail-head small{font-size:17px!important;font-weight:600!important}
#toh-farm-layout-detail .farm-layout-detail-head h3{font-size:31px!important;margin:2px 0!important}
#toh-farm-layout-detail .farm-layout-detail-head strong{font-size:20px!important}
#toh-farm-layout-detail .farm-layout-popup-head-actions .badge{font-size:17px!important;padding:7px 12px!important}
#toh-farm-layout-detail .farm-layout-popup-close{width:44px!important;height:44px!important;min-width:44px!important;padding:0!important;font-size:26px!important;border-radius:12px!important}
#toh-farm-layout-detail .farm-layout-detail-grid{
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
  gap:9px!important;padding:14px 22px 8px!important;
}
#toh-farm-layout-detail .farm-layout-detail-grid>div{
  min-height:0!important;padding:10px 13px!important;border-radius:13px!important;
}
#toh-farm-layout-detail .farm-layout-detail-grid span{font-size:16px!important;font-weight:600!important;margin-bottom:3px!important;color:#60776c!important}
#toh-farm-layout-detail .farm-layout-detail-grid b{font-size:20px!important;line-height:1.25!important}
#toh-farm-layout-detail .farm-exec-summary{margin:10px 22px 12px!important;padding:15px!important;border-radius:16px!important}
#toh-farm-layout-detail .farm-exec-title{margin-bottom:11px!important;padding-bottom:10px!important}
#toh-farm-layout-detail .farm-exec-title small{font-size:15px!important}
#toh-farm-layout-detail .farm-exec-title h4{font-size:23px!important}
#toh-farm-layout-detail .farm-status-pill{font-size:17px!important;padding:6px 11px!important}
#toh-farm-layout-detail .farm-exec-kpis{gap:8px!important}
#toh-farm-layout-detail .farm-exec-kpis>div{min-height:0!important;padding:10px 12px!important;border-radius:13px!important}
#toh-farm-layout-detail .farm-exec-kpis small{font-size:15px!important;font-weight:600!important}
#toh-farm-layout-detail .farm-exec-kpis strong{font-size:23px!important;margin:3px 0 1px!important}
#toh-farm-layout-detail .farm-exec-kpis span{font-size:15px!important}
#toh-farm-layout-detail .farm-exec-progress{margin:11px 0!important;padding:10px 12px!important;border-radius:12px!important}
#toh-farm-layout-detail .farm-exec-progress>div{font-size:17px!important;margin-bottom:5px!important}
#toh-farm-layout-detail .farm-exec-progress progress{height:12px!important}
#toh-farm-layout-detail .farm-exec-grid{gap:7px!important}
#toh-farm-layout-detail .farm-exec-grid>div{min-height:0!important;padding:9px 11px!important;border-radius:11px!important}
#toh-farm-layout-detail .farm-exec-grid small{font-size:15px!important;font-weight:600!important}
#toh-farm-layout-detail .farm-exec-grid b{font-size:18px!important;margin-top:2px!important}
#toh-farm-layout-detail .farm-exec-alert{font-size:17px!important;margin-top:10px!important;padding:10px 12px!important}
#toh-farm-layout-detail .farm-exec-note{font-size:17px!important;padding:9px 12px!important}
#toh-farm-layout-detail .farm-layout-detail-actions{
  position:sticky!important;bottom:0!important;z-index:30!important;
  display:flex!important;justify-content:flex-end!important;align-items:center!important;flex-wrap:wrap!important;
  gap:8px!important;padding:10px 22px 12px!important;
  background:rgba(246,250,248,.98)!important;border-top:1px solid #d7e5de!important;
  box-shadow:0 -8px 24px rgba(18,72,52,.06)!important;
}
#toh-farm-layout-detail .farm-layout-detail-actions button{
  width:auto!important;min-width:150px!important;min-height:42px!important;height:42px!important;
  padding:6px 16px!important;font-size:17px!important;border-radius:10px!important;line-height:1.2!important;
}
#toh-farm-layout-detail .farm-layout-detail-actions .primary{flex:0 0 auto!important}
@media(max-width:900px){
  #toh-farm-layout-dialog.farm-layout-popup{width:calc(100vw - 16px)!important;max-height:94dvh!important}
  #toh-farm-layout-detail.farm-layout-detail-popup{max-height:94dvh!important}
  #toh-farm-layout-detail .farm-layout-detail-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;padding:12px 14px 6px!important}
  #toh-farm-layout-detail .farm-exec-summary{margin:8px 14px 10px!important}
  #toh-farm-layout-detail .farm-exec-kpis,#toh-farm-layout-detail .farm-exec-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  #toh-farm-layout-detail .farm-layout-detail-actions{padding:9px 14px 11px!important}
}
@media(max-width:600px){
  #toh-farm-layout-detail .farm-layout-detail-grid,#toh-farm-layout-detail .farm-exec-kpis,#toh-farm-layout-detail .farm-exec-grid{grid-template-columns:1fr!important}
  #toh-farm-layout-detail .farm-layout-detail-actions{display:grid!important;grid-template-columns:1fr!important}
  #toh-farm-layout-detail .farm-layout-detail-actions button{width:100%!important;min-width:0!important}
}

/* Crop Plan details: employee-friendly labels and reading size */
#toh-detail-body .farm-crop-detail{display:grid;gap:17px}
#toh-detail-body .farm-crop-detail-group h3{font-size:21px;font-weight:750;margin:0 0 10px;color:#164b39}
#toh-detail-body .farm-crop-detail .farm-detail-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
#toh-detail-body .farm-crop-detail .farm-detail-grid>div{padding:13px 16px;min-width:0}
#toh-detail-body .farm-crop-detail .farm-detail-grid small{font-size:16px;line-height:1.5;color:#486458}
#toh-detail-body .farm-crop-detail .farm-detail-grid strong{font-size:20px;line-height:1.55;overflow-wrap:anywhere}
#toh-detail-body .farm-detail-status small{font-size:15px;color:#486458}
#toh-detail-body .farm-detail-status strong{font-size:19px}
@media(max-width:720px){#toh-detail-body .farm-crop-detail .farm-detail-grid{grid-template-columns:1fr}}

/* Farm activity readability v3.31.64 */
.farm-row-actions .farm-inline-action{white-space:nowrap}
.farm-crop-detail-group h3{font-size:19px}
.farm-crop-detail .farm-detail-grid strong{font-size:18px;line-height:1.5}

/* Farm daily date navigator v3.31.65 */
.farm-day-toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:14px;padding:16px 18px;margin-bottom:12px;border:1px solid #dce7e1;border-radius:14px;background:#f3f9f5}.farm-day-toolbar strong{display:block;font-size:22px}.farm-day-toolbar small{display:block;font-size:16px;color:#557268}.farm-day-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.farm-day-controls input[type=date]{min-height:45px;max-width:220px;padding:6px 12px;border:1px solid #bed6c9;border-radius:9px;background:#fff;color:#123e31;font-size:19px}.farm-day-controls button{min-height:45px;font-size:18px}.farm-day-summary{font-size:18px;font-weight:600;color:#245544;margin-bottom:8px}@media(max-width:650px){.farm-day-controls{width:100%}.farm-day-controls input[type=date]{flex:1;min-width:150px}.farm-day-toolbar{padding:12px}}

/* Farm activities date/filter improvements v3.31.66 */
.farm-day-controls #toh-farm-today{min-height:38px!important;padding:6px 12px!important;font-size:15px!important;line-height:1.25!important;width:auto!important;min-width:0!important;flex:0 0 auto!important}
.farm-day-controls #toh-farm-all{min-height:40px!important;padding:7px 14px!important;font-size:16px!important;width:auto!important;flex:0 0 auto!important}
.farm-day-controls #toh-farm-all.farm-all-active{background:#175b46!important;color:#fff!important;border-color:#175b46!important}
.farm-sort-date{background:transparent!important;border:0!important;box-shadow:none!important;color:inherit!important;padding:5px 2px!important;min-height:0!important;font:inherit!important;font-weight:600!important;cursor:pointer;white-space:nowrap}
.farm-sort-date:hover{text-decoration:underline}
.farm-sort-date span{font-size:17px;margin-left:4px}

/* Farm activity inline status controls */
.farm-list-table .farm-activity-status-select{min-width:118px;max-width:150px;padding:7px 9px;font-size:14px;border-radius:8px}.farm-list-table .farm-activity-save{font-size:12px;padding:6px 10px;min-height:30px}.farm-list-table .farm-activity-save:disabled{opacity:.4;cursor:default}

/* Farm activity compact status and detail v3.31.68 */
.farm-list-table .farm-activity-status-actions{display:flex;align-items:center;gap:6px;white-space:nowrap}
.farm-list-table .farm-activity-status-select{width:108px!important;min-width:108px!important;max-width:108px!important;box-sizing:border-box;padding:6px 21px 6px 7px!important;font-size:13px!important;min-height:34px!important}
.farm-list-table .farm-activity-save{flex:0 0 auto;padding:6px 8px!important;font-size:12px!important;min-height:32px!important;white-space:nowrap}
.farm-list-table .farm-activity-detail-btn{font-size:12px!important;padding:6px 9px!important;min-height:32px!important;white-space:nowrap}
.farm-list-table .farm-activity-detail-link{background:transparent!important;border:0!important;box-shadow:none!important;padding:2px 0!important;min-height:0!important;font:inherit!important;font-weight:600!important;color:#155d47!important;text-align:left!important;cursor:pointer}
.farm-list-table .farm-activity-detail-link:hover{text-decoration:underline}

/* Farm activity legibility v3.31.69 */
.farm-list-table{font-size:17px!important;color:#173b30!important}
.farm-list-table th{font-size:17px!important;font-weight:700!important;color:#163b30!important}
.farm-list-table td{font-size:17px!important;color:#173b30!important;line-height:1.5!important}
.farm-list-table td strong{color:#12392e!important}
.farm-list-table .farm-activity-detail-link{font-size:17px!important;color:#124d3a!important;font-weight:700!important}
.farm-list-table .farm-activity-status-select{font-size:15px!important;color:#183d32!important;font-weight:600!important;min-height:39px!important;width:116px!important;min-width:116px!important;max-width:116px!important}
.farm-list-table .farm-activity-save,.farm-list-table .farm-activity-detail-btn{font-size:14px!important;font-weight:650!important;min-height:37px!important}
.farm-list-table .farm-activity-status-actions{gap:7px!important}

/* Farm activity optional notes v3.31.70 */
.farm-list-table .farm-activity-note-btn{padding:5px 9px!important;min-height:37px!important;font-size:19px!important;font-weight:700!important;line-height:1!important}
.farm-list-table .farm-activity-note-row[hidden]{display:none!important}
.farm-list-table .farm-activity-note-row td{padding:10px 14px!important;background:#f0f7f3!important}
.farm-activity-note-editor{display:flex;flex-direction:column;gap:6px;max-width:780px}
.farm-activity-note-editor label{font-size:17px;font-weight:700;color:#163b30}
.farm-activity-note-editor textarea{width:100%;min-height:74px;padding:9px 12px;border:1px solid #9ab8aa;border-radius:8px;background:white;color:#14382d;font-size:17px}
.farm-activity-note-editor small{font-size:14px;color:#435f55}

/* v3.31.76 · Visit form usability improvements (scoped) */
.customer-visit-dialog .customer-visit-head{position:static!important;top:auto!important;z-index:auto!important;padding:18px 24px;background:#fff}
.customer-visit-dialog .customer-visit-head h2{font-size:24px;line-height:1.35}
.customer-visit-dialog .customer-visit-head p{font-size:14px;line-height:1.6}
.customer-visit-dialog .customer-visit-form-body{padding:18px 24px 8px}
.customer-visit-dialog .customer-visit-section{margin-bottom:16px;border-radius:12px}
.customer-visit-dialog .customer-visit-section-head{padding:12px 16px}
.customer-visit-dialog .customer-visit-section-head>span{width:32px;height:32px;flex-basis:32px;font-size:15px}
.customer-visit-dialog .customer-visit-section-head h3{font-size:19px}
.customer-visit-dialog .customer-visit-section-head p{font-size:13px}
.customer-visit-dialog .customer-visit-grid{gap:14px 18px;padding:18px}
.customer-visit-dialog .customer-visit-grid label{font-size:15px;gap:6px}
.customer-visit-dialog .customer-visit-grid input,.customer-visit-dialog .customer-visit-grid select,.customer-visit-dialog .customer-visit-grid textarea{font-size:15px;min-height:44px}
.customer-visit-dialog .customer-visit-actions{display:flex;flex-direction:row;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 24px 16px}
.customer-visit-dialog .customer-visit-actions>div{display:flex;gap:8px}
.customer-visit-dialog .customer-visit-actions button{min-height:38px;padding:8px 16px;font-size:14px;flex:initial}
.customer-visit-dialog .customer-visit-bottom-close{margin-left:auto}
@media(max-width:650px){.customer-visit-dialog .customer-visit-actions{flex-direction:row;align-items:center}.customer-visit-dialog .customer-visit-actions>div{width:auto}.customer-visit-dialog .customer-visit-bottom-close{margin-left:auto}}


/* v3.31.78 — Executive Daily Sales readability refresh; dashboard only */
.daily-sales-page.ds-exec{gap:22px;--ds-series-1:#247a58;--ds-series-2:#4f9a83;--ds-series-3:#e2b353;--ds-series-4:#8d9cb0;--ds-series-5:#6ba7c0;--ds-series-6:#b78b78;color:#193b30}
.ds-exec .ds-exec-filter{padding:20px 22px;border-radius:18px;gap:20px;box-shadow:0 3px 14px rgba(20,54,40,.035)}
.ds-exec .ds-date-fields{gap:14px}.ds-exec .ds-date-fields label{font-size:14px;font-weight:600;color:#486356}
.ds-exec .ds-date-fields input{font-size:15px;min-height:44px;border-radius:11px;padding:9px 12px}
.ds-exec .ds-quick{gap:9px}.ds-exec .ds-quick button{min-height:42px;padding:10px 15px;font-size:14px;font-weight:600;border-radius:11px}
.ds-exec .ds-report-note{padding:0 4px;align-items:flex-start}.ds-exec .ds-report-note span{font-size:18px;line-height:1.4}.ds-exec .ds-report-note small{font-size:12px;line-height:1.65;max-width:500px;text-align:right}
.ds-exec .ds-exec-kpis{gap:16px}.ds-exec .ds-kpi-card{padding:24px 22px;border-radius:18px;min-height:148px;box-shadow:0 5px 22px rgba(23,62,45,.045)}
.ds-exec .ds-kpi-card:first-child{background:#f0f8f3;border-color:#d6e8dd}.ds-exec .ds-kpi-card span{font-size:15px;font-weight:650;color:#4a6758}
.ds-exec .ds-kpi-card strong{font-size:clamp(23px,2.2vw,33px);line-height:1.25;letter-spacing:-.6px;overflow-wrap:anywhere;margin:10px 0 8px;font-variant-numeric:tabular-nums}
.ds-exec .ds-kpi-card small{font-size:13px;line-height:1.45}
.ds-exec .ds-exec-grid{gap:18px}.ds-exec .ds-chart-card{padding:23px 24px;border-radius:19px;box-shadow:0 5px 22px rgba(23,62,45,.035)}
.ds-exec .ds-card-head{margin-bottom:20px}.ds-exec .ds-card-head h3{font-size:19px;font-weight:700;line-height:1.35}.ds-exec .ds-card-head p{font-size:13px;line-height:1.5;margin-top:6px}
.ds-exec .ds-chip{font-size:12px;padding:7px 12px}.ds-exec .ds-chart-body{min-height:240px}.ds-exec .ds-line-svg{height:240px}
.ds-exec .ds-axis-labels{font-size:12px;margin-top:2px}.ds-exec .ds-bars{gap:18px}.ds-exec .ds-bar-row{gap:9px}.ds-exec .ds-bar-label{font-size:14px;line-height:1.4}.ds-exec .ds-bar-label b{white-space:normal;overflow:visible}.ds-exec .ds-bar-track{height:11px}.ds-exec .ds-bar-track i{background:#247a58}
.ds-exec .ds-donut-wrap,.ds-exec .ds-performance{gap:28px;min-height:245px}.ds-exec .ds-donut,.ds-exec .ds-perf-ring{width:168px;height:168px}.ds-exec .ds-donut:after,.ds-exec .ds-perf-ring:after{width:108px;height:108px}.ds-exec .ds-donut strong,.ds-exec .ds-perf-ring strong{font-size:19px}.ds-exec .ds-donut span,.ds-exec .ds-perf-ring span{font-size:12px}
.ds-exec .ds-legend,.ds-exec .ds-perf-list{gap:14px;min-width:190px}.ds-exec .ds-legend>div,.ds-exec .ds-perf-list>div{font-size:14px;gap:10px;grid-template-columns:12px minmax(0,1fr) auto}.ds-exec .ds-legend i,.ds-exec .ds-perf-list i{width:11px;height:11px}
.ds-exec .ds-exec-table{min-width:940px;font-size:14px}.ds-exec .ds-exec-table th{font-size:13px;white-space:nowrap}.ds-exec .ds-exec-table td,.ds-exec .ds-exec-table th{padding:14px 12px;line-height:1.55}.ds-exec .ds-exec-table .muted{font-size:12px}.ds-exec .ds-exec-table small{font-size:12px}.ds-exec .ds-status{font-size:12px;padding:6px 10px}.ds-exec .ds-mini-progress{height:7px;width:92px}
.ds-exec .ds-quality{padding:18px 20px;border-radius:16px}.ds-exec .ds-quality>div:first-child span{font-size:13px}.ds-exec .ds-quality>div:first-child strong{font-size:16px}.ds-exec .ds-quality-items span{font-size:13px;padding:9px 12px}.ds-exec .ds-quality-items b{font-size:15px}.ds-exec .ds-empty{font-size:14px}
@media(max-width:1250px){.ds-exec .ds-exec-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.ds-exec .ds-exec-grid-main,.ds-exec .ds-exec-grid-bottom{grid-template-columns:1fr}}
@media(max-width:680px){.ds-exec .ds-exec-filter{padding:16px}.ds-exec .ds-report-note small{text-align:left}.ds-exec .ds-exec-kpis{grid-template-columns:1fr 1fr;gap:10px}.ds-exec .ds-kpi-card{padding:16px;min-height:125px}.ds-exec .ds-kpi-card strong{font-size:22px}.ds-exec .ds-chart-card{padding:18px}.ds-exec .ds-donut-wrap,.ds-exec .ds-performance{flex-direction:column}.ds-exec .ds-legend,.ds-exec .ds-perf-list{width:100%}}
@media(max-width:430px){.ds-exec .ds-exec-kpis{grid-template-columns:1fr}.ds-exec .ds-quick button{flex:1 1 auto}}

/* v3.31.78: Executive Daily Sales location table only */
.ds-exec .ds-detail-card .table-wrap{border:1px solid #e8eeea;border-radius:12px;overflow-x:auto}
.ds-exec .ds-exec-table{border-collapse:separate;border-spacing:0;min-width:960px;width:100%;font-variant-numeric:tabular-nums}
.ds-exec .ds-exec-table thead th{background:#f5f9f6;color:#315448;font-size:14px;font-weight:700;border-bottom:1px solid #dfe9e3}
.ds-exec .ds-exec-table tbody tr:nth-child(even){background:#fbfdfb}
.ds-exec .ds-exec-table tbody tr:hover{background:#f0f7f2}
.ds-exec .ds-exec-table td{border-bottom:1px solid #edf1ed;vertical-align:middle}
.ds-exec .ds-exec-table tbody tr:last-child td{border-bottom:0}
.ds-exec .ds-exec-table td:nth-child(2){min-width:210px}
.ds-exec .ds-exec-table .ds-row-number{color:#74867b;font-weight:600;text-align:center}
.ds-exec .ds-exec-table .num{text-align:right;white-space:nowrap}
.ds-exec .ds-sort-btn{appearance:none;display:inline-flex;align-items:center;justify-content:flex-end;gap:7px;border:0;background:transparent;color:inherit;font:inherit;font-weight:700;padding:7px 3px;cursor:pointer;white-space:nowrap}
.ds-exec .ds-sort-btn:hover,.ds-exec .ds-sort-btn[aria-pressed="true"]{color:#17664b}
.ds-exec .ds-sort-btn:focus-visible{outline:2px solid #17664b;outline-offset:2px;border-radius:4px}
.ds-exec .ds-sort-icon{font-size:17px;line-height:1;color:#547968;min-width:15px;text-align:center}

/* v3.31.80: Daily Sales - restore familiar table, improve executive summary */
.daily-sales-page.ds-entry-compact .ds-summary-grid{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:18px 0 20px;align-items:stretch}
.daily-sales-page.ds-entry-compact .ds-summary-grid>.kpi{display:flex;flex-direction:column;justify-content:center;gap:8px;min-width:0;padding:19px 21px!important;background:#fff!important;border:1px solid #dae9e0!important;border-radius:16px!important;box-shadow:0 4px 18px rgba(16,65,45,.045)!important}
.daily-sales-page.ds-entry-compact .ds-summary-grid>.kpi span{display:block;font-size:15px!important;font-weight:600;color:#5b7066;line-height:1.4}
.daily-sales-page.ds-entry-compact .ds-summary-grid>.kpi strong{display:block;font-size:clamp(22px,2vw,30px)!important;font-weight:750;letter-spacing:-.5px;color:#153f31;line-height:1.25;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
.daily-sales-page.ds-entry-compact .ds-summary-grid>.kpi:nth-child(1){border-left:4px solid #217655!important}
.daily-sales-page.ds-entry-compact .ds-summary-grid>.kpi:nth-child(4) strong{color:#18704d}
.daily-sales-page.ds-entry-compact .ds-entry-panel{background:#fff;border:1px solid #dce9e1;border-radius:17px;padding:18px!important}
.daily-sales-page.ds-entry-compact .ds-entry-table{font-size:15px;border-collapse:separate;border-spacing:0}
.daily-sales-page.ds-entry-compact .ds-entry-table thead th{background:#edf5f0;color:#234d3e;font-size:14px;font-weight:750;padding:14px 10px;border-bottom:1px solid #d4e5da}
.daily-sales-page.ds-entry-compact .ds-entry-table tbody td{padding:12px 10px;border-bottom:1px solid #e5eee8}
.daily-sales-page.ds-entry-compact .ds-entry-table tbody tr:nth-child(even){background:#fbfdfb}
.daily-sales-page.ds-entry-compact .ds-entry-table tbody tr:hover{background:#f2f8f4}
.daily-sales-page.ds-entry-compact .ds-entry-table .ds-location strong{font-size:16px;line-height:1.4}
.daily-sales-page.ds-entry-compact .ds-entry-table .ds-amount{border:1.5px solid #8fbca4;background:#fff;font-size:17px;min-height:46px}
.daily-sales-page.ds-entry-compact .ds-entry-table .ds-amount:focus{outline:2px solid #77b896;outline-offset:1px}
.daily-sales-page.ds-entry-compact .ds-entry-table .ds-row-save{border-radius:9px;min-height:42px;padding:8px 13px}
.daily-sales-page.ds-entry-compact .ds-entry-table th:nth-child(1){width:18%}
.daily-sales-page.ds-entry-compact .ds-entry-table th:nth-child(2){width:11%}
.daily-sales-page.ds-entry-compact .ds-entry-table th:nth-child(3){width:14%}
.daily-sales-page.ds-entry-compact .ds-entry-table th:nth-child(4){width:11%}
.daily-sales-page.ds-entry-compact .ds-entry-table th:nth-child(5){width:8%}
.daily-sales-page.ds-entry-compact .ds-entry-table th:nth-child(6){width:14%}
.daily-sales-page.ds-entry-compact .ds-entry-table th:nth-child(7){width:16%}
.daily-sales-page.ds-entry-compact .ds-entry-table th:nth-child(8){width:8%}
@media(max-width:1100px){.daily-sales-page.ds-entry-compact .ds-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.daily-sales-page.ds-entry-compact .ds-entry-table{min-width:1120px}}
@media(max-width:650px){.daily-sales-page.ds-entry-compact .ds-summary-grid{grid-template-columns:1fr}.daily-sales-page.ds-entry-compact .ds-summary-grid>.kpi{padding:15px 17px!important}}

/* v3.31.81 - Daily Sales: sticky column headings, non-overlapping compact inputs */
.daily-sales-page.ds-entry-compact .ds-entry-panel .table-wrap{
  position:relative;max-height:min(68vh,690px);overflow:auto;overscroll-behavior:contain;
  border-radius:12px;scrollbar-gutter:stable;
}
.daily-sales-page.ds-entry-compact .ds-entry-table{
  width:100%;min-width:1240px;table-layout:fixed;border-collapse:separate;border-spacing:0;
}
.daily-sales-page.ds-entry-compact .ds-entry-table thead th{
  position:sticky;top:0;z-index:5;background:#eaf3ee!important;
  box-shadow:0 2px 0 #d2e2d8;vertical-align:middle;
  white-space:normal;overflow-wrap:normal;
}
.daily-sales-page.ds-entry-compact .ds-entry-table th:nth-child(1){width:19%}
.daily-sales-page.ds-entry-compact .ds-entry-table th:nth-child(2){width:12%}
.daily-sales-page.ds-entry-compact .ds-entry-table th:nth-child(3){width:11%}
.daily-sales-page.ds-entry-compact .ds-entry-table th:nth-child(4){width:14%}
.daily-sales-page.ds-entry-compact .ds-entry-table th:nth-child(5){width:9%}
.daily-sales-page.ds-entry-compact .ds-entry-table th:nth-child(6){width:11%}
.daily-sales-page.ds-entry-compact .ds-entry-table th:nth-child(7){width:16%}
.daily-sales-page.ds-entry-compact .ds-entry-table th:nth-child(8){width:8%}
.daily-sales-page.ds-entry-compact .ds-entry-table td{min-width:0;overflow:hidden}
.daily-sales-page.ds-entry-compact .ds-entry-table .ds-entry-edit{min-width:0}
.daily-sales-page.ds-entry-compact .ds-entry-table .ds-amount{
  display:block;box-sizing:border-box;width:100%!important;min-width:0!important;
  max-width:100%;height:44px;min-height:44px;padding:7px 8px!important;
  font-size:16px!important;text-align:right;
}
.daily-sales-page.ds-entry-compact .ds-entry-table .ds-cumulative{
  white-space:nowrap;font-size:15px;letter-spacing:-.2px;
}
.daily-sales-page.ds-entry-compact .ds-entry-table .ds-status,
.daily-sales-page.ds-entry-compact .ds-entry-table .ds-status-large{
  display:block;box-sizing:border-box;width:100%!important;min-width:0!important;
  max-width:100%;min-height:42px;padding:7px 22px 7px 7px!important;
  font-size:13px!important;font-weight:600!important;
}
.daily-sales-page.ds-entry-compact .ds-entry-table .ds-note{
  box-sizing:border-box;max-width:100%;min-width:0!important;
}
@media(max-width:1100px){.daily-sales-page.ds-entry-compact .ds-entry-table{min-width:1240px}}


/* v3.31.82 - Daily Sales: pinned location + compact six-column entry */
.daily-sales-page.ds-entry-compact .ds-entry-panel .table-wrap{position:relative;overflow:auto;max-height:min(68vh,690px);isolation:isolate}
.daily-sales-page.ds-entry-compact .ds-entry-table{min-width:840px;width:100%;table-layout:fixed;border-collapse:separate;border-spacing:0}
.daily-sales-page.ds-entry-compact .ds-entry-table th:nth-child(1){width:25%}
.daily-sales-page.ds-entry-compact .ds-entry-table th:nth-child(2){width:18%}
.daily-sales-page.ds-entry-compact .ds-entry-table th:nth-child(3){width:19%}
.daily-sales-page.ds-entry-compact .ds-entry-table th:nth-child(4){width:12%}
.daily-sales-page.ds-entry-compact .ds-entry-table th:nth-child(5){width:16%}
.daily-sales-page.ds-entry-compact .ds-entry-table th:nth-child(6){width:10%}
.daily-sales-page.ds-entry-compact .ds-entry-table thead th{position:sticky;top:0;z-index:5;background:#eaf3ee!important}
.daily-sales-page.ds-entry-compact .ds-entry-table thead th:first-child{position:sticky;top:0;left:0;z-index:8;background:#eaf3ee!important;box-shadow:2px 2px 0 #d2e2d8}
.daily-sales-page.ds-entry-compact .ds-entry-table tbody td:first-child{position:sticky;left:0;z-index:3;background:#fff;box-shadow:2px 0 0 #dce9e1}
.daily-sales-page.ds-entry-compact .ds-entry-table tbody tr:nth-child(even) td:first-child{background:#fbfdfb}
.daily-sales-page.ds-entry-compact .ds-entry-table tbody tr:hover td:first-child{background:#f2f8f4}
.daily-sales-page.ds-entry-compact .ds-entry-table .ds-location strong{display:block;white-space:normal;overflow-wrap:anywhere;line-height:1.45}
.daily-sales-page.ds-entry-compact .ds-entry-table .ds-amount{box-sizing:border-box;width:100%!important;min-width:0!important;max-width:100%;font-size:16px!important}
.daily-sales-page.ds-entry-compact .ds-entry-table .ds-status{box-sizing:border-box;width:100%!important;min-width:0!important;max-width:100%;font-size:13px!important}
@media(max-width:1100px){.daily-sales-page.ds-entry-compact .ds-entry-table{min-width:840px}}

/* Advance Request: square, legible, scoped to the existing employee form */
#toh-doc-dialog.toh-advance-form{width:min(920px,96vw);max-height:92vh;border-radius:0;font-size:16px}
#toh-doc-dialog.toh-advance-form input,#toh-doc-dialog.toh-advance-form select,#toh-doc-dialog.toh-advance-form textarea,#toh-doc-dialog.toh-advance-form button{border-radius:0;font-size:15px;min-height:42px}
#toh-doc-dialog.toh-advance-form label{font-size:15px;line-height:1.5}
#toh-doc-dialog.toh-advance-form .advance-line-header,#toh-doc-dialog.toh-advance-form .advance-line-row{grid-template-columns:minmax(190px,2.5fr) minmax(75px,.7fr) minmax(110px,1fr) minmax(130px,1.2fr) 55px}
#toh-doc-dialog.toh-advance-form .dialog-head h2{font-size:22px}
@media(max-width:700px){#toh-doc-dialog.toh-advance-form .advance-line-header{display:none}#toh-doc-dialog.toh-advance-form .advance-line-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}#toh-doc-dialog.toh-advance-form .advance-description,#toh-doc-dialog.toh-advance-form .advance-evidence{grid-column:1/-1}}

/* Advance request v3.31.85: compact square responsive expense table */
#toh-doc-dialog.toh-advance-form{width:min(1100px,96vw);box-sizing:border-box}
#toh-doc-dialog.toh-advance-form *{box-sizing:border-box}
#toh-doc-dialog.toh-advance-form .advance-line-header,#toh-doc-dialog.toh-advance-form .advance-line-row{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,.75fr) minmax(0,1.25fr) 54px!important;gap:10px;align-items:center;width:100%;min-width:0}
#toh-doc-dialog.toh-advance-form .advance-line-row .generic-line-field{min-width:0;width:100%}
#toh-doc-dialog.toh-advance-form .advance-line-row input{width:100%;min-width:0;max-width:100%}
#toh-doc-dialog.toh-advance-form .advance-line-row .generic-line-action button{width:44px;min-width:44px}
#toh-doc-dialog.toh-advance-form #toh-advance-attachments{margin:18px 0;padding:16px;border:1px solid #d3e2da;border-radius:0}
#toh-doc-dialog.toh-advance-form #toh-advance-attachments input[type=file]{display:block;width:100%;padding:9px;height:auto}
#toh-doc-dialog.toh-advance-form #toh-advance-attachments small{display:block;margin-top:8px}
@media(max-width:740px){#toh-doc-dialog.toh-advance-form .advance-line-header{display:none!important}#toh-doc-dialog.toh-advance-form .advance-line-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important}#toh-doc-dialog.toh-advance-form .advance-description{grid-column:1/-1}#toh-doc-dialog.toh-advance-form .generic-line-action{grid-column:1/-1}#toh-doc-dialog.toh-advance-form .advance-line-row .generic-line-field{display:block}#toh-doc-dialog.toh-advance-form .advance-line-row .generic-line-field:before{display:block;margin-bottom:5px}}

/* Consignment statement – compact, square ERP form */
#toh-doc-dialog.toh-consignment-form {max-width:min(1100px,96vw)}
.toh-consignment-form input,.toh-consignment-form select,.toh-consignment-form textarea,
.toh-consignment-form button {border-radius:0!important;font-size:15px}
.toh-consignment-form .consignment-line-header,.toh-consignment-form .consignment-line-row{
 display:grid!important;grid-template-columns:minmax(220px,2.6fr) minmax(105px,.8fr) minmax(150px,1fr) 64px!important;
 gap:10px;align-items:start;max-width:100%;box-sizing:border-box
}
.toh-consignment-form .consignment-line-row>.generic-line-field:nth-child(4),
.toh-consignment-form .consignment-line-row>.generic-line-field:nth-child(5),
.toh-consignment-form .consignment-line-row>.generic-line-field:nth-child(6){display:none!important}
.toh-consignment-form .consignment-line-row>*{min-width:0;max-width:100%}
.toh-consignment-form .consignment-line-row input{width:100%;min-width:0;box-sizing:border-box}
#toh-consignment-help{padding:14px;border:1px solid #cbded4;background:#f2f8f5;margin:12px 0;font-size:15px;line-height:1.6}
#toh-consignment-help p{margin:6px 0 0}
@media(max-width:780px){
 .toh-consignment-form .consignment-line-header{display:none!important}
 .toh-consignment-form .consignment-line-row{display:grid!important;grid-template-columns:1fr 1fr!important;border:1px solid #d8e6de;padding:10px;margin-bottom:10px}
 .toh-consignment-form .consignment-line-row>.generic-line-field:first-child{grid-column:1/-1}
}

/* Sales Return form: square and readable */
.toh-sales-return-form input,.toh-sales-return-form select,.toh-sales-return-form textarea,.toh-sales-return-form button{border-radius:0!important;font-size:15px}
.toh-sales-return-form .sales-return-line-header,.toh-sales-return-form .sales-return-line-row{display:grid!important;grid-template-columns:minmax(220px,2.4fr) minmax(90px,.75fr) minmax(130px,1fr) minmax(75px,.55fr) minmax(110px,.8fr) 60px!important;gap:8px;align-items:start;max-width:100%;box-sizing:border-box}
.toh-sales-return-form .sales-return-line-row .generic-line-field:nth-child(6){display:none!important}
.toh-sales-return-form .sales-return-line-row>*{min-width:0;max-width:100%}
.toh-sales-return-form .sales-return-line-row input{width:100%;min-width:0;box-sizing:border-box}
#toh-sales-return-help{border:1px solid #cbded4;background:#f2f8f5;padding:12px;margin:12px 0;line-height:1.6;font-size:15px}
#toh-sales-return-help p{margin:4px 0 0}
@media(max-width:800px){.toh-sales-return-form .sales-return-line-header{display:none!important}.toh-sales-return-form .sales-return-line-row{display:grid!important;grid-template-columns:1fr 1fr!important;border:1px solid #dae6df;padding:10px;margin:8px 0}.toh-sales-return-form .sales-return-line-row .product-combobox{grid-column:1/-1}}

/* Forecast popup v3.2 */
#toh-doc-dialog.toh-sf-popup{width:min(900px,96vw);max-width:96vw;max-height:92vh;border-radius:18px;box-shadow:0 22px 70px #102b2440}
#toh-doc-dialog.toh-sf-popup .dialog-head{background:#f2faf5;border-bottom:1px solid #d6e9de;padding:18px 24px}
#toh-doc-dialog.toh-sf-popup .dialog-head h2{color:#185a40;font-size:23px}
#toh-doc-dialog.toh-sf-popup .form-grid{gap:14px}
#toh-doc-dialog.toh-sf-popup input,#toh-doc-dialog.toh-sf-popup select,#toh-doc-dialog.toh-sf-popup textarea{border-radius:9px;font-size:15px}
.toh-sf-v32 .toolbar{display:flex;align-items:center;gap:12px;justify-content:space-between;flex-wrap:wrap}
.toh-sf-v32 .toolbar input{flex:1;min-width:200px}
.toh-sf-v32 #toh-new-doc{margin-left:auto;white-space:nowrap}
@media(max-width:640px){#toh-doc-dialog.toh-sf-popup{width:98vw;max-width:98vw}.toh-sf-v32 .toolbar input{width:100%}}

/* Sales Forecast v3.2.1 — scoped popup; no effect on other ERP document forms */
#toh-doc-dialog.toh-sf-compact{width:min(780px,94vw)!important;max-width:94vw!important;max-height:88vh!important;border:0;border-radius:18px;overflow-y:auto;overscroll-behavior:contain;box-shadow:0 24px 90px rgba(7,48,32,.27)}
#toh-doc-dialog.toh-sf-compact::backdrop{background:rgba(10,37,29,.55)}
#toh-doc-dialog.toh-sf-compact #toh-doc-form{padding:0;display:flex;flex-direction:column;gap:0}
#toh-doc-dialog.toh-sf-compact .dialog-head{position:sticky;top:0;z-index:5;padding:16px 22px;background:#f0f8f3;border-bottom:1px solid #d7e8df}
#toh-doc-dialog.toh-sf-compact .dialog-head h2{font-size:21px;color:#16553d}
#toh-doc-dialog.toh-sf-compact .dialog-head p{font-size:13px;color:#60796b}
#toh-doc-dialog.toh-sf-compact #toh-module-section{margin:0 22px 6px;padding:12px 0;border:0;background:transparent}
#toh-doc-dialog.toh-sf-compact #toh-module-section-title{font-size:16px;margin:0 0 12px}
#toh-doc-dialog.toh-sf-compact #toh-module-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}
#toh-doc-dialog.toh-sf-compact #toh-module-fields label{font-size:13px;font-weight:600;color:#305b48}
#toh-doc-dialog.toh-sf-compact #toh-module-fields label.wide{grid-column:1/-1}
#toh-doc-dialog.toh-sf-compact #toh-doc-form>.form-grid{padding:12px 22px 4px;display:block!important}
#toh-doc-dialog.toh-sf-compact #toh-doc-form>.form-grid>label{display:none!important}
#toh-doc-dialog.toh-sf-compact #toh-doc-form>.form-grid>.toh-sf-title-field{display:block!important;margin-bottom:10px;font-size:13px;font-weight:600}
#toh-doc-dialog.toh-sf-compact #toh-doc-form>.form-grid>.toh-sf-title-field input{width:100%}
#toh-doc-dialog.toh-sf-compact #toh-line-section{margin:12px 22px 16px;padding:15px;border:1px solid #dbe9e1;border-radius:12px;background:#f9fcfa}
#toh-doc-dialog.toh-sf-compact #toh-line-section-title{font-size:16px;margin:0 0 12px}
#toh-doc-dialog.toh-sf-compact #toh-line-rows .generic-line-header{display:none}
#toh-doc-dialog.toh-sf-compact #toh-line-rows .line-row{display:grid;grid-template-columns:minmax(0,2fr) minmax(75px,.7fr) minmax(95px,.9fr) 34px;gap:9px;align-items:end;padding:12px 0;border-bottom:1px solid #e1eae4}
#toh-doc-dialog.toh-sf-compact #toh-line-rows .line-row>.generic-line-field:nth-child(4),
#toh-doc-dialog.toh-sf-compact #toh-line-rows .line-row>.generic-line-field:nth-child(5),
#toh-doc-dialog.toh-sf-compact #toh-line-rows .line-row>.generic-line-field:nth-child(6){display:none!important}
#toh-doc-dialog.toh-sf-compact #toh-line-rows .line-row>.generic-line-field:nth-child(1):before{content:'สินค้า';display:block;font-size:12px;font-weight:600;color:#446555;margin-bottom:5px}
#toh-doc-dialog.toh-sf-compact #toh-line-rows .line-row>.generic-line-field:nth-child(2):before{content:'จำนวน';display:block;font-size:12px;font-weight:600;color:#446555;margin-bottom:5px}
#toh-doc-dialog.toh-sf-compact #toh-line-rows .line-row>.generic-line-field:nth-child(3):before{content:'ราคา/หน่วย';display:block;font-size:12px;font-weight:600;color:#446555;margin-bottom:5px}
#toh-doc-dialog.toh-sf-compact #toh-line-rows .line-row input{width:100%;min-width:0;box-sizing:border-box}
#toh-doc-dialog.toh-sf-compact .product-combobox .product-id-select{display:none!important}
#toh-doc-dialog.toh-sf-compact #toh-add-line{margin-top:12px}
#toh-doc-dialog.toh-sf-compact .toh-sf-total{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-top:12px;padding:12px;background:#e9f5ee;border-radius:9px;color:#1b6546;font-size:13px}
#toh-doc-dialog.toh-sf-compact .toh-sf-total strong{font-size:16px}
#toh-doc-dialog.toh-sf-compact .dialog-actions{position:sticky;bottom:0;z-index:5;margin:0;padding:13px 22px;background:white;border-top:1px solid #dbe9e1}
#toh-doc-dialog.toh-sf-compact input,#toh-doc-dialog.toh-sf-compact select,#toh-doc-dialog.toh-sf-compact textarea{font-size:14px;border-radius:9px;min-height:38px}
.toh-sf-v321 .toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.toh-sf-v321 #toh-new-doc{margin-left:auto}
@media(max-width:640px){#toh-doc-dialog.toh-sf-compact{width:98vw!important;max-width:98vw!important}#toh-doc-dialog.toh-sf-compact #toh-module-fields{grid-template-columns:1fr}#toh-doc-dialog.toh-sf-compact #toh-line-rows .line-row{grid-template-columns:1fr 1fr 34px}#toh-doc-dialog.toh-sf-compact #toh-line-rows .line-row>.generic-line-field:first-child{grid-column:1/-1}#toh-doc-dialog.toh-sf-compact #toh-line-rows .line-row>.generic-line-action{grid-column:3;grid-row:2}#toh-doc-dialog.toh-sf-compact .toh-sf-total{flex-direction:column;align-items:flex-start}}

/* Online Order Center v3.31.99: compact 6-column list and readable KPI cards */
.online-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:0 0 20px}
.online-summary>.online-kpi{display:flex;align-items:center;gap:18px;min-height:126px;padding:20px 22px;border:1px solid #dce9e2;border-radius:17px;box-shadow:0 4px 18px rgba(20,64,44,.045)}
.online-kpi-green{background:linear-gradient(120deg,#f0faf5,#fff)}.online-kpi-blue{background:linear-gradient(120deg,#eff5ff,#fff)}.online-kpi-purple{background:linear-gradient(120deg,#f6f0ff,#fff)}.online-kpi-amber{background:linear-gradient(120deg,#fff8e9,#fff)}.online-kpi-rose{background:linear-gradient(120deg,#fff1f3,#fff)}.online-kpi-mint{background:linear-gradient(120deg,#eafaf4,#fff)}
.online-summary .online-kpi-icon{display:grid;place-items:center;flex:0 0 54px;height:54px;border-radius:15px;background:#d9f2e4;color:#137b51;font-size:27px;font-weight:750}.online-kpi-blue .online-kpi-icon{background:#dbeafe;color:#2563eb}.online-kpi-purple .online-kpi-icon{background:#eadcff;color:#8550d5}.online-kpi-amber .online-kpi-icon{background:#fff0c7;color:#c58706}.online-kpi-rose .online-kpi-icon{background:#ffe0e5;color:#d83c53}.online-kpi-mint .online-kpi-icon{background:#d7f4e7;color:#008c60}
.online-summary .online-kpi section{min-width:0}.online-summary .online-kpi small{font-size:16px;font-weight:650;color:#234a3a}.online-summary .online-kpi strong{font-size:30px;line-height:1.2;margin-top:5px;overflow-wrap:anywhere;color:#122e25}.online-summary .online-kpi em{font-size:14px;font-style:normal;color:#6b8176}
.online-orders-panel{border-radius:17px}.online-toolbar{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:18px}.online-toolbar input,.online-toolbar select{min-height:48px;font-size:16px;border-radius:12px}.online-toolbar input{flex:2 1 280px}.online-toolbar select{flex:1 1 180px}
.online-order-table{width:100%;min-width:900px;table-layout:auto;border-collapse:separate;border-spacing:0}.online-order-table th{font-size:16px;font-weight:700;color:#244d3d;background:#f0f7f3;padding:17px 15px;white-space:nowrap}.online-order-table td{font-size:16px;padding:20px 15px;vertical-align:middle;border-bottom:1px solid #e5ede8}.online-order-table tbody tr:nth-child(even){background:#f7fbf9}.online-order-table tbody tr:hover{background:#eaf6ef}.online-order-table .online-items-cell{white-space:nowrap}.online-order-table .online-channel-chip{font-size:14px;padding:7px 12px;font-weight:600}.online-order-table .badge{font-size:14px;padding:7px 11px;white-space:nowrap}.online-order-table .num strong{font-size:17px}.online-date-sort{display:inline-flex;align-items:center;gap:9px;border:0;background:transparent;padding:0;color:inherit;font:inherit;font-weight:inherit;cursor:pointer}.online-date-sort span{font-size:20px;color:#117a50}.online-date-sort:hover{color:#087447}.online-date-sort:focus-visible{outline:2px solid #087447;outline-offset:5px;border-radius:3px}
@media(max-width:1000px){.online-summary{grid-template-columns:repeat(3,minmax(0,1fr))}.online-summary>.online-kpi{padding:14px;gap:10px}.online-summary .online-kpi strong{font-size:25px}}
@media(max-width:700px){.online-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.online-summary>.online-kpi{min-height:110px}.online-summary .online-kpi-icon{flex-basis:40px;height:40px;font-size:21px}.online-summary .online-kpi small{font-size:14px}}
@media(max-width:430px){.online-summary{grid-template-columns:1fr}}

/* v3.31.99: Online Orders — larger type, tighter row rhythm; scoped to this table only */
.online-order-table th{font-size:17px;line-height:1.3;padding:12px 14px}
.online-order-table td{font-size:18px;line-height:1.35;padding:11px 14px}
.online-order-table .online-channel-chip{font-size:16px;line-height:1.25;padding:5px 10px}
.online-order-table .badge{font-size:16px;line-height:1.25;padding:5px 10px}
.online-order-table .num strong{font-size:19px;line-height:1.3}
.online-date-sort{font-size:17px;line-height:1.3}
.online-date-sort span{font-size:19px}
.online-toolbar input,.online-toolbar select{font-size:17px}
.online-order-table tbody tr{height:auto}
