/* ===== Sarabun (Thai) + Prompt (English/Latin) via Google Fonts =====
 * Self-hosted @font-face declarations (files served from fonts.gstatic.com).
 * Prompt covers Latin/Latin-ext/Vietnamese; its own Thai glyphs are excluded here
 * so Thai text falls through to Sarabun, which is included for the Thai range only. */
/* vietnamese */
@font-face {
  font-family: 'Prompt';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/prompt/v12/-W_8XJnvUD7dzB2Cy_gIZmMuQ5Q.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Prompt';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/prompt/v12/-W_8XJnvUD7dzB2Cy_gIZ2MuQ5Q.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Prompt';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/prompt/v12/-W_8XJnvUD7dzB2Cy_gIaWMu.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* vietnamese */
@font-face {
  font-family: 'Prompt';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/prompt/v12/-W__XJnvUD7dzB2Kb9odVkI.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Prompt';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/prompt/v12/-W__XJnvUD7dzB2KbtodVkI.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Prompt';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/prompt/v12/-W__XJnvUD7dzB2KYNod.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* vietnamese */
@font-face {
  font-family: 'Prompt';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/prompt/v12/-W_8XJnvUD7dzB2Ck_kIZmMuQ5Q.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Prompt';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/prompt/v12/-W_8XJnvUD7dzB2Ck_kIZ2MuQ5Q.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Prompt';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/prompt/v12/-W_8XJnvUD7dzB2Ck_kIaWMu.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* vietnamese */
@font-face {
  font-family: 'Prompt';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/prompt/v12/-W_8XJnvUD7dzB2Cv_4IZmMuQ5Q.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Prompt';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/prompt/v12/-W_8XJnvUD7dzB2Cv_4IZ2MuQ5Q.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Prompt';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/prompt/v12/-W_8XJnvUD7dzB2Cv_4IaWMu.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* vietnamese */
@font-face {
  font-family: 'Prompt';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/prompt/v12/-W_8XJnvUD7dzB2C2_8IZmMuQ5Q.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Prompt';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/prompt/v12/-W_8XJnvUD7dzB2C2_8IZ2MuQ5Q.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Prompt';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/prompt/v12/-W_8XJnvUD7dzB2C2_8IaWMu.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* thai */
@font-face {
  font-family: 'Sarabun';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/sarabun/v17/DtVmJx26TKEr37c9YL5rik8s6zDX.woff2) format('woff2');
  unicode-range: U+02D7, U+0303, U+0331, U+0E01-0E5B, U+200C-200D, U+25CC;
}
/* thai */
@font-face {
  font-family: 'Sarabun';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/sarabun/v17/DtVjJx26TKEr37c9aAFJn2QN.woff2) format('woff2');
  unicode-range: U+02D7, U+0303, U+0331, U+0E01-0E5B, U+200C-200D, U+25CC;
}
/* thai */
@font-face {
  font-family: 'Sarabun';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/sarabun/v17/DtVmJx26TKEr37c9YOZqik8s6zDX.woff2) format('woff2');
  unicode-range: U+02D7, U+0303, U+0331, U+0E01-0E5B, U+200C-200D, U+25CC;
}
/* thai */
@font-face {
  font-family: 'Sarabun';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/sarabun/v17/DtVmJx26TKEr37c9YMptik8s6zDX.woff2) format('woff2');
  unicode-range: U+02D7, U+0303, U+0331, U+0E01-0E5B, U+200C-200D, U+25CC;
}
/* thai */
@font-face {
  font-family: 'Sarabun';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/sarabun/v17/DtVmJx26TKEr37c9YK5sik8s6zDX.woff2) format('woff2');
  unicode-range: U+02D7, U+0303, U+0331, U+0E01-0E5B, U+200C-200D, U+25CC;
}

