@font-face{font-family:'Be Vietnam Pro';font-style:normal;font-weight:400;font-display:swap;src:url('../fonts/BeVietnamPro-Regular-vietnamese.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;}
@font-face{font-family:'Be Vietnam Pro';font-style:normal;font-weight:400;font-display:swap;src:url('../fonts/BeVietnamPro-Regular-latin-ext.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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Be Vietnam Pro';font-style:normal;font-weight:400;font-display:swap;src:url('../fonts/BeVietnamPro-Regular-latin.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;}
@font-face{font-family:'Be Vietnam Pro';font-style:normal;font-weight:500;font-display:swap;src:url('../fonts/BeVietnamPro-Medium-vietnamese.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;}
@font-face{font-family:'Be Vietnam Pro';font-style:normal;font-weight:500;font-display:swap;src:url('../fonts/BeVietnamPro-Medium-latin-ext.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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Be Vietnam Pro';font-style:normal;font-weight:500;font-display:swap;src:url('../fonts/BeVietnamPro-Medium-latin.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;}
@font-face{font-family:'Be Vietnam Pro';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/BeVietnamPro-SemiBold-vietnamese.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;}
@font-face{font-family:'Be Vietnam Pro';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/BeVietnamPro-SemiBold-latin-ext.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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Be Vietnam Pro';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/BeVietnamPro-SemiBold-latin.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;}
@font-face{font-family:'Be Vietnam Pro';font-style:normal;font-weight:700;font-display:swap;src:url('../fonts/BeVietnamPro-Bold-vietnamese.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;}
@font-face{font-family:'Be Vietnam Pro';font-style:normal;font-weight:700;font-display:swap;src:url('../fonts/BeVietnamPro-Bold-latin-ext.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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Be Vietnam Pro';font-style:normal;font-weight:700;font-display:swap;src:url('../fonts/BeVietnamPro-Bold-latin.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;}

/* ============================================================
   senaite.theme.blueone — BlueOne brand theme for SENAITE LIMS
   Nhận diện blueone.vn (giọt nước xanh + lá xanh lá) + bộ style
   hiện đại cho bảng / danh sách / control / form.
   KHÔNG đổi màu trạng thái nghiệp vụ (--listing-state-*, .text-state-*)
   và icon Font Awesome.
   ============================================================ */

:root{
  --bo-primary:        #0056BB;
  --bo-primary-dark:   #273A91;
  --bo-primary-light:  #2D64AE;
  --bo-primary-soft:   #E9EEF5;
  --bo-secondary:      #75B842;
  --bo-secondary-dark: #5E9B34;
  --bo-secondary-light:#8DC63F;
  --bo-text:           #1F2A37;
  /* style set */
  --bo-radius:        .55rem;
  --bo-radius-sm:     .4rem;
  --bo-border:        #DCE3EC;
  --bo-border-soft:   #EDF1F6;
  --bo-row-alt:       #F7F9FC;
  --bo-muted:         #6B7585;
  --bo-shadow-sm:     0 1px 2px rgba(16,32,70,.06);
  --bo-shadow:        0 6px 20px rgba(16,32,70,.10);
  --bo-focus:         0 0 0 .2rem rgba(0,86,187,.25);
}

/* ---------- Font ---------- */
body,
input, button, select, textarea, optgroup,
.tooltip, .popover, .btn, .form-control, .custom-select,
.nav, .dropdown-menu, .modal, .card, .badge, .alert, table{
  font-family:'Be Vietnam Pro','Segoe UI',Roboto,Arial,sans-serif;
}
.fa,.fas,.far,.fal,.fab,[class^="fa-"],[class*=" fa-"]{
  font-family:"Font Awesome 5 Free","Font Awesome 5 Brands" !important; }

body{ color:var(--bo-text); }
h1,h2,h3,.h1,.h2,.h3,.documentFirstHeading{ font-weight:600; color:var(--bo-primary-dark); }

/* ---------- Links ---------- */
a{ color:var(--bo-primary); }
a:hover,a:focus{ color:var(--bo-primary-dark); }

/* ============================================================
   CONTROLS — buttons
   ============================================================ */
.btn{ border-radius:var(--bo-radius-sm); font-weight:500; letter-spacing:.1px;
  transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease; }
.btn:focus{ box-shadow:var(--bo-focus); }

.btn-primary{ background-color:var(--bo-primary); border-color:var(--bo-primary); }
.btn-primary:hover,.btn-primary:focus,.btn-primary:active,
.btn-primary:not(:disabled):not(.disabled):active{
  background-color:var(--bo-primary-dark); border-color:var(--bo-primary-dark); }

.btn-outline-primary{ color:var(--bo-primary); border-color:var(--bo-primary); }
.btn-outline-primary:hover,.btn-outline-primary:active,
.btn-outline-primary:not(:disabled):not(.disabled):active{
  background-color:var(--bo-primary); border-color:var(--bo-primary); color:#fff; }

.btn-success,.btn-secondary{
  background-color:var(--bo-secondary); border-color:var(--bo-secondary); color:#fff; }
.btn-success:hover,.btn-success:focus,.btn-success:active,
.btn-secondary:hover,.btn-secondary:focus,.btn-secondary:active,
.btn-success:not(:disabled):not(.disabled):active,
.btn-secondary:not(:disabled):not(.disabled):active{
  background-color:var(--bo-secondary-dark); border-color:var(--bo-secondary-dark); color:#fff; }
.btn-outline-secondary{ color:var(--bo-secondary-dark); border-color:var(--bo-secondary); }
.btn-outline-secondary:hover{ background-color:var(--bo-secondary); border-color:var(--bo-secondary); color:#fff; }

/* ---------- Badges / helpers ---------- */
.badge{ border-radius:999px; font-weight:500; padding:.3em .6em; }
.badge-primary{ background-color:var(--bo-primary); }
.badge-secondary{ background-color:var(--bo-secondary); }
.text-primary{ color:var(--bo-primary) !important; }
.bg-primary{ background-color:var(--bo-primary) !important; }
.text-secondary{ color:var(--bo-secondary-dark) !important; }
.bg-secondary{ background-color:var(--bo-secondary) !important; }

/* ============================================================
   CONTROLS — inputs & selects
   ============================================================ */
.form-control,.custom-select,.custom-file-label{
  border-radius:var(--bo-radius-sm); border-color:var(--bo-border);
  color:var(--bo-text);
  transition:border-color .15s ease,box-shadow .15s ease; }
.form-control::placeholder{ color:#9aa5b4; }
.form-control:hover,.custom-select:hover{ border-color:#c3cedd; }
.form-control:focus,.custom-select:focus,.custom-file-input:focus~.custom-file-label{
  border-color:var(--bo-primary-light); box-shadow:var(--bo-focus); }
.input-group-text{ background-color:#f3f6fa; border-color:var(--bo-border);
  border-radius:var(--bo-radius-sm); color:var(--bo-muted); }

.custom-control-input:checked~.custom-control-label::before{
  background-color:var(--bo-primary); border-color:var(--bo-primary); }
.custom-control-input:focus~.custom-control-label::before{ box-shadow:var(--bo-focus); }
input[type=checkbox]:checked,input[type=radio]:checked{ accent-color:var(--bo-primary); }

/* ============================================================
   FORMS
   ============================================================ */
.form-group{ margin-bottom:1rem; }
.form-group label,label.formQuestion,.formQuestion > label,
.field > label,legend{ font-weight:500; color:var(--bo-text); }
.formHelp,.discreet,.help-block{ color:var(--bo-muted); }
fieldset{ border:1px solid var(--bo-border-soft); border-radius:var(--bo-radius);
  padding:1rem 1.25rem; margin-bottom:1.25rem; background:#fff; }
fieldset > legend{ width:auto; padding:0 .5rem; font-size:1rem;
  color:var(--bo-primary-dark); font-weight:600; }
/* nút lưu/huỷ ở cuối form */
.formControls{ border-top:1px solid var(--bo-border-soft); padding-top:1rem; margin-top:1rem; }
.formControls .btn-primary,input.context[type=submit]{
  background-color:var(--bo-primary); border-color:var(--bo-primary); }
input.context[type=submit]:hover{ background-color:var(--bo-primary-dark); border-color:var(--bo-primary-dark); }
input.standalone[type=submit]{ border-radius:var(--bo-radius-sm); }

/* ============================================================
   TABLES (bootstrap .table + SENAITE .contentview)
   ============================================================ */
.table,table.contentview{ color:var(--bo-text); border-color:var(--bo-border-soft); }
.table thead th,table.contentview thead th{
  background-color:var(--bo-primary-soft); color:var(--bo-primary-dark);
  font-weight:600; font-size:.82rem; letter-spacing:.3px;
  border-bottom:2px solid #cfdcec; border-top:0; vertical-align:middle;
  padding:.6rem .75rem; }
.table td,.table th,table.contentview td,table.contentview th{
  padding:.55rem .75rem; vertical-align:middle; border-color:var(--bo-border-soft); }
.table tbody tr:nth-of-type(even):not(.table-info):not(.table-active){
  background-color:var(--bo-row-alt); }
.table-hover tbody tr:hover{ background-color:var(--bo-primary-soft); }
tr.table-info,tr.table-active,.table-info>td,.table-info>th,.table-active>td{
  background-color:var(--bo-primary-soft) !important; }
/* khối bảng bo góc nhẹ khi nằm trong panel/card */
.card > .table-responsive,.card > .table:last-child{ margin-bottom:0; }

/* ============================================================
   LISTS — senaite.app.listing (biến nạp lúc chạy; html:root ưu tiên)
   ============================================================ */
html:root{
  --listing-bs-primary:      var(--bo-primary);
  --listing-bs-primary-dark: var(--bo-primary-dark);
  --listing-bs-secondary:    var(--bo-secondary-dark);
  --listing-bs-bg-light:     var(--bo-primary-soft);
  --listing-bs-bg-hover:     var(--bo-primary-soft);
  --listing-bs-border:       var(--bo-border);
  --listing-bs-border-soft:  var(--bo-border-soft);
  --listing-bg-th-hover:     #dfe8f4;
  --listing-bg-row-alt:      var(--bo-row-alt);
  --listing-bg-muted:        #f3f6fa;
  --listing-border-table:    var(--bo-border-soft);
  --listing-border-divider:  var(--bo-border-soft);
  --listing-category-bg:     #eef3fa;
  --listing-fg-category:     var(--bo-primary-dark);
  --listing-shadow-dropdown: var(--bo-shadow);
}
.ajax-contents-table thead th{
  background-color:var(--bo-primary-soft); color:var(--bo-primary-dark);
  font-weight:600; letter-spacing:.3px; }
.ajax-contents-table tbody tr:hover{ background-color:var(--bo-primary-soft); }
.ajax-contents-table tr.table-info>td:not([rowspan]),
.ajax-contents-table tr.selected>td:not([rowspan]){
  background-color:var(--bo-primary-soft) !important; }
/* thanh lọc trạng thái + nút hành động */
.filter-bar .nav-link.active,.filterbar .nav-link.active{
  color:var(--bo-primary-dark); border-color:var(--bo-primary); }
.ajax-contents-table .categoryrow td,tr.categoryrow td{
  background-color:#eef3fa; color:var(--bo-primary-dark); font-weight:600; }

/* ---------- Pagination ---------- */
.page-link{ color:var(--bo-primary); border-color:var(--bo-border); }
.page-item.active .page-link{ background-color:var(--bo-primary); border-color:var(--bo-primary); }
.page-link:focus{ box-shadow:var(--bo-focus); }

/* ---------- Nav tabs / pills ---------- */
.nav-pills .nav-link.active,.nav-pills .show>.nav-link{ background-color:var(--bo-primary); }
.nav-tabs .nav-link{ color:var(--bo-muted); }
.nav-tabs .nav-link.active{ color:var(--bo-primary-dark); font-weight:600;
  border-bottom:2px solid var(--bo-primary); }

/* ---------- Dropdowns / cards / panels ---------- */
.dropdown-menu{ border:1px solid var(--bo-border-soft); border-radius:var(--bo-radius);
  box-shadow:var(--bo-shadow); padding:.35rem; }
.dropdown-item{ border-radius:var(--bo-radius-sm); padding:.4rem .7rem; }
.dropdown-item:hover,.dropdown-item:focus{ background-color:var(--bo-primary-soft); color:var(--bo-primary-dark); }
.dropdown-item:active,.dropdown-item.active{ background-color:var(--bo-primary); color:#fff; }
.card,.portlet{ border:1px solid var(--bo-border-soft); border-radius:var(--bo-radius);
  box-shadow:var(--bo-shadow-sm); }
.card-header{ background-color:#f6f9fc; border-bottom:1px solid var(--bo-border-soft);
  font-weight:600; color:var(--bo-primary-dark); }

/* ---------- Alerts ---------- */
.alert{ border-radius:var(--bo-radius); }
.alert-info{ border-left:4px solid var(--bo-primary); }

/* ============================================================
   TOOLBAR
   ============================================================ */
#senaite-toolbar,nav#senaite-toolbar,.senaite-toolbar{
  background:linear-gradient(90deg,var(--bo-primary-dark),var(--bo-primary)) !important;
  box-shadow:0 2px 8px rgba(16,32,70,.18); }
#senaite-toolbar a,#senaite-toolbar .nav-link{ color:#e8f0fb; }
#senaite-toolbar a:hover,#senaite-toolbar .nav-link:hover,
#senaite-toolbar .nav-link.active,#senaite-toolbar .active>a{ color:#fff; }
#senaite-toolbar .dropdown-item:active,#senaite-toolbar .dropdown-item.active{
  background-color:var(--bo-primary); }

/* ============================================================
   SIDEBAR
   ============================================================ */
#sidebar a.active,#sidebar .active>a,#sidebar li.selected>a{
  color:var(--bo-primary); border-left-color:var(--bo-secondary); font-weight:500; }
#sidebar a:hover{ color:var(--bo-primary-dark); }
#sidebar .load-more,#sidebar a.load-more{ color:var(--bo-primary); }
#sidebar .spinner-border,#sidebar .text-primary{ color:var(--bo-primary) !important; }

/* ============================================================
   LOGIN (chỉ CSS)
   ============================================================ */
body.template-login,body.subsection-login,body.portaltype-plone-site.userrole-anonymous{
  background:linear-gradient(135deg,var(--bo-primary-dark) 0%,var(--bo-primary) 55%,var(--bo-secondary) 150%) !important; }
body.template-login #content,body.subsection-login #content{ background:transparent; }
#login-form{
  max-width:420px; margin:3rem auto; background:#fff; border:none;
  border-radius:16px; padding:2.25rem 2rem 2rem; box-shadow:0 18px 50px rgba(16,32,70,.35); }
#login-form::before{
  content:""; display:block; width:100%; height:76px; margin:0 auto 1.25rem;
  background:url('../images/logo.png') center/contain no-repeat; }
#login-form .form-control{ border-radius:10px; }
#login-form .btn-primary,#login-form input[type=submit]{
  width:100%; border-radius:10px; padding:.6rem; font-weight:600;
  background-color:var(--bo-primary); border-color:var(--bo-primary); }
#login-form .btn-primary:hover{ background-color:var(--bo-primary-dark); border-color:var(--bo-primary-dark); }
#login-form .portalMessage,#login-form .documentFirstHeading{ color:var(--bo-primary-dark); }
