:root {
    --ink: #12233f;
    --ink-2: #1c3358;
    --paper: #f4f6f2;
    --leaf: #2f7a4d;
    --leaf-bright: #35a866;
    --leaf-soft: #eaf8ef;
    --line: #dfe4dc;
    --sidebar-w: 268px;
    --app-font-size: .8rem;
}
html, body { height: 100%; }
body {
    font-family: "Google Sans Flex", "Google Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
    font-optical-sizing: auto;
    font-variation-settings: "opsz" 14, "wdth" 100, "GRAD" 0, "ROND" 20;
    font-size: var(--app-font-size);
    background: var(--paper);
    color: #1d2733;
}

/* Unified ERP typography: body, data tables, controls and sidebar use one size. */
.form-control,
.form-select,
.input-group-text,
.btn,
.dropdown-item,
.page-link {
    font-size: var(--app-font-size);
}
.form-control-sm,
.form-select-sm,
.btn-sm {
    font-size: var(--app-font-size);
}
textarea.form-control,
input.form-control,
select.form-select,
button,
input,
select,
textarea {
    font-family: inherit;
}

.app { display: flex; min-height: 100%; }

/* Sidebar */
.sidebar { width: var(--sidebar-w); background: var(--ink); color: #c9d4e6; flex-shrink: 0; overflow-y: auto; }
@media (min-width: 992px) { .sidebar { position: sticky; top: 0; height: 100vh; } }
.sidebar.offcanvas-lg { --bs-offcanvas-bg: var(--ink); --bs-offcanvas-width: var(--sidebar-w); }
.sidebar-head { min-height:84px; display:flex; align-items:center; border-bottom:1px solid rgba(255,255,255,.055); }
.brand { min-width:0; flex:1; display:flex; align-items:center; width:100%; padding:1rem 1.15rem; text-decoration:none; }
.brand img { display:block; width:202px; max-width:100%; height:auto; }
.brand:hover img { filter:brightness(1.06); }
.side-nav { padding: 0 .75rem 2rem; }
.side-group { margin: 1.1rem .5rem .35rem; padding-left: .6rem; border-left: 3px solid var(--g); font-size: .78rem; font-weight: 600; color: #8ea2c4; }
.side-link { display: flex; align-items: center; gap: .7rem; padding: .5rem .75rem; border-radius: .5rem; color: #c9d4e6; text-decoration: none; font-size: .92rem; }
.side-link i { width: 1.1rem; text-align: center; color: var(--g, #8fd19e); }
.side-link:hover { background: var(--ink-2); color: #fff; }
.side-link.active { background: var(--ink-2); color: #fff; box-shadow: inset 3px 0 0 var(--g, #8fd19e); }

/* Main */
.main { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.topbar { display: flex; align-items: center; padding: .75rem 1.5rem; background: #fff; border-bottom: 1px solid var(--line); }
.content { padding: 1.75rem 1.5rem 3rem; max-width: 1280px; width: 100%; }
.page-head { display: flex; flex-wrap: wrap; gap: .75rem; align-items: center; justify-content: space-between; margin-bottom: 1.25rem; }
.page-head h1 { font-size: 1.5rem; font-weight: 700; margin: 0; }
.page-subtitle { color: #6a7686; margin: .3rem 0 0; font-size: .9rem; }

.btn-leaf { background: var(--leaf); border-color: var(--leaf); color: #fff; }
.btn-leaf:hover { background: #266640; border-color: #266640; color: #fff; }

.panel { background: #fff; border: 1px solid var(--line); border-radius: .75rem; }
.table { font-size: var(--app-font-size); }
.table > :not(caption) > * > * { padding: .8rem 1rem; }
.table thead th { background: #f7f9f7; color: #657284; font-size: var(--app-font-size); font-weight: 600; text-transform: uppercase; letter-spacing: .02em; border-bottom-color: var(--line); }
.sort-link { display:inline-flex; align-items:center; gap:.38rem; color:inherit; text-decoration:none; white-space:nowrap; }
.sort-link i { width:.75rem; color:#a4aea7; font-size:.66rem; }
.sort-link:hover { color:#1e6e43; }
.sort-link:hover i,.sort-link.active i { color:#268653; }
.sort-link.active { color:#1c5f3c; font-weight:750; }
.text-end .sort-link { justify-content:flex-end; }
.text-center .sort-link { justify-content:center; }
.filter-panel { padding: 1rem 1.25rem 1.15rem; box-shadow: 0 2px 8px rgba(27,45,36,.035); }
.filter-panel .row { --bs-gutter-x: .75rem; --bs-gutter-y: .85rem; }
.filter-panel .form-label { margin-bottom: .42rem; font-size: .72rem; font-weight: 650; color: #3f4c5d; }
.filter-panel .form-control,
.filter-panel .form-select,
.filter-panel .input-group-text { min-height: 40px; border-color: #d9dfda; background-color: #fff; }
.filter-panel .input-group-text { color: #7a8692; border-right: 0; }
.filter-panel .input-group-text + .form-control { border-left: 0; padding-left: .2rem; }
.filter-panel .form-control::placeholder { color: #9aa3ad; }
.form-control::placeholder,
textarea.form-control::placeholder,
input::placeholder {
    color: #9aa3ad;
    opacity: 1;
    font-style: normal;
}
.form-control:focus::placeholder { color: #b5bdc6; }
.filter-panel .form-control:hover,
.filter-panel .form-select:hover { border-color: #b9c4bb; }
.filter-panel .form-control:focus,
.filter-panel .form-select:focus { border-color: #6da382; box-shadow: 0 0 0 .2rem rgba(47,122,77,.1); }
.filter-actions { display: flex; align-items: center; gap: .45rem; }
.filter-actions .btn { flex:1 1 0; min-width:92px; min-height:40px; padding-inline:1.15rem; white-space:nowrap; font-weight:600; }
.filter-apply,
.filter-reset { background:#172131; border-color:#172131; color:#fff; text-decoration:none; }
.filter-apply:hover,
.filter-reset:hover { background:#273548; border-color:#273548; color:#fff; }
@media (max-width: 767px) { .filter-actions .filter-apply { flex: 1; } .filter-actions { width: 100%; } }
.code-pill { display: inline-block; padding: .22rem .5rem; border-radius: .35rem; background: #edf6ef; color: #25623e; font-size: .8rem; font-weight: 600; }
.status-badge { display:inline-flex; align-items:center; padding:.24rem .55rem; border:1px solid transparent; border-radius:999px; font-size:.7rem; font-weight:600; line-height:1.2; white-space:nowrap; }
.status-neutral { color:#536171; background:#f1f3f5; border-color:#e3e7ea; }
.status-info { color:#17639a; background:#eaf5fc; border-color:#d5ebf8; }
.status-primary { color:#2457a6; background:#eaf1ff; border-color:#d8e5ff; }
.status-warning { color:#8a6508; background:#fff7dc; border-color:#f4e8b7; }
.status-success { color:#1f713d; background:#eaf7ee; border-color:#d5eddd; }
.status-danger { color:#b33a32; background:#feeeee; border-color:#f8d9d7; }
.btn-action { background: #f3f5f3; border: 1px solid #e4e8e3; color: #4f5d6c; }
.btn-action:hover { border-color: #b9c4b9; background: #fff; }
.table-footer { display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding: .8rem 1rem; color: #6a7686; font-size: var(--app-font-size); border-top: 1px solid var(--line); }
.empty-state { padding: 3rem 1rem; display: flex; flex-direction: column; align-items: center; gap: .45rem; color: #7a8795; }
.empty-state i { font-size: 2rem; color: #aab5aa; }
.empty-state strong { color: #425064; }
.danger-icon { width: 3rem; height: 3rem; border-radius: 50%; display: grid; place-items: center; background: #fee9e7; color: #c63f35; font-size: 1.2rem; }
@media (max-width: 767px) { .content { padding: 1.25rem .9rem 2rem; } .table-footer { align-items: flex-start; flex-direction: column; } }

/* Dashboard */
.stat { padding: 1rem 1.25rem; }
.stat .num { font-size: 2rem; font-weight: 700; line-height: 1.1; }
.stat .lbl { color: #5b6878; font-size: .9rem; }
.mod-group-title { margin: 1.75rem 0 .6rem; font-size: 1rem; font-weight: 600; display: flex; align-items: center; gap: .6rem; }
.mod-group-title::before { content: ""; width: 4px; height: 1.1rem; border-radius: 2px; background: var(--g); }
.mod-tile { display: flex; align-items: center; gap: .85rem; padding: .9rem 1rem; text-decoration: none; color: inherit; border: 1px solid var(--line); border-radius: .75rem; background: #fff; height: 100%; }
.mod-tile:hover { border-color: var(--g); color: inherit; }
.mod-tile .ico { width: 2.5rem; height: 2.5rem; border-radius: .6rem; display: grid; place-items: center; color: #fff; background: var(--g); flex-shrink: 0; }
.mod-tile small { color: #6a7686; display: block; }

/* Login */
.login-wrap { min-height:100vh; display:grid; place-items:center; padding:1rem; background:radial-gradient(circle at 75% 15%,rgba(53,168,102,.18),transparent 32%),linear-gradient(145deg,#0d1b31,#142a45 58%,#123724); }
.login-card { width:100%; max-width:400px; padding:2.25rem; border:1px solid rgba(255,255,255,.45); border-radius:1.15rem; background:rgba(255,255,255,.98); box-shadow:0 28px 70px rgba(4,16,29,.3); }
.login-brand { margin-bottom:1rem; }
.login-brand img { display:block; width:238px; max-width:100%; height:auto; }
.login-intro { margin:0 0 1.5rem; color:#66746f; font-size:.86rem; }

:focus-visible { outline: 3px solid #7cb6ff; outline-offset: 2px; }
.has-action-icon { display:inline-flex; align-items:center; justify-content:center; gap:.42rem; }
.has-action-icon > i { font-size:.88em; line-height:1; }
.dash-card-head > a.has-action-icon > i { font-size:.68rem; }

/* Professional ERP dashboard */
.dashboard-head { display:flex; align-items:center; justify-content:space-between; gap:1rem; margin-bottom:1.15rem; }
.dashboard-head h1 { margin:0; font-size:1.55rem; font-weight:700; }
.dashboard-head p { margin:.3rem 0 0; color:#647184; font-size:.9rem; }
.dashboard-kpis { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:.8rem; margin-bottom:1rem; }
.kpi-card { position:relative; min-height:112px; padding:1rem; color:inherit; text-decoration:none; background:#fff; border:1px solid var(--line); border-radius:.8rem; transition:.15s ease; }
.kpi-card:hover { color:inherit; border-color:#aebdad; transform:translateY(-1px); box-shadow:0 7px 20px rgba(26,49,40,.06); }
.kpi-icon { position:absolute; right:1rem; top:.85rem; width:2.35rem; height:2.35rem; display:grid; place-items:center; border-radius:.7rem; font-size:1rem; }
.kpi-icon-green { color:#218653; background:#eaf8ef; }
.kpi-icon-blue { color:#3378e6; background:#edf4ff; }
.kpi-icon-amber { color:#c98512; background:#fff6dc; }
.kpi-icon-violet { color:#7a55c7; background:#f3efff; }
.kpi-icon-red { color:#d45454; background:#fff0f0; }
.kpi-icon-cyan { color:#16859a; background:#e9f8fb; }
.kpi-label { display:block; color:#657184; font-size:.72rem; font-weight:600; text-transform:uppercase; letter-spacing:.04em; }
.kpi-card strong { display:block; margin:.25rem 2rem .15rem 0; color:#172131; font-size:1.55rem; line-height:1.2; }
.kpi-card-money strong { margin:.7rem 0 .1rem; padding-right:0; font-size:clamp(1.05rem,1.45vw,1.32rem); letter-spacing:-.025em; }
.kpi-card strong small { font-size:.75rem; color:#788494; font-weight:500; }
.kpi-note { font-size:.72rem; }
.inventory-stat { position:relative; min-height:118px; padding:1rem; }
.inventory-stat .stat-icon { position:absolute; right:.8rem; top:.8rem; width:2rem; height:2rem; display:grid; place-items:center; border-radius:.6rem; color:#16859a; background:#e9f8fb; }
.inventory-stat .lbl { padding-right:2.2rem; }
.insight-panel { display:flex; align-items:center; gap:.85rem; padding:.85rem 1rem; margin-bottom:1rem; border:1px solid #c7dcff; border-radius:.8rem; background:#eff6ff; }
.insight-icon { width:2.4rem;height:2.4rem;display:grid;place-items:center;border-radius:.6rem;background:#dbeafe;color:#2563eb;flex:none; }
.insight-panel p { margin:.15rem 0 0; color:#52637a; font-size:.82rem; }
.dashboard-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:.9rem; }
.dash-card { min-width:0; background:#fff; border:1px solid var(--line); border-radius:.8rem; overflow:hidden; }
.dash-card.span-2 { grid-column:span 2; }
.chart-card { min-height:320px; }
.chart-wrap { position:relative; height:250px; padding:0 1rem 1rem; }
.chart-wrap-doughnut { max-width:390px; margin:0 auto; width:100%; }
.report-charts { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; margin-bottom:1rem; }
.report-chart { min-width:0; padding:0; }
.report-chart-wide { grid-column:span 2; }
.chart-heading { display:flex;align-items:center;justify-content:space-between;padding:1rem 1rem .6rem; }
.chart-heading h2 { margin:0;color:#263342;font-size:.92rem;font-weight:700; }
.chart-heading span { display:block;margin-top:.15rem;color:#7a8594;font-size:.7rem; }
.chart-heading>i { width:2rem;height:2rem;display:grid;place-items:center;border-radius:.55rem;color:#2f7a4d;background:#eaf8ef; }
.dash-card-head { display:flex; align-items:center; justify-content:space-between; gap:1rem; padding:1rem; }
.dash-card-head h2 { margin:0; font-size:.95rem; font-weight:700; }
.dash-card-head span { display:block; margin-top:.15rem; color:#7a8594; font-size:.72rem; }
.dash-card-head a { color:#475569; font-size:.75rem; text-decoration:none; border:1px solid var(--line); border-radius:.4rem; padding:.35rem .55rem; white-space:nowrap; }
.farm-metrics { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; padding:0 1rem 1rem; }
.farm-metric { padding:.8rem; border-radius:.6rem; background:#f7f9f7; font-size:.8rem; }
.farm-metric small { color:#6f7b89; }
.metric-bar { height:5px; margin:.55rem 0; border-radius:9px; background:#e3e8e3; overflow:hidden; }
.metric-bar span { display:block; height:100%; min-width:3px; border-radius:inherit; background:var(--leaf); }
.dash-list>a { display:flex; align-items:center; justify-content:space-between; gap:1rem; padding:.78rem 1rem; color:inherit; text-decoration:none; border-top:1px solid #edf0ed; }
.dash-list>a:hover { background:#fafcfa; }
.dash-list strong { display:block; font-size:.8rem; }
.dash-list small { display:block; margin-top:.15rem; color:#718093; font-size:.68rem; }
.status-chip { display:inline-block; padding:.18rem .42rem; border-radius:1rem; font-size:.64rem; background:#e9f2ff; color:#2863b8; }
.status-chip.danger { background:#fee8e7; color:#b7332d; }
.dash-empty { padding:2rem 1rem; text-align:center; color:#82908d; font-size:.8rem; }
.module-shortcuts { margin-top:.9rem; background:#fff; border:1px solid var(--line); border-radius:.8rem; }
.shortcut-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:.65rem; padding:0 1rem 1rem; }
.shortcut-grid a { display:flex;align-items:center;gap:.65rem;padding:.7rem;color:#263343;text-decoration:none;background:#f8faf8;border-radius:.55rem;font-size:.78rem; }
.shortcut-grid a:hover { background:#f0f5f0; }
.shortcut-grid span { width:2rem;height:2rem;display:grid;place-items:center;border-radius:.5rem;background:#fff;color:var(--module); }
@media(max-width:1199px){.dashboard-kpis{grid-template-columns:repeat(3,1fr)}.dashboard-grid{grid-template-columns:repeat(2,1fr)}.dash-card.span-2{grid-column:span 2}}
@media(max-width:767px){.dashboard-head{align-items:flex-start}.dashboard-kpis{grid-template-columns:repeat(2,1fr)}.dashboard-grid,.report-charts{grid-template-columns:1fr}.dash-card.span-2,.report-chart-wide{grid-column:span 1}.chart-card{min-height:300px}.chart-wrap{height:230px}.farm-metrics{grid-template-columns:1fr}.shortcut-grid{grid-template-columns:repeat(2,1fr)}.insight-panel{align-items:flex-start;flex-wrap:wrap}}

/* Sidebar navigation */
.sidebar { display:flex; flex-direction:column; background:#fff; color:#334155; border-right:1px solid #e2e7e2; box-shadow:2px 0 12px rgba(20,39,31,.025); }
.sidebar.offcanvas-lg { --bs-offcanvas-bg:#fff; }
.sidebar-head { display:flex; align-items:center; justify-content:space-between; min-height:72px; padding:0 1rem; border-bottom:1px solid #edf0ed; }
.sidebar-head .brand { padding:0; }
.brand { min-width:0; padding:0; color:#172131; gap:.7rem; }
.brand:hover { color:#172131; }
.brand-mark { width:2.25rem; height:2.25rem; display:grid; place-items:center; border-radius:.65rem; background:#e9f6ed; }
.brand-mark i { color:#19944b; font-size:1.15rem; }
.brand strong { display:block; font-size:1.05rem; line-height:1.15; }
.brand small { display:block; margin-top:.15rem; color:#84908d; font-size:.62rem; font-weight:500; letter-spacing:.02em; }
.side-nav { flex:1; min-height:0; overflow-y:auto; padding:.85rem .7rem 1.3rem; scrollbar-width:thin; scrollbar-color:#cad3cc transparent; }
.side-link { position:relative; min-height:40px; padding:.58rem .7rem; color:#526071; border-radius:.55rem; font-size:var(--app-font-size); font-weight:500; line-height:1.25; transition:background-color .16s ease,color .16s ease,transform .16s ease; }
.side-link i { flex:0 0 1.15rem; width:1.15rem; color:var(--g,#668076); font-size:.82rem; text-align:center; }
.side-link:hover { color:#172131; background:#f2f6f3; }
.side-link.active { color:#126d3a; background:#e8f5eb; box-shadow:none; font-weight:650; }
.side-link.active i { color:var(--g,#1f9d55); }
.side-dashboard { margin-bottom:.7rem; border:1px solid transparent; }
.side-dashboard.active { color:#195fdb; background:#eaf2ff; border-color:#dbe8ff; box-shadow:none; }
.side-dashboard.active i { color:#2563eb; }
.side-section { margin-top:.22rem; }
.side-group { width:100%; min-height:42px; display:flex; align-items:center; justify-content:space-between; gap:.5rem; margin:0; padding:.5rem .55rem; border:0; border-radius:.55rem; background:transparent; color:#354253; font-size:.78rem; font-weight:650; letter-spacing:0; text-align:left; transition:background-color .16s ease,color .16s ease; }
.side-group:hover { color:#172131; background:#f5f7f5; }
.side-group-label { min-width:0; display:flex; align-items:baseline; gap:.28rem; }
.side-group-actions { flex:0 0 auto; display:flex; align-items:center; gap:.48rem; }
.side-group-icon { width:1.7rem; height:1.7rem; display:grid; place-items:center; border-radius:.45rem; color:var(--g); background:color-mix(in srgb,var(--g) 11%,white); }
.side-group-icon i { width:1rem; font-size:.78rem; text-align:center; }
.side-group-title { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.side-group-number { flex:0 0 2rem; min-width:2rem; color:var(--g); font-size:.78rem; font-weight:750; line-height:1.35; text-align:left; }
.side-chevron { flex:0 0 auto; color:#98a39e; font-size:.62rem; transition:transform .18s ease; }
.side-section.open .side-chevron { transform:rotate(180deg); }
.side-group-items { display:none; }
.side-section.open .side-group-items { position:relative; display:grid; gap:.1rem; margin:.12rem 0 .42rem 1.47rem; padding:.1rem 0 .12rem 1.02rem; }
.side-section.open .side-group-items::before { content:""; position:absolute; left:.08rem; top:.1rem; bottom:.35rem; width:1px; background:#dce4de; }
.side-group-items .side-link { min-height:36px; padding:.48rem .62rem; border-radius:.45rem; }
.side-group-items .side-link::before { content:""; position:absolute; left:-.95rem; top:50%; width:.72rem; height:1px; background:#dce4de; }
.side-group-items .side-link::after { content:""; position:absolute; left:-.29rem; top:calc(50% - 2.5px); width:5px; height:5px; border-radius:50%; background:#bac7bd; }
.side-group-items .side-link:hover { transform:translateX(2px); }
.side-group-items .side-link.active::after { background:var(--g); box-shadow:0 0 0 3px color-mix(in srgb,var(--g) 13%,white); }
.sidebar-foot { display:flex; align-items:center; gap:.65rem; padding:.9rem .85rem; border-top:1px solid #e7ebe7; background:#fbfcfb; }
.user-avatar { width:2.35rem; height:2.35rem; display:grid; place-items:center; flex:none; border-radius:.7rem; color:#fff; background:linear-gradient(145deg,#31885a,#176b42); box-shadow:0 4px 12px rgba(31,122,77,.18); font-size:.78rem; font-weight:750; }
.sidebar-user { min-width:0; flex:1; }
.sidebar-user strong,.sidebar-user small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.sidebar-user strong { color:#283444; font-size:.76rem; }
.sidebar-user small { display:flex;align-items:center;gap:.32rem;color:#7f8b87;font-size:.62rem; }
.online-dot { width:5px;height:5px;border-radius:50%;background:#24a35a;box-shadow:0 0 0 3px #e4f6ea; }
.sidebar-foot form { margin:0; }
.sidebar-foot button { width:2rem;height:2rem;border:0;border-radius:.5rem;background:transparent;color:#7b8784; }
.sidebar-foot button:hover { color:#b8322a; background:#feeceb; }
.topbar { min-height:64px; padding:.55rem 1.5rem; gap:1rem; }
.topbar-tools { margin-left:auto;display:flex;align-items:center;gap:.5rem; }
.topbar-search { width:min(32vw,420px); height:38px; display:flex;align-items:center;gap:.55rem;padding:0 .65rem;border:1px solid #e0e5e1;border-radius:.6rem;background:#f8faf8;color:#83908a;transition:border-color .16s ease,box-shadow .16s ease,background .16s ease; }
.topbar-search:focus-within { background:#fff;border-color:#85b699;box-shadow:0 0 0 3px rgba(47,122,77,.09); }
.topbar-search input { flex:1;min-width:0;border:0;outline:0;background:transparent;color:#243142;font-size:.74rem; }
.topbar-search input::placeholder { color:#929d98; }
.topbar-search kbd { padding:.13rem .34rem;border:1px solid #dfe5e0;border-bottom-width:2px;border-radius:.3rem;background:#fff;color:#85918b;font-family:inherit;font-size:.58rem;box-shadow:none; }
.topbar-icon-btn { position:relative;width:38px;height:38px;display:grid;place-items:center;border:1px solid #e2e7e3;border-radius:.6rem;background:#fff;color:#596760;font-size:.82rem;transition:.16s ease; }
.topbar-icon-btn:hover,.topbar-icon-btn[aria-expanded="true"] { color:#1e7548;background:#edf7f0;border-color:#cfe5d6; }
.notification-badge { position:absolute;right:-4px;top:-4px;min-width:17px;height:17px;padding:0 4px;display:grid;place-items:center;border:2px solid #fff;border-radius:999px;background:#dc3f36;color:#fff;font-size:.5rem;font-weight:750; }
.topbar-divider { width:1px;height:24px;margin:0 .25rem;background:#e3e7e4; }
.topbar-context { height:34px;display:flex;align-items:center;gap:.4rem;padding:0 .7rem;border-radius:.55rem;color:#65736d;background:#f4f7f5;font-size:.68rem;font-weight:600; }
.topbar-context i { color:#2f8254; }
.topbar-menu { width:300px;margin-top:.55rem;padding:.45rem;border:1px solid #e3e8e4;border-radius:.75rem;box-shadow:0 14px 35px rgba(30,49,40,.13); }
.topbar-menu-head { display:flex;align-items:center;justify-content:space-between;padding:.65rem .7rem .75rem;border-bottom:1px solid #eef1ef; }
.topbar-menu-head strong { color:#263342;font-size:.78rem; }
.topbar-menu-head span { color:#88938e;font-size:.6rem; }
.quick-menu .dropdown-item { display:flex;align-items:center;gap:.7rem;margin-top:.2rem;padding:.6rem .65rem;border-radius:.5rem; }
.quick-menu .dropdown-item>i { width:1.9rem;height:1.9rem;display:grid;place-items:center;border-radius:.45rem;background:#edf6ef;color:#287a4b; }
.quick-menu strong,.quick-menu small { display:block; }
.quick-menu strong { color:#344151;font-size:.7rem; }
.quick-menu small { margin-top:.08rem;color:#8a9590;font-size:.58rem; }
.notification-item { display:flex;align-items:flex-start;gap:.65rem;margin-top:.2rem;padding:.65rem;border-radius:.5rem;color:inherit;text-decoration:none; }
.notification-item:hover { background:#f6f9f7; }
.notification-icon { flex:none;width:1.9rem;height:1.9rem;display:grid;place-items:center;border-radius:.5rem;font-size:.72rem; }
.notification-icon.danger { color:#bd3d35;background:#feeeed; }.notification-icon.warning { color:#a36b0b;background:#fff5dc; }
.notification-item strong,.notification-item small { display:block; }
.notification-item strong { max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#344151;font-size:.69rem; }
.notification-item small { margin-top:.13rem;color:#87928d;font-size:.58rem; }
.notification-empty { min-height:120px;display:grid;place-content:center;justify-items:center;gap:.45rem;color:#87938d;font-size:.68rem; }.notification-empty i{font-size:1.3rem;color:#47a16a;}
.topbar-menu-footer { display:flex;align-items:center;justify-content:center;gap:.4rem;margin-top:.3rem;padding:.55rem;border-top:1px solid #eef1ef;color:#277649;text-decoration:none;font-size:.65rem;font-weight:650; }
.search-page-head { display:flex;align-items:flex-end;justify-content:space-between;gap:2rem;margin-bottom:1.25rem; }.search-page-head h1{margin:.15rem 0;font-size:1.55rem;font-weight:750}.search-page-head p{margin:0;color:#77837d}.eyebrow{color:#2c8051;font-size:.62rem;font-weight:750;letter-spacing:.08em}
.search-page-form { width:min(100%,480px);height:44px;display:flex;align-items:center;gap:.65rem;padding-left:.8rem;border:1px solid #dfe5e0;border-radius:.65rem;background:#fff;overflow:hidden; }.search-page-form>i{color:#819088}.search-page-form input{flex:1;min-width:0;border:0;outline:0;font-size:.76rem}.search-page-form .btn{align-self:stretch;border-radius:0;padding-inline:1.2rem}
.search-results { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem; }.search-group{overflow:hidden;border:1px solid #e1e6e2;border-radius:.75rem;background:#fff}.search-group-head{display:flex;align-items:center;justify-content:space-between;padding:.8rem 1rem;border-bottom:1px solid #edf1ee}.search-group-head h2{margin:0;font-size:.82rem;font-weight:700}.search-group-head span{min-width:22px;padding:.12rem .35rem;border-radius:99px;background:#edf5ef;color:#29784b;text-align:center;font-size:.58rem;font-weight:700}.search-result{display:flex;align-items:center;gap:.7rem;padding:.75rem 1rem;border-top:1px solid #f0f2f0;color:inherit;text-decoration:none}.search-group-head+.search-result{border-top:0}.search-result:hover{background:#fafcfa}.search-result-icon{width:2rem;height:2rem;display:grid;place-items:center;flex:none;border-radius:.5rem;background:#edf5ef;color:#287a4b}.search-result-content{min-width:0;flex:1}.search-result-content small,.search-result-content strong,.search-result-content>span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-result-content small{color:#2b8051;font-size:.55rem;font-weight:700}.search-result-content strong{color:#2d3948;font-size:.72rem}.search-result-content>span{color:#84908a;font-size:.6rem}.search-result>i{color:#a4ada8;font-size:.6rem}.search-empty{min-height:320px;display:grid;place-content:center;justify-items:center;gap:.4rem;border:1px dashed #dbe3dd;border-radius:.8rem;background:#fbfcfb;color:#82908a}.search-empty>i{font-size:1.8rem;color:#6ea582}.search-empty strong{color:#344151}
.content { max-width:1440px; }
.sidebar-admin{padding:.65rem .7rem;border-top:1px solid #e7ebe7}.sidebar-admin .side-link{color:#554a7f;background:#f5f2ff}.sidebar-admin .side-link i{color:#7158b7}.sidebar-admin .side-link.active{color:#493586;background:#ebe5ff}
.admin-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:.8rem;margin-bottom:1rem}.admin-kpis>div{display:flex;align-items:center;gap:.6rem;padding:1rem;border:1px solid var(--line);border-radius:.75rem;background:#fff}.admin-kpis i{width:2rem;height:2rem;display:grid;place-items:center;border-radius:.55rem;color:#2f7a4d;background:#eaf8ef}.admin-kpis b{font-size:1.2rem}.admin-kpis span{color:#748078;font-size:.7rem}.admin-tabs{gap:.25rem;margin-bottom:1rem;overflow-x:auto;flex-wrap:nowrap}.admin-tabs li{list-style:none}.admin-tabs .nav-link{white-space:nowrap;border:0;border-radius:.55rem;color:#5c6876;font-weight:650}.admin-tabs .nav-link.active{color:#206d44;background:#eaf8ef}.admin-form{padding:1.1rem}.admin-form h2{margin:0 0 1rem;font-size:.92rem}.admin-grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem}.permission-list{display:grid;gap:1rem}.permission-card{padding:1rem}.permission-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:.8rem}.permission-head strong,.permission-head small{display:block}.permission-head small{color:#7d8983}.permission-card fieldset{margin-top:.8rem}.permission-card legend{font-size:.68rem;font-weight:700;color:#67736e;text-transform:uppercase}.permission-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem}.permission-grid label{display:flex;align-items:flex-start;gap:.5rem;padding:.65rem;border:1px solid #e7ebe8;border-radius:.55rem;background:#fafcfb}.permission-grid span,.permission-grid strong,.permission-grid small{display:block}.permission-grid strong{font-size:.72rem}.permission-grid small{color:#929c97;font-size:.6rem}
@media(max-width:767px){.admin-kpis{grid-template-columns:repeat(2,1fr)}.admin-grid-2,.permission-grid{grid-template-columns:1fr}.permission-head{align-items:flex-start}}
.system-log-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:1rem;align-items:start}.audit-detail td{background:#f8faf8!important}.audit-detail>td>div{padding:.5rem}.audit-detail span{display:block;margin-bottom:.4rem;color:#748078}.audit-detail pre{max-height:260px;margin:0;padding:.8rem;border-radius:.5rem;background:#172131;color:#d9e7dd;font-size:.68rem;white-space:pre-wrap;overflow:auto}.release-list{display:grid;gap:.75rem}.release-card{padding:1rem}.release-card.current{border-color:#8fc3a1;box-shadow:inset 3px 0 #2f8b55}.release-card>div{display:flex;align-items:center;justify-content:space-between}.release-card>div span{color:#26784a;font-weight:750}.release-card b{padding:.15rem .45rem;border-radius:99px;color:#28784a;background:#eaf8ef;font-size:.58rem}.release-card h3{margin:.65rem 0 .25rem;font-size:.82rem}.release-card p{margin:0 0 .6rem;color:#68756f;font-size:.7rem}.release-card small{color:#8a958f}
@media(max-width:991px){.system-log-grid{grid-template-columns:1fr}}

/* Trace / truy xuất nguồn gốc */
.trace-search { max-width: 820px; padding: 1.15rem 1.25rem 1.2rem; margin-bottom: 1rem; }
.trace-search .form-label { margin-bottom: .45rem; font-size: .72rem; font-weight: 650; color: #3f4c5d; }
.trace-search-row { display: flex; gap: .65rem; align-items: stretch; }
.trace-search-row .input-group { flex: 1; min-width: 0; }
.trace-search-row .input-group-text { min-height: 42px; color: #7a8692; background: #fff; border-color: #d9dfda; }
.trace-search-row .form-control { min-height: 42px; border-color: #d9dfda; }
.trace-search-row .btn { flex: none; min-width: 118px; }
.trace-samples { margin-top: .95rem; padding-top: .9rem; border-top: 1px dashed #e3e8e3; }
.trace-samples-label { display: block; margin-bottom: .45rem; color: #7a8692; font-size: .65rem; font-weight: 650; letter-spacing: .04em; text-transform: uppercase; }
.trace-sample-list { display: flex; flex-wrap: wrap; gap: .45rem; }
.trace-sample-chip { display: inline-flex; align-items: center; gap: .4rem; max-width: 100%; padding: .38rem .65rem; border: 1px solid #dde4de; border-radius: 999px; background: #f7faf7; color: #344151; text-decoration: none; font-size: .68rem; transition: .12s ease; }
.trace-sample-chip i { color: #2f7a4d; font-size: .62rem; }
.trace-sample-chip small { color: #8a9590; }
.trace-sample-chip:hover, .trace-sample-chip.active { color: #1f5f3a; border-color: #9ec9ae; background: #eaf8ef; }
.trace-card { overflow: hidden; border: 1px solid var(--line); border-radius: 1rem; background: #fff; box-shadow: 0 12px 32px rgba(18, 35, 63, .06); }
.trace-hero { display: flex; align-items: flex-start; justify-content: space-between; gap: 1.25rem; padding: 1.35rem 1.4rem 1.2rem; background: linear-gradient(135deg, #eef8f1 0%, #fff 55%); border-bottom: 1px solid #e8eee9; }
.trace-hero-text { min-width: 0; }
.trace-hero-aside { display: flex; flex-direction: column; align-items: flex-end; gap: .65rem; flex: none; }
.trace-qr-figure { margin: 0; padding: .45rem; border: 1px solid #e2ebe4; border-radius: .7rem; background: #fff; box-shadow: 0 4px 14px rgba(27, 45, 36, .05); }
.trace-qr-figure img { display: block; width: 104px; height: 104px; }
.trace-eyebrow { display: block; margin-bottom: .28rem; color: #2c8051; font-size: .62rem; font-weight: 750; letter-spacing: .08em; text-transform: uppercase; }
.trace-title { margin: 0; color: #172131; font-size: clamp(1.2rem, 2.2vw, 1.45rem); font-weight: 750; letter-spacing: -.02em; }
.trace-qr-row { display: flex; flex-wrap: wrap; align-items: center; gap: .55rem .85rem; margin-top: .55rem; }
.trace-qr-pill { display: inline-flex; align-items: center; gap: .4rem; padding: .28rem .55rem; border-radius: .45rem; background: #edf5ef; color: #1f6b40; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: .7rem; font-weight: 650; }
.trace-qr-pill i { font-size: .68rem; }
.trace-public-link { color: #2f7a4d; font-size: .72rem; font-weight: 650; text-decoration: none; }
.trace-public-link:hover { color: #21653d; text-decoration: underline; }
.trace-metrics { display: grid; grid-template-columns: 1.35fr repeat(4, minmax(0, 1fr)); gap: 0; border-bottom: 1px solid #e8eee9; }
.trace-metric { display: flex; gap: .65rem; padding: 1rem 1.05rem; border-right: 1px solid #eef2ee; }
.trace-metric:last-child { border-right: 0; }
.trace-metric-ico { flex: none; width: 1.85rem; height: 1.85rem; display: grid; place-items: center; border-radius: .5rem; background: #edf6ef; color: #2f7a4d; font-size: .72rem; }
.trace-metric-label { display: block; margin-bottom: .22rem; color: #7d8983; font-size: .6rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }
.trace-metric strong { display: block; color: #1d2733; font-size: .86rem; font-weight: 700; line-height: 1.3; }
.trace-metric strong em { font-style: normal; color: #748078; font-size: .72rem; font-weight: 550; }
.trace-metric small { display: block; margin-top: .2rem; color: #7a8692; font-size: .68rem; line-height: 1.35; }
.trace-metric-accent { background: #f4faf6; }
.trace-metric-accent strong { color: #1f6b40; font-size: 1.02rem; }
.trace-timeline-wrap { padding: 1.2rem 1.4rem 1.45rem; }
.trace-section-head { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; }
.trace-section-head h3 { margin: 0; font-size: .95rem; font-weight: 750; }
.trace-section-head span { color: #84908a; font-size: .68rem; }
.trace-timeline { margin: 0; padding: 0; list-style: none; }
.trace-timeline-item { display: grid; grid-template-columns: 2rem 1fr; gap: .85rem; padding-bottom: 1.15rem; }
.trace-timeline-item:last-child { padding-bottom: 0; }
.trace-timeline-rail { position: relative; display: flex; justify-content: center; }
.trace-timeline-rail::before { content: ""; position: absolute; top: 1.7rem; bottom: -.35rem; left: 50%; width: 2px; transform: translateX(-50%); background: linear-gradient(#c9e4d2, #e8eee9); }
.trace-timeline-item:last-child .trace-timeline-rail::before { display: none; }
.trace-timeline-num { position: relative; z-index: 1; width: 1.7rem; height: 1.7rem; display: grid; place-items: center; border-radius: 50%; background: #2f7a4d; color: #fff; font-size: .68rem; font-weight: 750; box-shadow: 0 0 0 4px #e5f3ea; }
.trace-timeline-body { min-width: 0; padding: .1rem 0 .15rem; }
.trace-timeline-top { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; }
.trace-timeline-top strong { color: #1d2733; font-size: .88rem; }
.trace-timeline-top time { flex: none; color: #84908a; font-size: .68rem; white-space: nowrap; }
.trace-timeline-loc { display: flex; align-items: center; gap: .35rem; margin-top: .28rem; color: #5f6d66; font-size: .72rem; }
.trace-timeline-loc i { color: #6ea582; font-size: .62rem; }
.trace-timeline-body p { margin: .35rem 0 0; color: #526058; font-size: .78rem; line-height: 1.45; }
.trace-empty { padding: 1.5rem; border: 1px dashed #dbe3dd; border-radius: .65rem; background: #fbfcfb; color: #82908a; text-align: center; }
.trace-public-body { min-height: 100vh; background: radial-gradient(circle at 10% -10%, rgba(53, 168, 102, .18), transparent 36%), radial-gradient(circle at 90% 0%, rgba(18, 35, 63, .08), transparent 28%), linear-gradient(165deg, #e8f2eb 0%, #f5f8f4 42%, #eef2ee 100%); }
.trace-public { width: min(880px, calc(100% - 1.5rem)); margin: 0 auto; padding: 1.5rem 0 2.75rem; }
.trace-public-brand { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: .75rem 1.5rem; margin-bottom: 1.1rem; }
.trace-public-brand img { display: block; width: min(200px, 62vw); height: auto; }
.trace-public-brand p { margin: 0; max-width: 28rem; color: #66746f; font-size: .78rem; line-height: 1.45; }
@media (max-width: 991px) {
    .trace-metrics { grid-template-columns: repeat(2, 1fr); }
    .trace-metric { border-bottom: 1px solid #eef2ee; }
    .trace-metric:nth-child(2n) { border-right: 0; }
}
@media (max-width: 767px) {
    .trace-search-row { flex-direction: column; }
    .trace-search-row .btn { width: 100%; min-height: 42px; }
    .trace-hero { flex-direction: column; align-items: stretch; }
    .trace-hero-aside { flex-direction: row; align-items: flex-start; justify-content: space-between; width: 100%; }
    .trace-metrics { grid-template-columns: 1fr; }
    .trace-metric { border-right: 0; }
    .trace-timeline-top { align-items: flex-start; flex-direction: column; gap: .2rem; }
}

.schedule-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,210px));gap:.8rem;margin-bottom:1rem}.schedule-kpis>div{position:relative;min-height:88px;padding:1rem;border:1px solid var(--line);border-radius:.75rem;background:#fff}.schedule-kpis b,.schedule-kpis small{display:block}.schedule-kpis b{font-size:1.45rem;color:#172131}.schedule-kpis small{margin-top:.2rem;color:#6f7c76}.schedule-kpis .kpi-icon{top:.75rem;right:.75rem}.schedule-filter{display:flex;align-items:center;gap:.65rem;padding:.75rem;margin-bottom:1rem}.schedule-filter>.form-select{width:auto;min-width:180px}.schedule-legend{display:flex;align-items:center;gap:.75rem;margin-left:auto;color:#6e7974;font-size:.65rem;white-space:nowrap}.schedule-legend span{display:flex;align-items:center;gap:.3rem}.schedule-legend i{width:.55rem;height:.55rem;border-radius:50%;background:var(--c)}.calendar-shell{padding:1rem;overflow:hidden}.fc{--fc-border-color:#e7ebe8;--fc-button-bg-color:#172131;--fc-button-border-color:#172131;--fc-button-hover-bg-color:#273548;--fc-button-hover-border-color:#273548;--fc-button-active-bg-color:#2f7a4d;--fc-button-active-border-color:#2f7a4d}.fc .fc-toolbar-title{font-size:1.05rem;text-transform:capitalize}.fc .fc-button{font-family:inherit;font-size:.7rem}.fc .fc-col-header-cell-cushion,.fc .fc-daygrid-day-number{color:#596761;text-decoration:none}.fc .fc-col-header-cell-cushion{padding:.6rem .25rem;font-size:.68rem;text-transform:uppercase}.fc .fc-daygrid-day-number{font-size:.7rem}.fc .fc-event{padding:.15rem .28rem;border:0;border-radius:.3rem;font-size:.65rem;cursor:pointer}.fc .fc-day-today{background:#f1f8f3!important}.fc .fc-list-event:hover td{background:#f5f8f6}.fc .fc-list-event-title a{color:#273442;text-decoration:none}
@media(max-width:767px){.schedule-kpis{grid-template-columns:repeat(3,1fr)}.schedule-kpis>div{min-height:98px;padding:.75rem}.schedule-kpis b{font-size:1.2rem}.schedule-kpis small{max-width:70px}.schedule-filter{align-items:stretch;flex-direction:column}.schedule-filter>.form-select{width:100%}.schedule-legend{width:100%;margin-left:0;overflow-x:auto}.calendar-shell{padding:.6rem}.fc .fc-toolbar{align-items:flex-start;gap:.55rem;flex-wrap:wrap}.fc .fc-toolbar-chunk:nth-child(2){order:-1;width:100%}.fc .fc-toolbar-title{font-size:1rem}.schedule-head .btn{width:100%}}
@media(max-width:991.98px){.sidebar{box-shadow:8px 0 30px rgba(22,39,32,.12)}.sidebar-head .brand img{width:184px}.sidebar-head .btn-close{flex:none;font-size:.7rem}.sidebar-foot{padding-bottom:max(.75rem,env(safe-area-inset-bottom))}.topbar-search{width:min(52vw,360px)}.topbar-context{display:none}}
@media(max-width:767px){.topbar{padding-inline:.8rem}.topbar-search{width:auto;flex:1}.topbar-search kbd{display:none}.search-page-head{align-items:stretch;flex-direction:column;gap:1rem}.search-page-form{width:100%}.search-results{grid-template-columns:1fr}.table-responsive{overscroll-behavior-inline:contain;-webkit-overflow-scrolling:touch}.table{min-width:720px}}
@media(max-width:520px){.topbar{gap:.45rem}.topbar-tools{gap:.4rem}.topbar-search{position:relative;flex:0 0 38px;padding:0;justify-content:center}.topbar-search input{position:absolute;width:1px;opacity:0;pointer-events:none}.topbar-search:focus-within{position:absolute;left:.8rem;right:.8rem;z-index:20;width:auto;padding:0 .65rem;justify-content:flex-start;background:#fff}.topbar-search:focus-within input{position:static;width:auto;opacity:1;pointer-events:auto}.topbar-divider{display:none}.dashboard-head{flex-direction:column;align-items:stretch}.dashboard-head .dropdown>.btn{width:100%}.kpi-card{padding:.85rem;min-height:116px}.kpi-icon{right:.75rem;top:.75rem;width:2rem;height:2rem}.kpi-label{min-height:2em;padding-right:2.15rem;font-size:.65rem;line-height:1.05}.kpi-card strong{margin-right:0}.insight-panel .btn{margin-left:auto}.page-head{align-items:flex-start}.page-head>div:first-child{min-width:0}.panel>.table-responsive{background:linear-gradient(to left,rgba(18,35,63,.08),transparent 18px) right/22px 100% no-repeat}}