*{box-sizing:border-box}body{margin:0;font-family:'Prompt','Sarabun',sans-serif;background:#f4f6fb;color:#1f2937}.sidebar{position:fixed;left:0;top:0;bottom:0;width:245px;background:#7a1f2e;color:#fff;padding:18px}.brand{font-size:24px;font-weight:700;margin-bottom:24px}.sidebar a{display:block;color:#fff;text-decoration:none;padding:10px 12px;border-radius:8px;margin:4px 0}.sidebar a:hover{background:rgba(255,255,255,.15)}.main{margin-left:245px}.topbar{height:58px;background:#fff;border-bottom:1px solid #e5e7eb;display:flex;align-items:center;justify-content:space-between;padding:0 24px}.content{padding:24px}.page-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}h1{margin:0 0 18px}h2{margin-top:26px}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin-bottom:24px}.card{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:16px;box-shadow:0 1px 2px rgba(0,0,0,.04)}.card strong{display:block;font-size:28px;margin-top:8px;color:#7a1f2e}.btn,button{background:#7a1f2e;color:#fff;border:0;border-radius:8px;padding:10px 14px;text-decoration:none;display:inline-block;cursor:pointer}.secondary{background:#6b7280}input,select,textarea{width:100%;border:1px solid #d1d5db;border-radius:8px;padding:9px;background:#fff}textarea{min-height:70px}.toolbar{display:flex;gap:10px;align-items:end;background:#fff;padding:12px;border:1px solid #e5e7eb;border-radius:12px;margin-bottom:16px}.wrap{flex-wrap:wrap}.toolbar input,.toolbar select{width:auto;min-width:180px}table{width:100%;border-collapse:collapse;background:#fff;border-radius:12px;overflow:hidden;border:1px solid #e5e7eb}th,td{padding:11px;border-bottom:1px solid #e5e7eb;text-align:left;vertical-align:top}th{background:#eef2ff}.badge{display:inline-block;background:#e0e7ff;color:#7a1f2e;border-radius:999px;padding:4px 9px;font-size:12px}.form-grid fieldset{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;background:#fff;border:1px solid #d8dcff;border-radius:12px;padding:16px;margin-bottom:18px}.form-grid legend{background:#7a1f2e;color:#fff;border-radius:5px;padding:5px 10px}.form-grid label{font-size:13px}.wide{grid-column:span 4}.form-actions{padding-bottom:40px}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center}.login-card{background:#fff;width:360px;padding:28px;border-radius:16px;box-shadow:0 8px 30px rgba(0,0,0,.12)}.login-card label{display:block;margin-top:12px}.alert{background:#fee2e2;color:#991b1b;padding:10px;border-radius:8px}.muted{color:#6b7280}.opd-visit{border:1px solid #ddd;border-radius:10px;padding:12px;margin:12px 0}@media(max-width:900px){.sidebar{position:relative;width:auto}.main{margin-left:0}.form-grid fieldset{grid-template-columns:1fr}.wide{grid-column:span 1}.toolbar{display:block}.toolbar>*{margin:6px 0}.toolbar input,.toolbar select{width:100%}.accounting-expense-filter .filter-inline-group{display:flex;gap:8px;margin:6px 0}.accounting-expense-filter .filter-inline-group label{flex:1;margin:0;min-width:0}.accounting-expense-filter .filter-inline-group.quick-links{gap:6px}.accounting-expense-filter .filter-inline-group.quick-links a{flex:1;text-align:center;margin:0}}
.success{background:#05a85a!important}.notice{background:#dcfce7;color:#166534;padding:10px;border-radius:8px;margin-bottom:12px}.appointment-toolbar{gap:28px}.appointment-table-wrap{overflow-x:auto;background:#ddd;padding-bottom:4px}.appointment-table{min-width:1450px;border-radius:0}.appointment-table th{background:#6b6b6b;color:#fff;white-space:nowrap}.appointment-table td{background:#fff}.appointment-table .row-active td,.appointment-table .row-done td{background:#f5b9b4}.appointment-table .row-done td:first-child,.appointment-table .row-active td:first-child{background:#ffe083}.patient-name-cell{white-space:nowrap}.avatar{display:inline-block;width:28px;height:28px;border-radius:50%;background:#d7d7d7;margin-right:8px;vertical-align:middle;position:relative}.avatar:after{content:'';position:absolute;left:8px;top:7px;width:12px;height:12px;border-radius:50%;background:#bbb;box-shadow:0 10px 0 4px #bbb}.status-pill{display:inline-block;border-radius:999px;padding:4px 9px;background:#e5e7eb;font-size:12px}.status-arrived,.status-in_treatment{background:#dcfce7;color:#166534}.status-completed,.status-paid{background:#fee2e2;color:#991b1b}.line-btn{border-radius:999px;background:#36b44a;color:#fff;font-weight:700;font-size:10px;width:32px;height:32px;padding:0}.btn-small{display:inline-block;border:0;border-radius:5px;background:#7a1f2e;color:#fff;padding:7px 10px;text-decoration:none;cursor:pointer;font-size:12px}.btn-small.light{background:#f3f4f6;color:#111827}.btn-small.success{background:#05a85a;color:#fff}.inline{display:inline}.time-chip{display:inline-block;background:#fff;border-radius:4px;padding:5px 10px;min-width:64px;text-align:center}.note-cell{min-width:210px}.note-display{max-width:230px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.actions-cell{min-width:170px}.mini-form{display:grid;grid-template-columns:1fr 1fr;gap:6px;background:#fff;border:1px solid #ddd;padding:8px;margin:6px 0;min-width:260px}.patient-picker{background:#f8fafc;border:1px solid #dbe4ff;border-radius:10px;padding:12px}.patient-search-row{display:flex;gap:8px}.patient-search-row input{flex:1}.patient-results{background:#fff;border:1px solid #d1d5db;border-radius:8px;margin-top:6px;max-height:210px;overflow:auto}.patient-result{display:block;width:100%;text-align:left;background:#fff;color:#111827;border:0;border-bottom:1px solid #eee;border-radius:0;padding:8px 10px}.patient-result:hover{background:#eef2ff}.selected-patient{margin-top:8px}.quick-patient-box{margin-top:10px;background:#fff;border:1px dashed #9ca3af;border-radius:8px;padding:12px}.quick-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-bottom:8px}@media(max-width:900px){.patient-search-row{display:block}.quick-grid{grid-template-columns:1fr}.appointment-table{min-width:1100px}}
/* v2.2 admin management */
.form-grid.card{display:grid;grid-template-columns:repeat(2,minmax(240px,1fr));gap:14px}.form-grid.card label{display:block;font-size:13px}.span2{grid-column:span 2}.section-title{font-weight:700;color:#7a1f2e;border-bottom:1px solid #e5e7eb;padding-bottom:6px}.check{display:flex!important;align-items:center;gap:8px}.check input{width:auto}.danger{background:#dc2626!important}.muted-row{opacity:.55}.actions{white-space:nowrap}.checkbox-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:8px;background:#f8fafc;border:1px solid #e5e7eb;border-radius:10px;padding:10px}small{color:#6b7280}@media(max-width:900px){.form-grid.card{grid-template-columns:1fr}.span2{grid-column:span 1}}
/* v2.3 mobile menu + modal overflow */
.menu-toggle{display:none;background:#7a1f2e;color:#fff;padding:8px 12px;border-radius:8px}.modal{display:none;position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:9999;align-items:flex-start;justify-content:center;padding:28px 12px;overflow:auto}.modal.is-open{display:flex}.modal-card{position:relative;background:#fff;border-radius:14px;width:min(720px,96vw);padding:20px;box-shadow:0 20px 60px rgba(0,0,0,.25)}.small-modal{width:min(480px,96vw)}.modal-close{position:absolute;right:12px;top:10px;background:#f3f4f6!important;color:#111827!important;border-radius:999px;width:34px;height:34px;padding:0;font-size:22px}.modal-form{display:grid;grid-template-columns:repeat(2,minmax(180px,1fr));gap:12px}.modal-form .span2{grid-column:span 2}.action-buttons{display:flex;gap:6px;flex-wrap:wrap;min-width:360px}.action-buttons .btn-small{white-space:nowrap}.check input{width:auto!important}
@media(max-width:900px){body.sidebar-open .sidebar{display:block}.sidebar{display:none;position:fixed;z-index:8000;width:260px;box-shadow:0 10px 40px rgba(0,0,0,.25)}.main{margin-left:0}.menu-toggle{display:inline-block}.topbar{gap:10px;padding:0 12px}.topbar b{display:none}.content{padding:12px}.modal-form{grid-template-columns:1fr}.modal-form .span2{grid-column:span 1}.action-buttons{min-width:260px}.appointment-table{min-width:1250px}}
/* v2.4 dashboard appointments + payment flow */
.appointment-table .row-done td{background:#e5e7eb!important;color:#4b5563}.appointment-table .row-done td:first-child{background:#d1d5db!important}.appointment-table .row-active td{background:#f7c7c1}.appointment-edit-modal{border-top:6px solid #9c2f42}.modal-subtitle{margin-top:-10px;color:#6b7280}.pretty-form label{font-weight:600;color:#374151}.wide-modal{width:min(1140px,98vw)}.treatment-toolbar{display:flex;gap:12px;align-items:center;border-bottom:2px solid #9c2f42;padding:8px 0 10px;margin-bottom:8px}.treatment-table{border-radius:0;border:0}.treatment-table th{background:#fff;color:#333;border-bottom:1px solid #111}.treatment-table td{background:#d9f8df}.treatment-table select,.treatment-table input{border-radius:0}.treatment-summary{display:flex;justify-content:flex-end;background:#f3f4f6;padding:14px;margin-top:90px}.modal-footer{display:flex;justify-content:flex-end;padding-top:16px}.payment-layout{display:grid;grid-template-columns:1fr 360px;gap:24px}.payment-left,.payment-side{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:18px}.payment-side{align-self:start}.pay-row{display:flex;justify-content:space-between;border-bottom:1px solid #e5e7eb;padding:8px 0}.pay-row.total{background:#eef2ff;margin:12px -8px;padding:12px 8px;font-size:18px}.payment-side label{display:block;margin:10px 0}.promptpay-box{text-align:center;background:#f8fafc;border:1px dashed #93c5fd;border-radius:10px;padding:10px;margin:10px 0}.promptpay-box img{display:block;width:180px;height:180px;margin:8px auto}.full-width{width:100%;text-align:center}.receipt-actions{margin-bottom:12px}.receipt-print{background:#fff;border:1px solid #ddd;border-radius:12px;padding:28px;max-width:800px;margin:auto}.receipt-print h1{text-align:center}.receipt-head{display:flex;justify-content:space-between;gap:20px;border-bottom:1px solid #ddd;padding-bottom:12px}.receipt-total{text-align:right;font-size:20px;margin:14px 0}.signature-line{text-align:right;margin-top:50px}.line-btn{display:inline-flex;align-items:center;justify-content:center;text-decoration:none}@media(max-width:900px){.payment-layout{grid-template-columns:1fr}.treatment-toolbar{flex-wrap:wrap}.wide-modal{width:98vw}.receipt-head{display:block}}@media print{.sidebar,.topbar,.receipt-actions{display:none!important}.main{margin:0}.content{padding:0}.receipt-print{border:0;box-shadow:none;max-width:none}}
/* v2.4.1 appointment add modal + Thai BE birth date */
.appointment-add-row{display:flex;justify-content:flex-end;margin:-6px 0 12px}.quick-patient-box{margin-top:10px;background:#f8fafc;border:1px dashed #93c5fd;border-radius:10px;padding:12px}.quick-patient-box h3{margin:0 0 8px}.quick-grid{display:grid;grid-template-columns:repeat(5,minmax(120px,1fr));gap:8px;margin-bottom:8px}.patient-results{position:relative;background:#fff;border:1px solid #e5e7eb;border-radius:10px;margin-top:6px;max-height:220px;overflow:auto}.patient-result{display:block;width:100%;text-align:left;background:#fff!important;color:#111827!important;border-radius:0;border-bottom:1px solid #f1f5f9}.patient-result:hover{background:#eef2ff!important}.selected-patient{margin:8px 0;padding:8px 10px;background:#eef2ff;border-radius:8px}.selected-patient.muted{background:#f3f4f6;color:#6b7280}.form-grid small{display:block;margin-top:4px;color:#6b7280}
@media(max-width:900px){.quick-grid{grid-template-columns:1fr}.appointment-add-row{justify-content:stretch}.appointment-add-row .btn{width:100%;text-align:center}}
/* v2.4.5 patient profile + printable certificates */
.profile-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.patient-summary-layout{display:grid;grid-template-columns:260px 1fr;gap:18px;margin-bottom:18px}.patient-photo-card,.patient-info-card,.white-card{background:#fff;border:1px solid #e5e7eb;border-radius:14px;padding:18px}.patient-photo-card{text-align:center}.patient-big-avatar{width:150px;height:150px;border-radius:50%;background:#d9dbe1;margin:0 auto 14px;position:relative}.patient-big-avatar:before{content:'';position:absolute;left:53px;top:28px;width:45px;height:55px;border-radius:50%;background:#bfc2c8}.patient-big-avatar:after{content:'';position:absolute;left:37px;top:88px;width:76px;height:42px;border-radius:50% 50% 10px 10px;background:#bfc2c8}.info-grid{display:grid;grid-template-columns:repeat(2,minmax(180px,1fr));gap:12px}.info-grid div{background:#f8fafc;border:1px solid #eef2ff;border-radius:10px;padding:10px}.info-grid b{display:block;color:#9c2f42;margin-bottom:4px}.info-grid span{display:block;min-height:22px}.patient-money-cards .card{color:#fff;border:0}.patient-money-cards .card strong{color:#fff}.green-card{background:#05a85a}.cyan-card{background:#06b6d4}.orange-card{background:#f59e0b}.profile-section{margin:22px 0}.profile-section h2{color:#9c2f42;border-bottom:2px solid #9c2f42;padding-bottom:8px}.history-table th{background:#6b6b6b;color:#fff}.paid-badge{background:#05a85a!important;color:#fff!important}.print-actions{margin-bottom:12px}.certificate-print{background:#fff;max-width:820px;margin:auto;padding:42px;border:1px solid #e5e7eb;border-radius:12px;line-height:1.8;font-size:16px}.cert-head{text-align:center;border-bottom:2px solid #111;margin-bottom:18px}.cert-head h1{font-size:30px}.cert-no{text-align:right;margin:12px 0}.cert-box{border:1px solid #d1d5db;border-radius:8px;padding:12px;margin:12px 0;min-height:70px}.cert-sign{text-align:center;margin-top:70px;margin-left:auto;width:360px}@media(max-width:900px){.patient-summary-layout{grid-template-columns:1fr}.info-grid{grid-template-columns:1fr}.profile-actions{justify-content:flex-start}.patient-profile-head{align-items:flex-start;flex-direction:column}}@media print{.print-actions,.sidebar,.topbar{display:none!important}.main{margin:0}.content{padding:0}.certificate-print{border:0;border-radius:0;max-width:none;padding:24px}}
/* v2.4.6 clinic settings + branded print documents */
.mt-16{margin-top:16px}.settings-logo-preview{max-width:220px;max-height:120px;border:1px solid #e5e7eb;border-radius:10px;background:#fff;padding:8px}.current-logo-box{background:#f8fafc;border:1px solid #e5e7eb;border-radius:10px;padding:12px}.doc-logo{max-width:110px;max-height:90px;object-fit:contain;margin:0 auto 8px;display:block}.receipt-logo{max-width:90px;max-height:70px;object-fit:contain;margin:0 0 8px;display:block}.license-text{font-size:12px;color:#4b5563}.branded-doc-head .license-text{margin-top:4px}.alert{padding:10px 12px;border-radius:8px;margin:8px 0 14px}.alert.success{background:#dcfce7;color:#166534}.alert.danger-text{background:#fee2e2;color:#991b1b}
@media print{.doc-logo,.receipt-logo{filter:none}.license-text{font-size:11px}}
/* v2.4.8 logo sizing + duplicate payment/course protection UI */
.app-brand{display:flex;align-items:center;gap:10px;justify-content:flex-start;min-height:56px;line-height:1.2}.app-logo{width:42px;height:42px;max-width:42px;max-height:42px;object-fit:contain;border-radius:8px;background:#fff;padding:3px;box-sizing:border-box;flex:0 0 auto}.branded-receipt-head{align-items:flex-start}.branded-receipt-head .receipt-logo{float:left;margin:0 12px 8px 0;width:76px;height:56px;max-width:76px;max-height:56px;object-fit:contain}.branded-doc-head{position:relative;text-align:center;min-height:110px;padding-left:120px;padding-right:24px}.branded-doc-head .doc-logo{position:absolute;left:0;top:0;width:96px;height:80px;max-width:96px;max-height:80px;object-fit:contain;margin:0;background:#fff}.used-course-badge{display:inline-block;background:#7c3aed;color:#fff;border-radius:999px;padding:5px 9px;font-size:12px;font-weight:700}.btn-small.danger,.danger{background:#dc2626!important;color:#fff!important}.actions-cell form.inline{display:inline-block;margin:0}.alert.danger-text{border:1px solid #fecaca}.sidebar .brand img{display:block}
@media(max-width:900px){.app-logo{width:34px;height:34px}.branded-doc-head{padding-left:0;padding-top:88px}.branded-doc-head .doc-logo{left:50%;transform:translateX(-50%)}}
@media print{.app-logo{display:none}.branded-doc-head .doc-logo{width:86px;height:72px}.branded-receipt-head .receipt-logo{width:68px;height:50px}}
/* v2.4.9 receipt print layout + nowrap appointment actions */
.no-print{display:block}.receipt-actions.no-print{display:flex;gap:8px;justify-content:center;margin-bottom:14px}.receipt-print{background:#fff;border:1px solid #ddd;border-radius:12px;padding:18mm;max-width:210mm;margin:auto;color:#111827}.receipt-print.receipt-a5{max-width:148mm;padding:10mm;font-size:12px}.receipt-header-block{display:grid;grid-template-columns:86px 1fr 170px;gap:14px;align-items:start;border-bottom:1px solid #d1d5db;padding-bottom:10px;margin-bottom:12px}.receipt-logo-col .receipt-logo{float:none!important;width:76px!important;height:56px!important;max-width:76px!important;max-height:56px!important;object-fit:contain;margin:0!important}.receipt-clinic-col h1{font-size:22px;text-align:left;margin:0 0 4px}.receipt-clinic-col h2{font-size:18px;margin:0 0 6px}.receipt-meta-col{font-size:12px;text-align:right;line-height:1.8}.receipt-customer-box{border:1px solid #e5e7eb;border-radius:8px;padding:8px 10px;margin:10px 0 12px;line-height:1.55}.receipt-items-table{border-radius:0;border:1px solid #d1d5db}.receipt-items-table th{background:#f3f4f6;color:#111827}.receipt-items-table th,.receipt-items-table td{padding:7px;border-bottom:1px solid #e5e7eb}.receipt-items-table .col-no{width:32px}.receipt-items-table .num{text-align:right;white-space:nowrap}.receipt-bottom-section{display:grid;grid-template-columns:1fr 260px;gap:16px;margin-top:12px;align-items:start}.receipt-payment-methods{line-height:1.7}.receipt-total-box{border:1px solid #d1d5db;background:#f9fafb;border-radius:8px;padding:10px}.receipt-total-box div{display:flex;justify-content:space-between;gap:12px;font-size:18px}.receipt-print.receipt-a5 .receipt-header-block{grid-template-columns:62px 1fr 110px;gap:8px}.receipt-print.receipt-a5 .receipt-logo-col .receipt-logo{width:56px!important;height:42px!important;max-width:56px!important;max-height:42px!important}.receipt-print.receipt-a5 .receipt-clinic-col h1{font-size:18px}.receipt-print.receipt-a5 .receipt-clinic-col h2{font-size:15px}.receipt-print.receipt-a5 .receipt-meta-col{font-size:10px}.receipt-print.receipt-a5 .receipt-items-table th,.receipt-print.receipt-a5 .receipt-items-table td{padding:5px}.receipt-print.receipt-a5 .receipt-bottom-section{grid-template-columns:1fr 170px}.receipt-print.receipt-a5 .receipt-total-box div{font-size:14px}.actions-cell.action-buttons,.action-buttons{display:flex!important;flex-wrap:nowrap!important;gap:6px;align-items:center;min-width:max-content!important;white-space:nowrap}.actions-cell.action-buttons>*{flex:0 0 auto}.actions-cell form.inline{display:inline-flex!important}.appointment-table th:last-child,.appointment-table td:last-child{white-space:nowrap;min-width:520px}.appointment-table-wrap{overflow-x:auto}
@media print{.no-print,.receipt-actions,.sidebar,.topbar{display:none!important}.main{margin:0!important}.content{padding:0!important;background:#fff}.receipt-print{border:0!important;border-radius:0!important;box-shadow:none!important;margin:0 auto!important;max-width:none!important;width:190mm;padding:10mm!important;font-size:12px}.receipt-print.receipt-a5,body.receipt-print-a5 .receipt-print{width:138mm!important;padding:7mm!important;font-size:10.5px}.receipt-header-block{break-inside:avoid;page-break-inside:avoid}.receipt-customer-box{break-inside:avoid;page-break-inside:avoid}.receipt-items-table{page-break-inside:auto;border-collapse:collapse}.receipt-items-table thead{display:table-header-group}.receipt-items-table tfoot{display:table-footer-group}.receipt-items-table tr{break-inside:avoid;page-break-inside:avoid}.receipt-bottom-section,.signature-line{break-inside:avoid;page-break-inside:avoid}.receipt-logo{print-color-adjust:exact;-webkit-print-color-adjust:exact}@page{size:A4;margin:8mm}}
@media(max-width:900px){.receipt-print{padding:14px}.receipt-header-block{grid-template-columns:1fr}.receipt-meta-col{text-align:left}.receipt-bottom-section{grid-template-columns:1fr}.appointment-table th:last-child,.appointment-table td:last-child{min-width:520px}.action-buttons{min-width:max-content!important}}

/* v2.4.11 search/filter, shared course, report bars, footer, payment quick fill */
.admin-filter-bar input{min-width:240px}.report-grid{display:grid;grid-template-columns:repeat(2,minmax(280px,1fr));gap:16px;margin:16px 0}.report-chart-card h2{margin-top:0}.bar-row{margin:12px 0}.bar-label{display:flex;justify-content:space-between;gap:8px;font-weight:700}.bar-label small{font-weight:400;color:#6b7280}.bar-track{height:12px;background:#e5e7eb;border-radius:999px;overflow:hidden}.bar-fill{height:100%;background:#9c2f42;border-radius:999px}.bar-fill.alt{background:#059669}.payment-method-buttons{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0 14px}.share-course-form{display:flex!important;gap:6px;align-items:center;flex-wrap:nowrap}.share-course-form select{min-width:190px}.small-note{font-size:13px}.app-footer{padding:12px 22px;color:#6b7280;font-size:12px;border-top:1px solid #e5e7eb;background:#fff;display:flex;justify-content:space-between;gap:12px}.form-grid select{width:100%;padding:9px;border:1px solid #d1d5db;border-radius:8px;background:#fff}.quick-grid select{padding:9px;border:1px solid #d1d5db;border-radius:8px;background:#fff}
@media(max-width:900px){.report-grid{grid-template-columns:1fr}.app-footer{flex-direction:column}.share-course-form{flex-wrap:wrap!important}}

/* v2.4.12 dashboard/report/payment/print refinements */
.btn-small.warning{background:#f59e0b!important;color:#fff!important}.pie-chart-wrap{display:grid;grid-template-columns:180px 1fr;gap:18px;align-items:center}.pie-chart{width:170px;height:170px;border-radius:50%;box-shadow:inset 0 0 0 1px #e5e7eb}.pie-legend{display:flex;flex-direction:column;gap:8px}.pie-legend-row{display:grid;grid-template-columns:14px 1fr auto;gap:8px;align-items:center}.pie-dot{width:12px;height:12px;border-radius:50%;display:inline-block}.pay-method-label{font-weight:700}.payment-method-buttons .btn-small{font-weight:700}.app-footer{justify-content:center!important;text-align:center;align-items:center}.app-footer span{margin-left:8px}.share-patient-picker{position:relative;min-width:250px}.share-patient-search{width:100%;min-width:250px}.share-patient-results{position:absolute;top:100%;left:0;right:0;background:#fff;border:1px solid #e5e7eb;border-radius:8px;box-shadow:0 8px 18px rgba(0,0,0,.12);z-index:30;max-height:240px;overflow:auto}.course-share-search-form{position:relative}.certificate-print,.receipt-print{min-height:270mm;position:relative}.cert-sign{position:absolute;right:40px;bottom:36px;margin-top:0}.signature-line{position:absolute;right:18mm;bottom:14mm;text-align:center}.receipt-print{padding-bottom:34mm!important}.receipt-header-block{position:relative}.receipt-logo-col{display:flex;justify-content:flex-start;align-items:flex-start}.receipt-logo-col .receipt-logo,.branded-doc-head .doc-logo{object-fit:contain!important}
@media(max-width:900px){.pie-chart-wrap{grid-template-columns:1fr}.pie-chart{margin:auto}.app-footer span{display:block;margin-left:0}.share-course-form{align-items:flex-start}.share-patient-picker,.share-patient-search{min-width:220px;width:100%}}
@media print{.certificate-print{min-height:277mm!important;padding:14mm!important;box-sizing:border-box}.certificate-print .branded-doc-head{min-height:32mm!important;padding-left:32mm!important;text-align:center!important}.certificate-print .branded-doc-head .doc-logo{position:absolute!important;left:0!important;top:0!important;transform:none!important;width:26mm!important;height:22mm!important;max-width:26mm!important;max-height:22mm!important}.cert-sign{position:absolute!important;right:16mm!important;bottom:18mm!important;width:78mm!important}.receipt-print{min-height:277mm!important;box-sizing:border-box;padding-bottom:32mm!important}.receipt-header-block{grid-template-columns:26mm 1fr 42mm!important}.receipt-logo-col .receipt-logo{width:23mm!important;height:18mm!important;max-width:23mm!important;max-height:18mm!important}.signature-line{position:absolute!important;right:14mm!important;bottom:12mm!important}.receipt-items-table tr{page-break-inside:avoid;break-inside:avoid}.receipt-items-table thead{display:table-header-group}@page{size:A4;margin:8mm}body.receipt-print-a5 .receipt-print{min-height:200mm!important}.receipt-print.receipt-a5{min-height:200mm!important}}


/* v2.4.14 navigation icons, mobile appointment table, sticky footer, print refinements */
html,body{min-height:100%;}body{min-height:100vh;display:flex;align-items:stretch}.main{min-height:100vh;display:flex;flex-direction:column;width:calc(100% - 245px)}.content{flex:1}.app-footer{margin-top:auto;justify-content:center!important;text-align:center!important;align-items:center!important}.side-nav a{display:flex;align-items:center;gap:10px}.nav-icon{width:22px;text-align:center;flex:0 0 22px;font-size:16px}.sortable-th{color:#1f2937;text-decoration:none;display:inline-flex;align-items:center;gap:4px;font-weight:800}.sortable-th:hover{text-decoration:underline}.appointment-table{font-size:14px}.appointment-table th{position:sticky;top:0;z-index:3}.appointment-table td{vertical-align:middle}.patient-name-cell a{font-weight:700;color:#7a1f2e}.status-pill{white-space:nowrap}.btn-small{white-space:nowrap}.commission-table .action-buttons{min-width:120px!important}.commission-table .modal{white-space:normal}.certificate-print{font-size:15px;line-height:1.55}.certificate-print .cert-box{min-height:unset;margin:8px 0;padding:9px 11px}.certificate-print .cert-head h1{font-size:26px;margin-bottom:8px}.certificate-print p{margin:7px 0}
@media(max-width:1100px){.appointment-table{min-width:980px}.appointment-table th:last-child,.appointment-table td:last-child{min-width:430px}.appointment-table th,.appointment-table td{padding:8px 9px}.appointment-table-wrap{border-radius:12px;border:1px solid #e5e7eb;background:#fff}.appointment-toolbar{gap:8px}}
@media(max-width:700px){body{display:block}.main{width:100%;min-height:100vh}.appointment-table-wrap.mobile-friendly-table{overflow:visible;border:0;background:transparent}.mobile-friendly-table .appointment-table{min-width:0;width:100%;border:0;background:transparent}.mobile-friendly-table thead{display:none}.mobile-friendly-table tbody,.mobile-friendly-table tr,.mobile-friendly-table td{display:block;width:100%}.mobile-friendly-table tr{background:#fff;border:1px solid #e5e7eb;border-radius:14px;margin:12px 0;padding:10px;box-shadow:0 3px 14px rgba(15,23,42,.06)}.mobile-friendly-table tr.row-done{background:#f3f4f6}.mobile-friendly-table td{border:0;padding:7px 6px 7px 44%;position:relative;min-height:34px}.mobile-friendly-table td:before{content:attr(data-label);position:absolute;left:8px;top:7px;width:38%;font-weight:700;color:#6b7280}.mobile-friendly-table td.actions-cell{padding-left:6px}.mobile-friendly-table td.actions-cell:before{position:static;display:block;width:auto;margin-bottom:6px}.mobile-friendly-table .action-buttons{overflow-x:auto;min-width:0!important;display:flex!important}.mobile-friendly-table .note-cell .note-display{white-space:normal}.appointment-add-row .btn{width:100%;text-align:center}}
@media print{.sidebar,.topbar,.app-footer,.print-actions,.receipt-actions,.no-print{display:none!important}.main{margin:0!important;width:100%!important;min-height:0!important;display:block!important}.content{padding:0!important;background:#fff!important}.certificate-print{width:190mm!important;min-height:277mm!important;max-height:277mm!important;overflow:hidden!important;margin:0 auto!important;border:0!important;border-radius:0!important;padding:12mm 14mm!important;box-sizing:border-box;font-size:12.5px!important;line-height:1.42!important}.certificate-print .branded-doc-head{min-height:28mm!important;margin-bottom:6mm!important;padding-left:30mm!important;border-bottom:1px solid #111!important}.certificate-print .branded-doc-head .doc-logo{left:0!important;top:0!important;width:25mm!important;height:20mm!important;max-width:25mm!important;max-height:20mm!important}.certificate-print .cert-head h1{font-size:20px!important;margin:0 0 3mm!important}.certificate-print p{margin:3mm 0!important}.certificate-print .cert-box{margin:3mm 0!important;padding:2.5mm 3mm!important;min-height:14mm!important;break-inside:avoid;page-break-inside:avoid}.certificate-print .cert-sign{position:absolute!important;right:15mm!important;bottom:14mm!important;width:75mm!important;font-size:12px!important}.receipt-print{max-height:none!important}.receipt-print .app-footer{display:none!important}@page{size:A4;margin:8mm}}

/* v2.4.15 patient paging/sorting, login refresh, report shortcuts, stronger mobile appointments */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#f5f7ff 0%,#eef8ff 48%,#fff7ed 100%);padding:24px}.modern-login-card{width:min(430px,100%);background:#fff;border:1px solid #e5e7eb;border-radius:24px;box-shadow:0 24px 70px rgba(15,23,42,.16);padding:34px;text-align:center}.modern-login-card h1{margin:10px 0 4px;font-size:28px}.login-subtitle{margin:0 0 22px;color:#6b7280}.login-logo-wrap{display:flex;justify-content:center;min-height:54px}.login-logo{max-width:150px;max-height:64px;object-fit:contain}.login-form{text-align:left;display:grid;gap:10px}.login-form input{width:100%;padding:12px 14px;border:1px solid #d1d5db;border-radius:12px}.login-form button{width:100%;padding:12px 14px;margin-top:8px;border-radius:12px}.table-meta{color:#6b7280;font-size:13px;margin:8px 0}.pagination{display:flex;gap:6px;flex-wrap:wrap;margin:14px 0}.pagination a{border:1px solid #d1d5db;background:#fff;color:#374151;border-radius:8px;padding:6px 10px;text-decoration:none}.pagination a.active{background:#7a1f2e;color:#fff;border-color:#7a1f2e}.responsive-table-wrap{overflow-x:auto}.quick-date-buttons{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0 12px}.patient-table th{white-space:nowrap}.patient-table a{font-weight:700}
@media(max-width:900px){.appointment-table-wrap.mobile-friendly-table{overflow:visible!important;border:0!important;background:transparent!important}.mobile-friendly-table .appointment-table{min-width:0!important;width:100%!important;border:0!important;background:transparent!important}.mobile-friendly-table .appointment-table thead{display:none!important}.mobile-friendly-table .appointment-table tbody,.mobile-friendly-table .appointment-table tr,.mobile-friendly-table .appointment-table td{display:block!important;width:100%!important}.mobile-friendly-table .appointment-table tr{background:#fff!important;border:1px solid #e5e7eb!important;border-radius:14px!important;margin:12px 0!important;padding:10px!important;box-shadow:0 3px 14px rgba(15,23,42,.06)!important}.mobile-friendly-table .appointment-table tr.row-done{background:#f3f4f6!important}.mobile-friendly-table .appointment-table td{border:0!important;padding:7px 6px 7px 44%!important;position:relative!important;min-height:34px!important;white-space:normal!important;min-width:0!important}.mobile-friendly-table .appointment-table td:before{content:attr(data-label);position:absolute;left:8px;top:7px;width:38%;font-weight:700;color:#6b7280}.mobile-friendly-table .appointment-table td.actions-cell{padding-left:6px!important}.mobile-friendly-table .appointment-table td.actions-cell:before{position:static;display:block;width:auto;margin-bottom:6px}.mobile-friendly-table .appointment-table .action-buttons{overflow-x:auto;min-width:0!important;display:flex!important;flex-wrap:nowrap!important}.appointment-table th:last-child,.appointment-table td:last-child{min-width:0!important}.appointment-add-row .btn{width:100%;text-align:center}.modern-login-card{padding:26px 20px}}

/* v2.4.15a: keep appointments as a wide table on mobile, with taller touch-friendly rows */
@media(max-width:900px){
  .appointment-table-wrap.mobile-friendly-table,
  .appointment-table-wrap{
    overflow-x:auto!important;
    -webkit-overflow-scrolling:touch!important;
    border:1px solid #e5e7eb!important;
    border-radius:12px!important;
    background:#fff!important;
    padding-bottom:8px!important;
  }
  .mobile-friendly-table .appointment-table,
  .appointment-table{
    display:table!important;
    min-width:1250px!important;
    width:1250px!important;
    border-collapse:collapse!important;
    background:#fff!important;
    border:1px solid #e5e7eb!important;
  }
  .mobile-friendly-table .appointment-table thead,
  .appointment-table thead{display:table-header-group!important;}
  .mobile-friendly-table .appointment-table tbody,
  .appointment-table tbody{display:table-row-group!important;}
  .mobile-friendly-table .appointment-table tr,
  .appointment-table tr{
    display:table-row!important;
    width:auto!important;
    margin:0!important;
    padding:0!important;
    border:0!important;
    border-radius:0!important;
    box-shadow:none!important;
    background:transparent!important;
  }
  .mobile-friendly-table .appointment-table th,
  .appointment-table th{
    display:table-cell!important;
    position:sticky!important;
    top:0!important;
    z-index:3!important;
    padding:12px 10px!important;
    white-space:nowrap!important;
    background:#6b6b6b!important;
    color:#fff!important;
    vertical-align:middle!important;
  }
  .mobile-friendly-table .appointment-table td,
  .appointment-table td{
    display:table-cell!important;
    width:auto!important;
    min-width:0!important;
    padding:14px 10px!important;
    min-height:52px!important;
    line-height:1.45!important;
    border-bottom:1px solid #e5e7eb!important;
    position:static!important;
    white-space:nowrap!important;
    vertical-align:middle!important;
    background:#fff!important;
  }
  .mobile-friendly-table .appointment-table td:before,
  .appointment-table td:before{content:none!important;display:none!important;}
  .mobile-friendly-table .appointment-table td.actions-cell,
  .appointment-table td.actions-cell{
    padding-left:10px!important;
    min-width:430px!important;
  }
  .mobile-friendly-table .appointment-table .action-buttons,
  .appointment-table .action-buttons{
    display:flex!important;
    flex-wrap:nowrap!important;
    gap:8px!important;
    min-width:430px!important;
    overflow-x:visible!important;
  }
  .appointment-table .btn-small,
  .appointment-table button.btn-small,
  .appointment-table a.btn-small{
    padding:9px 12px!important;
    min-height:38px!important;
    line-height:1.25!important;
    font-size:13px!important;
  }
  .appointment-table .time-chip{
    padding:8px 12px!important;
    min-height:38px!important;
    min-width:78px!important;
  }
  .appointment-table .line-btn{
    width:38px!important;
    height:38px!important;
    min-width:38px!important;
  }
  .appointment-table .note-display{
    max-width:260px!important;
    white-space:nowrap!important;
  }
  .appointment-table .row-done td{background:#e5e7eb!important;color:#4b5563!important;}
  .appointment-table .row-active td{background:#f7c7c1!important;}
}

/* v2.5 login center fix + footer version */
body:not(:has(.sidebar)) .login-wrap,
.login-wrap{
  flex:1 1 auto!important;
  width:100vw!important;
  max-width:100vw!important;
  margin:0!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
}
.modern-login-card{margin:auto!important;}
.course-order-block{margin-top:18px;border-top:2px solid #e5e7eb;padding-top:12px}.course-order-block h3{margin:0 0 8px;color:#7a1f2e}.course-order-table th{background:#f8fafc;color:#111827}.course-delete-form{display:inline}.course-status-course{background:#fef3c7!important;color:#92400e!important}.status-course{background:#fef3c7!important;color:#92400e!important}

/* v2.5.1 login hard-center + appointment quick today */
html, body.login-page{width:100%;min-width:100%;min-height:100%;}
body.login-page{
  margin:0!important;
  min-height:100vh!important;
  width:100vw!important;
  display:grid!important;
  place-items:center!important;
  align-items:center!important;
  justify-items:center!important;
  background:linear-gradient(135deg,#eef7ff 0%,#f7f7fb 55%,#fff7ef 100%)!important;
  overflow-x:hidden!important;
}
body.login-page .login-wrap{
  width:100vw!important;
  min-height:100vh!important;
  margin:0!important;
  padding:24px!important;
  display:grid!important;
  place-items:center!important;
  background:transparent!important;
}
body.login-page .modern-login-card,
body.login-page .login-card{
  width:min(430px, calc(100vw - 32px))!important;
  max-width:430px!important;
  margin:0 auto!important;
  justify-self:center!important;
  align-self:center!important;
}
.appointment-toolbar .today-shortcut{align-self:end;white-space:nowrap;}

/* v2.5.3 course usage modal diagnostics + appointment service edit */
.course-usage-modal{width:min(920px,98vw)}
.course-usage-list{display:flex;flex-direction:column;gap:10px;margin-top:12px;max-height:60vh;overflow:auto;padding-right:4px}
.course-usage-row{display:grid;grid-template-columns:28px 1fr auto;gap:10px;align-items:center;border:1px solid #e5e7eb;border-radius:12px;padding:10px 12px;background:#fff;cursor:pointer}
.course-usage-row.is-disabled{background:#f9fafb;color:#6b7280;cursor:not-allowed}.course-usage-row.is-disabled input{cursor:not-allowed}.course-usage-row.is-usable{border-color:#bbf7d0;background:#f0fdf4}.course-usage-main{display:flex;flex-direction:column;gap:2px}.course-usage-main small{color:#6b7280}.course-reason{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:5px 10px;font-size:12px;font-weight:800;white-space:nowrap;background:#eef2ff;color:#3730a3}.course-reason.ok{background:#dcfce7;color:#166534}.course-reason.bad{background:#fee2e2;color:#991b1b}.course-reason.muted{background:#f3f4f6;color:#6b7280}@media(max-width:700px){.course-usage-row{grid-template-columns:24px 1fr}.course-usage-row .course-reason{grid-column:2/3;justify-self:flex-start}.course-usage-list{max-height:70vh}}

/* v2.5.4 web app branding, report payment list, certificate handwriting blanks */
.app-brand{display:flex;align-items:center;justify-content:center;margin-bottom:22px;padding:6px 4px;background:rgba(255,255,255,.08);border-radius:14px;min-height:58px}.webapp-logo{display:block;width:100%;max-width:190px;max-height:54px;object-fit:contain}.webapp-login-logo{max-width:210px!important;max-height:76px!important;width:auto!important;object-fit:contain!important}.topbar b{font-size:18px}.report-payment-table th,.report-payment-table td{white-space:nowrap}.report-payment-table td:nth-child(4){white-space:normal;min-width:260px}.date-range-card{font-size:20px!important}.handwrite-lines{display:block;padding-top:2mm}.handwrite-lines span{display:block;height:7mm;border-bottom:1px dotted #9ca3af;margin-bottom:1mm}.certificate-print .cert-box .handwrite-lines{min-height:22mm}.doc-logo{max-width:90px!important;max-height:58px!important;object-fit:contain}@media print{.handwrite-lines span{border-bottom:1px dotted #777!important}.app-footer,.print-actions{display:none!important}}

/* v2.5.6 assets back in public/assets, transparent logo, cleaner brand block */
.app-brand{
  background:transparent!important;
  box-shadow:none!important;
  padding:4px 0 14px!important;
  min-height:64px!important;
  justify-content:flex-start!important;
}
.webapp-logo{
  max-width:205px!important;
  max-height:72px!important;
  object-fit:contain!important;
  filter:drop-shadow(0 2px 4px rgba(0,0,0,.18));
}
.sidebar .brand img{margin-left:0!important;}


/* v2.5.10 report/dashboard calming KPI colors */
.report-kpi-cards,.soft-kpi-cards{align-items:stretch}
.kpi-card,.soft-kpi{border:0!important;box-shadow:0 12px 30px rgba(15,23,42,.08)!important;position:relative;overflow:hidden}
.kpi-card:after,.soft-kpi:after{content:'';position:absolute;right:-34px;top:-34px;width:108px;height:108px;border-radius:999px;background:rgba(255,255,255,.18)}
.kpi-card span,.kpi-card b,.soft-kpi span,.soft-kpi b{display:block;font-weight:700;opacity:.92}
.kpi-card strong,.soft-kpi strong{color:inherit!important;font-weight:800}
.kpi-total{background:linear-gradient(135deg,#059669,#10b981)!important;color:#fff!important}
.kpi-doctor{background:linear-gradient(135deg,#2563eb,#60a5fa)!important;color:#fff!important}
.kpi-physio{background:linear-gradient(135deg,#0891b2,#22d3ee)!important;color:#fff!important}
.kpi-period{background:linear-gradient(135deg,#7a1f2e,#818cf8)!important;color:#fff!important}
.kpi-blue-1{background:linear-gradient(135deg,#e0f2fe,#bfdbfe)!important;color:#0f3b70!important}
.kpi-blue-2{background:linear-gradient(135deg,#dbeafe,#c7d2fe)!important;color:#1e3a8a!important}
.kpi-blue-3{background:linear-gradient(135deg,#e0e7ff,#ddd6fe)!important;color:#3730a3!important}
.kpi-blue-4{background:linear-gradient(135deg,#dbeafe,#bae6fd)!important;color:#075985!important}
.kpi-teal-1{background:linear-gradient(135deg,#ccfbf1,#a7f3d0)!important;color:#065f46!important}
.kpi-sky-1{background:linear-gradient(135deg,#e0f2fe,#cffafe)!important;color:#155e75!important}
.soft-kpi strong{font-size:30px}
.dashboard-summary-cards .kpi-total{order:-2}

/* v2.5.12 login remember, report active preset, footer */
.remember-login{display:flex!important;align-items:center;gap:8px;margin:4px 0 2px;color:#374151;font-size:14px;font-weight:600}.remember-login input{width:auto!important;margin:0}.quick-date-buttons .btn-small.active{background:#059669!important;color:#fff!important;border-color:#059669!important;box-shadow:0 4px 12px rgba(5,150,105,.22)}.app-footer{font-size:12px;color:#6b7280;justify-content:center!important;text-align:center!important;gap:0!important}.topbar b{color:#111827}

/* v2.6 attendance + commission summary */
.commission-role-cards{margin:10px 0 18px}.commission-role-cards small{display:block;margin-top:4px;opacity:.8;font-weight:700}.today-working-card{margin:12px 0 18px}.working-staff-list{display:flex;flex-wrap:wrap;gap:10px}.working-pill{display:flex;flex-direction:column;gap:2px;padding:10px 13px;border-radius:14px;background:linear-gradient(135deg,#eff6ff,#ecfeff);border:1px solid #bfdbfe;box-shadow:0 6px 18px rgba(15,23,42,.06)}.working-pill b{color:#0f172a}.working-pill small{color:#2563eb;font-weight:700}.attendance-filter{align-items:end}.attendance-form-card{margin:12px 0 16px}.compact-grid{grid-template-columns:repeat(4,minmax(150px,1fr))}.attendance-sheet-wrap{max-height:72vh;border:1px solid #e5e7eb;border-radius:14px;background:#fff}.attendance-sheet{border-collapse:separate;border-spacing:0;min-width:1200px}.attendance-sheet th{position:sticky;top:0;z-index:3;background:#f8fafc;color:#0f172a}.attendance-sheet .sticky-col{position:sticky;left:0;z-index:4;background:#fff}.attendance-sheet th.sticky-col{z-index:5;background:#f8fafc}.attendance-sheet .staff-col{min-width:230px;text-align:left}.attendance-sheet .day-col{min-width:76px;text-align:center}.attendance-sheet .day-col small{display:block;color:#64748b}.attendance-sheet .day-col.weekend{background:#fef2f2}.attendance-cell{min-width:76px;height:58px;text-align:center;vertical-align:middle;position:relative;font-size:12px}.attendance-cell span{display:block;font-weight:800}.attendance-cell small{display:block;font-size:11px;line-height:1.25}.attendance-cell.att-work{background:#dcfce7;color:#166534}.attendance-cell.att-special{background:#fef3c7;color:#92400e}.attendance-cell.att-ot{background:#dbeafe;color:#1d4ed8}.attendance-cell.att-off{background:#f3f4f6;color:#4b5563}.attendance-cell.att-leave{background:#fee2e2;color:#991b1b}.cell-delete{position:absolute;top:2px;right:2px;border:0;border-radius:999px;width:18px;height:18px;line-height:15px;background:#ef4444;color:#fff;font-weight:900;cursor:pointer}.attendance-sheet td:last-child,.attendance-sheet th:last-child{white-space:nowrap}.appointment-working-card h2{margin-top:0}@media(max-width:900px){.compact-grid{grid-template-columns:1fr 1fr}.attendance-sheet-wrap{max-height:none}.working-pill{width:100%}}


/* v2.6.1 staff employment type + attendance edit modal */
.staff-type-pill{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:4px 9px;font-size:12px;font-weight:800;border:1px solid rgba(15,23,42,.08);white-space:nowrap}.staff-cat-reception{background:#e0f2fe!important;color:#075985!important;border-color:#7dd3fc!important}.staff-cat-physio_full_time{background:#dcfce7!important;color:#166534!important;border-color:#86efac!important}.staff-cat-physio_part_time{background:#f3e8ff!important;color:#6b21a8!important;border-color:#d8b4fe!important}.staff-cat-doctor{background:#fef3c7!important;color:#92400e!important;border-color:#fcd34d!important}.staff-cat-other{background:#f1f5f9!important;color:#334155!important;border-color:#cbd5e1!important}.badge-soft-blue{background:#dbeafe;color:#1d4ed8}.badge-soft-purple{background:#ede9fe;color:#6d28d9}.attendance-legend{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 12px}.attendance-staff-row.staff-cat-row-reception .sticky-col{box-shadow:inset 4px 0 0 #38bdf8}.attendance-staff-row.staff-cat-row-physio_full_time .sticky-col{box-shadow:inset 4px 0 0 #22c55e}.attendance-staff-row.staff-cat-row-physio_part_time .sticky-col{box-shadow:inset 4px 0 0 #a855f7}.attendance-staff-row.staff-cat-row-doctor .sticky-col{box-shadow:inset 4px 0 0 #f59e0b}.attendance-staff-row.staff-cat-row-other .sticky-col{box-shadow:inset 4px 0 0 #94a3b8}.attendance-cell-button{display:block;width:100%;height:100%;min-height:58px;border:0;background:transparent;color:inherit;padding:4px;cursor:pointer;font:inherit}.attendance-cell-button span{display:block;font-weight:900}.attendance-cell-button small{display:block;font-size:11px;line-height:1.25}.attendance-cell-button em{display:block;margin-top:2px;font-style:normal;font-size:10px;opacity:.65}.attendance-cell-button:hover{outline:2px solid rgba(37,99,235,.28);outline-offset:-2px;background:rgba(255,255,255,.38)}.attendance-edit-modal-card{max-width:860px}.modal-actions{display:flex;gap:10px;justify-content:flex-end;align-items:center}#attendanceDeleteForm{display:none}@media(max-width:900px){.modal-actions{justify-content:stretch;flex-direction:column}.modal-actions .btn{width:100%}}

/* v2.6.2 active menu + attendance bulk calendar */
.sidebar a.active,
.sidebar a.active:hover{background:linear-gradient(135deg,rgba(255,255,255,.24),rgba(255,255,255,.12));box-shadow:inset 4px 0 0 #fbbf24;color:#fff;font-weight:800}.side-nav .nav-icon{display:inline-block;width:22px;text-align:center;margin-right:4px}.dashboard-working-card h2{margin-top:0}.attendance-month-section{margin-bottom:18px}.attendance-bulk-form{display:grid!important;grid-template-columns:repeat(4,minmax(150px,1fr));gap:14px}.attendance-bulk-form label{display:block;font-size:13px}.span4{grid-column:span 4}.attendance-date-picker{background:#f8fafc;border:1px solid #e5e7eb;border-radius:14px;padding:12px}.attendance-picker-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px;flex-wrap:wrap}.attendance-picker-head .actions{display:flex;gap:6px;flex-wrap:wrap}.attendance-calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(42px,1fr));gap:6px}.att-cal-head{text-align:center;font-weight:800;font-size:12px;color:#475569;padding:5px}.att-cal-empty{min-height:42px}.att-cal-day{display:flex!important;align-items:center;justify-content:center;flex-direction:column;gap:2px;min-height:54px;border:1px solid #dbeafe;background:#fff;border-radius:10px;cursor:pointer;position:relative;font-weight:800;color:#1e3a8a}.att-cal-day input{position:absolute;left:6px;top:6px;width:auto!important;margin:0}.att-cal-day small{font-size:10px;color:#64748b}.att-cal-day.weekend{background:#fff7ed;border-color:#fed7aa;color:#9a3412}.att-cal-day.today{outline:2px solid #10b981;outline-offset:1px}.att-cal-day:has(input:checked){background:#dbeafe;border-color:#2563eb;color:#1d4ed8;box-shadow:0 6px 16px rgba(37,99,235,.18)}@supports not selector(:has(*)){.att-cal-day input:checked+span{color:#2563eb}}@media(max-width:900px){.attendance-bulk-form{grid-template-columns:1fr 1fr}.span4{grid-column:span 2}.attendance-calendar-grid{grid-template-columns:repeat(7,minmax(36px,1fr));gap:4px}.att-cal-day{min-height:48px}}@media(max-width:560px){.attendance-bulk-form{grid-template-columns:1fr}.span4{grid-column:span 1}.attendance-picker-head{align-items:flex-start}.attendance-calendar-grid{grid-template-columns:repeat(7,1fr)}.att-cal-day{min-height:42px;font-size:12px}}

/* v2.6.3 attendance nickname/sticky column + public working table */
.attendance-sheet-wrap{overflow:auto!important;position:relative}.attendance-sheet .sticky-col{position:sticky!important;left:0!important;z-index:6!important;background:#fff!important}.attendance-sheet th.sticky-col{z-index:8!important;background:#f8fafc!important}.attendance-sheet .staff-col{min-width:155px!important;max-width:190px!important}.attendance-name-cell{display:flex;flex-direction:column;gap:3px;white-space:nowrap}.attendance-name-cell b{font-size:18px;color:#0f172a;line-height:1.1}.attendance-name-cell small{font-size:10.5px;color:#64748b;line-height:1.1;overflow:hidden;text-overflow:ellipsis;max-width:160px}.staff-type-mini{display:inline-flex;width:max-content;align-items:center;border-radius:999px;padding:2px 7px;font-size:10px;font-weight:900;border:1px solid rgba(15,23,42,.08);line-height:1.1}.public-working-page{background:#f4f6fb}.public-working-shell{padding:22px;max-width:100vw}.public-working-head{margin-bottom:10px}.public-working-wrap{max-height:calc(100vh - 190px);box-shadow:0 8px 24px rgba(15,23,42,.08)}.public-working-note{padding:10px 2px}.public-attendance-sheet{font-size:12px}@media(max-width:900px){.attendance-sheet .staff-col{min-width:135px!important}.attendance-name-cell b{font-size:16px}.public-working-shell{padding:12px}.public-working-wrap{max-height:calc(100vh - 230px)}}


/* v2.6.4 stronger attendance sticky first column */
.attendance-sheet-wrap{overflow:auto!important;position:relative!important;max-width:100%;isolation:isolate}
.attendance-sheet-wrap .attendance-sheet{border-collapse:separate!important;border-spacing:0!important;overflow:visible!important;table-layout:auto!important}
.attendance-sheet-wrap .attendance-sheet th.sticky-col,
.attendance-sheet-wrap .attendance-sheet td.sticky-col{position:-webkit-sticky!important;position:sticky!important;left:0!important;z-index:20!important;background:#fff!important;min-width:170px!important;max-width:210px!important;box-shadow:8px 0 12px -12px rgba(15,23,42,.55)!important}
.attendance-sheet-wrap .attendance-sheet th.sticky-col{z-index:40!important;background:#f8fafc!important;top:0!important}
.attendance-sheet-wrap .attendance-sheet td.sticky-col{background-clip:padding-box!important}
.attendance-sheet-wrap .attendance-sheet .attendance-name-cell{display:flex!important;flex-direction:column!important;gap:3px!important;white-space:nowrap!important;min-width:0!important}
.attendance-sheet-wrap .attendance-sheet .attendance-name-cell b{font-size:18px;color:#0f172a;line-height:1.1}
.attendance-sheet-wrap .attendance-sheet .attendance-name-cell small{font-size:10.5px;color:#64748b;line-height:1.1;overflow:hidden;text-overflow:ellipsis;max-width:180px}
@media(max-width:900px){.attendance-sheet-wrap .attendance-sheet th.sticky-col,.attendance-sheet-wrap .attendance-sheet td.sticky-col{min-width:145px!important;max-width:165px!important}.attendance-sheet-wrap .attendance-sheet .attendance-name-cell b{font-size:16px}}

/* v2.7 patient nickname + compact working staff + payroll */
.patient-nickname{font-size:.68em;color:#64748b;font-weight:700}.working-staff-list.compact-working-list,.dashboard-working-card .working-staff-list,.appointment-working-card .working-staff-list{display:flex;flex-wrap:wrap;gap:6px;overflow-x:auto;padding-bottom:4px}.dashboard-working-card .working-pill,.appointment-working-card .working-pill{min-width:105px;max-width:135px;padding:6px 8px;border-radius:10px;gap:0;box-shadow:none}.dashboard-working-card .working-pill b,.appointment-working-card .working-pill b{font-size:14px;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dashboard-working-card .working-pill small,.appointment-working-card .working-pill small{font-size:10px;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media(max-width:700px){.dashboard-working-card .working-staff-list,.appointment-working-card .working-staff-list{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch}.dashboard-working-card .working-pill,.appointment-working-card .working-pill{flex:0 0 108px}}
.payroll-kpi-cards{margin:12px 0 18px}.payroll-dashboard-grid{display:grid;grid-template-columns:2fr 1fr;gap:16px;margin-bottom:16px}.payroll-bar-chart{height:260px;display:flex;align-items:flex-end;gap:12px;padding:20px 10px 4px;border-bottom:1px solid #e5e7eb}.payroll-bar-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;gap:6px}.payroll-bar-item .bar{width:100%;max-width:42px;background:linear-gradient(180deg,#38bdf8,#0284c7);border-radius:8px 8px 0 0;position:relative;min-height:4px}.payroll-bar-item .bar span{position:absolute;bottom:100%;left:50%;transform:translateX(-50%);font-size:10px;color:#64748b;white-space:nowrap}.payroll-bar-item small{font-size:11px;color:#475569}.payroll-role-list{display:flex;flex-direction:column;gap:10px}.payroll-role-list div{display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid #eef2f7;padding-bottom:8px}.payroll-role-list b{color:#0f766e}.payslip-print-body,.print-body{background:#d1d5db!important;padding:32px}.payslip-a5{background:#fff;width:210mm;max-width:100%;min-height:145mm;margin:auto;padding:18mm;box-sizing:border-box;color:#111827}.payslip-head{display:flex;justify-content:space-between;gap:22px;border-bottom:2px solid #111827;padding-bottom:10px}.payslip-logo{max-width:62px;max-height:62px;object-fit:contain}.payslip-head h1{font-size:24px;margin:0}.payslip-head h2{font-size:16px;margin:4px 0}.payslip-employee{padding:10px 0;border-bottom:1px solid #e5e7eb}.payslip-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:14px}.payslip-grid table,.wht50-doc table{width:100%;border-collapse:collapse}.payslip-grid th,.payslip-grid td,.wht50-doc th,.wht50-doc td{border:1px solid #111827;padding:6px 8px;text-align:left}.payslip-sign{display:flex;justify-content:space-between;margin-top:24px;gap:22px}.wht50-doc{background:#fff;width:210mm;max-width:100%;min-height:297mm;margin:auto;padding:15mm;box-sizing:border-box;color:#111827}.wht50-doc h1,.wht50-doc h2{text-align:center;margin:4px 0}.wht-box{border:1px solid #111827;padding:10px;margin:10px 0}.print-actions{position:fixed;right:16px;bottom:16px}.inline{display:inline}.white-card{background:#fff;border:1px solid #e5e7eb;border-radius:14px;padding:14px;margin:12px 0}@media(max-width:900px){.payroll-dashboard-grid{grid-template-columns:1fr}.payslip-grid{grid-template-columns:1fr}.payslip-a5,.wht50-doc{width:auto;padding:12mm}.print-body{padding:12px}}@media print{.sidebar,.topbar,.app-footer,.print-actions{display:none!important}.print-body,.payslip-print-body{background:#fff!important;padding:0!important}.payslip-a5{width:210mm;min-height:148mm;margin:0;box-shadow:none}.wht50-doc{width:210mm;min-height:297mm;margin:0;box-shadow:none}}

/* v2.8 PTWork Tabler UI Refresh — Medical Plum / Violet Rose */
:root{
  --primary:#3B1768;--primary-dark:#271044;--accent:#A0175D;--accent-rose:#C12A74;
  --bg:#F7F3FA;--card:#FFFFFF;--border:#E7DDEC;--text:#263041;--muted:#6B7280;
  --success:#16A34A;--warning:#F59E0B;--danger:#DC2626;--info:#2563EB;
  --radius:16px;--shadow:0 14px 35px rgba(59,23,104,.09);--shadow-soft:0 6px 20px rgba(39,16,68,.07);
}
html{background:var(--bg)}
body.ptwork-v28, body.app-shell{background:var(--bg)!important;color:var(--text)!important;font-family:'Prompt','Sarabun',sans-serif!important;}
.sidebar{width:264px!important;background:linear-gradient(180deg,var(--primary-dark),var(--primary) 50%,#4b1e78)!important;color:#fff!important;padding:18px 14px!important;box-shadow:14px 0 34px rgba(39,16,68,.22)!important;z-index:30!important;}
.main{margin-left:264px!important;min-height:100vh!important;display:flex!important;flex-direction:column!important;}
.content{padding:24px!important;flex:1 0 auto!important;}
.app-brand{min-height:78px!important;align-items:center!important;justify-content:center!important;padding:6px 8px 20px!important;margin-bottom:8px!important;border-bottom:1px solid rgba(255,255,255,.12)!important;}
.webapp-logo{max-width:210px!important;max-height:68px!important;filter:drop-shadow(0 8px 16px rgba(0,0,0,.2))!important;}
.side-nav{display:flex;flex-direction:column;gap:4px;}
.side-nav a,.sidebar a{display:flex!important;align-items:center!important;gap:10px!important;color:rgba(255,255,255,.88)!important;text-decoration:none!important;padding:10px 12px!important;border-radius:14px!important;margin:1px 0!important;font-weight:650!important;letter-spacing:.01em!important;transition:.16s ease!important;}
.sidebar a:hover{background:rgba(255,255,255,.12)!important;transform:translateX(2px);}
.sidebar a.active{background:linear-gradient(135deg,rgba(160,23,93,.98),rgba(193,42,116,.92))!important;color:#fff!important;box-shadow:0 10px 24px rgba(160,23,93,.32)!important;}
.nav-icon{width:24px;height:24px;display:inline-flex!important;align-items:center!important;justify-content:center!important;background:rgba(255,255,255,.12);border-radius:8px;font-size:14px;}
.sidebar a.active .nav-icon{background:rgba(255,255,255,.2)}
.topbar{height:66px!important;background:rgba(255,255,255,.9)!important;backdrop-filter:blur(10px);border-bottom:1px solid var(--border)!important;padding:0 24px!important;box-shadow:0 1px 0 rgba(255,255,255,.6)!important;}
.topbar-title{display:flex;flex-direction:column;line-height:1.1}.topbar-title b{font-size:20px!important;color:var(--primary-dark)!important}.topbar-title small{font-size:12px;color:var(--muted);margin-top:4px}.topbar-user{display:inline-flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--border);border-radius:999px;padding:7px 12px;color:var(--text);box-shadow:var(--shadow-soft)}.topbar-user em{font-style:normal;font-size:12px;color:#fff;background:var(--primary);border-radius:999px;padding:2px 8px}.menu-toggle{background:#fff!important;color:var(--primary)!important;border:1px solid var(--border)!important;border-radius:12px!important;box-shadow:var(--shadow-soft)!important;}
.page-head{margin-bottom:20px!important}.page-head h1,h1{color:var(--primary-dark)!important;font-weight:800!important;letter-spacing:-.02em!important}.page-head .actions{display:flex;gap:8px;flex-wrap:wrap}.card,.white-card,table,.toolbar,.form-grid fieldset,.modal-card,.login-card{background:var(--card)!important;border:1px solid var(--border)!important;border-radius:var(--radius)!important;box-shadow:var(--shadow-soft)!important;}
.card{padding:18px!important}.white-card{padding:16px!important}.cards{gap:18px!important}.card strong{color:var(--primary)!important}
.btn,button,.btn-small{border-radius:12px!important;font-weight:750!important;background:var(--accent)!important;color:#fff!important;border:1px solid transparent!important;box-shadow:0 8px 18px rgba(160,23,93,.18)!important;transition:.15s ease!important}.btn:hover,button:hover,.btn-small:hover{filter:brightness(.98);transform:translateY(-1px)}.btn.secondary,.secondary,.btn-small.light{background:#fff!important;color:var(--primary)!important;border-color:var(--border)!important;box-shadow:var(--shadow-soft)!important}.success,.btn.success,.btn-small.success{background:var(--success)!important;color:#fff!important}.danger,.btn.danger,.btn-small.danger{background:var(--danger)!important;color:#fff!important}.btn-small{padding:7px 10px!important;font-size:12px!important}
input,select,textarea{border:1px solid var(--border)!important;border-radius:12px!important;padding:10px 12px!important;background:#fff!important;color:var(--text)!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.6)!important}input:focus,select:focus,textarea:focus{outline:3px solid rgba(193,42,116,.14)!important;border-color:var(--accent-rose)!important}.toolbar{padding:14px!important}.form-grid fieldset{border-color:var(--border)!important}.form-grid legend,.section-title{background:linear-gradient(135deg,var(--primary),var(--accent))!important;color:#fff!important;border-radius:10px!important;padding:7px 12px!important;font-weight:800!important}
table{border-collapse:separate!important;border-spacing:0!important;overflow:hidden!important}th{background:#F1E8F5!important;color:var(--primary-dark)!important;font-weight:800!important;border-bottom:1px solid var(--border)!important}td{border-bottom:1px solid #F0E8F3!important}tr:hover td{background:#FCF8FE!important}.responsive-table-wrap,.appointment-table-wrap{border-radius:var(--radius);border:1px solid var(--border);box-shadow:var(--shadow-soft);background:#fff;overflow:auto}.responsive-table-wrap table,.appointment-table-wrap table{box-shadow:none!important;border:0!important;border-radius:0!important}.appointment-table th{background:linear-gradient(135deg,var(--primary),#552789)!important;color:#fff!important}.appointment-table .row-active td{background:#FCE7F1!important}.appointment-table .row-done td{background:#F3F0F6!important;color:#5b6472!important}.status-pill,.badge{border-radius:999px!important;padding:4px 10px!important;font-weight:750!important}.badge{background:#F1E8F5!important;color:var(--primary)!important}.status-paid,.status-completed{background:#DCFCE7!important;color:#166534!important}.status-cancelled{background:#FEE2E2!important;color:#991B1B!important}.status-scheduled{background:#EDE9FE!important;color:#5B21B6!important}.status-arrived,.status-in_treatment{background:#DBEAFE!important;color:#1E40AF!important}.course-status-course,.status-course{background:#FEF3C7!important;color:#92400E!important}
.modal{backdrop-filter:blur(4px)}.modal-card{border-radius:22px!important;box-shadow:0 30px 70px rgba(39,16,68,.26)!important}.modal-close{background:#F3EDF7!important;color:var(--primary)!important;box-shadow:none!important}
.kpi-card,.soft-kpi{border-radius:22px!important;box-shadow:0 16px 34px rgba(59,23,104,.1)!important}.kpi-total{background:linear-gradient(135deg,#16A34A,#34D399)!important;color:#fff!important}.kpi-doctor{background:linear-gradient(135deg,#3B1768,#7C3AED)!important;color:#fff!important}.kpi-physio{background:linear-gradient(135deg,#A0175D,#EC4899)!important;color:#fff!important}.kpi-period{background:linear-gradient(135deg,#2563EB,#60A5FA)!important;color:#fff!important}.kpi-blue-1{background:linear-gradient(135deg,#EEF2FF,#E0E7FF)!important;color:#3B1768!important}.kpi-blue-2{background:linear-gradient(135deg,#FCE7F3,#F3E8FF)!important;color:#861657!important}.kpi-blue-3{background:linear-gradient(135deg,#F5F3FF,#EDE9FE)!important;color:#5B21B6!important}.kpi-blue-4{background:linear-gradient(135deg,#E0F2FE,#F0F9FF)!important;color:#075985!important}.kpi-teal-1{background:linear-gradient(135deg,#DCFCE7,#CCFBF1)!important;color:#065F46!important}
.login-page{background:radial-gradient(circle at 20% 10%,rgba(193,42,116,.14),transparent 30%),linear-gradient(135deg,#F7F3FA 0%,#fff 55%,#F5EAF1 100%)!important;min-height:100vh!important;display:grid!important;place-items:center!important}.login-main{width:100%;min-height:100vh;display:grid;place-items:center}.login-card{width:min(440px,calc(100vw - 36px))!important;border-radius:24px!important;padding:32px!important;box-shadow:0 28px 70px rgba(59,23,104,.16)!important}.login-logo-wrap{text-align:center}.login-logo{max-width:270px!important;max-height:86px!important}.login-card h1{text-align:center;margin-top:12px!important}.login-subtitle{text-align:center;color:var(--muted)}.remember-login{display:flex!important;gap:8px;align-items:center}.remember-login input{width:auto!important}
.app-footer{color:var(--muted)!important;background:transparent!important;border-top:1px solid rgba(231,221,236,.8)!important;padding:14px 24px!important;text-align:center!important}.print-body{background:#cfd4dc!important;color:#111!important;font-family:'Prompt','Sarabun',sans-serif!important}.print-body .btn,.print-body button{box-shadow:none!important}.print-body table{box-shadow:none!important;border-radius:0!important;border-collapse:collapse!important}.print-body th{background:#fff!important;color:#111!important}
@media(max-width:900px){.sidebar{position:fixed!important;transform:translateX(-105%);transition:.2s ease;width:270px!important}.sidebar.open{transform:translateX(0)}.main{margin-left:0!important}.topbar{padding:0 14px!important}.topbar-title small{display:none}.topbar-user{max-width:48vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.content{padding:14px!important}.cards{grid-template-columns:1fr!important}.page-head{align-items:flex-start!important;flex-direction:column!important}.toolbar{display:grid!important;grid-template-columns:1fr!important}.toolbar input,.toolbar select{width:100%!important}.card{padding:14px!important}.modal-card{width:min(96vw,760px)!important}.side-nav a{padding:11px 12px!important}}
@media print{body.print-body{background:#fff!important}.print-actions,.app-footer,.sidebar,.topbar{display:none!important}}

/* v2.8 payroll print templates */
.payslip-template-v28{width:210mm;min-height:148mm;margin:18mm auto;background:#fff;padding:16mm 18mm;color:#111;box-shadow:none;border:0;font-size:12px}.ps-head{display:grid;grid-template-columns:1.1fr .9fr;gap:20mm;align-items:start;margin-bottom:10mm}.ps-company{display:grid;grid-template-columns:26mm 1fr;gap:8mm}.payslip-logo{max-width:25mm;max-height:25mm;object-fit:contain}.ps-company h2,.ps-title h1{margin:0 0 4mm;color:#111!important;font-size:20px}.ps-title h1{font-size:22px}.ps-company p,.ps-title p{margin:1mm 0}.ps-employee{border-top:1px solid #222;border-bottom:1px solid #222;padding:3mm 0;margin-bottom:6mm;line-height:1.7}.ps-employee span{margin-left:10mm}.ps-main{width:100%;border-collapse:collapse!important;border:1px solid #222!important;font-size:12px}.ps-main th,.ps-main td{border:1px solid #222!important;padding:2.2mm 3mm!important;background:#fff!important;color:#111!important}.ps-main td:nth-child(2),.ps-main td:nth-child(4),.ps-main td:nth-child(6){text-align:right}.ps-main small{font-size:10px}.ps-remarks{margin:5mm 0 8mm}.ps-sign{text-align:right;margin-top:2mm}.ps-confidential{text-align:center;border-top:1px solid #999;margin-top:8mm;padding-top:3mm;font-size:10px}.wht50-form-v28{width:190mm;margin:8mm auto;background:#fff;padding:6mm;color:#111;border:1px solid #222;font-size:12px}.wht50-form-v28 h1{font-size:20px!important;text-align:center!important;color:#111!important;margin:0!important}.wht50-form-v28 h2{font-size:14px;text-align:center;margin:1mm 0 3mm}.wht-top{display:flex;justify-content:space-between;gap:12mm;font-size:11px}.wht-party{border:1px solid #222;padding:2mm;margin-top:2mm;line-height:1.6}.tax-boxes{display:inline-flex;gap:1px;vertical-align:middle;margin-left:3mm}.tax-boxes i{display:inline-flex;width:5mm;height:5mm;border:1px solid #222;align-items:center;justify-content:center;font-style:normal}.box-check{display:inline-flex;width:4mm;height:4mm;border:1px solid #222;align-items:center;justify-content:center;margin:0 1mm}.wht-choice{border:1px solid #222;border-top:0;padding:2mm}.wht-table{width:100%;border-collapse:collapse!important;border:1px solid #222!important;margin-top:0}.wht-table th,.wht-table td{border:1px solid #222!important;background:#fff!important;color:#111!important;padding:1.6mm 2mm!important}.wht-table th{text-align:center!important}.wht-table td:nth-child(2){text-align:center;width:30mm}.wht-table td:nth-child(3),.wht-table td:nth-child(4){text-align:right;width:28mm}.wht-baht,.wht-footer-grid{border:1px solid #222;border-top:0;padding:2mm}.wht-sign{border:1px solid #222;border-top:0;padding:4mm;text-align:center;min-height:28mm}.wht-stamp{max-width:28mm;max-height:20mm;object-fit:contain;margin-top:2mm}@media print{.payslip-template-v28{width:210mm;height:148mm;margin:0!important;padding:13mm 16mm!important}.wht50-form-v28{margin:0 auto!important;box-shadow:none!important}.print-body{background:#fff!important}@page{size:A4;margin:8mm}.payslip-print-body @page{size:A4 landscape;margin:6mm}}


/* PTWork v2.8.1 */
.app-shell.ptwork-v28 .appointment-table thead th,
.app-shell.ptwork-v28 .appointment-table thead th a,
.app-shell.ptwork-v28 .appointment-table thead th .sortable-th,
.app-shell.ptwork-v28 .appointment-table thead th .sortable-th:visited,
.app-shell.ptwork-v28 .appointment-table thead th .sortable-th:hover,
.app-shell.ptwork-v28 .appointment-table thead th .sortable-th:active{color:#fff!important;text-decoration:none!important;}
.app-shell.ptwork-v28 .appointment-table thead th .sortable-th::after{color:#fff!important;}
.app-brand{background:transparent!important;box-shadow:none!important;border:0!important;}
.webapp-logo{object-fit:contain!important;background:transparent!important;filter:drop-shadow(0 8px 16px rgba(0,0,0,.18))!important;}
.print-preview-toolbar{position:sticky;top:0;z-index:50;display:flex;gap:8px;justify-content:flex-end;align-items:center;background:rgba(255,255,255,.94);border:1px solid #e5e7eb;border-radius:12px;padding:10px;margin:0 auto 12px;max-width:210mm;box-shadow:0 10px 28px rgba(15,23,42,.12)}
.payslip-template-v281{width:210mm;height:148mm;min-height:148mm;margin:8mm auto;background:#fff;padding:10mm 12mm;color:#111;box-shadow:0 12px 36px rgba(15,23,42,.18);border:0;font-size:11px;box-sizing:border-box;overflow:hidden}.payslip-template-v281 .ps-head{display:grid;grid-template-columns:1.15fr .85fr;gap:10mm;align-items:start;margin-bottom:5mm}.payslip-template-v281 .ps-company{display:grid;grid-template-columns:22mm 1fr;gap:6mm}.payslip-template-v281 .payslip-logo{max-width:20mm;max-height:20mm;object-fit:contain}.payslip-template-v281 .ps-company h2,.payslip-template-v281 .ps-title h1{margin:0 0 2mm;color:#111!important;font-size:17px}.payslip-template-v281 .ps-title h1{font-size:18px}.payslip-template-v281 .ps-company p,.payslip-template-v281 .ps-title p{margin:1mm 0}.payslip-template-v281 .ps-employee{border-top:1px solid #222;border-bottom:1px solid #222;padding:2mm 0;margin-bottom:4mm;line-height:1.55}.payslip-template-v281 .ps-employee span{margin-left:6mm}.payslip-template-v281 .ps-main{width:100%;border-collapse:collapse!important;border:1px solid #222!important;font-size:10.5px}.payslip-template-v281 .ps-main th,.payslip-template-v281 .ps-main td{border:1px solid #222!important;padding:1.3mm 2mm!important;background:#fff!important;color:#111!important}.payslip-template-v281 .ps-main td:nth-child(2),.payslip-template-v281 .ps-main td:nth-child(4),.payslip-template-v281 .ps-main td:nth-child(6){text-align:right}.payslip-template-v281 .ps-remarks{margin:3mm 0}.payslip-template-v281 .ps-sign{display:flex;justify-content:space-between;margin-top:4mm}.payslip-template-v281 .ps-confidential{text-align:center;border-top:1px solid #999;margin-top:4mm;padding-top:2mm;font-size:9px}
.wht50-form-v281{width:196mm;margin:4mm auto;background:#fff;padding:4mm;color:#111;border:1px solid #222;font-size:10.2px;line-height:1.25;box-sizing:border-box;box-shadow:0 12px 36px rgba(15,23,42,.18)}.wht50-form-v281 h1{font-size:18px!important;text-align:center!important;color:#111!important;margin:0!important}.wht50-form-v281 h2{font-size:12px;text-align:center;margin:1mm 0 2mm}.wht-top{display:flex;justify-content:space-between;gap:8mm;font-size:10px}.wht-party{border:1px solid #222;padding:1.5mm;margin-top:1.5mm;line-height:1.45}.tax-boxes{display:inline-flex;gap:1px;vertical-align:middle;margin-left:2mm}.tax-boxes i{display:inline-flex;width:4.7mm;height:4.7mm;border:1px solid #222;align-items:center;justify-content:center;font-style:normal}.box-check{display:inline-flex;width:4mm;height:4mm;border:1px solid #222;align-items:center;justify-content:center;margin:0 1mm;font-weight:bold}.wht-choice{border:1px solid #222;border-top:0;padding:1.5mm}.wht-table{width:100%;border-collapse:collapse!important;border:1px solid #222!important;margin-top:0}.wht-table th,.wht-table td{border:1px solid #222!important;background:#fff!important;color:#111!important;padding:1mm 1.3mm!important;vertical-align:top}.wht-table th{text-align:center!important}.wht-table td:nth-child(2){text-align:center;width:24mm}.wht-table td:nth-child(3),.wht-table td:nth-child(4){text-align:right;width:25mm}.wht-table .indent{padding-left:5mm!important}.wht-table .indent2{padding-left:8mm!important}.wht-table .indent3{padding-left:11mm!important;font-size:9.3px}.wht-baht,.wht-fund-row,.wht-tax-condition{border:1px solid #222;border-top:0;padding:1.5mm}.wht-sign-v281{border:1px solid #222;border-top:0;padding:2mm;display:grid;grid-template-columns:1fr 28mm 65mm;gap:4mm;align-items:center;min-height:24mm}.wht-warning{font-size:9.2px}.juristic-stamp-circle{width:24mm;height:24mm;border:1px dashed #555;border-radius:50%;display:flex;align-items:center;justify-content:center;text-align:center;font-size:9px;line-height:1.25}.wht-sign-text{text-align:center;font-size:10px}.wht-sign-text p{margin:1.2mm 0}.payroll-actions{white-space:nowrap}.payroll-period-info{line-height:1.6}
@media(max-width:900px){.print-preview-toolbar{position:static;flex-wrap:wrap}.payslip-template-v281,.wht50-form-v281{width:auto;height:auto;min-height:0;padding:8mm;margin:0 auto}.wht-sign-v281{grid-template-columns:1fr}.juristic-stamp-circle{margin:auto}.payslip-template-v281 .ps-head{grid-template-columns:1fr}.payslip-template-v281 .ps-company{grid-template-columns:1fr}.payslip-template-v281 .ps-employee span{display:block;margin-left:0}.payroll-actions .btn-small{margin-bottom:4px}}
@media print{.no-print,.print-preview-toolbar,.print-actions,.sidebar,.topbar,.app-footer{display:none!important}body.print-body,body.payslip-print-body{background:#fff!important;padding:0!important}.payslip-template-v281{width:210mm!important;height:148mm!important;margin:0!important;padding:8mm 10mm!important;box-shadow:none!important;break-inside:avoid;page-break-inside:avoid}.wht50-form-v281{width:196mm!important;margin:0 auto!important;padding:3.5mm!important;box-shadow:none!important;font-size:9.6px!important;line-height:1.2!important;break-inside:avoid;page-break-inside:avoid}.wht-table th,.wht-table td{padding:.8mm 1mm!important}.wht-sign-v281{min-height:22mm!important}@page{size:A4;margin:6mm}}

/* PTWork v2.8.3 */
.app-shell.ptwork-v28 .app-brand{background:transparent!important;border-bottom:1px solid rgba(255,255,255,.10)!important;box-shadow:none!important;overflow:visible!important;}
.app-shell.ptwork-v28 .webapp-logo{content:url('/assets/img/ptwork-logo-clean.png?v=2.8.3');max-width:224px!important;max-height:74px!important;width:100%!important;object-fit:contain!important;background:transparent!important;filter:drop-shadow(0 8px 16px rgba(0,0,0,.16))!important;}
@media(max-width:900px){
  body.sidebar-open{overflow:hidden;}
  body.sidebar-open .sidebar{transform:translateX(0)!important;}
  body.sidebar-open::after{content:'';position:fixed;inset:0;background:rgba(15,23,42,.35);z-index:25;}
  body.sidebar-open .sidebar{z-index:40!important;}
  .dashboard-summary-cards{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:10px!important;}
  .dashboard-summary-cards .card{padding:12px!important;border-radius:18px!important;min-width:0!important;}
  .dashboard-summary-cards .card b{font-size:12.5px!important;line-height:1.25!important;white-space:normal!important;}
  .dashboard-summary-cards .card strong{font-size:22px!important;line-height:1.15!important;word-break:break-word;}
  .dashboard-summary-cards .kpi-total{grid-column:span 2;}
}
.print-preview-toolbar{position:sticky!important;top:0!important;left:0!important;right:0!important;z-index:100!important;display:flex!important;align-items:center!important;justify-content:space-between!important;gap:12px!important;width:100%!important;max-width:none!important;margin:0 0 14px!important;padding:10px 18px!important;background:rgba(255,255,255,.98)!important;border:0!important;border-bottom:1px solid #e5e7eb!important;border-radius:0!important;box-shadow:0 8px 24px rgba(15,23,42,.12)!important;}
.print-preview-toolbar .preview-title{font-weight:800;color:#3B1768;font-size:16px;}
.print-preview-toolbar .preview-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end;}
.print-preview-toolbar .btn{padding:9px 14px!important;}
.wht50-form-v283{width:200mm;min-height:287mm;margin:4mm auto;background:#fff;padding:3.5mm 4.5mm;color:#111;border:1px solid #222;font-size:9.25px;line-height:1.16;box-sizing:border-box;box-shadow:0 12px 36px rgba(15,23,42,.18);overflow:hidden;}
.wht50-form-v283 h1{font-size:17px!important;text-align:center!important;color:#111!important;margin:0!important;line-height:1.15!important;}
.wht50-form-v283 h2{font-size:11.4px;text-align:center;margin:.6mm 0 1.4mm;line-height:1.1;}
.wht50-form-v283 .wht-top{display:flex;justify-content:space-between;gap:7mm;font-size:8.8px;line-height:1.18;}
.wht50-form-v283 .wht-party{border:1px solid #222;padding:1.1mm 1.3mm;margin-top:1mm;line-height:1.3;}
.wht50-form-v283 .tax-boxes{display:inline-flex;gap:1px;vertical-align:middle;margin-left:1.5mm;}
.wht50-form-v283 .tax-boxes i{display:inline-flex;width:4.35mm;height:4.35mm;border:1px solid #222;align-items:center;justify-content:center;font-style:normal;}
.wht50-form-v283 .box-check{display:inline-flex;width:3.8mm;height:3.8mm;border:1px solid #222;align-items:center;justify-content:center;margin:0 .7mm;font-weight:bold;}
.wht50-form-v283 .wht-choice{border:1px solid #222;border-top:0;padding:1.1mm 1.3mm;line-height:1.25;}
.wht50-form-v283 .wht-table{width:100%;border-collapse:collapse!important;border:1px solid #222!important;margin-top:0;table-layout:fixed!important;}
.wht50-form-v283 .wht-col-type{width:137mm;}.wht50-form-v283 .wht-col-date{width:21mm;}.wht50-form-v283 .wht-col-amount{width:20mm;}.wht50-form-v283 .wht-col-tax{width:20mm;}
.wht50-form-v283 .wht-table th,.wht50-form-v283 .wht-table td{border:1px solid #222!important;background:#fff!important;color:#111!important;padding:.65mm .85mm!important;vertical-align:top!important;line-height:1.12!important;}
.wht50-form-v283 .wht-table th{text-align:center!important;font-size:9.4px!important;line-height:1.12!important;}
.wht50-form-v283 .wht-table td:nth-child(2){text-align:center;}.wht50-form-v283 .wht-table td:nth-child(3),.wht50-form-v283 .wht-table td:nth-child(4){text-align:right;}
.wht50-form-v283 .wht-table .indent{padding-left:3.6mm!important}.wht50-form-v283 .wht-table .indent2{padding-left:5.8mm!important}.wht50-form-v283 .wht-table .indent3{padding-left:7.5mm!important;font-size:8.55px!important;}
.wht50-form-v283 .wht-baht,.wht50-form-v283 .wht-fund-row,.wht50-form-v283 .wht-tax-condition{border:1px solid #222;border-top:0;padding:1.05mm 1.3mm;line-height:1.25;}
.wht50-form-v283 .wht-sign-v281{border:1px solid #222;border-top:0;padding:1.3mm;display:grid;grid-template-columns:1fr 24mm 62mm;gap:3mm;align-items:center;min-height:20mm;}
.wht50-form-v283 .wht-warning{font-size:8.2px;line-height:1.18;}
.wht50-form-v283 .juristic-stamp-circle{width:22mm;height:22mm;border:1px dashed #555;border-radius:50%;display:flex;align-items:center;justify-content:center;text-align:center;font-size:8px;line-height:1.18;}
.wht50-form-v283 .wht-sign-text{text-align:center;font-size:8.8px;line-height:1.18;}.wht50-form-v283 .wht-sign-text p{margin:.9mm 0;}
@media(max-width:900px){
  .print-preview-toolbar{position:sticky!important;flex-direction:column!important;align-items:stretch!important;gap:8px!important;padding:10px 12px!important;}
  .print-preview-toolbar .preview-actions{justify-content:flex-start!important;}
  .wht50-form-v283{width:auto!important;min-height:0!important;height:auto!important;margin:0 auto!important;padding:8mm!important;font-size:10px!important;line-height:1.25!important;overflow:visible!important;}
  .wht50-form-v283 .wht-sign-v281{grid-template-columns:1fr!important;}.wht50-form-v283 .juristic-stamp-circle{margin:auto;}
}
@media print{
  .no-print,.print-preview-toolbar{display:none!important;}
  .wht50-form-v283{width:200mm!important;min-height:287mm!important;margin:0 auto!important;padding:3mm 4mm!important;box-shadow:none!important;font-size:8.9px!important;line-height:1.12!important;break-inside:avoid;page-break-inside:avoid;}
  .wht50-form-v283 .wht-table th,.wht50-form-v283 .wht-table td{padding:.55mm .75mm!important;line-height:1.08!important;}
  .wht50-form-v283 .wht-sign-v281{min-height:19mm!important;}
  @page{size:A4;margin:5mm;}
}


/* PTWork v2.8.4 */
.app-shell.ptwork-v28 .webapp-logo{
  content:url('/assets/img/ptwork-logo-clean.png?v=2.8.4');
  max-width:232px!important;
  max-height:76px!important;
  width:auto!important;
  background:transparent!important;
  filter:drop-shadow(0 6px 12px rgba(0,0,0,.10))!important;
}
.print-preview-toolbar{
  position:sticky!important;
  top:8px!important;
  left:auto!important;
  right:auto!important;
  z-index:120!important;
  display:flex!important;
  align-items:center!important;
  justify-content:space-between!important;
  gap:10px!important;
  width:min(680px,calc(100% - 24px))!important;
  max-width:680px!important;
  margin:10px auto 12px!important;
  padding:8px 12px!important;
  background:rgba(255,255,255,.98)!important;
  border:1px solid #e5e7eb!important;
  border-radius:999px!important;
  box-shadow:0 10px 28px rgba(15,23,42,.14)!important;
}
.print-preview-toolbar .preview-title{font-weight:800;color:#3B1768;font-size:14px;white-space:nowrap;}
.print-preview-toolbar .preview-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap;justify-content:flex-end;}
.print-preview-toolbar .btn{padding:6px 11px!important;font-size:13px!important;line-height:1.2!important;border-radius:999px!important;}
.payslip-template-v281{margin:6px auto 14px!important;width:210mm!important;height:148mm!important;min-height:148mm!important;padding:9mm 10mm!important;}
.wht50-form-v284{width:196mm;min-height:287mm;margin:4mm auto 10mm;background:#fff;padding:3.2mm 3.6mm;color:#111;border:1px solid #222;font-size:9.15px;line-height:1.14;box-sizing:border-box;box-shadow:0 12px 36px rgba(15,23,42,.18);overflow:hidden;}
.wht50-form-v284 h1{font-size:17px!important;text-align:center!important;color:#111!important;margin:0!important;line-height:1.1!important;}
.wht50-form-v284 h2{font-size:11.2px;text-align:center;margin:.6mm 0 1.2mm;line-height:1.08;}
.wht50-form-v284 .wht-top{display:flex;justify-content:space-between;gap:7mm;font-size:8.8px;line-height:1.16;}
.wht50-form-v284 .wht-party{border:1px solid #222;padding:1.1mm 1.3mm;margin-top:1mm;line-height:1.28;}
.wht50-form-v284 .tax-boxes{display:inline-flex;gap:1px;vertical-align:middle;margin-left:1.5mm;}
.wht50-form-v284 .tax-boxes i{display:inline-flex;width:4.45mm;height:4.45mm;border:1px solid #222;align-items:center;justify-content:center;font-style:normal;}
.wht50-form-v284 .box-check{display:inline-flex;width:3.9mm;height:3.9mm;border:1px solid #222;align-items:center;justify-content:center;margin:0 .7mm;font-weight:bold;}
.wht50-form-v284 .wht-choice{border:1px solid #222;border-top:0;padding:1.1mm 1.3mm;line-height:1.22;}
.wht50-form-v284 .wht-table{width:100%;border-collapse:collapse!important;border:1px solid #222!important;margin-top:0;table-layout:fixed!important;}
.wht50-form-v284 .wht-col-type{width:133mm;}
.wht50-form-v284 .wht-col-date{width:21mm;}
.wht50-form-v284 .wht-col-amount{width:19mm;}
.wht50-form-v284 .wht-col-tax{width:19mm;}
.wht50-form-v284 .wht-table th,.wht50-form-v284 .wht-table td{border:1px solid #222!important;background:#fff!important;color:#111!important;padding:.6mm .8mm!important;vertical-align:top!important;line-height:1.1!important;}
.wht50-form-v284 .wht-table th{text-align:center!important;font-size:9.15px!important;line-height:1.1!important;}
.wht50-form-v284 .wht-table td:nth-child(2){text-align:center;}
.wht50-form-v284 .wht-table td:nth-child(3),.wht50-form-v284 .wht-table td:nth-child(4){text-align:right;}
.wht50-form-v284 .wht-table .indent{padding-left:3.8mm!important;}
.wht50-form-v284 .wht-table .indent2{padding-left:5.8mm!important;}
.wht50-form-v284 .wht-table .indent3{padding-left:7.4mm!important;font-size:8.45px!important;}
.wht50-form-v284 .wht-baht,.wht50-form-v284 .wht-fund-row,.wht50-form-v284 .wht-tax-condition{border:1px solid #222;border-top:0;padding:1mm 1.3mm;line-height:1.18;}
.wht50-form-v284 .wht-sign-v281{border:1px solid #222;border-top:0;padding:1.3mm;display:grid;grid-template-columns:1fr 24mm 62mm;gap:3mm;align-items:center;min-height:20mm;}
.wht50-form-v284 .wht-warning{font-size:8.15px;line-height:1.15;}
.wht50-form-v284 .juristic-stamp-circle{width:22mm;height:22mm;border:1px dashed #555;border-radius:50%;display:flex;align-items:center;justify-content:center;text-align:center;font-size:7.9px;line-height:1.15;}
.wht50-form-v284 .wht-sign-text{text-align:center;font-size:8.75px;line-height:1.15;}
.wht50-form-v284 .wht-sign-text p{margin:.9mm 0;}
@media(max-width:900px){
  .print-preview-toolbar{top:6px!important;width:calc(100% - 16px)!important;max-width:none!important;margin:8px auto 10px!important;padding:8px 10px!important;border-radius:16px!important;flex-direction:row!important;align-items:center!important;}
  .print-preview-toolbar .preview-title{font-size:13px!important;}
  .print-preview-toolbar .preview-actions{justify-content:flex-end!important;gap:6px!important;}
  .print-preview-toolbar .btn{padding:6px 10px!important;font-size:12px!important;}
  .dashboard-summary-cards,.payroll-kpi-cards{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:10px!important;}
  .dashboard-summary-cards .card,.payroll-kpi-cards .card{padding:12px!important;border-radius:18px!important;min-width:0!important;}
  .dashboard-summary-cards .card b,.payroll-kpi-cards .card b{font-size:12.5px!important;line-height:1.25!important;white-space:normal!important;}
  .dashboard-summary-cards .card strong,.payroll-kpi-cards .card strong{font-size:22px!important;line-height:1.15!important;word-break:break-word;}
  .dashboard-summary-cards .kpi-total{grid-column:span 2;}
  .payroll-kpi-cards .kpi-total{grid-column:auto!important;order:0!important;}
  .wht50-form-v284{width:auto!important;min-height:0!important;height:auto!important;margin:0 auto!important;padding:8mm!important;font-size:9.9px!important;line-height:1.22!important;overflow:visible!important;}
  .wht50-form-v284 .wht-sign-v281{grid-template-columns:1fr!important;}
  .wht50-form-v284 .juristic-stamp-circle{margin:auto;}
}
@media print{
  .no-print,.print-preview-toolbar{display:none!important;}
  .payslip-template-v281{width:210mm!important;height:148mm!important;min-height:148mm!important;margin:0!important;padding:8mm 10mm!important;box-shadow:none!important;}
  .wht50-form-v284{width:196mm!important;min-height:287mm!important;margin:0 auto!important;padding:3mm 3.4mm!important;box-shadow:none!important;font-size:8.8px!important;line-height:1.08!important;break-inside:avoid;page-break-inside:avoid;}
  .wht50-form-v284 .wht-table th,.wht50-form-v284 .wht-table td{padding:.52mm .72mm!important;line-height:1.04!important;}
  .wht50-form-v284 .wht-sign-v281{min-height:18.5mm!important;}
  @page{size:A4;margin:5mm;}
}


/* PTWork v2.8.5 */
.app-shell.ptwork-v28 .webapp-logo{content:url('/assets/img/ptwork-logo-clean.png?v=2.8.6');max-width:232px!important;max-height:78px!important;width:auto!important;object-fit:contain!important;filter:drop-shadow(0 6px 14px rgba(0,0,0,.16))!important;}
.doc-preview-body{background:#d8dde3!important;padding:0!important;}
.doc-preview-shell{min-height:100vh;display:flex;flex-direction:column;}
.doc-preview-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 16px;background:#fff;border-bottom:1px solid #d1d5db;position:sticky;top:0;z-index:50;}
.doc-preview-code{font-size:18px;font-weight:800;color:#2b8fc9;letter-spacing:.2px;}
.doc-preview-header-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.doc-preview-header-actions .btn{padding:10px 18px!important;border-radius:6px!important;}
.doc-preview-main{display:grid;grid-template-columns:minmax(0,1fr) 250px;gap:18px;align-items:start;padding:22px 18px 26px;flex:1;}
.doc-preview-stage{background:#d8dde3;display:flex;justify-content:center;align-items:flex-start;min-width:0;overflow:auto;padding-right:10px;}
.doc-preview-side{background:#fff;border-left:1px solid #d1d5db;min-height:calc(100vh - 78px);padding:18px 16px;position:sticky;top:63px;}
.doc-preview-side label{display:block;font-weight:700;color:#374151;}
.doc-preview-side select{margin-top:10px;width:100%;}
.payslip-template-v281{margin:6px auto 18px!important;box-shadow:none!important;border:1px solid #cfd4dc!important;}
.wht50-form-v285{width:186mm;min-height:287mm;margin:6px auto 18px;background:#fff;padding:3.4mm 3.8mm;color:#111;border:1px solid #222;font-size:9.2px;line-height:1.18;box-sizing:border-box;box-shadow:none!important;overflow:hidden;}
.wht50-form-v285 h1{font-size:17px!important;text-align:center!important;color:#111!important;margin:0!important;line-height:1.1!important;}
.wht50-form-v285 h2{font-size:11.1px;text-align:center;margin:.7mm 0 1.5mm;line-height:1.12;}
.wht50-form-v285 .wht-top{display:flex;justify-content:space-between;gap:7mm;font-size:8.7px;line-height:1.2;}
.wht50-form-v285 .wht-party{border:1px solid #222;padding:1.2mm 1.4mm;margin-top:1.1mm;line-height:1.34;}
.wht50-form-v285 .tax-boxes{display:inline-flex;gap:1px;vertical-align:middle;margin-left:1.5mm;}
.wht50-form-v285 .tax-boxes i{display:inline-flex;width:4.35mm;height:4.35mm;border:1px solid #222;align-items:center;justify-content:center;font-style:normal;}
.wht50-form-v285 .box-check{display:inline-flex;width:3.8mm;height:3.8mm;border:1px solid #222;align-items:center;justify-content:center;margin:0 .7mm;font-weight:bold;}
.wht50-form-v285 .wht-choice{border:1px solid #222;border-top:0;padding:1.2mm 1.4mm;line-height:1.28;}
.wht50-form-v285 .wht-table{width:100%;border-collapse:collapse!important;border:1px solid #222!important;margin-top:0;table-layout:fixed!important;}
.wht50-form-v285 .wht-col-type{width:126mm;}.wht50-form-v285 .wht-col-date{width:22mm;}.wht50-form-v285 .wht-col-amount{width:18mm;}.wht50-form-v285 .wht-col-tax{width:18mm;}
.wht50-form-v285 .wht-table th,.wht50-form-v285 .wht-table td{border:1px solid #222!important;background:#fff!important;color:#111!important;padding:1.0mm .9mm!important;vertical-align:top!important;line-height:1.22!important;}
.wht50-form-v285 .wht-table th{text-align:center!important;font-size:9.1px!important;line-height:1.15!important;}
.wht50-form-v285 .wht-table td:nth-child(2){text-align:center;}.wht50-form-v285 .wht-table td:nth-child(3),.wht50-form-v285 .wht-table td:nth-child(4){text-align:right;}
.wht50-form-v285 .wht-table tbody tr{min-height:7.2mm!important;}
.wht50-form-v285 .wht-table .indent{padding-left:3.8mm!important}.wht50-form-v285 .wht-table .indent2{padding-left:5.7mm!important}.wht50-form-v285 .wht-table .indent3{padding-left:7.2mm!important;font-size:8.55px!important;line-height:1.2!important;}
.wht50-form-v285 .wht-baht,.wht50-form-v285 .wht-fund-row,.wht50-form-v285 .wht-tax-condition{border:1px solid #222;border-top:0;padding:1.2mm 1.4mm;line-height:1.25;}
.wht50-form-v285 .wht-sign-v281{border:1px solid #222;border-top:0;padding:1.5mm;display:grid;grid-template-columns:1fr 24mm 62mm;gap:3mm;align-items:center;min-height:22mm;}
.wht50-form-v285 .wht-warning{font-size:8.2px;line-height:1.18;}
.wht50-form-v285 .juristic-stamp-circle{width:22mm;height:22mm;border:1px dashed #555;border-radius:50%;display:flex;align-items:center;justify-content:center;text-align:center;font-size:8px;line-height:1.14;}
.wht50-form-v285 .wht-sign-text{text-align:center;font-size:8.75px;line-height:1.18;}.wht50-form-v285 .wht-sign-text p{margin:.95mm 0;}
@media(max-width:1100px){.doc-preview-main{grid-template-columns:1fr;}.doc-preview-side{min-height:auto;position:static;border-left:0;border-top:1px solid #d1d5db;}}
@media(max-width:900px){.doc-preview-header{padding:10px 12px;}.doc-preview-code{font-size:16px;}.doc-preview-header-actions{gap:8px;}.doc-preview-header-actions .btn{padding:8px 12px!important;}.doc-preview-main{padding:12px 10px 20px;gap:12px;}.doc-preview-stage{padding-right:0;overflow:auto;}.payslip-template-v281{width:210mm!important;min-width:210mm!important;}.wht50-form-v285{width:186mm!important;min-width:186mm!important;margin:0 auto!important;}.doc-preview-side{padding:12px;}}
@media print{body.doc-preview-body{background:#fff!important;padding:0!important;}.doc-preview-header,.doc-preview-side{display:none!important;}.doc-preview-main{display:block!important;padding:0!important;}.doc-preview-stage{display:block!important;padding:0!important;overflow:visible!important;background:#fff!important;}.payslip-template-v281{width:210mm!important;height:148mm!important;min-height:148mm!important;margin:0!important;padding:8mm 10mm!important;box-shadow:none!important;border:0!important;}.wht50-form-v285{width:186mm!important;min-height:287mm!important;margin:0 auto!important;padding:3.2mm 3.5mm!important;box-shadow:none!important;font-size:8.95px!important;line-height:1.12!important;break-inside:avoid;page-break-inside:avoid;}.wht50-form-v285 .wht-table th,.wht50-form-v285 .wht-table td{padding:.9mm .8mm!important;line-height:1.16!important;}.wht50-form-v285 .wht-sign-v281{min-height:20mm!important;}@page{size:A4;margin:5mm;}}


/* PTWork v2.8.6 */
.app-shell.ptwork-v28 .webapp-logo{content:url('/assets/img/ptwork-logo-clean.png?v=2.8.6')!important;}
.doc-preview-body{height:100vh!important;overflow:hidden!important;background:#d8dde3!important;}
.doc-preview-shell{height:100vh!important;width:100vw!important;max-width:none!important;overflow:hidden!important;}
.doc-preview-header{position:relative!important;top:auto!important;width:100%!important;box-sizing:border-box!important;min-height:58px!important;padding:8px 16px!important;}
.doc-preview-main{display:grid!important;grid-template-columns:minmax(0,1fr) 260px!important;gap:0!important;width:100vw!important;height:calc(100vh - 58px)!important;padding:0!important;overflow:hidden!important;}
.doc-preview-stage{height:calc(100vh - 58px)!important;width:100%!important;overflow:auto!important;padding:18px 20px!important;box-sizing:border-box!important;background:#d8dde3!important;align-items:flex-start!important;}
.doc-preview-side{position:static!important;top:auto!important;height:calc(100vh - 58px)!important;min-height:0!important;overflow:auto!important;border-left:1px solid #cbd5e1!important;border-top:0!important;box-sizing:border-box!important;}
.wht50-form-v285,.wht50-form-v286{width:180mm!important;min-height:287mm!important;margin:0 auto 18px!important;padding:3.2mm 3.4mm!important;font-size:8.85px!important;line-height:1.16!important;box-sizing:border-box!important;overflow:hidden!important;}
.wht50-form-v285{ /* legacy class in case cached view is loaded */ }
.wht50-form-v285 .wht-col-type,.wht50-form-v286 .wht-col-type{width:118mm!important;}
.wht50-form-v285 .wht-col-date,.wht50-form-v286 .wht-col-date{width:21mm!important;}
.wht50-form-v285 .wht-col-amount,.wht50-form-v286 .wht-col-amount{width:18mm!important;}
.wht50-form-v285 .wht-col-tax,.wht50-form-v286 .wht-col-tax{width:18mm!important;}
.wht50-form-v285 .wht-table,.wht50-form-v286 .wht-table{width:100%!important;table-layout:fixed!important;}
.wht50-form-v285 .wht-table th,.wht50-form-v285 .wht-table td,.wht50-form-v286 .wht-table th,.wht50-form-v286 .wht-table td{padding:.95mm .72mm!important;line-height:1.18!important;word-break:break-word!important;overflow-wrap:anywhere!important;}
.wht50-form-v285 .wht-table th,.wht50-form-v286 .wht-table th{font-size:8.85px!important;line-height:1.12!important;}
.wht50-form-v285 .wht-party,.wht50-form-v286 .wht-party{padding:1.05mm 1.25mm!important;line-height:1.26!important;}
.wht50-form-v285 .wht-choice,.wht50-form-v286 .wht-choice{padding:1.05mm 1.25mm!important;line-height:1.2!important;}
.wht50-form-v285 .wht-table .indent3,.wht50-form-v286 .wht-table .indent3{font-size:8.05px!important;line-height:1.15!important;padding-left:6.6mm!important;}
.wht50-form-v285 .wht-table .indent2,.wht50-form-v286 .wht-table .indent2{padding-left:5.1mm!important;}
.wht50-form-v285 .wht-table .indent,.wht50-form-v286 .wht-table .indent{padding-left:3.4mm!important;}
.wht50-form-v285 .wht-baht,.wht50-form-v285 .wht-fund-row,.wht50-form-v285 .wht-tax-condition,.wht50-form-v286 .wht-baht,.wht50-form-v286 .wht-fund-row,.wht50-form-v286 .wht-tax-condition{padding:1.05mm 1.25mm!important;line-height:1.18!important;}
.wht50-form-v285 .wht-sign-v281,.wht50-form-v286 .wht-sign-v281{min-height:20mm!important;grid-template-columns:1fr 23mm 58mm!important;gap:2.5mm!important;}
@media(max-width:1100px){.doc-preview-main{grid-template-columns:1fr!important;}.doc-preview-side{display:none!important;}.doc-preview-stage{height:calc(100vh - 58px)!important;}.wht50-form-v285,.wht50-form-v286{min-width:180mm!important;}}
@media(max-width:900px){.doc-preview-header{min-height:54px!important;padding:8px 10px!important;}.doc-preview-main,.doc-preview-stage{height:calc(100vh - 54px)!important;}.doc-preview-stage{padding:12px!important;}.doc-preview-header-actions .btn{padding:7px 10px!important;}.doc-preview-code{font-size:15px!important;}}
@media print{body.doc-preview-body{height:auto!important;overflow:visible!important;background:#fff!important;}.doc-preview-shell{height:auto!important;width:auto!important;overflow:visible!important;}.doc-preview-main{display:block!important;height:auto!important;width:auto!important;padding:0!important;overflow:visible!important;}.doc-preview-stage{display:block!important;height:auto!important;width:auto!important;padding:0!important;overflow:visible!important;background:#fff!important;}.wht50-form-v285,.wht50-form-v286{width:180mm!important;min-height:287mm!important;margin:0 auto!important;padding:3mm 3.2mm!important;font-size:8.55px!important;line-height:1.1!important;box-shadow:none!important;}.wht50-form-v285 .wht-table th,.wht50-form-v285 .wht-table td,.wht50-form-v286 .wht-table th,.wht50-form-v286 .wht-table td{padding:.82mm .62mm!important;line-height:1.12!important;}@page{size:A4;margin:6mm;}}


/* PTWork v2.8.7 */
.app-shell.ptwork-v28 .app-brand{justify-content:flex-start!important;padding:6px 8px 18px!important;min-height:84px!important;}
.app-shell.ptwork-v28 .webapp-logo{content:url('/assets/img/ptwork-logo-clean.png?v=2.8.7')!important;max-width:260px!important;max-height:96px!important;width:100%!important;object-fit:contain!important;filter:drop-shadow(0 6px 14px rgba(0,0,0,.20))!important;}
.appointment-note-presets{display:flex;flex-wrap:wrap;gap:6px;margin-top:7px;}
.appointment-note-presets .btn-mini{border:1px solid #d8c6ee;background:#faf5ff;color:#4c1d95;border-radius:999px;padding:5px 9px;font-size:12px;font-weight:700;cursor:pointer;}
.appointment-note-presets .btn-mini:hover{background:#f3e8ff;border-color:#a855f7;}
.doc-preview-body{height:100vh!important;overflow:hidden!important;background:#d8dde3!important;}
.doc-preview-shell{height:100vh!important;width:100vw!important;max-width:none!important;overflow:hidden!important;}
.doc-preview-header{position:relative!important;top:auto!important;width:100%!important;box-sizing:border-box!important;min-height:54px!important;padding:7px 16px!important;background:#fff!important;}
.doc-preview-code{font-size:17px!important;color:#1684c7!important;font-weight:800!important;}
.doc-preview-main{display:grid!important;grid-template-columns:minmax(0,1fr) 240px!important;gap:0!important;width:100vw!important;height:calc(100vh - 54px)!important;padding:0!important;overflow:hidden!important;}
.doc-preview-stage{height:calc(100vh - 54px)!important;width:100%!important;overflow:auto!important;padding:18px 20px!important;box-sizing:border-box!important;background:#d8dde3!important;align-items:flex-start!important;justify-content:center!important;}
.doc-preview-side{position:static!important;top:auto!important;height:calc(100vh - 54px)!important;min-height:0!important;overflow:auto!important;border-left:1px solid #cbd5e1!important;border-top:0!important;box-sizing:border-box!important;background:#fff!important;}
.wht50-form-v287{width:210mm!important;height:297mm!important;min-height:297mm!important;margin:0 auto 18px!important;padding:8mm 9mm!important;background:#fff!important;color:#111!important;border:0!important;font-size:8.45px!important;line-height:1.12!important;box-sizing:border-box!important;box-shadow:0 2px 6px rgba(15,23,42,.20)!important;overflow:hidden!important;display:flex!important;flex-direction:column!important;}
.wht50-form-v287 *{box-sizing:border-box!important;}
.wht50-form-v287 .wht-page-content{width:100%;display:block;}
.wht50-form-v287 h1{font-size:16px!important;line-height:1.05!important;text-align:center!important;color:#111!important;margin:0!important;}
.wht50-form-v287 h2{font-size:10px!important;text-align:center!important;line-height:1.05!important;margin:.6mm 0 1.2mm!important;}
.wht50-form-v287 .wht-top{display:flex!important;justify-content:space-between!important;gap:6mm!important;font-size:7.7px!important;line-height:1.12!important;margin:0!important;}
.wht50-form-v287 .wht-party,.wht50-form-v287 .wht-choice,.wht50-form-v287 .wht-table,.wht50-form-v287 .wht-baht,.wht50-form-v287 .wht-fund-row,.wht50-form-v287 .wht-tax-condition,.wht50-form-v287 .wht-sign-v287{width:100%!important;max-width:100%!important;}
.wht50-form-v287 .wht-party{border:1px solid #222!important;padding:.85mm 1mm!important;margin-top:.9mm!important;line-height:1.16!important;}
.wht50-form-v287 .tax-boxes{display:inline-flex!important;gap:1px!important;vertical-align:middle!important;margin-left:1mm!important;}
.wht50-form-v287 .tax-boxes i{display:inline-flex!important;width:4mm!important;height:4mm!important;border:1px solid #222!important;align-items:center!important;justify-content:center!important;font-style:normal!important;font-size:8px!important;}
.wht50-form-v287 .box-check{display:inline-flex!important;width:3.6mm!important;height:3.6mm!important;border:1px solid #222!important;align-items:center!important;justify-content:center!important;margin:0 .5mm!important;font-weight:bold!important;font-style:normal!important;line-height:1!important;vertical-align:middle!important;}
.wht50-form-v287 .wht-choice-v287{border:1px solid #222!important;border-top:0!important;padding:.85mm 1mm!important;line-height:1.14!important;}
.wht50-form-v287 .wht-seq{margin-bottom:.8mm!important;white-space:nowrap!important;}
.wht50-form-v287 .wht-choice-options{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;column-gap:3mm!important;row-gap:.75mm!important;align-items:center!important;}
.wht50-form-v287 .wht-choice-options span{white-space:nowrap!important;display:flex!important;align-items:center!important;}
.wht50-form-v287 .wht-table{border-collapse:collapse!important;border:1px solid #222!important;margin:0!important;table-layout:fixed!important;}
.wht50-form-v287 .wht-col-type{width:63%!important;}.wht50-form-v287 .wht-col-date{width:13%!important;}.wht50-form-v287 .wht-col-amount{width:12%!important;}.wht50-form-v287 .wht-col-tax{width:12%!important;}
.wht50-form-v287 .wht-table th,.wht50-form-v287 .wht-table td{border:1px solid #222!important;background:#fff!important;color:#111!important;padding:.62mm .58mm!important;vertical-align:top!important;line-height:1.09!important;word-break:normal!important;overflow-wrap:break-word!important;}
.wht50-form-v287 .wht-table th{text-align:center!important;font-size:8.25px!important;line-height:1.04!important;font-weight:800!important;}
.wht50-form-v287 .wht-table td:nth-child(2){text-align:center!important;}
.wht50-form-v287 .wht-table td:nth-child(3),.wht50-form-v287 .wht-table td:nth-child(4){text-align:right!important;}
.wht50-form-v287 .wht-table .indent{padding-left:3.1mm!important;}
.wht50-form-v287 .wht-table .indent2{padding-left:4.6mm!important;}
.wht50-form-v287 .wht-table .indent3{padding-left:5.8mm!important;font-size:7.75px!important;line-height:1.05!important;}
.wht50-form-v287 .wht-baht,.wht50-form-v287 .wht-fund-row,.wht50-form-v287 .wht-tax-condition{border:1px solid #222!important;border-top:0!important;padding:.72mm 1mm!important;line-height:1.12!important;}
.wht50-form-v287 .dotted-blank{display:inline-block;width:30mm;border-bottom:1px dotted #111;height:2.8mm;vertical-align:baseline;}
.wht50-form-v287 .wht-sign-v287{border:1px solid #222!important;border-top:0!important;display:grid!important;grid-template-columns:1fr 3fr!important;min-height:24mm!important;}
.wht50-form-v287 .wht-answer-box{border-right:1px solid #222!important;padding:2mm!important;font-size:8px!important;line-height:1.22!important;}
.wht50-form-v287 .wht-sign-area{display:grid!important;grid-template-columns:30mm 1fr!important;gap:4mm!important;align-items:center!important;padding:2mm!important;}
.wht50-form-v287 .wht-stamp-slot{display:flex!important;align-items:center!important;justify-content:center!important;min-height:24mm!important;}
.wht50-form-v287 .wht-stamp-slot img{max-width:28mm!important;max-height:24mm!important;object-fit:contain!important;}
.wht50-form-v287 .juristic-stamp-circle{width:24mm!important;height:24mm!important;border:1px dashed #555!important;border-radius:50%!important;display:flex!important;align-items:center!important;justify-content:center!important;text-align:center!important;font-size:7.6px!important;line-height:1.15!important;}
.wht50-form-v287 .wht-sign-text{text-align:center!important;font-size:8.1px!important;line-height:1.15!important;}
.wht50-form-v287 .wht-sign-text p{margin:1mm 0!important;}
.wht50-form-v287 .wht-footer-note{margin-top:auto!important;border-top:1px solid #222!important;padding-top:1.2mm!important;font-size:7.6px!important;line-height:1.25!important;}
@media(max-width:1100px){.doc-preview-main{grid-template-columns:1fr!important;}.doc-preview-side{display:none!important;}.doc-preview-stage{height:calc(100vh - 54px)!important;}.wht50-form-v287{min-width:210mm!important;}}
@media(max-width:900px){.doc-preview-header{min-height:52px!important;padding:8px 10px!important;}.doc-preview-main,.doc-preview-stage{height:calc(100vh - 52px)!important;}.doc-preview-stage{padding:12px!important;}.doc-preview-code{font-size:15px!important;}.doc-preview-header-actions .btn{padding:7px 10px!important;}}
@media print{body.doc-preview-body{height:auto!important;overflow:visible!important;background:#fff!important;padding:0!important;}.doc-preview-shell{height:auto!important;width:auto!important;overflow:visible!important;}.doc-preview-header,.doc-preview-side{display:none!important;}.doc-preview-main{display:block!important;height:auto!important;width:auto!important;padding:0!important;overflow:visible!important;}.doc-preview-stage{display:block!important;height:auto!important;width:auto!important;padding:0!important;overflow:visible!important;background:#fff!important;}.wht50-form-v287{width:210mm!important;height:297mm!important;min-height:297mm!important;margin:0!important;padding:8mm 9mm!important;font-size:8.25px!important;line-height:1.08!important;box-shadow:none!important;border:0!important;}.wht50-form-v287 .wht-table th,.wht50-form-v287 .wht-table td{padding:.55mm .5mm!important;line-height:1.05!important;}.wht50-form-v287 .wht-sign-v287{min-height:23mm!important;}.payslip-template-v281{width:210mm!important;height:148.5mm!important;min-height:148.5mm!important;margin:0!important;padding:8mm 10mm!important;box-shadow:none!important;border:0!important;break-after:avoid!important;page-break-after:avoid!important;}.payslip-print-body .doc-preview-stage{display:block!important;padding:0!important;}@page{size:A4;margin:0;}}

/* PTWork v2.8.13 - WHT A4 true preview/print */
.app-shell.ptwork-v28 .webapp-logo{content:url('/assets/img/ptwork-logo-clean.png?v=2.8.13')!important;}
body.wht-preview-body{height:100vh!important;overflow:hidden!important;background:#dfe3e8!important;margin:0!important;padding:0!important;}
.wht-preview-shell{width:100vw;min-height:100vh;display:flex;flex-direction:column;background:#dfe3e8;}
.wht-preview-toolbar{height:54px;min-height:54px;background:#fff;border-bottom:1px solid #d1d5db;display:flex;justify-content:space-between;align-items:center;gap:8px;padding:8px 16px;box-sizing:border-box;z-index:80;}
.wht-preview-toolbar .doc-preview-code{font-size:17px!important;color:#1684c7!important;font-weight:800!important;}
.wht-preview-toolbar .doc-preview-header-actions{display:flex;gap:8px;align-items:center;}
.wht-preview-toolbar .btn{border-radius:6px!important;padding:8px 16px!important;}
.wht-preview-stage{width:100%;height:calc(100vh - 54px);overflow:auto;display:flex;justify-content:center;align-items:flex-start;padding:20px 12px;box-sizing:border-box;background:#dfe3e8;}
.wht-a4-document{width:210mm;height:297mm;min-height:297mm;background:#fff;color:#000;box-sizing:border-box;padding:8mm 9mm 6mm 9mm;margin:0 auto 18px;font-family:"TH Sarabun New","Sarabun",Arial,sans-serif;font-size:11.5px;line-height:1.16;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 2px 6px rgba(15,23,42,.22);}
.wht-a4-document *{box-sizing:border-box;color:#000!important;}
.wht-header-section{display:grid;grid-template-columns:1fr 1.4fr 1fr;align-items:start;gap:4mm;min-height:17mm;}
.wht-copy-text{font-size:8.2px!important;line-height:1.35!important;white-space:nowrap;}.wht-header-section{grid-template-columns:1.3fr 1.35fr 0.85fr!important;}
.wht-title-block{text-align:center;}
.wht-title-block h1{font-size:18px!important;line-height:1.05!important;margin:0!important;font-weight:800;}
.wht-title-block h2{font-size:11px!important;line-height:1.1!important;margin:1mm 0 0!important;font-weight:700;}
.wht-book-no{text-align:right;font-size:12.4px;line-height:1.24;}
.wht-taxpayer-section{min-height:44mm;}
.wht-party{border:1px solid #000;padding:1.25mm 1.5mm;margin-top:1.2mm;line-height:1.25;min-height:20mm;}
.tax-boxes{display:inline-flex;gap:1px;vertical-align:middle;margin-left:1.5mm;}
.tax-boxes i{display:inline-flex;width:4.3mm;height:4.3mm;border:1px solid #000;align-items:center;justify-content:center;font-style:normal;font-size:9px;line-height:1;}
.box-check{display:inline-flex;width:3.8mm;height:3.8mm;border:1px solid #000;align-items:center;justify-content:center;margin:0 .7mm;font-weight:800;font-style:normal;line-height:1;vertical-align:middle;}
.wht-form-type-section{border:1px solid #000;border-top:0;padding:1.3mm 1.5mm;min-height:13mm;}
.wht-seq{margin-bottom:1mm;white-space:nowrap;}
.wht-choice-options{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));column-gap:3mm;row-gap:.9mm;align-items:center;}
.wht-choice-options span{white-space:nowrap;display:flex;align-items:center;}.wht-form-type-section{min-height:15mm;}.wht-seq{white-space:normal;}.wht-seq-note{font-size:9.5px;white-space:normal;display:block;line-height:1.15;margin-top:.4mm;}.tax-box-sep{display:inline-flex;align-items:center;justify-content:center;width:1.3mm;font-weight:700;}
.wht-income-table{width:100%;border-collapse:collapse;table-layout:fixed;flex:0 0 137mm;height:137mm;min-height:132mm;max-height:142mm;margin:0;border:1px solid #000;font-size:10.8px;}
.wht-income-table th,.wht-income-table td{border:1px solid #000;padding:1.05mm 1.1mm;vertical-align:top;line-height:1.16;background:#fff!important;overflow:hidden;word-break:normal;overflow-wrap:break-word;}
.wht-income-table th{text-align:center;font-size:10px;font-weight:800;line-height:1.1;}
.wht-income-table td:nth-child(2){text-align:center;}
.wht-income-table td:nth-child(3),.wht-income-table td:nth-child(4){text-align:right;}
.wht-income-table tbody tr{height:6.9mm;}
.wht-income-table tbody tr.long-row{height:12.4mm;}
.wht-income-table tbody tr.extra-long-row{height:18mm;}
.wht-income-table tbody tr.total-row{height:7.2mm;}
.wht-income-table .indent{padding-left:4.5mm;}
.wht-income-table .indent2{padding-left:6mm;}
.wht-income-table .sub-text{font-size:10.2px;line-height:1.14;}
.wht-income-table .small-text{font-size:9.3px;line-height:1.12;}
.wht-total-section,.wht-fund-row,.wht-condition-section{border:1px solid #000;border-top:0;padding:1.15mm 1.5mm;line-height:1.18;min-height:5.7mm;}
.dotted-blank{display:inline-block;width:31mm;border-bottom:1px dotted #111;height:3mm;vertical-align:baseline;}
.wht-signature-section{display:grid;grid-template-columns:25% 75%;border:1px solid #000;border-top:0;min-height:36mm;}
.wht-warning-box{border-right:1px solid #000;padding:2mm;font-size:9.5px;line-height:1.24;}
.wht-sign-area{display:grid;grid-template-columns:30mm 1fr;align-items:center;padding:2mm 4mm;gap:4mm;}
.wht-stamp-area{display:flex;align-items:center;justify-content:center;}
.wht-stamp-circle{width:26mm;height:26mm;border:1px dashed #555;border-radius:50%;display:flex;align-items:center;justify-content:center;text-align:center;font-size:8.5px;line-height:1.15;}
.wht-stamp-img{width:26mm;height:26mm;object-fit:contain;}
.wht-sign-text{text-align:center;font-size:10px;line-height:1.2;}
.wht-sign-text p{margin:1.3mm 0;}
.wht-footer-note{margin-top:auto;border-top:1px solid #000;padding-top:1.5mm;font-size:8.4px;line-height:1.2;min-height:10mm;}
@media(max-width:900px){.wht-preview-toolbar{height:52px;min-height:52px;padding:7px 10px;}.wht-preview-toolbar .btn{padding:7px 10px!important;}.wht-preview-stage{height:calc(100vh - 52px);justify-content:flex-start;padding:12px;}.wht-a4-document{min-width:210mm;margin-left:0;margin-right:0;}}
@media print{body.wht-preview-body{height:auto!important;overflow:visible!important;background:#fff!important;padding:0!important;margin:0!important;}.wht-preview-shell{display:block!important;width:auto!important;min-height:0!important;background:#fff!important;}.wht-preview-toolbar{display:none!important;}.wht-preview-stage{display:block!important;width:auto!important;height:auto!important;min-height:0!important;overflow:visible!important;padding:0!important;background:#fff!important;}.wht-a4-document{width:210mm!important;height:297mm!important;min-height:297mm!important;margin:0!important;box-shadow:none!important;border:0!important;page-break-after:avoid!important;page-break-inside:avoid!important;}.wht-income-table th,.wht-income-table td{padding:.95mm 1mm!important;line-height:1.12!important;}@page{size:A4 portrait;margin:0;}}


/* PTWork v2.8.13 - hotfix payroll document 500 and cache bust */
.app-shell.ptwork-v28 .webapp-logo{content:url('/assets/img/ptwork-logo-clean.png?v=2.8.13')!important;}
.payslip-print-body .payslip-template-v281{width:210mm!important;height:148.5mm!important;min-height:148.5mm!important;}
@media print{
  .payslip-print-body .doc-preview-shell,.payslip-print-body .doc-preview-main,.payslip-print-body .doc-preview-stage{height:auto!important;overflow:visible!important;background:#fff!important;padding:0!important;display:block!important;}
  .payslip-print-body .doc-preview-header,.payslip-print-body .doc-preview-side{display:none!important;}
  .payslip-print-body .payslip-template-v281{width:210mm!important;height:148.5mm!important;min-height:148.5mm!important;margin:0!important;padding:8mm 10mm!important;box-shadow:none!important;border:0!important;page-break-after:avoid!important;break-after:avoid!important;}
  @page{size:A4 portrait;margin:0;}
}


/* PTWork v2.8.13 - WHT spacing + payslip print fidelity */
.app-shell.ptwork-v28 .webapp-logo{content:url('/assets/img/ptwork-logo-clean.png?v=2.8.13')!important;}
.wht-a4-document{padding:7.5mm 9mm 6mm 9mm!important;font-size:11.15px!important;line-height:1.12!important;}
.wht-header-section{min-height:16mm!important;}
.wht-taxpayer-section{min-height:41mm!important;}
.wht-party{min-height:19mm!important;padding:1.05mm 1.35mm!important;line-height:1.18!important;}
.wht-form-type-section{min-height:12mm!important;padding:1mm 1.3mm!important;}
.wht-income-table{flex:0 0 138mm!important;height:138mm!important;min-height:138mm!important;max-height:138mm!important;font-size:10.2px!important;}
.wht-income-table th,.wht-income-table td{padding:.65mm .82mm!important;line-height:1.08!important;}
.wht-income-table th{font-size:9.2px!important;}
.wht-income-table tbody tr{height:5.8mm!important;}
.wht-income-table tbody tr.long-row{height:18mm!important;}
.wht-income-table tbody tr.extra-long-row{height:19.5mm!important;}
.wht-income-table tbody tr.total-row{height:6.5mm!important;}
.wht-income-table .sub-text{font-size:9.55px!important;line-height:1.08!important;}
.wht-income-table .small-text{font-size:8.75px!important;line-height:1.05!important;}
.wht-total-section,.wht-condition-section{min-height:5.2mm!important;padding:.85mm 1.25mm!important;line-height:1.08!important;}
.wht-fund-row{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:2mm!important;white-space:nowrap!important;min-height:5.2mm!important;padding:.75mm 1.05mm!important;font-size:9.55px!important;line-height:1.05!important;overflow:hidden!important;}
.wht-fund-row span{display:inline-flex!important;align-items:baseline!important;white-space:nowrap!important;min-width:0!important;}
.wht-fund-row .dotted-blank,.dotted-blank{width:18mm!important;height:2.5mm!important;vertical-align:baseline!important;}
.wht-signature-section{min-height:39mm!important;grid-template-columns:25% 75%!important;}
.wht-warning-box{font-size:9px!important;line-height:1.18!important;padding:1.8mm!important;}
.wht-sign-area{grid-template-columns:30mm 1fr!important;padding:2mm 4mm!important;align-items:center!important;}
.wht-sign-text{font-size:9.5px!important;line-height:1.18!important;}
.wht-sign-text p{margin:1.1mm 0!important;}
.wht-sign-spacer{height:10mm!important;}
.wht-footer-note{min-height:8.5mm!important;font-size:8px!important;line-height:1.12!important;padding-top:1mm!important;}.wht-taxpayer-section{min-height:50mm!important;}.wht-party{padding:1mm 1.4mm!important;line-height:1.32!important;font-size:13.5px!important;}.wht-party-row1,.wht-party-row2{display:flex!important;width:100%!important;justify-content:space-between!important;align-items:baseline!important;gap:2mm;flex-wrap:nowrap;}.wht-party-taxid{white-space:nowrap;font-size:10.6px!important;display:inline-flex;align-items:center;gap:1mm;}.wht-party-taxid .tax-boxes{margin-left:1mm;}.wht-party-caption{font-size:9.2px!important;font-style:italic;line-height:1.15!important;margin:.2mm 0 .5mm 0;}.wht-party-row3{line-height:1.22!important;}.tax-boxes i{width:3.5mm!important;height:3.5mm!important;font-size:10.3px;}.tax-boxes-blank i{width:4mm!important;}.wht-form-type-section{min-height:15mm!important;}.wht-income-table{flex:0 0 118mm!important;height:118mm!important;min-height:118mm!important;max-height:118mm!important;font-size:12.2px!important;}.wht-income-table th{font-size:12.2px!important;}.wht-income-table tbody tr{height:5.8mm!important;}.wht-income-table tbody tr.long-row{height:20mm!important;}.wht-income-table tbody tr.extra-long-row{height:24mm!important;}.wht-income-table .sub-text{font-size:11.5px!important;line-height:1.12!important;}.wht-income-table .small-text{font-size:10.7px!important;line-height:1.1!important;}.wht-fill-line{display:inline-block;border-bottom:1px dotted #000;min-width:55mm;padding:0 1mm;}
.payslip-template-v281 .ps-main td:nth-child(5):empty,.payslip-template-v281 .ps-main td:nth-child(6):empty{background:#fff!important;}
@media print{
  body.payslip-print-body{width:210mm!important;height:148.5mm!important;margin:0!important;padding:0!important;overflow:hidden!important;background:#fff!important;}
  .payslip-print-body .doc-preview-shell,.payslip-print-body .doc-preview-main,.payslip-print-body .doc-preview-stage{width:210mm!important;height:148.5mm!important;min-height:148.5mm!important;max-height:148.5mm!important;margin:0!important;padding:0!important;overflow:hidden!important;display:block!important;background:#fff!important;}
  .payslip-print-body .doc-preview-header,.payslip-print-body .doc-preview-side{display:none!important;}
  .payslip-print-body .payslip-template-v281{width:210mm!important;height:148.5mm!important;min-height:148.5mm!important;max-height:148.5mm!important;margin:0!important;padding:7mm 9mm!important;box-shadow:none!important;border:0!important;overflow:hidden!important;transform:none!important;page-break-before:avoid!important;page-break-after:avoid!important;break-before:avoid!important;break-after:avoid!important;}
  .payslip-print-body .payslip-template-v281 .ps-main th,.payslip-print-body .payslip-template-v281 .ps-main td{padding:1.15mm 1.7mm!important;}
  body.wht-preview-body{margin:0!important;padding:0!important;}
  .wht-a4-document{width:210mm!important;height:297mm!important;min-height:297mm!important;max-height:297mm!important;margin:0!important;padding:7.5mm 9mm 6mm 9mm!important;box-shadow:none!important;border:0!important;overflow:hidden!important;}
  .wht-income-table th,.wht-income-table td{padding:.6mm .78mm!important;line-height:1.05!important;}
}


/* PTWork v2.8.13 - WHT subitem font + exact payslip A4 half-page print */
.app-shell.ptwork-v28 .webapp-logo{content:url('/assets/img/ptwork-logo-clean.png?v=2.8.13')!important;}
/* ขยายตัวหนังสือเฉพาะรายการย่อย (1.1) ถึง (2.5) โดยไม่ลดทั้งเอกสาร */
.wht-income-table .wht-subitems,
.wht-income-table .small-text{
  font-size:9.8px!important;
  line-height:1.14!important;
  font-weight:500!important;
}
.wht-income-table tbody tr.long-row .wht-subitems{line-height:1.14!important;}

/* Pay Slip preview must remain a true half A4 canvas */
body.payslip-print-page{background:#d8dde3!important;}
body.payslip-print-page .payslip-template-v281{
  width:210mm!important;
  height:148.5mm!important;
  min-height:148.5mm!important;
  max-height:148.5mm!important;
  box-sizing:border-box!important;
  overflow:hidden!important;
  background:#fff!important;
  margin:0 auto!important;
  padding:9mm 10mm!important;
  transform:none!important;
}
body.payslip-print-page .doc-preview-main{display:grid;grid-template-columns:minmax(0,1fr) 250px;}
body.payslip-print-page .doc-preview-stage{display:flex;justify-content:center;align-items:flex-start;overflow:auto;}

@media print{
  @page{size:A4 portrait;margin:0;}
  html,body.payslip-print-page{
    width:210mm!important;
    height:297mm!important;
    margin:0!important;
    padding:0!important;
    background:#fff!important;
    overflow:hidden!important;
  }
  body.payslip-print-page .no-print,
  body.payslip-print-page .doc-preview-header,
  body.payslip-print-page .doc-preview-side,
  body.payslip-print-page .print-preview-toolbar,
  body.payslip-print-page .sidebar,
  body.payslip-print-page .topbar,
  body.payslip-print-page .app-footer{
    display:none!important;
  }
  body.payslip-print-page .doc-preview-shell,
  body.payslip-print-page .doc-preview-main,
  body.payslip-print-page .doc-preview-stage{
    display:block!important;
    position:static!important;
    width:210mm!important;
    height:297mm!important;
    min-height:0!important;
    max-height:none!important;
    margin:0!important;
    padding:0!important;
    background:#fff!important;
    overflow:visible!important;
    box-sizing:border-box!important;
    transform:none!important;
  }
  body.payslip-print-page .payslip-a5,
  body.payslip-print-page .payslip-template-v281{
    display:block!important;
    position:absolute!important;
    left:0!important;
    top:0!important;
    width:210mm!important;
    height:148.5mm!important;
    min-height:148.5mm!important;
    max-height:148.5mm!important;
    margin:0!important;
    padding:9mm 10mm!important;
    box-sizing:border-box!important;
    background:#fff!important;
    box-shadow:none!important;
    border:0!important;
    overflow:hidden!important;
    transform:none!important;
    zoom:1!important;
    page-break-before:avoid!important;
    page-break-inside:avoid!important;
    page-break-after:avoid!important;
    break-before:avoid!important;
    break-inside:avoid!important;
    break-after:avoid!important;
    -webkit-print-color-adjust:exact!important;
    print-color-adjust:exact!important;
  }
  body.payslip-print-page .payslip-template-v281 .ps-head{margin-bottom:4mm!important;}
  body.payslip-print-page .payslip-template-v281 .ps-employee{margin-bottom:3.5mm!important;}
  body.payslip-print-page .payslip-template-v281 .ps-main{font-size:10.2px!important;}
  body.payslip-print-page .payslip-template-v281 .ps-main th,
  body.payslip-print-page .payslip-template-v281 .ps-main td{padding:1.1mm 1.6mm!important;line-height:1.18!important;}
  body.payslip-print-page .payslip-template-v281 .ps-sign{margin-top:4mm!important;}
  body.payslip-print-page .payslip-template-v281 .ps-confidential{margin-top:3mm!important;}
  /* Keep WHT A4 rules separate and preserve the larger subitem font in print */
  body.wht-preview-body .wht-income-table .wht-subitems,
  body.wht-preview-body .wht-income-table .small-text{font-size:9.55px!important;line-height:1.12!important;}
}


/* PTWork v2.8.13 payroll pay-date + totals */
.payroll-period-edit{display:flex;gap:10px;align-items:end;flex-wrap:wrap;margin-top:10px;padding-top:10px;border-top:1px solid #e5e7eb;}
.payroll-period-edit label{display:flex;flex-direction:column;gap:4px;font-weight:700;}
.payroll-total-row th,.payroll-total-row td{background:#f8fafc!important;font-weight:800!important;border-top:2px solid #3B1768!important;}
.payroll-total-row .total-label{text-align:right;color:#3B1768;}
.payroll-item-pay-date{white-space:nowrap;}
.payroll-modal-social-hidden{display:none!important;}
@media(max-width:900px){.payroll-period-edit{align-items:stretch}.payroll-period-edit label,.payroll-period-edit .btn{width:100%;}}


/* PTWork v2.8.13 - WHT dividend block, mobile filters, staff signature, payslip print-only */
.app-shell.ptwork-v28 .webapp-logo{content:url('/assets/img/ptwork-logo-clean.png?v=2.8.13')!important;}
.staff-signature-preview{max-width:220px;max-height:80px;object-fit:contain;border:1px solid #e5e7eb;border-radius:10px;background:#fff;padding:8px;}
.current-signature-box{background:#f8fafc;border:1px solid #e5e7eb;border-radius:12px;padding:12px;}
.payslip-signature-img{display:inline-block;max-width:42mm;max-height:12mm;object-fit:contain;vertical-align:middle;margin-left:4mm;}
.payslip-stamp-img{display:inline-block;max-width:18mm;max-height:18mm;object-fit:contain;vertical-align:middle;margin-left:4mm;}
.wht-signature-img{display:block;max-width:45mm;max-height:16mm;object-fit:contain;margin:3mm auto 1mm;}
.wht-dividend-block{height:43mm!important;}
.wht-dividend-block td{line-height:1.15!important;}
.wht-dividend-block .indent,.wht-dividend-block .indent2{display:inline-block;}
.wht-dividend-block .wht-subitems{font-size:10.65px!important;line-height:1.18!important;font-weight:600!important;}
.wht-income-table .wht-subitems{font-size:10.65px!important;line-height:1.18!important;font-weight:600!important;}
.wht-income-table .small-text{font-size:10.3px!important;line-height:1.15!important;}
@media(max-width:900px){
  .appointment-toolbar{display:grid!important;grid-template-columns:1fr 1fr!important;gap:8px!important;align-items:end!important;}
  .appointment-toolbar input[type="hidden"]{display:none!important;}
  .appointment-toolbar select,.appointment-toolbar label{grid-column:1 / -1!important;width:100%!important;margin:0!important;}
  .appointment-toolbar button,.appointment-toolbar .today-shortcut{grid-column:auto!important;width:100%!important;margin:0!important;text-align:center!important;justify-content:center!important;}
}

.payslip-preview-body{background:#d8dde3!important;}
.payslip-paper,.payslip-template-v281{width:210mm!important;height:148.5mm!important;min-height:148.5mm!important;max-height:148.5mm!important;box-sizing:border-box!important;background:#fff!important;overflow:hidden!important;padding:9mm 10mm!important;margin:0 auto!important;}
.payslip-preview-stage{min-height:calc(100vh - 56px);display:flex!important;justify-content:center!important;align-items:flex-start!important;padding:28px 12px!important;overflow:auto!important;background:#d8dde3!important;}
.payslip-preview-stage .payslip-paper{box-shadow:0 8px 24px rgba(15,23,42,.18)!important;}
body.payslip-print-only{background:#fff!important;margin:0!important;padding:0!important;width:210mm!important;height:297mm!important;overflow:hidden!important;}
body.payslip-print-only .payslip-paper{position:absolute!important;left:0!important;top:0!important;box-shadow:none!important;border:0!important;margin:0!important;}
@media print{
  @page{size:A4 portrait;margin:0;}
  html,body.payslip-print-page{width:210mm!important;height:297mm!important;margin:0!important;padding:0!important;background:#fff!important;overflow:hidden!important;}
  body.payslip-print-page *{box-sizing:border-box!important;}
  body.payslip-print-page .no-print,
  body.payslip-print-page .no-print-ui,
  body.payslip-print-page .doc-preview-header,
  body.payslip-print-page .doc-preview-side,
  body.payslip-print-page .print-preview-toolbar,
  body.payslip-print-page .sidebar,
  body.payslip-print-page .topbar,
  body.payslip-print-page .app-footer{display:none!important;}
  body.payslip-print-page .doc-preview-shell,
  body.payslip-print-page .doc-preview-main,
  body.payslip-print-page .doc-preview-stage,
  body.payslip-print-page .payslip-preview-stage{display:block!important;width:210mm!important;height:297mm!important;min-height:297mm!important;max-height:297mm!important;margin:0!important;padding:0!important;background:#fff!important;overflow:hidden!important;position:static!important;transform:none!important;}
  body.payslip-print-page .payslip-paper,
  body.payslip-print-page .payslip-a5,
  body.payslip-print-page .payslip-template-v281{position:absolute!important;left:0!important;top:0!important;display:block!important;width:210mm!important;height:148.5mm!important;min-height:148.5mm!important;max-height:148.5mm!important;margin:0!important;padding:9mm 10mm!important;background:#fff!important;box-shadow:none!important;border:none!important;overflow:hidden!important;transform:none!important;zoom:1!important;page-break-before:avoid!important;page-break-inside:avoid!important;page-break-after:avoid!important;break-before:avoid!important;break-inside:avoid!important;break-after:avoid!important;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important;}
  body.payslip-print-page .payslip-paper table{width:100%!important;border-collapse:collapse!important;}
  body.payslip-print-page .payslip-paper th,
  body.payslip-print-page .payslip-paper td{padding:1.15mm 1.7mm!important;line-height:1.18!important;}
  body.payslip-print-page .ps-head{margin-bottom:4mm!important;}
  body.payslip-print-page .ps-employee{margin-bottom:3.5mm!important;}
  body.payslip-print-page .ps-main{font-size:10.2px!important;}
}

/* PTWork v2.9 - login signer, single add appointment button, safer payslip print */
.app-shell.ptwork-v28 .webapp-logo{content:url('/assets/img/ptwork-logo-clean.png?v=2.9')!important;}
.payer-signature-img{max-width:38mm!important;max-height:11mm!important;margin-left:2mm!important;}
.appointment-add-row{display:flex;justify-content:flex-start;margin:10px 0 14px;}
.appointment-add-row .btn{min-width:180px;}
@media(max-width:900px){
  .appointment-add-row .btn{width:50vw!important;max-width:50vw!important;min-width:0!important;justify-content:center!important;text-align:center!important;padding-left:8px!important;padding-right:8px!important;}
}
/* Keep payslip preview layout only on screen */
@media screen{
  body.payslip-preview-body .payslip-preview-stage{display:flex!important;justify-content:center!important;align-items:flex-start!important;padding:28px 12px!important;background:#d8dde3!important;overflow:auto!important;}
  body.payslip-preview-body .payslip-paper{width:210mm!important;height:148.5mm!important;min-height:148.5mm!important;max-height:148.5mm!important;margin:0 auto!important;padding:9mm 10mm!important;box-shadow:0 8px 24px rgba(15,23,42,.18)!important;}
}
/* Highest-priority print override for pay slip only. This must stay at the end. */
@media print{
  @page{size:A4 portrait;margin:0;}
  html,body.payslip-print-page,body.payslip-print-only{width:210mm!important;height:297mm!important;margin:0!important;padding:0!important;background:#fff!important;overflow:hidden!important;}
  body.payslip-print-page .no-print,
  body.payslip-print-page .no-print-ui,
  body.payslip-print-page .doc-preview-header,
  body.payslip-print-page .doc-preview-side,
  body.payslip-print-page .print-preview-toolbar,
  body.payslip-print-page .sidebar,
  body.payslip-print-page .topbar,
  body.payslip-print-page .app-footer{display:none!important;}
  body.payslip-print-page .doc-preview-shell,
  body.payslip-print-page .doc-preview-main,
  body.payslip-print-page .doc-preview-stage,
  body.payslip-print-page .payslip-preview-stage{display:block!important;width:210mm!important;height:297mm!important;min-height:297mm!important;max-height:297mm!important;margin:0!important;padding:0!important;background:#fff!important;overflow:hidden!important;position:static!important;transform:none!important;zoom:1!important;}
  body.payslip-print-page .payslip-paper,
  body.payslip-print-page .payslip-a5,
  body.payslip-print-page .payslip-template-v281{position:absolute!important;left:0!important;top:0!important;display:block!important;width:210mm!important;height:148.5mm!important;min-height:148.5mm!important;max-height:148.5mm!important;margin:0!important;padding:9mm 10mm!important;box-sizing:border-box!important;background:#fff!important;box-shadow:none!important;border:0!important;overflow:hidden!important;transform:none!important;zoom:1!important;page-break-before:avoid!important;page-break-inside:avoid!important;page-break-after:avoid!important;break-before:avoid!important;break-inside:avoid!important;break-after:avoid!important;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important;}
  body.payslip-print-page .payslip-paper table{width:100%!important;border-collapse:collapse!important;}
  body.payslip-print-page .payslip-paper th,
  body.payslip-print-page .payslip-paper td{padding:1.1mm 1.6mm!important;line-height:1.18!important;}
  body.payslip-print-page .ps-head{margin-bottom:4mm!important;}
  body.payslip-print-page .ps-employee{margin-bottom:3.2mm!important;}
  body.payslip-print-page .ps-main{font-size:10.1px!important;}
  body.payslip-print-page .ps-sign{margin-top:4mm!important;}
}

/* PTWork v2.9 - nested settings menu, accounting/finance, mobile buttons, payslip print isolation */
.app-shell.ptwork-v28 .webapp-logo{content:url('/assets/img/ptwork-logo-clean.png?v=2.9')!important;}
.side-nav .nav-group{display:block;margin:2px 0;}
.side-nav .nav-parent{display:flex!important;align-items:center;}
.side-nav .nav-parent .nav-caret{margin-left:auto;opacity:.8;font-size:12px;}
.side-nav .nav-children{display:none;margin:2px 0 8px 34px;border-left:1px solid rgba(255,255,255,.18);padding-left:8px;}
.side-nav .nav-group.open .nav-children{display:block;}
.side-nav .nav-children a{font-size:13px;padding:8px 10px!important;border-radius:10px;opacity:.88;}
.side-nav .nav-children a.active{opacity:1;background:rgba(255,255,255,.18)!important;box-shadow:none!important;}
.finance-kpi-cards{grid-template-columns:repeat(3,minmax(180px,1fr));margin:12px 0 18px;}
.finance-dashboard-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:18px;align-items:stretch;}
.finance-bars{height:280px;display:flex;align-items:flex-end;gap:10px;border-bottom:1px solid #e5e7eb;padding:12px 8px 4px;}
.finance-bar-item{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;height:100%;justify-content:flex-end;}
.bar-pair{height:240px;display:flex;align-items:flex-end;gap:3px;}
.bar-pair .bar{display:block;width:11px;border-radius:5px 5px 0 0;min-height:4px;background:#cbd5e1;}
.bar-pair .income{background:#2b9ed8;}.bar-pair .expense{background:#e23b83;}
.chart-legend{display:flex;gap:14px;align-items:center;justify-content:center;margin-top:10px;color:#64748b}.dot{display:inline-block;width:10px;height:10px;border-radius:50%}.dot.income{background:#2b9ed8}.dot.expense{background:#e23b83}
.finance-cat-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.finance-cat-list li{display:flex;justify-content:space-between;border-bottom:1px solid #eef2f7;padding:8px 0}.finance-cat-list b{color:#0f766e}.accounting-expense-form .expense-item-table{width:100%;border-collapse:collapse;margin:12px 0}.accounting-expense-form .expense-item-table th,.accounting-expense-form .expense-item-table td{border:1px solid #e5e7eb;padding:8px}.accounting-payment-section{margin-top:16px;border-top:1px solid #e5e7eb;padding-top:12px}
@media(max-width:900px){.finance-kpi-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.finance-dashboard-grid{grid-template-columns:1fr}.appointment-add-row .btn.success,.dashboard-working-card + .page-head + .appointment-toolbar + .appointment-add-row .btn.success{width:50vw!important;max-width:240px!important;min-width:150px!important}.appointment-toolbar button,.appointment-toolbar .today-shortcut{width:calc(50% - 8px)!important;flex:0 0 calc(50% - 8px)!important;justify-content:center;text-align:center}.side-nav .nav-children{margin-left:26px}}
/* v2.9 print-only payslip: keep preview CSS out of print-only page */
body.payslip-print-only-v29{background:#fff!important;margin:0!important;padding:0!important;}

/* PTWork v2.9.2 - accounting improvements */
.app-shell.ptwork-v28 .webapp-logo{content:url('/assets/img/ptwork-logo-clean.png?v=2.9.2')!important;}
.finance-pie-wrap{display:grid;grid-template-columns:220px 1fr;gap:18px;align-items:center}.finance-pie{width:210px;height:210px;border-radius:50%;position:relative;box-shadow:inset 0 0 0 1px rgba(15,23,42,.06)}.finance-pie:after{content:'';position:absolute;inset:54px;border-radius:50%;background:#fff}.finance-cat-list li span{display:flex;align-items:center;gap:8px}.finance-cat-list li i{display:inline-block;width:10px;height:10px;border-radius:50%}.accounting-expense-form .expense-item-table th,.accounting-expense-form .expense-item-table td{vertical-align:top}.accounting-expense-form .expense-item-table input,.accounting-expense-form .expense-item-table select{min-width:110px}.actions .inline{display:inline}.status-pill{display:inline-flex;border-radius:999px;padding:4px 8px;background:#eef2ff;color:#3730a3;font-weight:700}.nav-group.active>.nav-parent{background:linear-gradient(135deg,rgba(255,255,255,.24),rgba(255,255,255,.12));color:#fff;font-weight:800}
@media(max-width:900px){.finance-pie-wrap{grid-template-columns:1fr}.finance-pie{margin:auto}.accounting-expense-form .expense-item-table{min-width:980px}.accounting-expense-form{overflow:auto}}


/* PTWork v2.9.2 accounting upload, filters, vendors, WHT cleanup */
.app-shell.ptwork-v28 .webapp-logo{content:url('/assets/img/ptwork-logo-clean.png?v=2.9.2')!important;}
.accounting-filter,.wht-list-filter{display:flex;align-items:end;gap:10px;flex-wrap:wrap}.accounting-filter .btn-small,.wht-list-filter .btn-small{align-self:end}
.accounting-dropzone{border:2px dashed #a5b4fc!important;background:#f8fafc!important;border-radius:16px!important;min-height:136px;display:flex!important;align-items:center!important;justify-content:center!important;flex-direction:column!important;gap:6px!important;text-align:center!important;cursor:pointer;color:#334155;position:relative;padding:18px!important}.accounting-dropzone.dragover{background:#eef2ff!important;border-color:#7a1f2e!important}.accounting-dropzone input[type=file]{position:absolute;inset:0;opacity:0;cursor:pointer}.dropzone-icon{font-size:30px}.accounting-dropzone ul{margin:6px 0 0;padding-left:18px;text-align:left;max-width:100%;font-size:12px;color:#475569}.vendor-form-card .form-grid,.vendor-form{grid-template-columns:repeat(2,minmax(220px,1fr))}.vendor-form .span2{grid-column:span 2}.wht-list-filter input[type=month]{min-width:160px}.wht-dividend-block .wht-subitems{font-size:10.85px!important;line-height:1.2!important}.wht-dividend-block td{border-top:1px solid #111!important;border-bottom:1px solid #111!important}.wht-dividend-block td+td{border-left:1px solid #111!important}.wht-fund-row{white-space:nowrap;display:flex!important;gap:8px!important;align-items:center!important;justify-content:space-between!important}.wht-fund-row .dotted-blank{display:inline-block;min-width:28mm;border-bottom:1px dotted #111;height:1em;vertical-align:baseline}
@media(max-width:900px){.vendor-form-card .form-grid,.vendor-form{grid-template-columns:1fr}.vendor-form .span2{grid-column:auto}.accounting-filter .btn-small,.wht-list-filter .btn-small{width:calc(50% - 8px);text-align:center;justify-content:center}.accounting-dropzone{min-height:110px}}


/* PTWork v2.9.5 - accounting WHT signature, finance bar hover, certificate menu */
.app-shell.ptwork-v28 .webapp-logo{content:url('/assets/img/ptwork-logo-clean.png?v=2.9.5')!important;}
.bar-pair .bar{position:relative;cursor:default;}
.bar-pair .bar:hover{filter:brightness(1.08);box-shadow:0 0 0 2px rgba(15,23,42,.08);}
.wht-signature-img{display:block;max-width:48mm;max-height:14mm;object-fit:contain;margin:2mm auto 1mm;}
.wht-sign-text .wht-signature-img + p{margin-top:1mm;}

/* PTWork v2.9.5 - accounting assets, journals, medical certificate, chart tooltip */
.nav-children .nav-sub-title{font-size:12px;font-weight:800;color:rgba(255,255,255,.72);padding:10px 18px 4px;margin-top:4px;border-top:1px solid rgba(255,255,255,.08)}
.finance-bars .bar{position:relative;cursor:pointer}
.finance-bars .bar:hover::after{content:attr(title);position:absolute;left:50%;bottom:calc(100% + 8px);transform:translateX(-50%);white-space:nowrap;background:#111827;color:#fff;padding:6px 9px;border-radius:8px;font-size:12px;font-weight:700;box-shadow:0 10px 24px rgba(15,23,42,.18);z-index:20}
.finance-bars .bar:hover::before{content:"";position:absolute;left:50%;bottom:100%;transform:translateX(-50%);border:5px solid transparent;border-top-color:#111827;z-index:21}
.dropdown{position:relative;display:inline-block}.dropdown-menu{display:none;position:absolute;right:0;top:100%;background:#fff;border:1px solid #e5e7eb;border-radius:10px;box-shadow:0 18px 38px rgba(15,23,42,.18);min-width:220px;z-index:50;overflow:hidden}.dropdown:hover .dropdown-menu{display:block}.dropdown-menu a{display:block;padding:12px 16px;color:#0f172a;text-decoration:none}.dropdown-menu a:hover{background:#f1f5f9}.legend-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-left:14px;margin-right:4px;background:#38bdf8}.legend-dot.hold{background:#f59e0b}.legend-dot.danger{background:#ef4444}
.asset-form input,.asset-form select,.asset-form textarea,.journal-form input,.journal-form select,.journal-form textarea{width:100%}.journal-tabs{gap:8px;flex-wrap:wrap}.journal-tabs .primary{background:#2b9ed8;color:#fff}.finance-kpi-cards .card small{display:block;margin-top:4px}.asset-filter{align-items:center;gap:8px}
.medical-cert-body{background:#dfe3e8;margin:0;font-family:"TH Sarabun New","Sarabun",Tahoma,sans-serif;color:#111}.cert-preview-toolbar{height:52px;background:#fff;border-bottom:1px solid #d1d5db;display:flex;justify-content:flex-end;gap:10px;align-items:center;padding:8px 18px;position:sticky;top:0;z-index:10}.medical-cert-a4{width:210mm;height:297mm;background:#fff;margin:18px auto;padding:24mm 26mm 16mm;box-sizing:border-box;position:relative;overflow:hidden;box-shadow:0 8px 30px rgba(15,23,42,.18);font-size:18px;line-height:1.45}.medical-cert-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24mm}.medical-cert-clinic{display:flex;gap:10mm;align-items:flex-start}.medical-cert-clinic img{width:22mm;height:22mm;object-fit:contain}.medical-cert-clinic b{font-size:19px}.medical-cert-clinic p{margin:0;line-height:1.28}.medical-cert-no{font-size:18px;margin-top:3mm}.medical-cert-title{text-align:center;margin-bottom:18mm}.medical-cert-title h1{font-size:22px;margin:0 0 2mm}.medical-cert-title h2{font-size:20px;margin:0;font-weight:500;letter-spacing:.4px}.medical-cert-content p{margin:5.5mm 0}.cert-fill{display:inline-block;min-width:38mm;border-bottom:1px dotted #111;padding:0 4mm;text-align:center;line-height:1.2}.cert-long-lines{min-height:20mm;border-bottom:1px dotted #111;line-height:1.6;white-space:pre-wrap;padding:2mm 0}.cert-long-lines::before{content:"";display:block;border-top:1px dotted #111;margin-bottom:7mm}.cert-long-lines.three{min-height:26mm}.cert-section-title{margin-top:14mm;margin-bottom:4mm;font-weight:700}.medical-cert-sign{position:absolute;right:30mm;bottom:39mm;width:68mm;text-align:center;font-size:18px}.medical-cert-sign p{margin:2mm 0}.medical-signature-img{max-width:42mm;max-height:18mm;object-fit:contain;display:block;margin:0 auto -2mm}.medical-cert-note{position:absolute;left:26mm;right:26mm;bottom:18mm;font-size:15px}
@media print{.medical-cert-body{background:#fff}.cert-preview-toolbar{display:none!important}.medical-cert-a4{width:210mm!important;height:297mm!important;margin:0!important;padding:24mm 26mm 16mm!important;box-shadow:none!important;page-break-inside:avoid!important;break-inside:avoid!important}@page{size:A4 portrait;margin:0}}


/* PTWork v2.9.5 */
.finance-bars-v295 .bar-pair{height:240px;align-items:flex-end;}
.finance-bars-v295 .bar{min-height:0;}
.finance-bars-v295 .bar[style*="height:0"]{display:none;}
.num{text-align:right;white-space:nowrap;}
.inline{display:inline;}

/* PTWork v2.9.7 */
.text-danger{color:#dc2626!important;font-weight:800}.text-success{color:#16a34a!important;font-weight:800}.status-pill.success{background:#dcfce7!important;color:#166534!important}.journal-entry-table tfoot th{background:#f8fafc;border-top:2px solid #cbd5e1!important;text-align:right}.journal-entry-table .money-input{text-align:right;font-variant-numeric:tabular-nums}.journal-form .btn.success:disabled{opacity:.45;cursor:not-allowed}.side-nav .nav-sub-title{font-size:12px;opacity:.72;padding:8px 16px 4px 48px;font-weight:800;color:#cbd5e1}.finance-bars-v296 .bar-pair,.finance-bars-v295 .bar-pair{height:240px!important;display:flex;align-items:flex-end;gap:4px}.finance-bars-v296 .bar,.finance-bars-v295 .bar{width:13px;border-radius:8px 8px 0 0;display:inline-block;position:relative}.finance-bars-v296 .bar.income,.finance-bars-v295 .bar.income{background:#2b9ed8}.finance-bars-v296 .bar.expense,.finance-bars-v295 .bar.expense{background:#e23b83}.finance-bars-v296 .bar:hover::after,.finance-bars-v295 .bar:hover::after{content:attr(title);position:absolute;left:50%;bottom:calc(100% + 8px);transform:translateX(-50%);white-space:nowrap;background:#111827;color:#fff;padding:6px 9px;border-radius:8px;font-size:12px;font-weight:700;box-shadow:0 10px 24px rgba(15,23,42,.18);z-index:20}.finance-bars-v296 .bar:hover::before,.finance-bars-v295 .bar:hover::before{content:"";position:absolute;left:50%;bottom:100%;transform:translateX(-50%);border:5px solid transparent;border-top-color:#111827;z-index:21}
.medical-cert-v296-body{background:#e5e7eb!important;margin:0!important;font-family:"TH Sarabun New","Sarabun",Tahoma,sans-serif;color:#111}.medical-cert-v296{width:210mm!important;height:297mm!important;background:#fff;margin:16px auto!important;padding:26mm 26mm 18mm!important;box-sizing:border-box;position:relative;overflow:hidden;box-shadow:0 8px 30px rgba(15,23,42,.18);font-size:18px;line-height:1.34}.medical-cert-v296 .mc-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:34mm}.medical-cert-v296 .mc-clinic{display:flex;gap:10mm;align-items:flex-start}.medical-cert-v296 .mc-clinic img{width:22mm;height:22mm;object-fit:contain}.medical-cert-v296 .mc-clinic b{font-size:19px;font-weight:800}.medical-cert-v296 .mc-clinic p{margin:0;line-height:1.28}.medical-cert-v296 .mc-number{font-size:18px;margin-top:2mm}.medical-cert-v296 .mc-title{text-align:center;margin-bottom:24mm}.medical-cert-v296 .mc-title h1{font-size:23px;margin:0 0 1mm;font-weight:800}.medical-cert-v296 .mc-title h2{font-size:21px;margin:0;font-weight:500;letter-spacing:.4px}.medical-cert-v296 .mc-content{font-size:18px}.medical-cert-v296 .mc-row{display:flex;align-items:baseline;gap:5mm;margin:4.3mm 0;white-space:nowrap}.medical-cert-v296 .center-row{justify-content:center}.medical-cert-v296 .indent-row{padding-left:16mm}.medical-cert-v296 .issue-row{margin-top:13mm}.medical-cert-v296 .mc-value{display:inline-block;min-width:42mm;border-bottom:1px dotted #111;text-align:center;padding:0 3mm;line-height:1.08;white-space:normal}.medical-cert-v296 .mc-value.wide{min-width:70mm}.medical-cert-v296 .mc-label{margin-top:4mm}.medical-cert-v296 .mc-dotted-lines{white-space:pre-wrap;line-height:1.55}.medical-cert-v296 .mc-dotted-lines:before,.medical-cert-v296 .mc-dotted-lines:after{content:"";display:block;border-top:1px dotted #111;height:8mm}.medical-cert-v296 .mc-dotted-lines.three-lines:before,.medical-cert-v296 .mc-dotted-lines.three-lines:after{height:7mm}.medical-cert-v296 .mc-section-title{font-weight:700;margin:12mm 0 3mm}.medical-cert-v296 .mc-signature{position:absolute;right:29mm;bottom:43mm;width:76mm;text-align:center;font-size:18px}.medical-cert-v296 .mc-signature p{margin:2.2mm 0}.medical-cert-v296 .medical-signature-img{max-width:42mm;max-height:18mm;object-fit:contain;display:block;margin:0 auto -2mm}.medical-cert-v296 .mc-note{position:absolute;left:26mm;right:26mm;bottom:18mm;font-size:15px;white-space:nowrap}
@media print{.medical-cert-v296-body{background:#fff!important}.cert-preview-toolbar{display:none!important}.medical-cert-v296{width:210mm!important;height:297mm!important;margin:0!important;padding:26mm 26mm 18mm!important;box-shadow:none!important;page-break-inside:avoid!important;break-inside:avoid!important}@page{size:A4 portrait;margin:0}}
@media(max-width:900px){.side-nav .nav-sub-title{padding-left:38px}.journal-entry-table{min-width:760px}}


/* PTWork v2.9.7 */
.medical-preview-stage{min-height:calc(100vh - 58px);background:#dfe3e8;display:flex;justify-content:center;align-items:flex-start;padding:18px 12px;overflow:auto}.medical-cert-a4-v297{width:210mm;height:297mm;background:#fff;box-sizing:border-box;margin:0 auto;padding:24mm 26mm 18mm;position:relative;overflow:hidden;box-shadow:0 8px 30px rgba(15,23,42,.18);font-family:"TH Sarabun New","Sarabun",Tahoma,sans-serif;color:#111;font-size:19px;line-height:1.32}.mc297-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:23mm}.mc297-clinic{display:flex;gap:8mm;align-items:flex-start}.mc297-clinic img{width:22mm;height:22mm;object-fit:contain}.mc297-clinic b{font-size:21px}.mc297-clinic p{margin:0;line-height:1.18}.mc297-no{font-size:18px;line-height:1.4;margin-right:10mm}.mc297-title{text-align:center;margin-bottom:17mm}.mc297-title h1{font-size:23px;color:#2b164d;margin:0 0 1mm;font-weight:900}.mc297-title h2{font-size:20px;margin:0;font-family:Georgia,"Times New Roman",serif;font-weight:500;letter-spacing:.2px}.mc297-content p{margin:3.6mm 0}.mc297-centerline{text-align:center}.mc297-fill{display:inline-block;border-bottom:1px dotted #111;min-width:30mm;text-align:center;padding:0 2.5mm;line-height:1.08}.mc297-fill.tiny{min-width:18mm}.mc297-fill.small{min-width:30mm}.mc297-fill.medium{min-width:48mm}.mc297-fill.large{min-width:74mm}.mc297-fill.xlarge{min-width:110mm;text-align:left}.mc297-gap{height:4mm}.mc297-label{margin-top:5mm!important}.mc297-label.strong{font-weight:900;margin-top:12mm!important}.mc297-indent{padding-left:17mm}.mc297-lines{white-space:pre-wrap;line-height:1.4;min-height:22mm;background:repeating-linear-gradient(to bottom, transparent 0, transparent 9.2mm, #111 9.2mm, #111 9.45mm);background-size:100% 9.45mm}.mc297-lines.two{min-height:19mm}.mc297-lines.three{min-height:29mm}.mc297-issue{margin-top:12mm!important}.mc297-sign{position:absolute;right:28mm;bottom:43mm;width:76mm;text-align:center;font-size:18px}.mc297-sign p{margin:1.8mm 0}.mc297-note{position:absolute;left:26mm;right:26mm;bottom:18mm;font-size:15px;white-space:nowrap}.medical-signature-img{max-width:42mm;max-height:18mm;object-fit:contain;display:block;margin:0 auto -2mm}
@media print{body.medical-cert-preview-body{background:#fff!important;margin:0!important;padding:0!important}.medical-cert-preview-body .doc-preview-header{display:none!important}.medical-preview-stage{display:block!important;background:#fff!important;min-height:0!important;padding:0!important;overflow:visible!important}.medical-cert-a4-v297{width:210mm!important;height:297mm!important;margin:0!important;padding:24mm 26mm 18mm!important;box-shadow:none!important;page-break-inside:avoid!important;break-inside:avoid!important}@page{size:A4 portrait;margin:0}}
@media(max-width:900px){.medical-preview-stage{justify-content:flex-start}.medical-cert-a4-v297{min-width:210mm}.expense-dashboard-link{display:none!important}}


/* PTWork v2.9.8 - medical certificate compact + accounting auto journals support */
.medical-cert-a4-v297{
  font-size:11.4px!important;
  line-height:1.32!important;
  padding:24mm 26mm 18mm!important;
}
.medical-cert-a4-v297 .mc297-header{margin-bottom:22mm!important;}
.medical-cert-a4-v297 .mc297-clinic b{font-size:13px!important;}
.medical-cert-a4-v297 .mc297-clinic p{font-size:11.4px!important;line-height:1.22!important;}
.medical-cert-a4-v297 .mc297-no{font-size:11.4px!important;}
.medical-cert-a4-v297 .mc297-title{margin-bottom:16mm!important;}
.medical-cert-a4-v297 .mc297-title h1{font-size:13.8px!important;}
.medical-cert-a4-v297 .mc297-title h2{font-size:12px!important;}
.medical-cert-a4-v297 .mc297-content p{margin:3.2mm 0!important;}
.medical-cert-a4-v297 .mc297-fill{padding:0 2mm!important;}
.medical-cert-a4-v297 .mc297-label.strong{margin-top:11mm!important;}
.medical-cert-a4-v297 .mc297-lines{line-height:1.35!important;min-height:18mm!important;background:repeating-linear-gradient(to bottom, transparent 0, transparent 7.5mm, #111 7.5mm, #111 7.72mm)!important;background-size:100% 7.72mm!important;}
.medical-cert-a4-v297 .mc297-lines.two{min-height:16mm!important;}
.medical-cert-a4-v297 .mc297-lines.three{min-height:25mm!important;}
.medical-cert-a4-v297 .mc297-sign{font-size:11.4px!important;bottom:42mm!important;}
.medical-cert-a4-v297 .mc297-note{font-size:9px!important;}
@media print{
  .medical-cert-a4-v297{font-size:11.4px!important;line-height:1.32!important;padding:24mm 26mm 18mm!important;}
}

/* PTWork v2.9.10 - medical certificate smaller, journal/trial balance/expense filters */
.medical-cert-a4-v297{font-size:10.25px!important;line-height:1.30!important;}
.medical-cert-a4-v297 .mc297-clinic b{font-size:11.7px!important;}
.medical-cert-a4-v297 .mc297-clinic p,.medical-cert-a4-v297 .mc297-no{font-size:10.25px!important;}
.medical-cert-a4-v297 .mc297-title h1{font-size:12.4px!important;}
.medical-cert-a4-v297 .mc297-title h2{font-size:10.8px!important;}
.medical-cert-a4-v297 .mc297-content p{margin:2.9mm 0!important;}
.medical-cert-a4-v297 .mc297-sign{font-size:10.25px!important;}
.medical-cert-a4-v297 .mc297-note{font-size:8.1px!important;}
.status-pill.danger,.badge.danger{background:#fee2e2!important;color:#991b1b!important;}
.trial-report-company.print-only{display:none;}
.trial-balance-table .tb-row-asset{background:#eef6ff;}
.trial-balance-table .tb-row-contra_asset{background:#f5f3ff;}
.trial-balance-table .tb-row-liability{background:#fff7ed;}
.trial-balance-table .tb-row-equity{background:#ecfdf5;}
.trial-balance-table .tb-row-income{background:#eff6ff;}
.trial-balance-table .tb-row-expense{background:#fff1f2;}
.trial-balance-table .trial-total-row{background:#e5e7eb;font-weight:800;}
.accounting-expense-filter input[name="q"]{min-width:260px;}
@media print{
  .no-print,.sidebar,.topbar,.app-footer,.toolbar{display:none!important;}
  .main{width:100%!important;margin:0!important;display:block!important;}
  .content{padding:10mm!important;background:#fff!important;}
  .trial-report-company.print-only{display:block!important;text-align:center;margin-bottom:8mm;}
  .trial-report-company h2{margin:0;font-size:18px;}
  .trial-report-company p{margin:2mm 0 0;font-size:13px;}
  .trial-balance-card{box-shadow:none!important;border:0!important;padding:0!important;}
  .trial-balance-table{font-size:11px!important;width:100%!important;border-collapse:collapse!important;}
  .trial-balance-table th,.trial-balance-table td{border:1px solid #111!important;padding:3px 5px!important;}
  .trial-balance-print-head{display:none!important;}
}


/* PTWork v2.9.10 financial statements */
.financial-report-page{max-width:960px;margin:18px auto;padding:28px 34px;background:#fff;color:#111;box-shadow:0 10px 30px rgba(15,23,42,.08);}
.financial-report-head{text-align:center;margin-bottom:22px;line-height:1.35;}
.financial-report-head h2{font-size:22px;margin:0;color:#111;}
.financial-report-head h3{font-size:20px;margin:18px 0 4px;color:#111;}
.financial-report-head p{margin:2px 0;color:#334155;}
.financial-statement-table{width:100%;border-collapse:collapse;font-size:14px;}
.financial-statement-table th,.financial-statement-table td{border-bottom:1px solid #e5e7eb;padding:9px 10px;}
.financial-statement-table .num{text-align:right;white-space:nowrap;}
.statement-section th{background:#eef6fb;color:#0e7490;text-align:left;border-top:2px solid #38bdf8;}
.statement-total th,.statement-total td{background:#f8fafc;font-weight:800;border-top:1px solid #cbd5e1;}
.statement-grand-total th,.statement-grand-total td{background:#f1f5f9;font-size:16px;font-weight:900;border-top:2px solid #334155;border-bottom:3px double #334155;}
.financial-position-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px;align-items:start;}
.financial-report-sign{display:flex;justify-content:space-between;gap:20px;margin-top:42px;font-size:13px;color:#334155;}
.wht-a4-document .wht-dividend-block .wht-subitems{font-size:inherit!important;line-height:1.22!important;}
@media(max-width:900px){.financial-position-grid{grid-template-columns:1fr}.financial-report-page{padding:18px 14px}.financial-report-sign{display:block;line-height:2.2}}
@media print{.no-print,.sidebar,.topbar,.app-footer{display:none!important}.main,.content{margin:0!important;padding:0!important;background:#fff!important}.financial-report-page{max-width:none!important;width:190mm!important;min-height:270mm!important;margin:0 auto!important;padding:12mm 10mm!important;box-shadow:none!important;border:0!important}.financial-report-head h2{font-size:18px!important}.financial-report-head h3{font-size:17px!important}.financial-statement-table{font-size:12px!important}.financial-statement-table th,.financial-statement-table td{padding:6px 7px!important}.financial-report-sign{margin-top:30px!important}@page{size:A4 portrait;margin:10mm}}

/* PTWork v2.9.11 - General Ledger / Audit trail */
.status-pill.info{background:#dbeafe!important;color:#1d4ed8!important;}
.status-pill.warning,.badge.warning{background:#fef3c7!important;color:#92400e!important;}
.journal-status-tabs{gap:6px;flex-wrap:wrap;}
.journal-status-draft{background:#fffef2;}
.journal-status-approved,.journal-status-posted{background:#f0fdf4;}
.journal-status-cancelled{background:#fff1f2;color:#991b1b;text-decoration:line-through;}
.journal-list-table .actions{white-space:nowrap;}
.gl-account-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;}
.gl-table{width:100%;border-collapse:collapse;}
.gl-table th,.gl-table td{border-bottom:1px solid #e5e7eb;padding:8px 10px;vertical-align:top;}
.gl-table .num{text-align:right;white-space:nowrap;}
.gl-opening,.gl-table .trial-total-row{background:#f8fafc;font-weight:800;}
.gl-report-card{padding:18px;}
@media print{
  .gl-report-card{box-shadow:none!important;border:0!important;padding:0!important;}
  .gl-account-head{display:block!important;text-align:left;margin:0 0 4mm!important;}
  .gl-table{font-size:11px!important;width:100%!important;border-collapse:collapse!important;}
  .gl-table th,.gl-table td{border:1px solid #111!important;padding:3px 5px!important;}
}

/* PTWork v2.9.12 accounting period / GL print */
.period-status-open{background:#f0fdf4}.period-status-locked{background:#fffbeb}.period-status-closed{background:#fef2f2}.accounting-period-table td{vertical-align:middle}.gl-filter-form input[name="account_code_from"],.gl-filter-form input[name="account_code_to"]{max-width:120px}.gl-account-section{page-break-inside:avoid}.gl-page-break{break-before:page;page-break-before:always}.gl-account-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.status-pill.warning{background:#fef3c7;color:#92400e}.kpi-grid.small{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}.kpi-grid.small .card strong{display:block;font-size:24px;color:#2b91c5;margin-top:6px}
@media(max-width:900px){.kpi-grid.small{grid-template-columns:repeat(2,minmax(0,1fr))}.gl-account-head{display:block}.accounting-period-table .actions form{display:block;margin:4px 0}}
@media print{.gl-page-break{break-before:page!important;page-break-before:always!important}.gl-report-card{box-shadow:none!important;border:0!important;margin:0!important;padding:0!important}.gl-table{font-size:11px}.gl-account-head{margin-top:8px}.toolbar,.page-head.no-print,.no-print{display:none!important}}

/* PTWork v2.9.14 - VAT/WHT/Payroll tax, trial print, GL range dropdown, accounting two-level rail */
.app-shell.ptwork-v28 .webapp-logo{content:url('/assets/img/ptwork-logo-clean.png?v=2.9.18')!important;}
.inline-check{display:flex!important;align-items:center!important;gap:8px!important;min-width:260px!important;}
.inline-check input[type="checkbox"]{width:auto!important;min-width:0!important;}
.tax-report-page .tax-submission-form{margin-top:18px;border:1px solid #dbeafe;background:#f8fbff;border-radius:12px;padding:14px;}
.form-inline-grid{display:grid;grid-template-columns:repeat(5,minmax(140px,1fr));gap:10px;align-items:end;}
.form-inline-grid button{height:42px;align-self:end;}
.trial-balance-table a{color:inherit!important;text-decoration:none!important;pointer-events:none!important;}
.trial-balance-table .tb-row-asset td,.trial-balance-table .tb-row-asset th{background:#eaf5ff!important;}
.trial-balance-table .tb-row-contra_asset td,.trial-balance-table .tb-row-contra_asset th{background:#f3edff!important;}
.trial-balance-table .tb-row-liability td,.trial-balance-table .tb-row-liability th{background:#fff2df!important;}
.trial-balance-table .tb-row-equity td,.trial-balance-table .tb-row-equity th{background:#e8fbf0!important;}
.trial-balance-table .tb-row-income td,.trial-balance-table .tb-row-income th{background:#edf7ff!important;}
.trial-balance-table .tb-row-expense td,.trial-balance-table .tb-row-expense th{background:#fff0f3!important;}
.trial-balance-table .trial-total-row th{background:#dbeafe!important;color:#0f172a!important;}
.gl-filter-form select[name="account_code_from"],.gl-filter-form select[name="account_code_to"]{min-width:250px!important;max-width:320px!important;}
@media(min-width:901px){
  body[class*="route-accounting"] .sidebar{width:86px!important;padding:14px 10px!important;overflow:visible!important;}
  body[class*="route-accounting"] .main{margin-left:306px!important;}
  body[class*="route-accounting"] .app-brand{min-height:72px!important;padding:6px 4px 14px!important;justify-content:center!important;}
  body[class*="route-accounting"] .webapp-logo{max-width:64px!important;max-height:54px!important;object-fit:contain!important;}
  body[class*="route-accounting"] .side-nav>a span:not(.nav-icon),
  body[class*="route-accounting"] .nav-parent>span:not(.nav-icon){display:none!important;}
  body[class*="route-accounting"] .side-nav a{justify-content:center!important;padding:12px 8px!important;}
  body[class*="route-accounting"] .side-nav .nav-icon{margin:0!important;font-size:22px!important;min-width:34px!important;}
  body[class*="route-accounting"] .side-nav .nav-group.open>.nav-children{display:block!important;position:fixed!important;left:86px!important;top:0!important;bottom:0!important;width:220px!important;margin:0!important;padding:18px 12px!important;background:linear-gradient(180deg,#f8fafc,#eef6ff)!important;border-right:1px solid #dbeafe!important;border-left:0!important;box-shadow:12px 0 28px rgba(15,23,42,.10)!important;z-index:28!important;overflow:auto!important;}
  body[class*="route-accounting"] .side-nav .nav-group.open>.nav-children a{display:flex!important;justify-content:flex-start!important;color:#334155!important;background:transparent!important;border-radius:10px!important;font-size:14px!important;font-weight:700!important;box-shadow:none!important;padding:9px 12px!important;}
  body[class*="route-accounting"] .side-nav .nav-group.open>.nav-children a.active{background:#dbeafe!important;color:#075985!important;}
  body[class*="route-accounting"] .nav-children .nav-sub-title{color:#0f172a!important;border-top:1px solid #dbeafe!important;margin-top:8px!important;padding:12px 12px 5px!important;}
}
@media(max-width:900px){.form-inline-grid{grid-template-columns:1fr}.gl-filter-form select[name="account_code_from"],.gl-filter-form select[name="account_code_to"]{min-width:0!important;max-width:none!important;width:100%!important;}}
@media print{
  .trial-balance-table td:first-child,.trial-balance-table td:nth-child(2){font-weight:700!important;color:#111!important;text-decoration:none!important;}
  .trial-balance-table .tb-row-asset td{background:#eaf5ff!important;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important;}
  .trial-balance-table .tb-row-contra_asset td{background:#f3edff!important;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important;}
  .trial-balance-table .tb-row-liability td{background:#fff2df!important;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important;}
  .trial-balance-table .tb-row-equity td{background:#e8fbf0!important;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important;}
  .trial-balance-table .tb-row-income td{background:#edf7ff!important;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important;}
  .trial-balance-table .tb-row-expense td{background:#fff0f3!important;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important;}
}

/* PTWork v2.9.14 - Asset lifecycle and GL zero rows */
.mini-bars{display:flex;align-items:flex-end;gap:10px;min-height:130px;padding:12px 4px 4px;overflow:auto}
.mini-bar{min-width:56px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:4px;color:#475569;font-size:12px}
.mini-bar span{width:22px;background:#8b5cf6;border-radius:8px 8px 0 0;display:block;min-height:3px}
.mini-bar small{white-space:nowrap;font-size:11px;color:#64748b}
.asset-filter a.btn-small{margin-right:4px}
@media print{.gl-report-card.gl-page-break{page-break-before:always;break-before:page}.gl-report-card{box-shadow:none!important;border:0!important}.asset-filter,.page-head.no-print,.toolbar.no-print{display:none!important}}

/* PTWork v2.9.17 - year-end closing, financial statement package, settings second rail */
.app-shell.ptwork-v28 .webapp-logo{content:url('/assets/img/ptwork-logo-clean.png?v=2.9.18')!important;}
.fs-cover{text-align:center;padding:40px 24px;}
.fs-cover h1{font-size:30px;margin:24px 0 8px;color:#0f172a;}
.fs-page{page-break-before:always;}
.fs-package .section th,.fs-package .section td{background:#dbeafe!important;color:#0f172a;font-weight:900;}
.asset-status-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:-6px 0 14px;}
.pagination{display:flex;gap:8px;align-items:center;justify-content:center;margin:14px 0 24px;}
@media(min-width:901px){
  body.route-settings .sidebar,body.route-courses .sidebar,body.route-courses-patients .sidebar,body.route-services .sidebar,body.route-rooms .sidebar,body.route-staff .sidebar,body[class*="route-staff-"] .sidebar{width:86px!important;padding:14px 10px!important;overflow:visible!important;}
  body.route-settings .main,body.route-courses .main,body.route-courses-patients .main,body.route-services .main,body.route-rooms .main,body.route-staff .main,body[class*="route-staff-"] .main{margin-left:306px!important;}
  body.route-settings .app-brand,body.route-courses .app-brand,body.route-courses-patients .app-brand,body.route-services .app-brand,body.route-rooms .app-brand,body.route-staff .app-brand,body[class*="route-staff-"] .app-brand{min-height:72px!important;padding:6px 4px 14px!important;justify-content:center!important;}
  body.route-settings .webapp-logo,body.route-courses .webapp-logo,body.route-courses-patients .webapp-logo,body.route-services .webapp-logo,body.route-rooms .webapp-logo,body.route-staff .webapp-logo,body[class*="route-staff-"] .webapp-logo{max-width:64px!important;max-height:54px!important;object-fit:contain!important;}
  body.route-settings .side-nav>a span:not(.nav-icon),body.route-courses .side-nav>a span:not(.nav-icon),body.route-courses-patients .side-nav>a span:not(.nav-icon),body.route-services .side-nav>a span:not(.nav-icon),body.route-rooms .side-nav>a span:not(.nav-icon),body.route-staff .side-nav>a span:not(.nav-icon),body[class*="route-staff-"] .side-nav>a span:not(.nav-icon),
  body.route-settings .nav-parent>span:not(.nav-icon),body.route-courses .nav-parent>span:not(.nav-icon),body.route-courses-patients .nav-parent>span:not(.nav-icon),body.route-services .nav-parent>span:not(.nav-icon),body.route-rooms .nav-parent>span:not(.nav-icon),body.route-staff .nav-parent>span:not(.nav-icon),body[class*="route-staff-"] .nav-parent>span:not(.nav-icon){display:none!important;}
  body.route-settings .side-nav a,body.route-courses .side-nav a,body.route-courses-patients .side-nav a,body.route-services .side-nav a,body.route-rooms .side-nav a,body.route-staff .side-nav a,body[class*="route-staff-"] .side-nav a{justify-content:center!important;padding:12px 8px!important;}
  body.route-settings .side-nav .nav-icon,body.route-courses .side-nav .nav-icon,body.route-courses-patients .side-nav .nav-icon,body.route-services .side-nav .nav-icon,body.route-rooms .side-nav .nav-icon,body.route-staff .side-nav .nav-icon,body[class*="route-staff-"] .side-nav .nav-icon{margin:0!important;font-size:22px!important;min-width:34px!important;}
  body.route-settings .side-nav .nav-group.open>.nav-children,body.route-courses .side-nav .nav-group.open>.nav-children,body.route-courses-patients .side-nav .nav-group.open>.nav-children,body.route-services .side-nav .nav-group.open>.nav-children,body.route-rooms .side-nav .nav-group.open>.nav-children,body.route-staff .side-nav .nav-group.open>.nav-children,body[class*="route-staff-"] .side-nav .nav-group.open>.nav-children{display:block!important;position:fixed!important;left:86px!important;top:0!important;bottom:0!important;width:220px!important;margin:0!important;padding:18px 12px!important;background:linear-gradient(180deg,#f8fafc,#fff7ed)!important;border-right:1px solid #fed7aa!important;border-left:0!important;box-shadow:12px 0 28px rgba(15,23,42,.10)!important;z-index:28!important;overflow:auto!important;}
  body.route-settings .side-nav .nav-group.open>.nav-children a,body.route-courses .side-nav .nav-group.open>.nav-children a,body.route-courses-patients .side-nav .nav-group.open>.nav-children a,body.route-services .side-nav .nav-group.open>.nav-children a,body.route-rooms .side-nav .nav-group.open>.nav-children a,body.route-staff .side-nav .nav-group.open>.nav-children a,body[class*="route-staff-"] .side-nav .nav-group.open>.nav-children a{display:flex!important;justify-content:flex-start!important;color:#334155!important;background:transparent!important;border-radius:10px!important;font-size:14px!important;font-weight:700!important;box-shadow:none!important;padding:9px 12px!important;}
  body.route-settings .side-nav .nav-group.open>.nav-children a.active,body.route-courses .side-nav .nav-group.open>.nav-children a.active,body.route-courses-patients .side-nav .nav-group.open>.nav-children a.active,body.route-services .side-nav .nav-group.open>.nav-children a.active,body.route-rooms .side-nav .nav-group.open>.nav-children a.active,body.route-staff .side-nav .nav-group.open>.nav-children a.active,body[class*="route-staff-"] .side-nav .nav-group.open>.nav-children a.active{background:#ffedd5!important;color:#9a3412!important;}
}
@media print{.fs-page{page-break-before:always}.fs-cover{box-shadow:none!important}.pagination,.asset-status-tabs{display:none!important}.fs-package .section th,.fs-package .section td{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important;}}

/* PTWork v2.9.17 - accounting health check and business-neutral accounting core */
.health-check-table .health-ok{background:#f0fdf4}.health-check-table .health-warn{background:#fffbeb}.health-check-table .health-error{background:#fef2f2}.status-pill.danger{background:#fee2e2!important;color:#991b1b!important}.health-check-table td{vertical-align:top}.route-accounting-health-check .finance-kpi-cards .card h2{font-size:30px}.route-accounting-settings textarea{width:100%}.route-accounting-settings .form-grid select{width:100%}

/* PTWork v2.9.18 - accounting core separation prep */
.accounting-setup-steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}.accounting-setup-steps .step{border:1px solid #e5e7eb;border-radius:14px;padding:14px;background:#fff}.accounting-setup-steps .step b{display:block}.table-compact select,.table-compact input{min-width:120px}
/* ValuedWork V0.1 theme: burgundy / cream / white */
:root{--ac-burgundy:#7a1f2e;--ac-burgundy-2:#9c2f42;--ac-cream:#f4ecdd;--ac-cream-2:#ead9c0;--ac-white:#fff;--ac-text:#2e1c18}
body.valuedwork,.valuedwork{background:var(--ac-cream);color:var(--ac-text)}
.valuedwork .sidebar{background:linear-gradient(180deg,#7a1f2e,#4c141d)!important;color:#fff}
.valuedwork .side-nav a,.valuedwork .nav-parent{color:#fff!important;border-radius:12px}
.valuedwork .side-nav a:hover,.valuedwork .side-nav a.active,.valuedwork .nav-group.active>.nav-parent{background:rgba(255,247,236,.18)!important;color:#fff!important}
.valuedwork .nav-children{background:rgba(255,255,255,.07);border-radius:14px;margin:4px 10px 10px;padding:6px}
.valuedwork .nav-children a{font-size:.92rem;color:#f4ecdd!important}
.valuedwork .topbar{background:var(--ac-white)!important;border-bottom:1px solid var(--ac-cream-2)}
.valuedwork .card{background:#fff;border:1px solid #f0dcc6;border-radius:18px;box-shadow:0 8px 28px rgba(122,31,46,.09)}
.valuedwork .btn-primary,.valuedwork button.btn-primary{background:var(--ac-burgundy)!important;border-color:var(--ac-burgundy)!important;color:#fff!important}
.valuedwork .btn{border-radius:12px;padding:.55rem .9rem;text-decoration:none;display:inline-flex;align-items:center;gap:.35rem;border:1px solid #ead6c2;background:#fff;color:#7a1f2e}
.valuedwork .badge{background:#fff0df;color:#7a1f2e;border:1px solid #e7c8a8;border-radius:999px;padding:.2rem .55rem}
.ac-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:16px}.stat-card{padding:18px}.stat-label{color:#8b5e3c;font-size:.92rem}.stat-value{font-size:1.8rem;font-weight:800;color:#7a1f2e}.mt-3{margin-top:18px}
.page-header{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px}.page-header h1{margin:0;color:#7a1f2e}.text-muted{color:#8b5e3c}.text-end{text-align:right}.text-center{text-align:center}.table{width:100%;border-collapse:collapse}.table th,.table td{padding:12px;border-bottom:1px solid #f0dcc6}.table th{background:#f4ecdd;color:#7a1f2e;text-align:left}.table-card{overflow:auto}.doc-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px}.doc-tabs a{padding:8px 12px;border-radius:999px;background:#fff;border:1px solid #ead6c2;color:#7a1f2e;text-decoration:none}.doc-tabs a.active{background:#7a1f2e;color:#fff}.form-card{padding:20px}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}.form-card label{display:flex;flex-direction:column;gap:6px;color:#5a3328}.form-card input,.form-card select,.form-card textarea{border:1px solid #e6cdb4;border-radius:12px;padding:10px;background:#fff}.form-actions{display:flex;gap:10px;margin-top:16px}.print-actions{display:flex;gap:8px;margin-bottom:12px}.a4-doc{max-width:800px;margin:auto;padding:40px;min-height:900px}.total-box{margin-left:auto;max-width:320px;line-height:2}@media print{.sidebar,.topbar,.app-footer,.print-actions{display:none!important}.main{margin:0!important}.content{padding:0!important}.a4-doc{box-shadow:none;border:none}}

/* ValuedWork V0.1.1 fixes */
.valuedwork .webapp-logo{max-width:190px!important;max-height:74px!important;width:auto!important;object-fit:contain!important;filter:none!important;content:url('/assets/img/valuedwork-logo.png?v=0.1.1')!important;}
.valuedwork .app-brand{justify-content:center!important;padding:8px 6px 16px!important;min-height:88px!important;}
.valuedwork .nav-children,.valuedwork .side-nav .nav-group.open>.nav-children{background:rgba(255,255,255,.10)!important;border-left:1px solid rgba(255,255,255,.25)!important;}
.valuedwork .nav-children a,.valuedwork .side-nav .nav-group.open>.nav-children a{color:#f4ecdd!important;opacity:1!important;text-shadow:0 1px 1px rgba(0,0,0,.18);}
.valuedwork .nav-children a:hover,.valuedwork .side-nav .nav-group.open>.nav-children a:hover{background:rgba(255,255,255,.18)!important;color:#fff!important;}
body.valuedwork.route-settings .side-nav .nav-group.open>.nav-children,
body.valuedwork[class*="route-settings"] .side-nav .nav-group.open>.nav-children,
body.valuedwork[class*="route-accounting"] .side-nav .nav-group.open>.nav-children{background:linear-gradient(180deg,#7a1f2e,#4c141d)!important;border-right:1px solid rgba(255,255,255,.18)!important;}
body.valuedwork.route-settings .side-nav .nav-group.open>.nav-children a,
body.valuedwork[class*="route-settings"] .side-nav .nav-group.open>.nav-children a,
body.valuedwork[class*="route-accounting"] .side-nav .nav-group.open>.nav-children a{color:#f4ecdd!important;background:transparent!important;}
body.valuedwork.route-settings .side-nav .nav-group.open>.nav-children a.active,
body.valuedwork[class*="route-settings"] .side-nav .nav-group.open>.nav-children a.active,
body.valuedwork[class*="route-accounting"] .side-nav .nav-group.open>.nav-children a.active{background:rgba(255,247,236,.18)!important;color:#fff!important;}


/* ValuedWork V0.1.2 brand and menu visibility patch */
:root{--vw-maroon:#8c1e38;--vw-maroon-dark:#5b1024;--vw-cream:#fff4e6;--vw-white:#ffffff;}
body.valuedwork .sidebar{background:linear-gradient(180deg,#5b1024 0%,#8c1e38 58%,#3a0b18 100%)!important;color:#fff!important;}
body.valuedwork .topbar{background:#fffaf3!important;border-bottom:1px solid #f0dfc8!important;}
body.valuedwork .content{background:#fffaf3!important;}
body.valuedwork .btn,body.valuedwork button{background:#8c1e38;color:#fff;}
body.valuedwork .btn.secondary{background:#7a6a5f!important;}
body.valuedwork .card,body.valuedwork .white-card{background:#fff!important;border-color:#ead7bd!important;}
body.valuedwork .webapp-logo{content:url('/assets/img/valuedwork-logo-white.png?v=0.1.2')!important;max-width:220px!important;max-height:82px!important;width:100%!important;object-fit:contain!important;background:transparent!important;filter:drop-shadow(0 8px 16px rgba(0,0,0,.25))!important;}
body.valuedwork .side-nav .nav-children{display:none;margin:2px 0 8px 34px;border-left:1px solid rgba(255,255,255,.28);padding-left:8px;}
body.valuedwork .side-nav .nav-group.open .nav-children{display:block!important;}
body.valuedwork .side-nav .nav-children a{color:#fff!important;background:rgba(255,255,255,.08)!important;opacity:1!important;font-weight:700!important;}
body.valuedwork .side-nav .nav-children a:hover{background:rgba(255,255,255,.18)!important;}
body.valuedwork .side-nav a.active,body.valuedwork .nav-group.active>.nav-parent{background:rgba(255,255,255,.18)!important;color:#fff!important;box-shadow:none!important;}
body.valuedwork .topbar-title small{color:#8c1e38!important;font-weight:700!important;}
@media(min-width:901px){
  body.valuedwork[class*="route-accounting"] .side-nav .nav-group.open>.nav-children{background:linear-gradient(180deg,#fffaf3,#fff4e6)!important;border-right:1px solid #ead7bd!important;}
  body.valuedwork[class*="route-accounting"] .side-nav .nav-group.open>.nav-children a{color:#5b1024!important;background:transparent!important;}
  body.valuedwork[class*="route-accounting"] .side-nav .nav-group.open>.nav-children a:hover,
  body.valuedwork[class*="route-accounting"] .side-nav .nav-group.open>.nav-children a.active{background:#f3dfc7!important;color:#8c1e38!important;}
}


/* ValuedWork V0.1.3 */
.nav-group.open .nav-children{display:block!important; visibility:visible!important; opacity:1!important;}
.nav-children a{color:#fff8ed!important; background:rgba(255,255,255,.06); border-radius:8px; margin:2px 8px; padding:8px 12px; display:block;}
.nav-children a:hover{background:rgba(255,255,255,.16); color:#ffffff!important;}
.settings-head{display:flex; justify-content:space-between; align-items:center; gap:16px;}
.settings-brand-logo{max-width:180px; max-height:72px; object-fit:contain; background:#7a1628; padding:12px; border-radius:14px;}
.settings-menu-grid{display:grid; grid-template-columns:repeat(auto-fit,minmax(160px,1fr)); gap:10px; margin-bottom:16px;}
.settings-menu-grid a{display:block; padding:12px 14px; border-radius:12px; background:#fff7ed; color:#7a1628; font-weight:700; text-decoration:none; border:1px solid #efd8c6;}
.settings-menu-grid a:hover{background:#7a1628; color:#fff;}
.accounting-dashboard-cards .stat-card,.report-tax-cards .stat-card{min-height:110px;}

/* ValuedWork V0.1.5 consistency */
.login-page.valuedwork{background:linear-gradient(135deg,#7b1735,#f4ecdd);}.valued-login-card{border-top:6px solid #8b1e3f}.valued-login-card h1{color:#8b1e3f}.sidebar .nav-group{display:block}.sidebar .nav-children{display:block;margin:4px 0 8px 34px;padding-left:10px;border-left:1px solid rgba(255,255,255,.22)}.sidebar .nav-children a{display:block;color:#f4ecdd!important;opacity:.92;padding:7px 8px;border-radius:8px}.sidebar .nav-children a:hover{background:rgba(255,255,255,.12);color:#fff!important}.user-menu{position:relative;margin-left:auto}.user-menu-dropdown{display:none;position:absolute;right:0;top:115%;background:#fff;border:1px solid #ead8c5;border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.14);min-width:180px;z-index:50}.user-menu-open .user-menu-dropdown{display:block}.user-menu-dropdown a{display:block;padding:10px 12px;color:#58152d;text-decoration:none}.user-menu-navlayout{border-top:1px solid #f0e2cf;border-bottom:1px solid #f0e2cf;padding:8px 12px}.user-menu-navlayout-label{display:block;font-size:12px;color:#8b5e3c;margin-bottom:6px}.user-menu-navlayout form{display:flex;gap:6px}.user-menu-navlayout-btn{flex:1;border:1px solid #ead8c5;background:#fff;color:#58152d;border-radius:8px;padding:6px 4px;font-size:12px;cursor:pointer}.user-menu-navlayout-btn.is-active{background:#7b1023;border-color:#7b1023;color:#fff}.dashboard-chart-grid{display:grid;grid-template-columns:2fr 1fr;gap:16px}.inline-status select{min-width:110px;padding:5px 8px}.actions{white-space:nowrap}.btn-small.danger{background:#b42345;color:#fff;border:0;border-radius:6px;padding:6px 9px}@media(max-width:900px){.dashboard-chart-grid{grid-template-columns:1fr}.sidebar .nav-children{display:block}}
/* ValuedWork v0.1.5 consistency */
.app-shell.valuedwork .side-nav .nav-group{display:block;margin:4px 8px;border-radius:12px;overflow:hidden;background:transparent}
.app-shell.valuedwork .side-nav .nav-parent{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;color:#fff;text-decoration:none;border-radius:12px;background:rgba(255,255,255,.04)}
.app-shell.valuedwork .side-nav .nav-group.active .nav-parent,.app-shell.valuedwork .side-nav .nav-parent:hover{background:#f7ead7;color:#7b1732;font-weight:700}
.app-shell.valuedwork .side-nav .nav-children{display:block;padding:4px 0 8px 34px;background:transparent}
.app-shell.valuedwork .side-nav .nav-children a{display:block;color:#f9f1e8;padding:7px 10px;margin:1px 0;border-left:2px solid rgba(247,234,215,.3);text-decoration:none;border-radius:8px}
.app-shell.valuedwork .side-nav .nav-children a:hover{background:rgba(247,234,215,.18);color:#fff;border-left-color:#f7ead7}
.dashboard-chart-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(280px,1fr);gap:16px;max-width:100%;overflow:hidden}.dashboard-chart-grid canvas{max-width:100%;height:auto}.ac-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;max-width:100%}.content{overflow-x:hidden}.table-card,.responsive-table-wrap{max-width:100%;overflow-x:auto}.sales-lines select,.sales-lines input{min-width:110px}.user-menu-dropdown{z-index:9999}.valued-login-card{border-top:6px solid #8b1e3f;background:#fffaf3}.login-page.valuedwork{background:linear-gradient(135deg,#7b1732 0%,#8b1e3f 45%,#f7ead7 45%,#fff 100%)}.settings-brand-logo,.login-logo{max-width:220px;height:auto}@media(max-width:900px){.dashboard-chart-grid{grid-template-columns:1fr}.app-shell.valuedwork .side-nav .nav-children{padding-left:24px}}

/* ValuedWork V0.1.6 - compact two-level sidebar + sales print template */
.app-shell.valuedwork .sidebar{width:292px!important;padding:12px 10px!important;overflow-y:auto!important;overflow-x:hidden!important;scrollbar-width:thin;}
.app-shell.valuedwork .main{margin-left:292px!important;}
.app-shell.valuedwork .app-brand{min-height:70px!important;margin-bottom:8px!important;padding:6px 4px 10px!important;}
.app-shell.valuedwork .webapp-logo{max-height:60px!important;max-width:210px!important;}
.app-shell.valuedwork .side-nav{display:block!important;}
.app-shell.valuedwork .side-nav .nav-group{margin:3px 4px!important;border-radius:12px!important;overflow:visible!important;}
.app-shell.valuedwork .side-nav .nav-parent{min-height:40px!important;padding:8px 10px!important;border-radius:11px!important;display:flex!important;align-items:center!important;gap:9px!important;}
.app-shell.valuedwork .side-nav .nav-icon{width:22px!important;text-align:center!important;flex:0 0 22px!important;}
.app-shell.valuedwork .side-nav .nav-caret{margin-left:auto!important;font-size:11px!important;opacity:.8!important;}
.app-shell.valuedwork .side-nav .nav-children{display:none!important;margin:3px 0 8px 31px!important;padding:5px 0 5px 9px!important;border-left:2px solid rgba(247,234,215,.36)!important;background:rgba(255,255,255,.045)!important;border-radius:0 10px 10px 0!important;}
.app-shell.valuedwork .side-nav .nav-group.active .nav-children,
.app-shell.valuedwork .side-nav .nav-group:hover .nav-children{display:block!important;}
.app-shell.valuedwork .side-nav .nav-children a{font-size:12.5px!important;line-height:1.25!important;padding:6px 9px!important;margin:1px 4px 1px 0!important;border:0!important;border-radius:8px!important;background:transparent!important;color:#f4ecdd!important;}
.app-shell.valuedwork .side-nav .nav-children a:hover{background:rgba(247,234,215,.18)!important;color:#fff!important;}
.app-shell.valuedwork .side-nav .nav-group.active>.nav-parent{background:#f7ead7!important;color:#7b1732!important;font-weight:800!important;}
@media(max-width:900px){.app-shell.valuedwork .sidebar{width:285px!important}.app-shell.valuedwork .main{margin-left:0!important}.app-shell.valuedwork .side-nav .nav-children{display:block!important;margin-left:28px!important}.app-shell.valuedwork .sidebar{max-height:100vh!important}}

.vw-sales-print-a4{width:210mm;min-height:297mm;margin:0 auto;background:#fff;color:#111;padding:15mm 13mm 12mm;font-family:'Prompt','Sarabun',sans-serif;font-size:13px;line-height:1.45;box-shadow:0 5px 22px rgba(0,0,0,.08)}
.vw-print-head{display:grid;grid-template-columns:1fr 1.2fr;gap:18mm;align-items:start;margin-bottom:8mm}.vw-print-logo{width:28mm;max-height:28mm;object-fit:contain;margin-bottom:4mm}.vw-print-company p,.vw-print-customer p,.vw-print-payment p{margin:1.4mm 0}.vw-print-docinfo{text-align:left}.vw-print-docinfo h1{text-align:center;color:#46a52b;font-size:16px;margin:3mm 0 0;font-weight:500;white-space:nowrap}.doc-copy-label{text-align:center;color:#46a52b;font-size:13px;margin-bottom:5mm}.green-line{height:1px;background:#bfbfbf;margin-bottom:4mm}.vw-print-docinfo table{border:0;width:100%;background:#fff;border-collapse:collapse}.vw-print-docinfo th,.vw-print-docinfo td{border:0;padding:1.6mm 2mm;text-align:left;vertical-align:top;background:#fff}.vw-print-docinfo th{width:28mm;color:#46a52b;font-weight:500}.vw-print-docinfo hr{border:0;border-top:1px solid #cfcfcf;margin:3mm 0}.green-title{color:#46a52b;font-weight:600;margin-bottom:1mm}.vw-print-customer{margin:2mm 0 7mm}.vw-print-items{width:100%;border-collapse:collapse;margin-top:2mm;border:0;background:#fff}.vw-print-items th{background:#49a82d!important;color:#fff!important;border:0!important;font-weight:500;padding:2.4mm 2mm}.vw-print-items td{border:0!important;border-bottom:1px solid #cfcfcf!important;padding:2.5mm 2mm!important;vertical-align:top;background:#fff!important}.vw-print-items .no{width:10mm;text-align:center}.vw-print-items .qty{width:25mm;text-align:center}.vw-print-items .price,.vw-print-items .total{width:30mm;text-align:right}.vw-print-items .desc{white-space:normal}.vw-print-summary-row{display:grid;grid-template-columns:1fr 86mm;gap:14mm;margin-top:7mm;align-items:start}.baht-text{margin-top:0}.vw-print-totals{border-top:0}.vw-print-totals div{display:flex;justify-content:space-between;gap:8mm;padding:2mm 1mm;color:#46a52b}.vw-print-totals div:nth-child(3){border-top:1px solid #cfcfcf;margin-top:2mm;padding-top:3mm}.vw-print-totals span{font-weight:500}.vw-print-totals b{color:#111;font-weight:500;white-space:nowrap}.vw-print-totals .net span{font-weight:700}.vw-print-payment{margin-top:9mm}.vw-print-payment mark{background:#ffe81f;padding:0 1.5mm}.payment-line{margin-top:8mm!important}.vw-print-signatures{display:grid;grid-template-columns:1fr 45mm 1fr;gap:12mm;align-items:end;margin-top:12mm;text-align:center}.vw-print-signatures p{margin:2mm 0}.sig-line{border-bottom:1px solid #cfcfcf;height:18mm}.stamp-space{height:34mm}.print-actions.no-print{max-width:210mm;margin:0 auto 10px;}
@media print{@page{size:A4 portrait;margin:0}.sidebar,.topbar,.app-footer,.print-actions,.no-print{display:none!important}.main{margin:0!important}.content{padding:0!important;background:#fff!important}.vw-sales-print-a4{width:210mm;min-height:297mm;margin:0!important;padding:15mm 13mm 12mm!important;box-shadow:none!important;page-break-after:auto}.vw-print-docinfo h1{font-size:15px!important}.vw-print-items th{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}}


/* ValuedWork V0.1.7 - consistent 2-level sidebar, VAT setting UI */
.app-shell.valuedwork .sidebar{width:245px!important;max-height:100vh!important;overflow-y:auto!important;overflow-x:visible!important;}
.app-shell.valuedwork .main{width:calc(100% - 245px)!important;margin-left:0!important;}
.app-shell.valuedwork .side-nav{display:block!important;padding:0 8px 16px!important;}
.app-shell.valuedwork .side-nav .nav-group{display:block!important;margin:4px 0!important;border-radius:14px!important;overflow:visible!important;background:transparent!important;}
.app-shell.valuedwork .side-nav .nav-parent{display:flex!important;justify-content:flex-start!important;align-items:center!important;gap:10px!important;min-height:42px!important;width:100%!important;padding:9px 12px!important;border-radius:13px!important;background:rgba(255,255,255,.055)!important;color:#fff!important;text-align:left!important;}
.app-shell.valuedwork .side-nav .nav-parent span:not(.nav-icon):not(.nav-caret){display:inline!important;opacity:1!important;visibility:visible!important;}
.app-shell.valuedwork .side-nav .nav-icon{width:24px!important;min-width:24px!important;flex:0 0 24px!important;margin:0!important;text-align:center!important;font-size:17px!important;}
.app-shell.valuedwork .side-nav .nav-caret{display:inline!important;margin-left:auto!important;}
.app-shell.valuedwork .side-nav .nav-children{position:static!important;left:auto!important;top:auto!important;bottom:auto!important;width:auto!important;display:none!important;margin:4px 0 9px 38px!important;padding:5px 0 5px 10px!important;border-left:2px solid rgba(247,234,215,.36)!important;border-right:0!important;background:rgba(255,255,255,.055)!important;box-shadow:none!important;border-radius:0 12px 12px 0!important;overflow:visible!important;}
.app-shell.valuedwork .side-nav .nav-group.active>.nav-children,
.app-shell.valuedwork .side-nav .nav-group:hover>.nav-children{display:block!important;}
.app-shell.valuedwork .side-nav .nav-group.no-children>.nav-children{display:none!important;}
.app-shell.valuedwork .side-nav .nav-children a{display:block!important;justify-content:flex-start!important;text-align:left!important;font-size:12.5px!important;line-height:1.25!important;color:#f4ecdd!important;background:transparent!important;padding:6px 10px!important;margin:1px 4px 1px 0!important;border-radius:8px!important;box-shadow:none!important;}
.app-shell.valuedwork .side-nav .nav-group.active>.nav-parent{background:#f7ead7!important;color:#7b1732!important;font-weight:850!important;}
.app-shell.valuedwork .side-nav .nav-group.active>.nav-parent .nav-icon{filter:none!important;}
.app-shell.valuedwork .side-nav .nav-children a.active,
.app-shell.valuedwork .side-nav .nav-children a:hover{background:rgba(247,234,215,.18)!important;color:#fff!important;}
.setting-check-row{display:flex!important;align-items:flex-start!important;gap:12px!important;background:#f4ecdd;border:1px solid #ead7bd;border-radius:14px;padding:12px 14px}.setting-check-row input{width:auto!important;margin-top:4px}.setting-check-row small{display:block;color:#8b5e3c;margin-top:3px}
@media(max-width:900px){.app-shell.valuedwork .sidebar{width:285px!important}.app-shell.valuedwork .main{width:100%!important}.app-shell.valuedwork .side-nav .nav-group>.nav-children{display:block!important;margin-left:32px!important}}

/* ValuedWork V0.1.8 - fix sidebar overlaying workspace */
:root{--vw-sidebar-width:245px;}
.app-shell.valuedwork{min-height:100vh;background:#fffaf3;}
.app-shell.valuedwork .sidebar{
  position:fixed!important;
  left:0!important;top:0!important;bottom:0!important;
  width:var(--vw-sidebar-width)!important;
  z-index:1040!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
}
.app-shell.valuedwork .main{
  margin-left:var(--vw-sidebar-width)!important;
  width:calc(100% - var(--vw-sidebar-width))!important;
  max-width:calc(100% - var(--vw-sidebar-width))!important;
  min-height:100vh!important;
  position:relative!important;
  overflow-x:hidden!important;
}
.app-shell.valuedwork .topbar{
  position:sticky!important;
  top:0!important;
  z-index:900!important;
  width:100%!important;
}
.app-shell.valuedwork .content{
  max-width:100%!important;
  overflow-x:hidden!important;
  padding-left:24px!important;
  padding-right:24px!important;
}
.app-shell.valuedwork .page-head,
.app-shell.valuedwork .card,
.app-shell.valuedwork .table-card,
.app-shell.valuedwork .toolbar,
.app-shell.valuedwork .dashboard-chart-grid,
.app-shell.valuedwork .ac-grid{
  max-width:100%!important;
}
.app-shell.valuedwork table{max-width:100%!important;}
.app-shell.valuedwork .responsive-table-wrap,
.app-shell.valuedwork .table-card{overflow-x:auto!important;}
@media(max-width:900px){
  :root{--vw-sidebar-width:285px;}
  .app-shell.valuedwork .sidebar{
    transform:translateX(-100%);
    transition:transform .18s ease;
    box-shadow:18px 0 40px rgba(15,23,42,.18);
  }
  body.sidebar-open .app-shell.valuedwork .sidebar,
  body.sidebar-open .sidebar,
  .sidebar.open{transform:translateX(0)!important;}
  .app-shell.valuedwork .main{
    margin-left:0!important;
    width:100%!important;
    max-width:100%!important;
  }
  .app-shell.valuedwork .content{padding-left:16px!important;padding-right:16px!important;}
}
/* ValuedWork V0.1.12 action dropdown + autocomplete */
.action-menu{position:relative;display:inline-block}.action-dropdown{display:none;position:absolute;right:0;top:100%;min-width:180px;background:#fff;border:1px solid #ead7c3;border-radius:12px;box-shadow:0 12px 32px rgba(70,24,45,.18);z-index:2000;overflow:hidden}.action-menu.open .action-dropdown{display:block}.action-dropdown a,.action-dropdown button{display:block;width:100%;padding:10px 14px;text-align:left;border:0;background:#fff;color:#4b1730;text-decoration:none;font:inherit;cursor:pointer}.action-dropdown a:hover,.action-dropdown button:hover{background:#fff4e6}.card-soft{background:#fffaf2;border:1px solid #ead7c3;border-radius:16px;padding:16px}.rd-result button,.toolbar button{white-space:nowrap}.sales-doc-form datalist{max-height:240px}

/* ValuedWork V0.1.13 - stable action dropdown and document settings */
.table-card,.responsive-table-wrap,.white-card,.card{overflow:visible!important;}
.table-card{position:relative;z-index:1;}
.action-menu{position:relative;display:inline-block;}
.action-dropdown{display:none;position:fixed!important;right:auto!important;top:auto;min-width:190px;max-height:70vh;overflow:auto;background:#fff;border:1px solid #ead7c3;border-radius:12px;box-shadow:0 18px 44px rgba(70,24,45,.24);z-index:999999!important;padding:6px 0;}
.action-menu.open .action-dropdown{display:block;}
.action-dropdown a,.action-dropdown button{display:block;width:100%;padding:10px 14px;text-align:left;border:0;background:#fff;color:#4b1730;text-decoration:none;font:inherit;cursor:pointer;white-space:nowrap;}
.action-dropdown a:hover,.action-dropdown button:hover{background:#fff4e6;color:#7b1735;}
.document-settings-form .section-title{background:#4b1768;color:#fff;border-radius:10px;padding:10px 14px;margin:8px 0 4px;}
.settings-menu-grid a.active{background:#8b1e3f;color:#fff;border-color:#8b1e3f;}
.settings-logo-preview.wide{max-width:280px;max-height:80px;object-fit:contain;}
.document-signature-img{max-width:42mm;max-height:17mm;object-fit:contain;display:block;margin:0 auto -2mm;}
.document-stamp-img{max-width:34mm;max-height:34mm;object-fit:contain;display:block;margin:0 auto;opacity:.9;}
.document-footer-note{margin-top:8mm;color:#555;}
@media(max-width:900px){.action-dropdown{left:12px!important;right:12px!important;min-width:auto;width:auto;max-width:calc(100vw - 24px);}}


/* ValuedWork V0.1.15 - click-only menu, no hover submenu, WHT UI */
.app-shell.valuedwork .side-nav .nav-group:hover>.nav-children{display:none!important;}
.app-shell.valuedwork .side-nav .nav-group.active>.nav-children,
.app-shell.valuedwork .side-nav .nav-group.open>.nav-children{display:block!important;}
.app-shell.valuedwork .side-nav .nav-group.no-children:hover>.nav-children,
.app-shell.valuedwork .side-nav .nav-group.no-children.open>.nav-children{display:none!important;}
.app-shell.valuedwork .side-nav .nav-parent{cursor:pointer;user-select:none;}
.sales-wht-section{grid-column:1/-1;background:#fffaf2;border:1px solid #ead7c3;border-radius:16px;padding:16px;margin-top:8px;}
.sales-wht-section .wht-toggle{display:flex;align-items:center;gap:10px;font-weight:700;color:#7b1732;}
.sales-wht-section input[type="checkbox"]{width:auto!important;min-width:18px;height:18px;}
.sales-wht-fields{display:none;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-top:12px;}
.sales-wht-section.is-on .sales-wht-fields{display:grid;}
.sales-wht-preview{background:#fff;border:1px dashed #e4c9aa;border-radius:12px;padding:10px;color:#5b1024;}
.action-status-form{margin:0;}.action-status-form select{width:100%;min-width:130px;margin:4px 0;background:#fff;color:#4b1730;border:1px solid #ead7c3;border-radius:8px;padding:8px;}.action-status-form button{width:100%;background:#8b1e3f;color:#fff;border-radius:8px;margin-top:4px;}

/* ValuedWork V0.1.15 - final sidebar overlay cleanup + purchase UI */
.app-shell.valuedwork .side-nav .nav-children{
  position:static!important;left:auto!important;right:auto!important;top:auto!important;bottom:auto!important;
  display:none!important;visibility:visible!important;opacity:1!important;width:auto!important;min-width:0!important;
  transform:none!important;box-shadow:none!important;z-index:auto!important;float:none!important;overflow:visible!important;
}
.app-shell.valuedwork .side-nav .nav-group:hover>.nav-children,
.app-shell.valuedwork .side-nav .nav-parent:hover + .nav-children{display:none!important;}
.app-shell.valuedwork .side-nav .nav-group.open>.nav-children,
.app-shell.valuedwork .side-nav .nav-group.active>.nav-children{display:block!important;}
.app-shell.valuedwork .side-nav .nav-group.no-children>.nav-children,
.app-shell.valuedwork .side-nav .nav-group.no-children.open>.nav-children,
.app-shell.valuedwork .side-nav .nav-group.no-children.active>.nav-children{display:none!important;}
.app-shell.valuedwork .main{margin-left:var(--vw-sidebar-width,245px)!important;width:calc(100% - var(--vw-sidebar-width,245px))!important;}
.purchase-lines th,.purchase-lines td{vertical-align:middle}.purchase-lines select,.purchase-lines input{min-width:96px}.purchase-lines td:first-child select{min-width:250px}.purchase-lines .remove-line{white-space:nowrap}.purchase-lines-card h2{margin-top:0}.vw-purchase-print-a4 .vw-print-docinfo h1{color:#4b9c31}.accounting-audit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}
@media(max-width:900px){.app-shell.valuedwork .main{margin-left:0!important;width:100%!important}.app-shell.valuedwork .side-nav .nav-group.active>.nav-children{display:block!important}}


/* ValuedWork V0.1.17 — single accordion sidebar, hard-disable legacy flyout rails */
:root{--vw-sidebar-width:245px;}
body.app-shell.valuedwork .sidebar,
body.app-shell.valuedwork[class*="route-accounting"] .sidebar,
body.app-shell.valuedwork.route-settings .sidebar,
body.app-shell.valuedwork[class*="route-settings"] .sidebar,
body.app-shell.valuedwork.route-staff .sidebar,
body.app-shell.valuedwork[class*="route-staff"] .sidebar{
  position:fixed!important;
  left:0!important;top:0!important;bottom:0!important;
  width:var(--vw-sidebar-width)!important;
  max-width:var(--vw-sidebar-width)!important;
  padding:18px 14px!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  z-index:1040!important;
  transform:none!important;
}
body.app-shell.valuedwork .main,
body.app-shell.valuedwork[class*="route-accounting"] .main,
body.app-shell.valuedwork.route-settings .main,
body.app-shell.valuedwork[class*="route-settings"] .main,
body.app-shell.valuedwork.route-staff .main,
body.app-shell.valuedwork[class*="route-staff"] .main{
  margin-left:var(--vw-sidebar-width)!important;
  width:calc(100% - var(--vw-sidebar-width))!important;
  max-width:calc(100% - var(--vw-sidebar-width))!important;
  min-width:0!important;
}
body.app-shell.valuedwork .app-brand,
body.app-shell.valuedwork[class*="route-accounting"] .app-brand,
body.app-shell.valuedwork.route-settings .app-brand,
body.app-shell.valuedwork[class*="route-settings"] .app-brand,
body.app-shell.valuedwork.route-staff .app-brand,
body.app-shell.valuedwork[class*="route-staff"] .app-brand{
  min-height:auto!important;
  padding:0 0 16px!important;
  justify-content:center!important;
}
body.app-shell.valuedwork .webapp-logo,
body.app-shell.valuedwork[class*="route-accounting"] .webapp-logo,
body.app-shell.valuedwork.route-settings .webapp-logo,
body.app-shell.valuedwork[class*="route-settings"] .webapp-logo,
body.app-shell.valuedwork.route-staff .webapp-logo,
body.app-shell.valuedwork[class*="route-staff"] .webapp-logo{
  max-width:150px!important;
  max-height:70px!important;
  object-fit:contain!important;
}
body.app-shell.valuedwork .side-nav,
body.app-shell.valuedwork[class*="route-accounting"] .side-nav,
body.app-shell.valuedwork.route-settings .side-nav,
body.app-shell.valuedwork[class*="route-settings"] .side-nav,
body.app-shell.valuedwork.route-staff .side-nav,
body.app-shell.valuedwork[class*="route-staff"] .side-nav{
  display:block!important;
  position:static!important;
  padding:0 0 24px!important;
  width:100%!important;
  overflow:visible!important;
}
body.app-shell.valuedwork .side-nav .nav-group,
body.app-shell.valuedwork[class*="route-accounting"] .side-nav .nav-group,
body.app-shell.valuedwork.route-settings .side-nav .nav-group,
body.app-shell.valuedwork[class*="route-settings"] .side-nav .nav-group,
body.app-shell.valuedwork.route-staff .side-nav .nav-group,
body.app-shell.valuedwork[class*="route-staff"] .side-nav .nav-group{
  display:block!important;
  position:static!important;
  margin:6px 0!important;
  overflow:visible!important;
}
body.app-shell.valuedwork .side-nav .nav-parent,
body.app-shell.valuedwork[class*="route-accounting"] .side-nav .nav-parent,
body.app-shell.valuedwork.route-settings .side-nav .nav-parent,
body.app-shell.valuedwork[class*="route-settings"] .side-nav .nav-parent,
body.app-shell.valuedwork.route-staff .side-nav .nav-parent,
body.app-shell.valuedwork[class*="route-staff"] .side-nav .nav-parent{
  display:flex!important;
  align-items:center!important;
  justify-content:flex-start!important;
  gap:10px!important;
  width:100%!important;
  min-height:42px!important;
  padding:10px 12px!important;
  text-align:left!important;
  border-radius:13px!important;
}
body.app-shell.valuedwork .side-nav .nav-parent>span:not(.nav-icon),
body.app-shell.valuedwork[class*="route-accounting"] .side-nav .nav-parent>span:not(.nav-icon),
body.app-shell.valuedwork.route-settings .side-nav .nav-parent>span:not(.nav-icon),
body.app-shell.valuedwork[class*="route-settings"] .side-nav .nav-parent>span:not(.nav-icon),
body.app-shell.valuedwork.route-staff .side-nav .nav-parent>span:not(.nav-icon),
body.app-shell.valuedwork[class*="route-staff"] .side-nav .nav-parent>span:not(.nav-icon){
  display:inline!important;
  opacity:1!important;
  visibility:visible!important;
}
body.app-shell.valuedwork .side-nav .nav-icon,
body.app-shell.valuedwork[class*="route-accounting"] .side-nav .nav-icon,
body.app-shell.valuedwork.route-settings .side-nav .nav-icon,
body.app-shell.valuedwork[class*="route-settings"] .side-nav .nav-icon,
body.app-shell.valuedwork.route-staff .side-nav .nav-icon,
body.app-shell.valuedwork[class*="route-staff"] .side-nav .nav-icon{
  width:24px!important;min-width:24px!important;flex:0 0 24px!important;margin:0!important;text-align:center!important;font-size:17px!important;
}
body.app-shell.valuedwork .side-nav .nav-children,
body.app-shell.valuedwork[class*="route-accounting"] .side-nav .nav-group>.nav-children,
body.app-shell.valuedwork.route-settings .side-nav .nav-group>.nav-children,
body.app-shell.valuedwork[class*="route-settings"] .side-nav .nav-group>.nav-children,
body.app-shell.valuedwork.route-staff .side-nav .nav-group>.nav-children,
body.app-shell.valuedwork[class*="route-staff"] .side-nav .nav-group>.nav-children{
  position:static!important;
  left:auto!important;right:auto!important;top:auto!important;bottom:auto!important;
  display:none!important;
  width:auto!important;min-width:0!important;max-width:none!important;
  height:auto!important;max-height:none!important;
  margin:4px 0 10px 38px!important;
  padding:6px 0 6px 10px!important;
  border-left:2px solid rgba(247,234,215,.36)!important;
  border-right:0!important;border-top:0!important;border-bottom:0!important;
  border-radius:0 12px 12px 0!important;
  background:rgba(255,255,255,.055)!important;
  box-shadow:none!important;
  transform:none!important;
  float:none!important;
  z-index:auto!important;
  overflow:visible!important;
  opacity:1!important;visibility:visible!important;
}
body.app-shell.valuedwork .side-nav .nav-group:hover>.nav-children,
body.app-shell.valuedwork[class*="route-accounting"] .side-nav .nav-group:hover>.nav-children,
body.app-shell.valuedwork.route-settings .side-nav .nav-group:hover>.nav-children,
body.app-shell.valuedwork[class*="route-settings"] .side-nav .nav-group:hover>.nav-children,
body.app-shell.valuedwork.route-staff .side-nav .nav-group:hover>.nav-children,
body.app-shell.valuedwork[class*="route-staff"] .side-nav .nav-group:hover>.nav-children{
  display:none!important;
}
body.app-shell.valuedwork .side-nav .nav-group.open>.nav-children,
body.app-shell.valuedwork .side-nav .nav-group.active>.nav-children,
body.app-shell.valuedwork[class*="route-accounting"] .side-nav .nav-group.open>.nav-children,
body.app-shell.valuedwork[class*="route-accounting"] .side-nav .nav-group.active>.nav-children,
body.app-shell.valuedwork.route-settings .side-nav .nav-group.open>.nav-children,
body.app-shell.valuedwork.route-settings .side-nav .nav-group.active>.nav-children,
body.app-shell.valuedwork[class*="route-settings"] .side-nav .nav-group.open>.nav-children,
body.app-shell.valuedwork[class*="route-settings"] .side-nav .nav-group.active>.nav-children,
body.app-shell.valuedwork.route-staff .side-nav .nav-group.open>.nav-children,
body.app-shell.valuedwork.route-staff .side-nav .nav-group.active>.nav-children,
body.app-shell.valuedwork[class*="route-staff"] .side-nav .nav-group.open>.nav-children,
body.app-shell.valuedwork[class*="route-staff"] .side-nav .nav-group.active>.nav-children{
  display:block!important;
}
body.app-shell.valuedwork .side-nav .nav-group.no-children>.nav-children,
body.app-shell.valuedwork .side-nav .nav-group.no-children.open>.nav-children,
body.app-shell.valuedwork .side-nav .nav-group.no-children.active>.nav-children{
  display:none!important;
}
body.app-shell.valuedwork .side-nav .nav-children a,
body.app-shell.valuedwork[class*="route-accounting"] .side-nav .nav-children a,
body.app-shell.valuedwork.route-settings .side-nav .nav-children a,
body.app-shell.valuedwork[class*="route-settings"] .side-nav .nav-children a,
body.app-shell.valuedwork.route-staff .side-nav .nav-children a,
body.app-shell.valuedwork[class*="route-staff"] .side-nav .nav-children a{
  display:block!important;
  justify-content:flex-start!important;
  text-align:left!important;
  color:#f4ecdd!important;
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
  padding:6px 10px!important;
  margin:1px 4px 1px 0!important;
  border-radius:8px!important;
  font-size:12.5px!important;
  line-height:1.25!important;
}
body.app-shell.valuedwork .content{min-width:0!important;}
@media(max-width:900px){
  body.app-shell.valuedwork .sidebar,
  body.app-shell.valuedwork[class*="route-accounting"] .sidebar,
  body.app-shell.valuedwork.route-settings .sidebar,
  body.app-shell.valuedwork[class*="route-settings"] .sidebar,
  body.app-shell.valuedwork.route-staff .sidebar,
  body.app-shell.valuedwork[class*="route-staff"] .sidebar{
    width:285px!important;max-width:285px!important;transform:translateX(-100%)!important;
  }
  body.sidebar-open.app-shell.valuedwork .sidebar,
  body.sidebar-open.app-shell.valuedwork[class*="route-accounting"] .sidebar,
  body.sidebar-open .app-shell.valuedwork .sidebar,
  body.sidebar-open .sidebar.open,
  body.sidebar-open .sidebar{transform:translateX(0)!important;}
  body.app-shell.valuedwork .main,
  body.app-shell.valuedwork[class*="route-accounting"] .main,
  body.app-shell.valuedwork.route-settings .main,
  body.app-shell.valuedwork[class*="route-settings"] .main,
  body.app-shell.valuedwork.route-staff .main,
  body.app-shell.valuedwork[class*="route-staff"] .main{margin-left:0!important;width:100%!important;max-width:100%!important;}
}

/* ValuedWork V0.1.20 sales attachments */
.dropzone{border:2px dashed rgba(122,32,58,.35);border-radius:16px;padding:18px;text-align:center;background:#fff8f4;cursor:pointer;transition:.15s ease}
.dropzone.dragover{background:#fff1e8;border-color:#7a203a;box-shadow:0 0 0 3px rgba(122,32,58,.08)}
.attachment-list{margin-top:10px;display:grid;gap:8px}
.attachment-row{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:8px 10px;border:1px solid #eee;border-radius:12px;background:#fff}
.attachment-row span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (max-width: 720px){.attachment-row{display:block}.attachment-row span{display:block;margin-top:6px}}

/* ValuedWork V0.1.21 - staff permissions, vendor contact select, staff documents */
.permission-grid{display:grid;grid-template-columns:repeat(3,minmax(220px,1fr));gap:8px;margin:8px 0 18px}.permission-check{display:flex!important;align-items:flex-start;gap:8px;border:1px solid #e5e7eb;border-radius:12px;background:#fff;padding:9px 10px!important}.permission-check input{margin-top:3px}.permission-check span{font-weight:800;color:#334155}.permission-check small{display:block;color:#64748b;font-size:11px;line-height:1.2}.staff-doc-panel{border:1px solid #e5e7eb;border-radius:16px;background:#fff;padding:14px;margin-top:4px}.attachment-list{display:flex;flex-direction:column;gap:8px;margin-top:10px}.attachment-row{display:flex;justify-content:space-between;gap:12px;align-items:center;border:1px solid #e5e7eb;border-radius:12px;background:#f8fafc;padding:9px 10px}.vendor-select-row{display:flex;gap:8px;align-items:center}.vendor-select-row select{flex:1}.alert{padding:10px 12px;border-radius:12px;background:#fff7ed;border:1px solid #fed7aa;color:#9a3412}@media(max-width:900px){.permission-grid{grid-template-columns:1fr}.attachment-row{align-items:flex-start;flex-direction:column}.vendor-select-row{flex-direction:column;align-items:stretch}}


/* ValuedWork V0.1.22 permission tree / expense WHT */
.permission-toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:8px 0 12px}.permission-toolbar input[type=search]{flex:1;min-width:260px}.permission-tree-grid{display:grid;grid-template-columns:repeat(3,minmax(240px,1fr));gap:12px;align-items:start}.permission-group{border:1px solid var(--border,#e5e7eb);border-radius:14px;background:#fff;overflow:hidden}.permission-group-head{display:flex!important;align-items:center;gap:8px;padding:10px 12px;background:#faf7f2;font-weight:700;color:#5b1831}.permission-count{margin-left:auto;font-size:12px;background:#fff;border:1px solid #eadfd6;border-radius:99px;padding:2px 8px}.permission-group-items{padding:8px 10px}.permission-tree-item{display:grid!important;grid-template-columns:14px 18px minmax(0,1fr);gap:6px;align-items:center;padding:6px 4px;border-radius:8px}.permission-tree-item:hover{background:#fff7ed}.permission-tree-item small{grid-column:3;color:#8a8f98;font-size:11px}.permission-indent{color:#a85b73}.expense-wht-panel{border:1px dashed #d6b7a2;background:#fffaf6;border-radius:14px;padding:12px;margin-top:12px}.expense-wht-summary{display:flex;gap:14px;flex-wrap:wrap;margin:8px 0}.expense-wht-summary span{background:#fff;border:1px solid #eadfd6;border-radius:10px;padding:6px 10px}.badge-wht{display:inline-block;background:#fff3cd;color:#7a4b00;border:1px solid #ffe08a;border-radius:99px;padding:2px 8px;font-size:12px}@media(max-width:1100px){.permission-tree-grid{grid-template-columns:repeat(2,minmax(220px,1fr));}}@media(max-width:760px){.permission-tree-grid{grid-template-columns:1fr}.permission-toolbar input[type=search]{min-width:100%;}}

/* ValuedWork V0.1.24 - expense transaction recovery, Thai year dashboard, vendor default expense account */
.dashboard-section-compact{margin-bottom:14px}
.dashboard-section-compact h2{font-size:1rem;margin:0 0 8px;color:#7f1d1d}
.compact-kpi-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:12px}
.compact-kpi-cards .card{padding:12px 14px;min-height:78px}
.compact-kpi-cards .card b{font-size:.78rem;line-height:1.25;color:#64748b}
.compact-kpi-cards .card strong{font-size:1.15rem;line-height:1.35;margin-top:4px;display:block}
.compact-kpi-cards .card small{font-size:.72rem;color:#64748b}
.expense-line-wht-summary{margin:8px 0 14px;padding:8px 10px;border:1px dashed #e5d1d1;border-radius:10px;background:#fff7f7;font-size:.9rem}
.expense-item-table .line-wht-base,.expense-item-table .line-wht-amount{min-width:90px;background:#f8fafc}
.expense-item-table .check.small{font-size:.82rem;white-space:nowrap;display:inline-flex;align-items:center;gap:4px}
@media(max-width:720px){.compact-kpi-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.compact-kpi-cards .card{padding:10px}.compact-kpi-cards .card strong{font-size:1rem}}

/* V0.1.24 */
.dashboard-top-cards .stat-card{padding:12px 14px;min-height:76px}.dashboard-top-cards .stat-value{font-size:1.15rem}.dashboard-top-cards .stat-label{font-size:.78rem}

/* ValuedWork V0.2 AutoWork */
.autowork-upload-card{max-width:900px;margin:auto}.autowork-dropzone{display:flex;min-height:240px;border:2px dashed #d7dce5;border-radius:18px;align-items:center;justify-content:center;flex-direction:column;gap:10px;background:#fafbff;cursor:pointer;text-align:center}.autowork-dropzone input{display:none}.autowork-dropzone.dragover{border-color:#8a1f3d;background:#fff3f7}.autowork-file-list{margin-top:16px}.autowork-file-list li{padding:8px 10px;border-bottom:1px solid #edf0f4}.autowork-shell{display:grid;grid-template-columns:minmax(160px,15%) minmax(360px,50%) minmax(380px,35%);gap:14px;align-items:start}.autowork-left,.autowork-preview,.autowork-form{min-height:calc(100vh - 175px)}.autowork-thumbs{display:flex;flex-direction:column;gap:10px;max-height:56vh;overflow:auto}.autowork-thumb{display:block;border:1px solid #e5e7eb;border-radius:12px;padding:8px;background:#fff;text-decoration:none;color:#243042}.autowork-thumb img{max-width:100%;border-radius:8px;background:#f4f6f9}.autowork-thumb span{display:block;font-size:12px;margin-bottom:5px;color:#64748b}.autowork-preview iframe{width:100%;height:calc(100vh - 205px);border:0;background:#6b7280;border-radius:12px}.autowork-form{overflow:auto;max-height:calc(100vh - 175px)}.autowork-form h2,.autowork-form h3{margin:10px 0}.form-grid.compact{gap:8px}.form-grid.compact label{font-size:12px}.form-grid.compact input,.form-grid.compact select,.form-grid.compact textarea{padding:7px 8px;font-size:13px}.autowork-badges{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}.badge{display:inline-flex;align-items:center;border-radius:999px;padding:4px 9px;background:#eef2f7;color:#334155;font-size:12px}.badge.success,.autowork-status-saved{background:#e9f8ef;color:#166534}.badge.warning{background:#fff7ed;color:#9a3412}.autowork-status-failed{background:#fee2e2;color:#991b1b}.autowork-status-need_review{background:#dbeafe;color:#1d4ed8}.autowork-lines input,.autowork-lines select{min-width:88px}.autowork-total-bar{position:sticky;bottom:62px;display:flex;justify-content:space-between;gap:12px;margin:12px -10px 0;padding:10px 14px;background:#fff;border-top:1px solid #e5e7eb;font-size:18px}.sticky-actions{position:sticky;bottom:0;background:#fff;padding:12px 0;margin-top:10px;border-top:1px solid #e5e7eb}.dropzone-icon{font-size:42px;opacity:.65}
@media(max-width:1100px){.autowork-shell{grid-template-columns:1fr}.autowork-left,.autowork-preview,.autowork-form{min-height:auto}.autowork-preview iframe{height:60vh}.autowork-thumbs{flex-direction:row;max-height:none;overflow:auto}.autowork-thumb{min-width:130px}.autowork-form{max-height:none}}

/* ValuedWork V0.3.2 — line-level accounting dimensions */
.expense-item-main{min-width:340px}.expense-line-dimensions{margin-top:7px}.expense-line-dimensions summary{cursor:pointer;color:#7a1f2e;font-size:12px;font-weight:700}.expense-line-dimension-grid{display:grid;grid-template-columns:repeat(2,minmax(150px,1fr));gap:7px;margin-top:7px;padding:8px;background:#fff8ef;border:1px solid #ead6c2;border-radius:10px}.expense-line-dimension-grid label{font-size:11px}.expense-line-dimension-grid select{width:100%;font-size:11px;padding:6px}.boi-badge{display:inline-flex;padding:3px 8px;border-radius:999px;background:#fff0d8;color:#7a1f2e;font-weight:700;font-size:12px}.boi-badge.non-boi{background:#eef2f7;color:#344054}.boi-badge.unassigned{background:#fff3cd;color:#7a5b00}.boi-badge.mixed{background:#f3e8ff;color:#6b21a8}.dimension-cell{font-size:12px;white-space:nowrap}@media(max-width:900px){.expense-line-dimension-grid{grid-template-columns:1fr}.expense-item-main{min-width:280px}}
/* ValuedWork V0.3.2 BOI reports */
.boi-summary-grid{display:grid;grid-template-columns:repeat(5,minmax(150px,1fr));gap:12px;margin:14px 0}.boi-summary-grid .metric{display:flex;flex-direction:column;gap:7px;text-decoration:none}.boi-summary-grid .metric b{font-size:1.35rem}.boi-expense-filter{grid-template-columns:repeat(4,minmax(180px,1fr))}.boi-expense-table{min-width:1500px}.boi-expense-table .num{text-align:right;white-space:nowrap}.boi-badge{display:inline-flex;padding:3px 8px;border-radius:999px;font-size:.78rem;font-weight:700;background:#eef2f7}.boi-badge.boi{background:#e8f7ef;color:#176b3a}.boi-badge.non_boi{background:#f3f0ff;color:#5d3db2}.boi-badge.unassigned{background:#fff4df;color:#8a5b00}.boi-breakdown-list{display:flex;flex-wrap:wrap;gap:10px}.boi-breakdown-list span{padding:8px 10px;border:1px solid var(--border,#ddd);border-radius:8px}.boi-integrity-table{min-width:1050px}.pagination{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:12px}@media(max-width:900px){.boi-summary-grid{grid-template-columns:repeat(2,minmax(130px,1fr))}.boi-expense-filter{grid-template-columns:1fr 1fr}}@media(max-width:560px){.boi-summary-grid,.boi-expense-filter{grid-template-columns:1fr}}@media print{.no-print,.sidebar,.topbar,.page-head .actions{display:none!important}.page-wrapper{margin:0!important}.card{box-shadow:none!important}.boi-expense-table{font-size:9px;min-width:0;width:100%}}
.journal-dimension-row td{padding-top:0;border-top:0}.journal-dimension-row details{background:#f8fafc;border:1px solid var(--border,#e4e8ee);border-radius:8px;padding:7px 10px}.journal-dimension-row summary{cursor:pointer;font-weight:650}.journal-dimension-grid{display:grid;grid-template-columns:repeat(4,minmax(160px,1fr));gap:8px;margin-top:9px}.journal-dimension-grid label{font-size:.78rem}.journal-dimension-grid select{width:100%}@media(max-width:850px){.journal-dimension-grid{grid-template-columns:1fr 1fr}}@media(max-width:520px){.journal-dimension-grid{grid-template-columns:1fr}}

/* ValuedWork V0.3.2 — per-line Accounting Dimensions */
.line-dimension-details{min-width:270px}.line-dimension-details>summary{cursor:pointer;font-weight:600;color:var(--primary,#8b1e2d)}
.line-dimension-grid{display:grid;grid-template-columns:repeat(2,minmax(120px,1fr));gap:.45rem;margin-top:.55rem;padding:.6rem;border:1px solid rgba(0,0,0,.08);border-radius:.5rem;background:rgba(255,255,255,.62)}
.line-dimension-grid label{font-size:.78rem;margin:0}.line-dimension-grid select{min-width:0;width:100%;font-size:.8rem;padding:.35rem}
.boi-scope-badge{display:inline-flex;align-items:center;padding:.16rem .5rem;border-radius:999px;font-size:.75rem;font-weight:700;background:#f3e8ea;color:#7b1d2d}.boi-scope-badge.non-boi{background:#eef1f4;color:#374151}.boi-scope-badge.unassigned{background:#fff3cd;color:#6b5700}
@media(max-width:760px){.line-dimension-grid{grid-template-columns:1fr}.line-dimension-details{min-width:230px}}


/* ValuedWork V1.0.0 — expense tax invoices, WHT workflow, and BOI-aware UI */
.expense-tax-invoice-nos{display:block;margin-top:3px;font-size:.72rem;line-height:1.3;color:#64748b;font-weight:500}
.expense-tax-invoice-panel{margin-top:14px;border:1px solid var(--border,#e5e7eb);border-radius:14px;background:#fff;padding:12px}
.expense-tax-invoice-panel .section-title-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}
.expense-tax-invoice-table{min-width:1250px}.expense-tax-invoice-table input,.expense-tax-invoice-table select{min-width:105px}.expense-tax-invoice-table .num{text-align:right;white-space:nowrap}
.wht-status-actions{display:flex;gap:5px;flex-wrap:wrap}.wht-status-approved{background:#e9f8ef;color:#166534}.wht-status-cancelled{background:#fee2e2;color:#991b1b}.wht-status-draft{background:#fff7ed;color:#9a3412}
body.boi-disabled .accounting-dimension-fields,
body.boi-disabled .accounting-dimensions-card,
body.boi-disabled .contact-dimension-section,
body.boi-disabled .journal-dimension-row,
body.boi-disabled .inventory-dimension-section,
body.boi-disabled .accounting-dimension-column,
body.boi-disabled .dimension-only-field{display:none!important}
@media(max-width:760px){.expense-tax-invoice-panel .section-title-row{align-items:flex-start;flex-direction:column}}


/* ValuedWork V1.0.1 - expense editing, responsive tables, centered company header */
.topbar{position:relative;}
.topbar-left{display:flex;align-items:center;gap:12px;min-width:0;}
.topbar-company-name{position:absolute;left:50%;transform:translateX(-50%);max-width:min(46vw,620px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center;font-size:1.05rem;font-weight:800;color:var(--primary-dark,#5b1734);pointer-events:none;}
.accounting-expense-form{overflow:visible!important;max-width:100%;}
.expense-item-scroll{width:100%;max-width:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;border-radius:12px;margin:12px 0;outline:none;}
.expense-item-scroll:focus{box-shadow:0 0 0 3px rgba(139,30,63,.14);}
.accounting-expense-form .expense-item-table{min-width:1180px;margin:0;}
.expense-item-table .wht-checkbox-only{display:flex!important;justify-content:center;align-items:center;min-width:38px;min-height:38px;margin:0;}
.expense-item-table .wht-checkbox-only input{width:20px!important;height:20px;margin:0;cursor:pointer;}
.action-menu .action-toggle{white-space:nowrap;}
@media(max-width:900px){
  .topbar-company-name{max-width:42vw;font-size:.9rem;}
  .topbar-left .topbar-title{display:none;}
  .accounting-expense-form{overflow:visible!important;}
  .expense-item-scroll{margin-left:0;margin-right:0;}
}
@media(max-width:560px){
  .topbar-company-name{position:static;transform:none;flex:1;max-width:none;font-size:.84rem;text-align:left;}
  .topbar{display:flex!important;}
  .topbar-left{flex:0 0 auto;}
  .topbar-user em{display:none;}
}


/* ============================================================
   ValuedWork V2.0.0 — horizontal Menubar navigation + refreshed
   burgundy/cream theme. Replaces the vertical .sidebar; layout
   reset at the end wins the cascade over every earlier .main
   margin-left hack regardless of their !important flags, since
   this file loads after all of them.
   ============================================================ */
.topbar{height:64px;padding:0 22px;gap:18px;}
.topbar-left{display:flex;align-items:center;gap:12px;}
.topbar-logo{height:34px;width:auto;max-width:170px;object-fit:contain;}
.topbar-brand{display:flex;align-items:center;}
.menubar-shell .topbar{border-bottom:1px solid var(--ac-cream-2,#ead9c0);}

.menubar{
  display:flex;flex-wrap:wrap;align-items:stretch;justify-content:space-between;gap:2px;padding:6px 18px;min-height:46px;
  background:var(--ac-white,#fff);border-bottom:1px solid var(--ac-cream-2,#ead9c0);
  position:relative;z-index:40;
}
.menubar-item{position:relative;flex:none;}
.menubar-trigger{
  height:100%;display:flex;align-items:center;gap:6px;padding:0 13px;border:none;background:transparent;
  font-size:13.5px;font-weight:600;color:var(--ac-text,#2e1c18);cursor:pointer;white-space:nowrap;position:relative;
  text-decoration:none;
}
.mb-icon{font-size:15px;line-height:1;}
.mb-chev{width:12px;height:12px;color:#8a7361;transition:transform .15s ease;flex:none;}
.menubar-trigger:hover{background:#fbf3e6;}
.menubar-item.active .menubar-trigger,.menubar-item.open .menubar-trigger{background:#f6e9d8;color:var(--ac-burgundy,#7a1f2e);}
.menubar-item.active .menubar-trigger::after,.menubar-item.open .menubar-trigger::after{
  content:"";position:absolute;left:10px;right:10px;bottom:0;height:2px;border-radius:2px 2px 0 0;background:var(--ac-burgundy,#7a1f2e);
}
.menubar-item.open .mb-chev{transform:rotate(180deg);color:var(--ac-burgundy,#7a1f2e);}
.menubar-trigger.is-link{font-weight:700;}
.mb-logout .menubar-trigger{color:#8a7361;}
.mb-logout .menubar-trigger:hover{color:#7a1f2e;}

.dropdown{
  position:absolute;top:100%;left:0;min-width:250px;background:#fff;
  border:1px solid var(--ac-cream-2,#ead9c0);border-radius:12px;box-shadow:0 16px 40px rgba(46,28,24,.16);
  padding:6px;display:none;z-index:50;
}
.dropdown.dropdown-scroll{max-height:72vh;overflow-y:auto;}
.menubar-item.open .dropdown{display:block;animation:mb-dropdown-in .12s ease-out;}
@keyframes mb-dropdown-in{from{opacity:0;transform:translateY(-4px);}to{opacity:1;transform:translateY(0);}}
@media(prefers-reduced-motion:reduce){.menubar-item.open .dropdown{animation:none;}}
.dd-row{
  display:block;padding:8px 12px;border-radius:8px;font-size:13.5px;font-weight:500;
  color:var(--ac-text,#2e1c18);text-decoration:none;white-space:nowrap;
}
.dd-row:hover{background:#f6e9d8;color:var(--ac-burgundy,#7a1f2e);}
.dd-divider{height:1px;background:var(--ac-cream-2,#ead9c0);margin:6px 4px;}

@media(max-width:900px){
  /* Single scrollable row instead of wrapping to multiple lines, which ate
     up vertical space on small screens. overflow-x:auto here forces
     overflow-y to compute as auto too (CSS spec: an axis left "visible"
     while the other isn't gets coerced to auto) — that would clip an
     absolutely-positioned .dropdown the same way it did before on desktop.
     JS switches the open dropdown to position:fixed on this breakpoint,
     which escapes the scroll container's clipping entirely since fixed
     positioning is relative to the viewport, not this ancestor. */
  .menubar{height:auto;flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;justify-content:flex-start;padding:6px 10px;}
  .menubar-trigger{height:38px;}
  .topbar-title small{display:none;}
}

/* Layout reset for the top-menubar layout only — see .nav-top rules further
   down (V2.1.0) for the scoped version. .nav-side intentionally gets none of
   this, so it falls back to the original fixed-sidebar CSS still present
   in this file (--vw-sidebar-width's own :root default, .sidebar, etc.) */
@media print{.menubar{display:none!important}}





/* ValuedWork V2.0.3 — flat menubar items (no button look), burgundy text always */
.menubar-trigger{background:transparent!important;color:#7b1023!important;}
.menubar-trigger:hover{background:transparent!important;text-decoration:underline;text-underline-offset:4px;}
.menubar-item.active .menubar-trigger,.menubar-item.open .menubar-trigger{background:transparent!important;color:#7b1023!important;}
.mb-chev{color:#7b1023!important;opacity:.55;}
.menubar-item.open .mb-chev{opacity:1;}
.mb-logout .menubar-trigger{color:#7b1023!important;opacity:.75;}
.mb-logout .menubar-trigger:hover{opacity:1;}


/* ValuedWork V2.0.4 — dark burgundy header (higher-specificity fix).
   .valuedwork .topbar (0,2,0) and body.valuedwork .topbar (0,2,1) from
   earlier versions both out-specify a plain .topbar!important override
   regardless of source order — same class of bug as the sidebar-width
   issue. Matching body.app-shell.valuedwork's specificity (0,3,1) beats
   every earlier .topbar/.topbar-title rule found in this file. */
body.app-shell.valuedwork .topbar{background:#7b1023!important;}
body.app-shell.valuedwork .topbar-title b,body.app-shell.valuedwork .topbar b{color:#fdf3e7!important;}
body.app-shell.valuedwork .topbar-title small{color:#e8c3ca!important;}
body.app-shell.valuedwork .topbar-company-name{color:#fdf3e7!important;}
body.app-shell.valuedwork .topbar-user{background:rgba(255,255,255,.12)!important;border-color:rgba(255,255,255,.24)!important;color:#fdf3e7!important;}
body.app-shell.valuedwork .topbar-user em{background:rgba(255,255,255,.22)!important;color:#fdf3e7!important;}
body.app-shell.valuedwork .menubar-trigger,body.app-shell.valuedwork .menubar-item{background:transparent!important;}


/* ValuedWork V2.0.5 — strip native <button> chrome from menubar items.
   .menubar-trigger is a real <button> element; without appearance:none,
   some browsers (Safari especially) render their own pill-shaped native
   control chrome (rounded border/shadow) on top of our background:transparent,
   which is what still showed as an oval "button" outline. */
body.app-shell.valuedwork .menubar-trigger{
  appearance:none!important;-webkit-appearance:none!important;-moz-appearance:none!important;
  border:none!important;border-radius:0!important;box-shadow:none!important;outline:none!important;
}
body.app-shell.valuedwork .menubar-trigger:focus-visible{outline:2px solid #7b1023!important;outline-offset:-2px;}


/* ValuedWork V2.1.0 — nav layout picker (Settings) + scope the top-layout
   reset to .nav-top only, so .nav-side falls back naturally to the original
   fixed-sidebar CSS already in this file (unchanged, still present) instead
   of needing a second parallel implementation. */
.nav-layout-picker{display:flex;gap:14px;flex-wrap:wrap;}
.nav-layout-option{
  display:flex;flex-direction:column;align-items:center;gap:8px;padding:14px 20px;
  border:2px solid var(--ac-cream-2,#ead9c0);border-radius:14px;cursor:pointer;
  background:#fff;transition:border-color .12s ease;
}
.nav-layout-option input{position:absolute;opacity:0;width:0;height:0;}
.nav-layout-option:hover{border-color:#e0b9c0;}
.nav-layout-option.is-checked,.nav-layout-option:has(input:checked){border-color:#7b1023;background:#fdf3f0;}
.nav-layout-preview{display:block;width:84px;height:56px;border-radius:8px;background:#f4ecdd;border:1px solid var(--ac-cream-2,#ead9c0);position:relative;overflow:hidden;}
.nav-layout-preview span{position:absolute;background:#7b1023;}
.nav-layout-preview-top span:first-child{top:0;left:0;right:0;height:14px;}
.nav-layout-preview-top span:last-child{top:22px;left:8px;right:8px;height:8px;border-radius:3px;opacity:.35;}
.nav-layout-preview-side span:first-child{top:0;left:0;bottom:0;width:20px;}
.nav-layout-preview-side span:last-child{top:8px;left:30px;right:8px;height:8px;border-radius:3px;opacity:.35;}
.nav-layout-label{font-size:13px;font-weight:700;color:#3a2b26;text-align:center;}
.nav-layout-label small{display:block;font-weight:500;color:#8c7a6c;font-size:11px;margin-top:1px;}

/* Some legacy .main hacks are hardcoded per-route (e.g.
   body[class*="route-staff"] .main{margin-left:306px!important;}) rather than
   reading --vw-sidebar-width, so zeroing the variable alone doesn't reach
   them. The highest specificity found among them is (0,4,1); the [class]
   attribute selector is a cheap way to add a 5th class-level point and beat
   all of them regardless of which route is active. */
body.nav-top.app-shell.valuedwork[class] .main{margin-left:0!important;width:100%!important;max-width:100%!important;}
.nav-top{--vw-sidebar-width:0px!important;}


/* ValuedWork V2.1.2 — restyle the side-layout sidebar to match the flat,
   light "Mantine" look used by the top menubar, instead of the old dark
   burgundy-gradient sidebar. There are many accumulated dark-gradient
   .sidebar rules across older versions at up to (0,4,1)-ish specificity;
   [class] is a cheap way to add a class-level point per earlier fixes, and
   a 6-class/2-type prefix here safely clears anything found in this file. */
body.nav-side.app-shell.valuedwork[class] .sidebar{
  background:#fffdf9!important;color:#3a2b26!important;
  box-shadow:none!important;border-right:1px solid var(--ac-cream-2,#ead9c0)!important;
}
body.nav-side.app-shell.valuedwork[class] .app-brand{background:transparent!important;box-shadow:none!important;padding:14px 10px 18px!important;}
body.nav-side.app-shell.valuedwork[class] .side-nav a,
body.nav-side.app-shell.valuedwork[class] .sidebar a{
  color:#7b1023!important;background:transparent!important;font-weight:600!important;
  border-radius:8px!important;transition:background .12s ease!important;transform:none!important;box-shadow:none!important;
}
body.nav-side.app-shell.valuedwork[class] .sidebar a:hover{background:#fdf3f0!important;}
body.nav-side.app-shell.valuedwork[class] .sidebar a.active,
body.nav-side.app-shell.valuedwork[class] .nav-group.active>.nav-parent{
  background:#fdf3f0!important;color:#7b1023!important;font-weight:700!important;
  box-shadow:inset 3px 0 0 #7b1023!important;
}
body.nav-side.app-shell.valuedwork[class] .sidebar .nav-children{
  background:transparent!important;border-left:1px solid var(--ac-cream-2,#ead9c0)!important;
  margin:4px 0 8px 30px!important;padding-left:10px!important;
}
body.nav-side.app-shell.valuedwork[class] .sidebar .nav-children a{color:#8c6f63!important;font-weight:500!important;opacity:1!important;}
body.nav-side.app-shell.valuedwork[class] .sidebar .nav-children a:hover{background:#fdf3f0!important;color:#7b1023!important;}
body.nav-side.app-shell.valuedwork[class] .nav-icon{opacity:.75;}
body.nav-side.app-shell.valuedwork[class] .nav-caret{display:inline-block;transition:transform .15s ease;}
body.nav-side.app-shell.valuedwork[class] .nav-group.open>.nav-parent .nav-caret{transform:rotate(180deg);}


/* ValuedWork V2.2.0 — Dashboard: icon badges on stat cards + section labels.
   Reuses the existing .stat-card/.stat-label/.stat-value classes (already
   themed burgundy from the V2.0.0 palette refresh) rather than replacing
   them, so this only adds the icon row and doesn't fight existing rules. */
/* V2.2.1 fix: the icon used to sit in a flex row next to the label/value
   column, which shrank the space available for the number and made larger
   totals wrap onto a second line in the compact card grid. An absolutely
   positioned corner badge keeps the label/value column at (almost) full
   card width instead of competing with the icon for horizontal space. */
.stat-card-v2{position:relative;padding-right:34px;}
.stat-card-v2-icon{position:absolute;top:0;right:0;width:26px;height:26px;border-radius:8px;display:flex;align-items:center;justify-content:center;flex:none;}
.stat-card-v2-icon svg{width:14px;height:14px;}
.stat-card-v2-icon.tint-brand{background:#fdf3f0;color:#7b1023;}
.stat-card-v2-icon.tint-good{background:#eaf6ec;color:#2f7d4f;}
.stat-card-v2-icon.tint-warn{background:#fdf1e2;color:#b56a1a;}
.stat-card-v2-icon.tint-neutral{background:#f4ecdd;color:#8c7a6c;}
.stat-card-v2 .stat-label{margin:0 0 2px;padding-right:2px;}
.stat-card-v2 .stat-value{margin:0;font-size:1.1rem;white-space:normal;overflow-wrap:break-word;line-height:1.2;font-variant-numeric:tabular-nums;}
.stat-grid-v2{gap:12px!important;}
@media(max-width:480px){.stat-card-v2 .stat-value{font-size:1rem!important;}}
.section-eyebrow{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#8c7a6c;margin:0 0 10px;}
.dashboard-chart-grid .card h3{margin:0 0 12px;font-size:15px;color:#3a2b26;}


/* ValuedWork V2.3.0 — Sales/Purchases list pages: semantic status colors,
   readable amounts, friendlier empty state. status_badge_tint() in
   Helpers.php maps document status to one of these five tints, reused
   anywhere a status badge appears (not just sales/purchases). */
.badge-good{background:#eaf6ec!important;color:#2f7d4f!important;}
.badge-warn{background:#fdf1e2!important;color:#b56a1a!important;}
.badge-bad{background:#fbe9e7!important;color:#a3272f!important;}
.badge-info{background:#e8f0fb!important;color:#2f5fa3!important;}
.badge-neutral{background:#f4ecdd!important;color:#8c7a6c!important;}
.status-select{border-radius:999px!important;font-size:12.5px!important;font-weight:700!important;padding:4px 24px 4px 10px!important;border:1px solid transparent!important;cursor:pointer;}
.status-select-good{background:#eaf6ec;color:#2f7d4f;}
.status-select-warn{background:#fdf1e2;color:#b56a1a;}
.status-select-bad{background:#fbe9e7;color:#a3272f;}
.status-select-info{background:#e8f0fb;color:#2f5fa3;}
.status-select-neutral{background:#f4ecdd;color:#8c7a6c;}
.table-card table tbody tr:hover td{background:#fdf9f2;}
.table-card td.text-end,.table-card th.text-end{font-variant-numeric:tabular-nums;}
.empty-state-cell{text-align:center;padding:32px 16px!important;color:#8c7a6c;font-size:13.5px;}
.empty-state-cell a{color:#7b1023;font-weight:700;}

/* ValuedWork V2.4.0 — Sales/Purchases form + print pages.
   Two brand-consistency fixes reused everywhere these classes appear:
   1) fieldset/legend still carried the old clinic theme's purple/pink
      gradient (--primary/--accent from the pre-V2 palette) instead of the
      burgundy/cream V2.0 palette.
   2) the A4 print template (.vw-sales-print-a4, shared by sales & purchases
      print) was still the legacy bright-green invoice look, clashing with
      every other burgundy-themed page in the app. */
.form-grid legend,.section-title{background:#7b1023!important;}
.card-soft h2,.card-soft h3{margin:0 0 10px;font-size:14px;font-weight:700;color:#7b1023;letter-spacing:.01em;}
.card-soft{box-shadow:0 1px 2px rgba(46,28,24,.05);}
.purchase-lines tr:hover td,.sales-lines tr:hover td{background:#fdf9f2!important;}
.form-card .form-actions,.purchase-doc-form .form-actions{border-top:1px solid #ead7c3;padding-top:16px;margin-top:20px;}
.form-grid .status-select,.form-card .status-select,.purchase-doc-form .status-select{border-radius:12px!important;padding:10px 12px!important;width:100%;}
.vw-print-docinfo h1,.doc-copy-label,.vw-print-docinfo th,.green-title,.vw-print-totals div,.vw-purchase-print-a4 .vw-print-docinfo h1{color:#7b1023!important;}
.vw-print-items th{background:#7b1023!important;}
.green-line{background:#ead7c3!important;}
.vw-print-totals .net span{color:#3a2b26!important;}

/* ValuedWork V2.5.0 — AutoWork pages, plus four site-wide leftovers from the
   pre-V2.0 (purple clinic) theme this audit turned up. All four were
   high-specificity !important rules from before V2.0 that nothing since
   was specific enough to beat, so they were silently still active on
   every already-restyled page (Dashboard/Sales/Purchases included), not
   just AutoWork:
   1) every <h1> rendered dark purple (--primary-dark) instead of burgundy.
   2) every input/select/textarea focus ring + border was pink/magenta
      (--accent-rose), not burgundy.
   3) plain .btn / .btn.light (anything but .btn-primary/.success/.danger)
      stayed the old magenta --accent — AutoWork uses plain .btn/.btn.light
      throughout ("+ อัปโหลดเอกสาร", "งานรอตรวจ", "OCR ใหม่" etc).
   4) list-page table headers (.table th) were pale purple instead of cream.
   Also: .dashboard-grid (AutoWork's 4 KPI cards) had no grid rule defined
   anywhere, so the cards were stacking full-width instead of a row. */
.valuedwork .page-head h1,.valuedwork .page-header h1{color:#7b1023!important;}
.valuedwork input:focus,.valuedwork select:focus,.valuedwork textarea:focus{outline:3px solid rgba(123,16,35,.14)!important;border-color:#7b1023!important;}
.valuedwork .btn:not(.success):not(.danger):not(.light):not(.secondary):not(.btn-primary){background:#7b1023!important;box-shadow:0 8px 18px rgba(123,16,35,.16)!important;}
.valuedwork .btn.light{background:#fff!important;color:#7b1023!important;border:1px solid #ead7c3!important;box-shadow:none!important;}
.valuedwork .btn.secondary,.valuedwork .secondary{color:#7b1023!important;}
.valuedwork .btn-small:not(.success):not(.danger):not(.light){background:#7b1023!important;}
.valuedwork .btn-small.light{color:#7b1023!important;}
.valuedwork .table-card th,.valuedwork .table th{background:#f4ecdd!important;color:#7b1023!important;}
.valuedwork .topbar-title b,.valuedwork .topbar-company-name{color:#7b1023!important;}
.valuedwork .menu-toggle{color:#7b1023!important;}

.dashboard-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:20px;}
.dashboard-grid .stat-card{background:#fff;border:1px solid #ead7c3;border-radius:14px;}
.dashboard-grid .stat-card span{display:block;font-size:12.5px;color:#8c7a6c;margin-bottom:6px;}
.dashboard-grid .stat-card strong{font-size:1.7rem;color:#7b1023;font-variant-numeric:tabular-nums;}
.autowork-dropzone{border-color:#ead7c3!important;background:#fffaf2!important;}
.autowork-dropzone.dragover{border-color:#7b1023!important;background:#fdf3f0!important;}
.autowork-left,.autowork-preview,.autowork-form{border-color:#ead7c3!important;}
.autowork-total-bar,.sticky-actions{border-top-color:#ead7c3!important;}

/* ValuedWork V2.6.1 — sidebar logo still rendering as a washed-out white
   ghost on the light/cream side-nav (V2.1.2). Root cause: `.webapp-logo`
   doesn't use its <img src> at all — a much older rule from before V2.0
   (`body.valuedwork .webapp-logo{content:url(valuedwork-logo-white.png)}`)
   force-replaces the rendered image via CSS `content:url()`, regardless of
   src. Editing the <img src="..."> in main.php (done earlier) could never
   have fixed this, since content:url() always wins for a replaced element.
   Need equal-or-higher specificity than that rule to win. */
body.valuedwork .sidebar .webapp-logo{content:url('/assets/img/valuedwork-logo.png?v=2.6.1')!important;filter:drop-shadow(0 4px 10px rgba(46,28,24,.16))!important;}

/* ValuedWork V2.7.0 — Accounting module audit (39 files). Most pages already
   inherited the burgundy/cream V2.0 look for free from the V2.5.0 global
   fixes (h1, buttons, table headers, focus rings all cascade via .page-head
   /.card/.table/.btn, which every one of these files already uses). Two
   pages had a genuine layout bug though, same class as AutoWork's
   .dashboard-grid: a KPI-card wrapper class with zero grid rule anywhere,
   so the cards were stacking full-width instead of a row —
   sales_posting_audit.php's "summary-cards dashboard-cards" (8 audit KPIs)
   and setup_wizard.php's bare "stat-grid" (3 setup KPIs, distinct from the
   already-styled ".stat-grid.small" variant used elsewhere). */
.summary-cards,.dashboard-cards,.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin:12px 0 18px;}
.summary-cards .stat-card,.dashboard-cards .stat-card,.stat-grid .stat-card{background:#fff;border:1px solid #ead7c3;border-radius:14px;}
.summary-cards .stat-card b,.dashboard-cards .stat-card b,.stat-grid .stat-card b{display:block;font-size:1.4rem;color:#7b1023;margin-top:4px;}
.summary-cards .stat-card small,.dashboard-cards .stat-card small,.stat-grid .stat-card small{font-size:12.5px;color:#8c7a6c;}

/* ValuedWork V2.8.0 — BOI/PP36/Payroll/Reports/Settings-documents/Staff/
   Attendance/Payments audit (24 files), same "fix only what's actually
   broken" pass as Accounting. Two real findings (a third, pp36/index.php's
   "alert success-text" typo instead of "alert success", was fixed directly
   in the view — it silently skipped the green flash-success styling every
   other page in the app gets):
   1) boi/projects.php's status pill (.status-badge.status-<value>) had no
      CSS anywhere, so BOI project status rendered as plain unstyled text
      instead of a colored pill like every other status indicator in the app.
   2) staff/commissions.php's table uses class="admin-table commission-table"
      instead of "table"/"table-card", so it never picked up the V2.5.0
      cream/burgundy th fix and was still pale-purple from the pre-V2 theme;
      its sort-arrow links (.sort-link) were unstyled default blue too. */
.status-badge{display:inline-block;border-radius:999px;padding:4px 10px;font-size:12px;font-weight:700;background:#f4ecdd;color:#8c7a6c;}
.status-badge.status-active{background:#eaf6ec;color:#2f7d4f;}
.status-badge.status-draft{background:#f4ecdd;color:#8c7a6c;}
.status-badge.status-inactive,.status-badge.status-closed{background:#fbe9e7;color:#a3272f;}
.commission-table th{background:#f4ecdd!important;color:#7b1023!important;}
.sort-link{color:#7b1023!important;text-decoration:none;font-weight:700;}

/* ValuedWork V2.9.0 — sales/purchases print (.vw-sales-print-a4, shared by
   both print.php templates) didn't have pagination-safety rules. The wrapper
   already grows past one A4 page fine (min-height, not height), but with no
   break rules a single item row or the totals/signature block could get
   sliced across the page boundary when a document has many line items. */
@media print{
  .vw-print-items thead{display:table-header-group;}
  .vw-print-items tr{page-break-inside:avoid;break-inside:avoid;}
  .vw-print-summary-row,.vw-print-payment,.vw-print-signatures{page-break-inside:avoid;break-inside:avoid;}
}

/* ValuedWork V2.9.1 — explicit page chunking for sales/purchases print.
   V2.9.0's page-break-inside:avoid rules only take effect once the browser
   is actually printing/in print-preview — on an ordinary screen view a long
   document just kept flowing as one tall block with no visible split, and
   the totals/signature block only appeared once regardless of length. The
   view now pre-splits items into fixed-size chunks and renders one
   .vw-sales-print-a4 block per chunk (repeated header, "หน้า X/Y" label,
   totals/signature only on the last chunk), so page 2+ is visible on screen
   too, not just in the print dialog. */
.vw-sales-print-a4 + .vw-sales-print-a4{margin-top:14mm;}
@media print{.print-page-break{page-break-after:always;break-after:page;}}

/* ValuedWork V2.9.2 — sales print's "ไฟล์แนบเอกสารขาย" attachment list was a
   full-width vertical stack (one file per row via the shared .attachment-row
   class) that got very tall with many files. Scoped to print-attachment-*
   (not the shared .attachment-list/.attachment-row used on form pages
   elsewhere) so this only changes the print page's own attachment box. */
.print-attachment-scroll{display:flex;gap:10px;overflow-x:auto;margin-top:10px;padding-bottom:6px;-webkit-overflow-scrolling:touch;}
.print-attachment-card{flex:0 0 auto;width:172px;border:1px solid #ead7c3;border-radius:12px;background:#fffaf2;padding:10px;display:flex;flex-direction:column;gap:8px;}
.print-attachment-name{font-size:12px;color:#3a2b26;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.print-attachment-actions{display:flex;gap:6px;}
.print-attachment-actions a{flex:1;text-align:center;padding:5px 4px!important;font-size:11px!important;}
/* WHT-50 final sizing pass: enlarge income-table body text (+2px) and rebalance row heights so the
   longer item 5 wording and bigger fonts still fit one A4 page; these come last so they win over
   earlier .wht-dividend-block / .wht-subitems declarations defined higher up in this file. */
.wht-dividend-block{height:52mm!important;}
.wht-dividend-block .wht-subitems,
.wht-income-table .wht-subitems{font-size:12.65px!important;line-height:1.16!important;font-weight:normal!important;}
.wht-income-table .small-text{font-size:12.3px!important;line-height:1.12!important;}
.wht-income-table tbody tr.extra-long-row{height:30mm!important;}
.wht-book-no{font-size:13.15px!important;}
.wht-fund-row{font-size:11.55px!important;}
.wht-income-table tbody tr.extra-long-row{height:25mm!important;}
.wht-warning-box{font-size:12px!important;}
.wht-signature-section{min-height:50mm!important;}
.wht-stamp-circle{font-size:10.5px;}
.wht-sign-text{font-size:11.5px!important;}
.wht-footer-note{font-size:10px!important;}
/* item 4 (dividend block): description column merges across 9 sub-rows via rowspan with no internal
   line, while the 3 right-hand columns are split into individual bordered rows (one per 1.1-1.4, 2.1-2.5,
   with the "(2)" intro sharing 2.1's row) to match the official form's layout. */
.wht-dividend-block{height:5.8mm!important;}
.wht-dividend-block td:first-child{vertical-align:top!important;}
.wht-dividend-subrow{height:5.8mm!important;}
/* intro lines "(1) กรณี...ดังนี้" and "(2) กรณี...จ่ายจาก" sit above their numbered sub-items without
   their own boxed row in the official form, so suppress the line under their right-hand columns. */
.wht-dividend-noborder td{border-bottom:0!important;}
.wht-dividend-noborder + tr td{border-top:0!important;}
/* item 4 switched from a rowspanned block to fully independent rows (per request); reclaim the few mm
   that costs by trimming default row height and item 5's block slightly so the page still fits one A4. */
.wht-income-table tbody tr{height:5.2mm!important;}
.wht-income-table tbody tr.extra-long-row{height:17mm!important;}
.wht-income-table tbody tr:not(.total-row) td:first-child{border-bottom:0!important;}.wht-income-table tbody tr:not(.total-row) + tr:not(.total-row) td:first-child{border-top:0!important;}

/* Billing note (ใบวางบิล) compact print mode: fit >=6 line items + 3 bank accounts on one A4 page */
.billing-compact{padding:8mm 13mm 6mm!important;display:flex!important;flex-direction:column!important;}
.billing-compact .vw-print-head{margin-bottom:4mm!important;}
.billing-compact .vw-print-customer{margin:1mm 0 4mm!important;}
.billing-compact .vw-print-items th,.billing-compact .vw-print-items td{padding:1.2mm 2mm!important;}
.billing-compact .vw-print-summary-row{margin-top:auto!important;}
.billing-compact .vw-print-totals div{padding:1mm 1mm!important;}
.billing-compact .vw-print-payment{margin-top:5mm!important;}
.billing-compact .vw-print-payment p{margin:0.8mm 0!important;}
.billing-compact .vw-print-signatures{margin-top:4mm!important;}
.billing-compact .sig-line{height:10mm!important;}
.billing-compact .stamp-space{height:18mm!important;}

/* All sales documents: keep the totals summary and signatures block together, pinned to the bottom of the A4 page */
.vw-sales-print-a4{display:flex!important;flex-direction:column!important;}
.vw-print-summary-row{margin-top:auto!important;}
