@import url('/typography.css?v=erp-content14');

/* =====================================================================
   GOODFILM brand theme (18.10.26) — clean & modern, colours from the logo
   navy = brand, red = accents only. Loaded LAST on every page so it wins.
   Shared tokens first, then: main app (index.html), then the stand-alone
   pages (dealers / admin / register) under their own body classes.
   ===================================================================== */
:root {
  --gf-navy: #0b2a86;          /* logo blue */
  --gf-navy-700: #081f66;
  --gf-navy-900: #061646;
  --gf-blue: #2553c9;          /* lighter interactive blue */
  --gf-tint: #eef3fd;          /* very light brand wash */
  --gf-tint-2: #f6f8fd;
  --gf-red: #e31e26;           /* logo red: accents only */
  --gf-red-tint: #fdecec;
  --gf-ink: #101828;
  --gf-ink-soft: #475467;
  --gf-muted: #667085;
  --gf-line: #e4e9f2;
  --gf-line-strong: #cdd6e6;
  --gf-radius: 14px;
  --gf-shadow: 0 1px 2px rgb(16 24 40 / 4%), 0 4px 18px rgb(16 24 40 / 5%);
  --gf-shadow-lg: 0 12px 40px rgb(11 42 134 / 14%);

  /* re-point the old tokens so every older rule picks up the brand */
  --ink: var(--gf-ink);
  --ink-soft: var(--gf-ink-soft);
  --muted: var(--gf-muted);
  --line: var(--gf-line);
  --navy: var(--gf-navy);
  --red: var(--gf-navy);
  --red-dark: var(--gf-navy);
  --red-tint: var(--gf-tint);
  --radius: var(--gf-radius);
  --shadow: var(--gf-shadow);
}
html { --ch-a: var(--gf-navy); --ch-b: var(--gf-blue); --ch-tint: var(--gf-tint); --ch-line: #c7d4f0; }
[data-ch="retail"] { --ca: var(--gf-navy); --cb: var(--gf-blue); --ct: var(--gf-tint); --cl: #c7d4f0; }

body { font-family: var(--gf-font); color: var(--gf-ink); background: #fff; letter-spacing: 0; }
button, input, select, textarea { font-family: inherit; }
a { color: var(--gf-blue); }
input:focus, select:focus, textarea:focus { outline: 0; border-color: var(--gf-blue) !important; box-shadow: 0 0 0 3px rgb(37 83 201 / 16%); }
button:focus-visible, a:focus-visible { outline: 2px solid var(--gf-blue); outline-offset: 2px; }
::selection { background: #d6e1fb; }

/* ---------------------------------------------------------------- page heading */
.page-heading h1 { font-size: 24px; letter-spacing: -.01em; color: var(--gf-ink); }
.page-heading h1 .aud, .page-heading h1 strong { color: var(--ch-a, var(--gf-navy)); }
.conf-badge { background: var(--gf-red-tint); color: #b42318; border: 1px solid #f7c7c4; font-size: 12px; }
.badge-warning { background: #fff7e6; color: #93600a; border: 1px solid #f6dfae; }
.price-date, .heading-meta { color: var(--gf-muted); }

/* ---------------------------------------------------------------- surfaces */
.panel, .summary-panel, .form-panel { border: 1px solid var(--gf-line); border-radius: var(--gf-radius); box-shadow: var(--gf-shadow); background: #fff; }
.header-row, .panel-title { border-color: var(--gf-line) !important; }
.panel-title { color: var(--gf-ink); font-size: 18px; }

/* calculator cards keep their own (now brand-matched) tints */
#view-calculator .form-panel { background: var(--gf-tint-2); border-color: var(--gf-line); }
#view-calculator .form-panel .panel-title, #view-calculator .form-panel .header-row { border-color: var(--gf-line); }
#view-calculator .summary-panel { background: #f5fbf8; border-color: #dcefe5; }
#view-calculator .summary-panel .header-row, #view-calculator .summary-panel .totals, #view-calculator .summary-panel .quote-notes { border-color: #dcefe5; }
#view-calculator .summary-panel > .cust-grid { background: #fff; border-color: var(--gf-line); }
#view-calculator .summary-panel .quote-ref { background: #fff; border-color: var(--gf-line); }
#view-calculator .summary-panel .quote-ref.saved { background: #f0faf4; border-color: #b7e2c8; }

/* ---------------------------------------------------------------- inputs */
input, select, textarea { border-color: var(--gf-line-strong); border-radius: 10px; }
.cust-grid input, .cust-grid select, .form-panel .field input, .form-panel .field select { border-color: var(--gf-line-strong); }
.cust-grid label, .field label { color: var(--gf-ink-soft); }

/* ---------------------------------------------------------------- buttons: flat, solid brand */
.primary-button, html[data-channel] .primary-button { background: var(--gf-navy); border-color: var(--gf-navy); color: #fff; box-shadow: 0 1px 2px rgb(16 24 40 / 10%); border-radius: 10px; }
.primary-button:hover:not(:disabled), html[data-channel] .primary-button:hover:not(:disabled) { background: var(--gf-navy-700); border-color: var(--gf-navy-700); }
.primary-button:disabled { background: #b8c4e0; border-color: #b8c4e0; opacity: 1; color: #fff; }
.secondary-button { background: #fff; color: var(--gf-navy); border-color: var(--gf-line-strong); border-radius: 10px; }
.secondary-button:hover:not(:disabled) { background: var(--gf-tint); border-color: var(--gf-navy); }
.ghost-button { color: var(--gf-muted); border-radius: 10px; }
.ghost-button:hover:not(:disabled) { color: var(--gf-ink); background: #f2f4f7; }

/* ---------------------------------------------------------------- tabs & choice buttons: flat segmented style */
.mode-tabs button, .choice-group button, .filter-group:has(#category) .choice-group button { background: #fff; border-color: var(--gf-line-strong); color: var(--gf-ink-soft); }
.mode-tabs button:hover, .choice-group button:hover, .filter-group:has(#category) .choice-group button:hover { background: var(--gf-tint-2); color: var(--gf-navy); border-color: var(--gf-line-strong); }
.choice-group button.active, .filter-group:has(#category) .choice-group button.active,
html[data-channel] .choice-group button.active:not([data-ch]), html[data-channel] .filter-group:has(#category) .choice-group button.active { background: var(--ch-a, var(--gf-navy)); border-color: var(--ch-a, var(--gf-navy)); color: #fff; }
.mode-tabs button[data-ch], #calc-customer + .choice-group button[data-ch] { background: #fff; border-color: var(--cl); color: var(--ca); }
.mode-tabs button[data-ch]:hover, #calc-customer + .choice-group button[data-ch]:hover { background: var(--ct); }
.mode-tabs button[data-ch].active, #calc-customer + .choice-group button[data-ch].active { background: var(--ca); border-color: var(--ca); color: #fff; box-shadow: 0 6px 16px -6px var(--ca); }
.choice-group button:not(.active) .ico, .mode-tabs button:not(.active) .ico { color: var(--ch-b, var(--gf-blue)); }

/* ---------------------------------------------------------------- price table */
.price-table thead th, html[data-channel] .price-table th { background: var(--gf-tint-2); color: var(--gf-ink-soft); border-bottom: 1px solid var(--gf-line); }
.price-table tbody tr:hover { background: var(--gf-tint-2); }
.price-table td { border-color: var(--gf-line); }
.price-table .group-row td { background: #f9fafc; border-left-color: var(--ch-b, var(--gf-navy)); }
.price-table td.number { color: var(--gf-ink); }
.warranty-pill { background: var(--gf-tint); color: var(--gf-navy); }

/* ---------------------------------------------------------------- summary / totals */
.grand-total .number, #view-calculator .grand-total .number { color: var(--gf-navy); }
.grand-total { border-top-color: var(--gf-line-strong); }
.quote-ref .qr-text { color: var(--gf-navy); }

/* ---------------------------------------------------------------- saved quotations list */
.q-table th { background: var(--gf-tint-2) !important; color: var(--gf-ink-soft) !important; border-color: var(--gf-line) !important; }
.q-table td { border-color: var(--gf-line) !important; }
.q-table tbody tr:hover td { background: var(--gf-tint-2); }

/* ---------------------------------------------------------------- misc */
.toast { background: var(--gf-ink); border-radius: 12px; box-shadow: var(--gf-shadow-lg); }
.badge { background: var(--gf-tint); color: var(--gf-navy); }
.cond-chip { background: var(--gf-tint); color: var(--gf-navy); border-color: #d3def5; }
.notice.info { background: var(--gf-tint); border-color: #d3def5; color: var(--gf-navy-700); }
.link-button { color: var(--gf-navy); }

/* =====================================================================
   Stand-alone pages: /dealers, /admin, /register (body.gf-page)
   ===================================================================== */

.gf-page .btn, .gf-page .ic { background: #fff; border-color: var(--gf-line-strong); color: var(--gf-navy); }
.gf-page .btn:hover, .gf-page .ic:hover { background: var(--gf-tint); border-color: var(--gf-navy); }
.gf-page .btn.primary, .gf-page button.primary { background: var(--gf-navy); border-color: var(--gf-navy); color: #fff; }
.gf-page .btn.primary:hover, .gf-page button.primary:hover { background: var(--gf-navy-700); border-color: var(--gf-navy-700); }
.gf-page .btn.danger, .gf-page .ic.danger { color: #b42318; border-color: #f7c7c4; background: #fff; }
.gf-page .btn.danger:hover, .gf-page .ic.danger:hover { background: var(--gf-red-tint); }
.gf-page .tab { background: #fff; border-color: var(--gf-line-strong); color: var(--gf-ink-soft); }
.gf-page .tab:hover { border-color: var(--gf-navy); color: var(--gf-navy); }
.gf-page .tab.on { background: var(--gf-navy); border-color: var(--gf-navy); color: #fff; }
.gf-page .tab.on .cnt { background: rgb(255 255 255 / 18%); border-color: transparent; color: #fff; }
.gf-page .wrap { border-color: var(--gf-line); border-radius: var(--gf-radius); box-shadow: var(--gf-shadow); background: #fff; }
.gf-page table.t th { background: var(--gf-tint-2); color: var(--gf-ink-soft); border-bottom: 1px solid var(--gf-line); }
.gf-page table.t td { border-bottom-color: #eef1f6; }
.gf-page table.t tbody tr:nth-child(odd) td { background: #fff; }
.gf-page table.t tbody tr:hover td { background: var(--gf-tint-2); }
.gf-page table.t a { color: var(--gf-blue); }
.gf-page input, .gf-page select, .gf-page textarea { border-color: var(--gf-line-strong); }
.gf-page .adm-toast { background: var(--gf-ink); border-radius: 12px; }
/* dealer drawer */
.gf-page .dr-head { background: #fff; color: var(--gf-ink); border-bottom: 1px solid var(--gf-line); }
.gf-page .dr-head h2 { color: var(--gf-ink); }
.gf-page .dr-head .ds { color: var(--gf-muted); }
.gf-page .dr-head .ic { background: #fff; color: var(--gf-ink-soft); }
.gf-page .tile { background: #fff; border-color: var(--gf-line); box-shadow: var(--gf-shadow); }
.gf-page .tile .tv { color: var(--gf-navy); }
.gf-page .dtab.on { color: var(--gf-navy); border-bottom-color: var(--gf-red); }

/* ---------------------------------------------------------------- round-2 fixes */
/* group tabs: baseline follows the channel colour (brand navy for End User) */
html[data-channel] #calc-customer + .choice-group, html[data-channel] .mode-tabs { border-bottom-color: var(--ch-a) !important; }
/* calculator items list: softer cream */
#view-calculator .summary-panel > .quote-list { background: #fffaf0; border-color: #f2e4c4; }
#view-calculator .summary-panel > .quote-list .quote-item { border-color: #f2e4c4; }
/* segmented controls (รูปแบบราคา, area method, list/trash) */
.segmented { background: #f2f4f7; border-color: var(--gf-line); }

/* admin */
.gf-page table.adm th { background: var(--gf-tint-2); color: var(--gf-ink-soft); border-bottom: 1px solid var(--gf-line); }
.gf-page table.adm td { border-bottom-color: #eef1f6; }
/* dealer drawer backdrop: lighter, neutral */
.gf-page .ov { background: rgb(16 24 40 / 28%); -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px); }
.gf-page .dr { box-shadow: -12px 0 40px rgb(16 24 40 / 14%); }

/* register (public form): brand navy hero, red accent line, solid buttons */
.gf-page .hero { background: radial-gradient(1200px 400px at 50% -120px, #1b3fa6 0%, transparent 60%), linear-gradient(180deg, var(--gf-navy) 0%, var(--gf-navy-900) 100%); }
.gf-page .hero::after { height: 3px; background: linear-gradient(90deg, transparent, var(--gf-red), transparent); }
.gf-page .hero p { color: #d5def5; }
.gf-page .card { border-color: var(--gf-line); box-shadow: var(--gf-shadow); }
.gf-page .card h2 { color: var(--gf-ink); }
.gf-page .card h2 .no { background: var(--gf-navy); }
.gf-page .opts input:checked + span.o { background: var(--gf-navy); box-shadow: 0 6px 16px -6px var(--gf-navy); }
.gf-page button.send { background: var(--gf-navy); box-shadow: 0 10px 24px -10px var(--gf-navy); }
.gf-page button.send:hover { background: var(--gf-navy-700); }

/* =====================================================================
   LAYOUT A (18.10.26, owner's pick): navy menu on the left, light canvas,
   white cards. Used by pages with .app-shell markup.
   ===================================================================== */
html body { background: #f4f6fb; }
html body .app-shell { display: grid; grid-template-columns: 252px minmax(0, 1fr); min-height: 100vh; background: #f4f6fb; }
html body .app-shell > aside.sidebar {
  position: sticky; top: 0; inset: auto; height: 100vh; width: auto; z-index: 30;
  display: flex; flex-direction: column; flex-wrap: nowrap; align-items: stretch; gap: 4px;
  padding: 22px 16px 16px; overflow-y: auto; scrollbar-width: thin;
  background: linear-gradient(180deg, var(--gf-navy) 0%, var(--gf-navy-900) 100%);
  border: 0; box-shadow: none; -webkit-backdrop-filter: none; backdrop-filter: none;
  grid-template-columns: none;
}
html body .app-shell > aside.sidebar::after { content: none; }
.app-shell > aside.sidebar .brand { display: block; padding: 0; margin: 0 8px 24px; }
.app-shell > aside.sidebar .brand img { width: 152px; max-height: none; filter: none; }
.app-shell > aside.sidebar .nav-label { display: block; margin: 0 12px 6px; font-size: 11px; letter-spacing: .12em; color: #8fa2d8; }
.app-shell > aside.sidebar .side-nav { display: flex; flex-direction: column; flex-wrap: nowrap; gap: 4px; padding: 0; border: 0; flex: none; justify-content: flex-start; }
.app-shell > aside.sidebar .nav-item {
  display: flex; align-items: center; gap: 12px; width: 100%; min-height: 46px; padding: 8px 10px;
  border: 0; border-radius: 11px; background: transparent; box-shadow: none;
  color: #d7e0f8; font-size: 15px; text-align: left; text-decoration: none; justify-content: flex-start; flex: none;
}
.app-shell > aside.sidebar .nav-item svg { display: block; flex: none; width: 32px; height: 32px; padding: 7px; border-radius: 9px; background: rgb(255 255 255 / 8%); color: #c9d4f3; }
.app-shell > aside.sidebar .nav-item:hover { background: rgb(255 255 255 / 8%); color: #fff; }
.app-shell > aside.sidebar .nav-item.active { background: #fff; color: var(--gf-navy); box-shadow: 0 8px 20px rgb(0 0 0 / 20%); border-radius: 11px; }
.app-shell > aside.sidebar .nav-item.active svg { background: var(--gf-red); color: #fff; }
/* user card at the bottom of the menu */
.app-shell > aside.sidebar .topbar-meta { display: block; margin: auto 0 0; padding-top: 16px; order: 99; color: #c9d4f3; }
.app-shell > aside.sidebar .topbar-meta::before { content: none; }
.app-shell > aside.sidebar .auth-box { display: flex; align-items: center; gap: 10px; margin: 0; padding: 10px 10px 10px 12px; border: 0; border-radius: 14px; background: rgb(255 255 255 / 7%); }
.auth-avatar { flex: none; width: 36px; height: 36px; border-radius: 50%; display: grid; place-items: center; background: #fff; color: var(--gf-navy); font-size: 15px; }
.auth-who { flex: 1; min-width: 0; display: flex; flex-direction: column; line-height: 1.3; }
.app-shell > aside.sidebar .auth-user { color: #fff; font-size: 14px; max-width: none; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.auth-role { color: #8fa2d8; font-size: 12px; }

/* content column */
html body .app-shell > .workspace { width: auto; margin: 0; min-width: 0; background: transparent; }
/* CAR accounting runs inside a legacy flex body. Keep its wide table within its own scroller. */
@media screen {
  html body.car-3m > .app-shell { inline-size: 100%; min-inline-size: 0; }
}
html body .workspace > .view { padding: 26px 32px 44px; background: transparent; }
.topbar { display: none !important; }
.page-heading { margin-bottom: 18px; }
.page-heading h1 { font-size: 27px; font-weight: 400; }
#view-calculator .page-heading { display: none; }
.panel, .summary-panel, .form-panel { border-radius: 18px; }

/* KPI cards on the price page */
.kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; margin: 0 0 18px; }
.kpi { display: flex; align-items: center; gap: 14px; padding: 16px 18px; background: #fff; border: 1px solid var(--gf-line); border-radius: 16px; box-shadow: 0 1px 2px rgb(16 24 40 / 4%); min-width: 0; }
.kpi-ic { flex: none; width: 44px; height: 44px; border-radius: 12px; display: grid; place-items: center; font-size: 19px; }
.kpi-v { font-size: 22px; line-height: 1.25; color: var(--gf-ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.kpi-l { font-size: 12.5px; color: var(--gf-muted); }
.kpi.k-blue .kpi-ic { background: var(--gf-tint); color: var(--gf-navy); }
.kpi.k-green .kpi-ic { background: #ecfdf3; color: #067647; }
.kpi.k-amber .kpi-ic { background: #fff4e5; color: #b54708; }
.kpi.k-red .kpi-ic { background: var(--gf-red-tint); color: var(--gf-red); }

/* Shared heading and content spacing */
.gf-main { display: flex; flex-direction: column; }
.gf-head { padding: 26px 32px 4px; }
.gf-head h1 { margin: 0; font-size: 27px; font-weight: 400; color: var(--gf-ink); }
.gf-head p { margin: 2px 0 0; color: var(--gf-muted); font-size: 14px; }
.gf-main > .adm-wrap { padding: 14px 32px 60px; }
.gf-page .card, .gf-page section.card { background: #fff; }

/* ---------------------------------------------------------------- tablet / phone: menu becomes a navy top bar */
@media (max-width: 960px) {
  html body .app-shell { display: block; }
  html body .app-shell > aside.sidebar {
    position: sticky; top: 0; height: auto; flex-direction: row; flex-wrap: wrap; align-items: center; gap: 8px 10px;
    padding: 10px 14px; overflow: visible;
  }
  .app-shell > aside.sidebar .brand { margin: 0; }
  .app-shell > aside.sidebar .brand img { width: 104px; }
  .app-shell > aside.sidebar .nav-label { display: none; }
  .app-shell > aside.sidebar .side-nav { order: 3; flex: 1 1 100%; flex-direction: row; overflow-x: auto; scrollbar-width: none; gap: 4px; margin: 0 -14px; padding: 0 14px 2px; }
  .app-shell > aside.sidebar .side-nav::-webkit-scrollbar { display: none; }
  .app-shell > aside.sidebar .nav-item { width: auto; flex: none; min-height: 38px; padding: 6px 12px; font-size: 13.5px; white-space: nowrap; gap: 6px; }
  .app-shell > aside.sidebar .nav-item svg { display: none; }
  .app-shell > aside.sidebar .nav-item.active { box-shadow: none; }
  .app-shell > aside.sidebar .topbar-meta { order: 2; flex: none; margin: 0 0 0 auto; padding: 0; display: block !important; text-align: right; }
  .app-shell > aside.sidebar .auth-box { padding: 4px 4px 4px 4px; background: transparent; gap: 6px; }
  .app-shell > aside.sidebar .auth-avatar { width: 30px; height: 30px; font-size: 13px; }
  .app-shell > aside.sidebar .auth-who { display: none; }
  html body .workspace > .view { padding: 16px 14px 32px; }
  .page-heading h1 { font-size: 21px; }
  .kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .kpi { padding: 12px; gap: 10px; }
  .kpi-ic { width: 36px; height: 36px; font-size: 16px; }
  .kpi-v { font-size: 17px; }
  .gf-head { padding: 16px 14px 0; }
  .gf-head h1 { font-size: 21px; }
  .gf-main > .adm-wrap { padding: 12px 10px 60px; }
}
@media print {
  html body .app-shell { display: block; background: #fff; }
  .kpis { display: none !important; }
}
/* saved-quotation bar: the status picker never overlaps the number / time text */
.quote-ref > div:first-child { flex: 1 1 auto; min-width: 0; }
.quote-ref .qr-status { flex: none; }
@media (max-width: 480px) { .quote-ref { flex-wrap: wrap; } .quote-ref .qr-status { margin-left: 0; } }

/* ---------------------------------------------------------------- collapsible menu (desktop): icons only (auth-ui.js toggles html.nav-collapsed) */
.app-shell > aside.sidebar .brand .brand-mini { display: none; }
.nav-toggle { display: flex; align-items: center; gap: 12px; width: 100%; min-height: 40px; margin: 0 0 10px; padding: 6px 10px; border: 0; border-radius: 11px; background: transparent; color: #8fa2d8; font: inherit; font-size: 14px; cursor: pointer; text-align: left; }
.nav-toggle svg { flex: none; width: 32px; height: 32px; padding: 7px; border-radius: 9px; background: rgb(255 255 255 / 6%); transition: transform .2s; }
.nav-toggle:hover { background: rgb(255 255 255 / 8%); color: #fff; }
@media (min-width: 961px) {
  html body .app-shell { transition: grid-template-columns .2s ease; }
  html.nav-collapsed body .app-shell { grid-template-columns: 80px minmax(0, 1fr); }
  html.nav-collapsed .app-shell > aside.sidebar { padding: 18px 12px 14px; overflow-x: hidden; }
  html.nav-collapsed .app-shell > aside.sidebar .brand { margin: 0 0 22px; }
  html.nav-collapsed .app-shell > aside.sidebar .brand img { display: none; }
  html.nav-collapsed .app-shell > aside.sidebar .brand .brand-mini { display: block; width: 44px; height: 44px; margin: 0 auto; border-radius: 12px; box-shadow: 0 4px 12px rgb(0 0 0 / 25%); }
  html.nav-collapsed .app-shell > aside.sidebar .nav-label { visibility: hidden; height: 0; margin: 0; }
  html.nav-collapsed .app-shell > aside.sidebar .nav-item { font-size: 0; gap: 0; justify-content: center; padding: 6px; min-height: 48px; }
  html.nav-collapsed .app-shell > aside.sidebar .nav-item svg { width: 36px; height: 36px; padding: 8px; }
  html.nav-collapsed .app-shell > aside.sidebar .nav-item.active { box-shadow: 0 6px 16px rgb(0 0 0 / 22%); }
  html.nav-collapsed .nav-toggle { justify-content: center; padding: 6px; font-size: 0; gap: 0; }
  html.nav-collapsed .nav-toggle svg { transform: rotate(180deg); }
  html.nav-collapsed .app-shell > aside.sidebar .auth-box { flex-direction: column; gap: 6px; padding: 8px 4px; }
  html.nav-collapsed .app-shell > aside.sidebar .auth-who { display: none; }
}
@media (max-width: 960px) { .nav-toggle, .app-shell > aside.sidebar .brand .brand-mini { display: none !important; } }

/* admin: edit history folded by default (<details>) */
.adm-audit > summary { display: flex; align-items: center; gap: 10px; cursor: pointer; list-style: none; }
.adm-audit > summary::-webkit-details-marker { display: none; }
.adm-audit > summary h2 { margin: 0 !important; }
.adm-audit .adm-count { padding: 1px 10px; border-radius: 999px; background: var(--gf-tint); color: var(--gf-navy); font-size: 12.5px; }
.adm-audit .adm-chev { margin-left: auto; width: 30px; height: 30px; display: grid; place-items: center; border-radius: 8px; background: #f2f4f7; color: var(--gf-ink-soft); transition: transform .2s; }
.adm-audit[open] .adm-chev { transform: rotate(180deg); }
.adm-audit[open] > summary { margin-bottom: 12px; }

/* ---------------------------------------------------------------- price groups as a sub-menu of "ราคาฟิล์ม" (built by auth-ui.js) */
.app-shell > aside.sidebar .sub-nav { display: flex; flex-direction: column; gap: 2px; margin: 2px 0 6px 25px; padding-left: 14px; border-left: 1px solid rgb(255 255 255 / 16%); }
.sub-item { display: flex; align-items: center; gap: 10px; min-height: 36px; padding: 6px 10px; border: 0; border-radius: 9px; background: transparent; color: #c9d4f3; font: inherit; font-size: 14px; text-align: left; text-decoration: none; cursor: pointer; }
.sub-item:hover { background: rgb(255 255 255 / 8%); color: #fff; }
.sub-item.active { background: rgb(255 255 255 / 14%); color: #fff; }
.sub-dot { flex: none; width: 9px; height: 9px; border-radius: 50%; background: var(--dot, #7ea2ff); box-shadow: 0 0 0 3px rgb(255 255 255 / 8%); }
.sub-item[data-sub="retail"] { --dot: #7ea2ff; }
.sub-item[data-sub="dealer"] { --dot: #b79cff; }
.sub-item[data-sub="newchannel"] { --dot: #4fd39a; }
/* the big group tabs on the price page are replaced by the sub-menu on a desktop with the full menu */
@media (min-width: 961px) {
  html:not(.nav-collapsed) .app-shell:not(.gf-menu-paused) #view-prices .mode-tabs { display: none; }
  html.nav-collapsed .app-shell > aside.sidebar .sub-nav { display: none; }
}
@media (max-width: 960px) { .app-shell > aside.sidebar .sub-nav { display: none; } }

/* menu toggle: icon only, on the logo row (overrides the earlier bottom placement) */
.app-shell > aside.sidebar .brand-row { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin: 0 0 24px; }
.app-shell > aside.sidebar .brand-row .brand { margin: 0 0 0 8px; }
.app-shell > aside.sidebar .brand-row .brand img { width: 140px; }
.nav-toggle { flex: none; width: 34px; height: 34px; min-height: 0; margin: 0; padding: 0; justify-content: center; border-radius: 9px; background: rgb(255 255 255 / 8%); color: #c9d4f3; }
.nav-toggle svg { width: 20px; height: 20px; padding: 0; background: none; }
.nav-toggle:hover { background: rgb(255 255 255 / 16%); }
@media (min-width: 961px) {
  html.nav-collapsed .app-shell > aside.sidebar .brand-row { flex-direction: column; gap: 12px; margin-bottom: 18px; }
  html.nav-collapsed .app-shell > aside.sidebar .brand-row .brand { margin: 0; }
  html.nav-collapsed .nav-toggle { width: 40px; height: 34px; padding: 0; }
}
@media (max-width: 960px) { .app-shell > aside.sidebar .brand-row { margin: 0; } .app-shell > aside.sidebar .brand-row .brand { margin: 0; } .app-shell > aside.sidebar .brand-row .brand img { width: 104px; } }

/* ---------------------------------------------------------------- /products (3M product list, administrators only) */
.pd-summary { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; }
.pd-summary span { padding: 6px 14px; border-radius: 999px; background: #fff; border: 1px solid var(--gf-line); font-size: 13px; color: var(--gf-muted); }
.pd-summary b { font-weight: 400; color: var(--gf-ink); font-size: 15px; margin-right: 2px; }
.pd-bar { display: flex; flex-direction: column; gap: 10px; margin-bottom: 12px; }
.pd-row { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.pd-search { height: 40px; width: 320px; max-width: 100%; padding: 4px 14px; border: 1px solid var(--gf-line-strong); border-radius: 10px; font: inherit; font-size: 14px; }
.pd-chips { gap: 6px; }
.gf-page .tab.warn { border-color: #f6dfae; color: #93600a; background: #fffaf0; }
.gf-page .tab.warn.on { background: #b54708; border-color: #b54708; color: #fff; }
.pd-table td { height: 44px; }
.pd-table tr.pd-group td { height: auto; padding: 14px 12px 6px; background: var(--gf-tint-2) !important; border-bottom: 1px solid var(--gf-line); }
.pd-gname { color: var(--gf-navy); font-size: 14.5px; }
.pd-gcount { margin-left: 10px; color: var(--gf-muted); font-size: 12px; }
.pd-table .sku { font-variant-numeric: tabular-nums; letter-spacing: .02em; color: var(--gf-ink); }
.pd-table .pd-model { color: var(--gf-ink); font-size: 14.5px; }
.pd-table .pd-note { max-width: 260px; }
.pd-table .flag { display: inline-block; margin-left: 8px; padding: 0 8px; border-radius: 999px; font-size: 11.5px; line-height: 20px; }
.pd-table .flag.red { background: var(--gf-red-tint); color: #b42318; }
.pd-table .flag.amber { background: #fff4e5; color: #b54708; }
.pd-table .note-warn { color: #b54708; font-size: 12.5px; }
.pd-empty { max-width: 520px; margin: 40px auto; padding: 34px 28px; text-align: center; background: #fff; border: 1px solid var(--gf-line); border-radius: 18px; box-shadow: var(--gf-shadow); }
.pd-empty-ic { font-size: 40px; }
.pd-empty h2 { margin: 8px 0 4px; font-size: 20px; font-weight: 400; }
.pd-empty p { margin: 0 0 18px; color: var(--gf-muted); }
.pd-empty-acts { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; }
.pd-ov { position: fixed; inset: 0; z-index: 150; display: grid; place-items: center; padding: 16px; background: rgb(16 24 40 / 32%); -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px); }
.pd-card { width: min(560px, 100%); background: #fff; border-radius: 18px; box-shadow: 0 24px 60px rgb(16 24 40 / 22%); overflow: hidden; }
.pd-card-head { display: flex; align-items: center; justify-content: space-between; padding: 16px 20px; border-bottom: 1px solid var(--gf-line); }
.pd-card-head h2 { margin: 0; font-size: 18px; font-weight: 400; }
.pd-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px 16px; padding: 18px 20px; }
.pf { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.pf.wide { grid-column: 1 / -1; }
.pf .pl { font-size: 13px; color: var(--gf-ink-soft); }
.pf input { height: 42px; padding: 4px 12px; border: 1px solid var(--gf-line-strong); border-radius: 10px; font: inherit; font-size: 15px; }
.pf .ph { font-size: 12px; color: var(--gf-muted); }
.pd-card-foot { display: flex; justify-content: flex-end; gap: 8px; padding: 14px 20px; border-top: 1px solid var(--gf-line); background: #fafbfd; }
@media (max-width: 600px) { .pd-grid { grid-template-columns: 1fr; } .pd-search { width: 100%; } .pd-table .pd-note, .pd-table th:nth-child(5), .pd-table td:nth-child(5) { display: none; } }
/* /products: compact toolbar — one row (search · count · add) + one row of small series chips */
.pd-bar { gap: 8px; }
.pd-search { height: 38px; width: 280px; }
.pd-meta { color: var(--gf-muted); font-size: 13px; white-space: nowrap; }
.pd-select { height: 38px; max-width: 100%; padding: 0 12px; border: 1px solid var(--gf-line-strong); border-radius: 10px; background: #fff; color: var(--gf-text, #101828); font: inherit; font-size: 14px; }
@media (max-width: 600px) { .pd-select { flex: 1 1 100%; min-width: 0; } }
.gf-page .pd-bar .btn.primary { height: 38px; }
.pd-chips { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: thin; gap: 6px; padding-bottom: 2px; }
.gf-page .pd-chips .tab { height: 30px; padding: 0 10px; font-size: 12.5px; flex: none; }
.gf-page .pd-chips .tab .cnt { min-width: 18px; line-height: 16px; font-size: 11px; }
.gf-page .pd-row .tab.warn { height: 32px; font-size: 12.5px; }
@media (max-width: 600px) { .pd-table th:nth-child(4) { display: none; } }
/* /products table: no note column, fixed balanced columns, headers aligned with their content */
.pd-table { table-layout: fixed; }
.pd-table .pd-w-sku { width: 30%; }
.pd-table .pd-w-model { width: 30%; }
.pd-table .pd-w-width { width: 14%; }
.pd-table .pd-w-date { width: 14%; }
.pd-table .pd-w-acts { width: 12%; }
.gf-page .pd-table th.pd-c, .gf-page .pd-table td.pd-c { text-align: center; }
.pd-table td, .pd-table th { padding-left: 16px; padding-right: 16px; }
.pd-table .pd-note-mini { display: block; font-size: 12px; color: var(--gf-muted); overflow: hidden; text-overflow: ellipsis; }
@media (max-width: 600px) {
  .pd-table th:nth-child(4), .pd-table td:nth-child(4) { display: table-cell; }
  .pd-table .pd-w-sku { width: 38%; } .pd-table .pd-w-model { width: 26%; } .pd-table .pd-w-width { width: 14%; } .pd-table .pd-w-date { display: none; } .pd-table td:nth-child(4) { display: none; } .pd-table .pd-w-acts { width: 22%; }
  .pd-table td, .pd-table th { padding-left: 10px; padding-right: 8px; }
}
@media (max-width: 600px) { .pd-table th:nth-child(4), .pd-table td:nth-child(4) { display: none; } .pd-table th:nth-child(5), .pd-table td:nth-child(5) { display: table-cell; } }
@media (max-width: 600px) { .pd-table .pd-w-sku { width: 34%; } .pd-table .pd-w-model { width: 26%; } .pd-table .pd-w-width { width: 19%; } .pd-table .pd-w-acts { width: 21%; } .gf-page .pd-table th { white-space: nowrap; overflow: visible; } }
/* /products table with the note column back: balanced widths, headers aligned with content */
.pd-table .pd-w-sku { width: 21%; }
.pd-table .pd-w-model { width: 19%; }
.pd-table .pd-w-width { width: 11%; }
.pd-table .pd-w-note { width: 27%; }
.pd-table .pd-w-date { width: 11%; }
.pd-table .pd-w-acts { width: 11%; }
.pd-table td.pd-note { color: var(--gf-ink-soft); font-size: 13.5px; }
@media (max-width: 600px) {
  .pd-table th:nth-child(4), .pd-table td:nth-child(4), .pd-table th:nth-child(5), .pd-table td:nth-child(5) { display: none; }
  .pd-table th:nth-child(6), .pd-table td:nth-child(6) { display: table-cell; }
  .pd-table .pd-w-sku { width: 34%; } .pd-table .pd-w-model { width: 26%; } .pd-table .pd-w-width { width: 19%; } .pd-table .pd-w-acts { width: 21%; }
}
@media (max-width: 600px) { .pd-table .pd-w-sku { width: 34%; } .pd-table .pd-w-model { width: 23%; } .pd-table .pd-w-width { width: 17%; } .pd-table .pd-w-acts { width: 26%; } .pd-table td.acts > * { margin-left: 4px; } }

/* page headings on every page: title and its description on one line (wraps on narrow screens) */
.page-heading > div:first-child, .gf-head { display: flex; flex-wrap: wrap; align-items: baseline; column-gap: 14px; row-gap: 2px; }
.page-heading > div:first-child > .eyebrow { display: none; }
.page-heading h1, .gf-head h1 { margin: 0; line-height: 1.3; }
.page-heading > div:first-child > p, .gf-head p, #prices-detail { margin: 0 !important; font-size: 14px; color: var(--gf-muted); }
.page-heading .title-line { align-items: center; }
.gf-head { padding-bottom: 6px; }
/* price page: the announcement date is already in the KPI cards — hiding the copy in the heading frees room so the description fits beside the title */

#view-prices .page-heading { align-items: center; }
#view-prices .page-heading > div:first-child { flex: 1 1 auto; min-width: 0; }
.page-heading h1, .gf-head h1 { font-size: 25px; }
@media (max-width: 960px) { .page-heading h1, .gf-head h1 { font-size: 21px; } }

/* left menu is FIXED to the screen on desktop (never scrolls or slides with the page) — owner asked "เมนูให้ fix ไม่ต้องขยับ" */
@media (min-width: 961px) {
  html body .app-shell { display: block; padding-left: 252px; transition: none; }
  html body .app-shell > aside.sidebar { position: fixed; left: 0; top: 0; bottom: 0; width: 252px; height: auto; transition: none; }
  html.nav-collapsed body .app-shell { padding-left: 80px; }
  html.nav-collapsed body .app-shell > aside.sidebar { width: 80px; }
  .nav-toggle svg { transition: none; }
}

/* ---------------------------------------------------------------- /stock (film stock, administrators only) */
.sub-item .sub-ic { display: none; }
.sub-item[data-sub="stock"] { --dot: #ffb547; }
@media (min-width: 961px) {
  html.nav-collapsed .app-shell > aside.sidebar .sub-nav.sub-stock { display: flex; margin: 0; padding: 0; border: 0; }
  html.nav-collapsed .sub-nav.sub-stock .sub-item { justify-content: center; font-size: 0; gap: 0; min-height: 44px; padding: 4px; }
  html.nav-collapsed .sub-nav.sub-stock .sub-dot { display: none; }
  html.nav-collapsed .sub-nav.sub-stock .sub-ic { display: block; width: 30px; height: 30px; padding: 6px; border-radius: 8px; background: rgb(255 255 255 / 6%); color: #ffcf87; }
  html.nav-collapsed .sub-nav.sub-stock .sub-item.active .sub-ic { background: #fff; color: var(--gf-navy); }
}
.sk-seg { display: inline-flex; padding: 3px; border-radius: 10px; background: #fff; border: 1px solid var(--gf-line-strong); }
.sk-seg button { display: inline-flex; align-items: center; gap: 6px; height: 30px; padding: 0 10px; border: 0; border-radius: 7px; background: transparent; color: var(--gf-ink-soft); font: inherit; font-size: 13px; cursor: pointer; }
.sk-seg button .cnt { font-size: 11px; color: var(--gf-muted); }
.sk-seg button.on { background: var(--gf-navy); color: #fff; }
.sk-seg button.on .cnt { color: #c9d4f3; }
.sk-table .sk-w-sku { width: 13%; } .sk-table .sk-w-model { width: 13%; } .sk-table .sk-w-width { width: 8%; }
.sk-table .sk-w-qty { width: 9%; } .sk-table .sk-w-ord { width: 8%; } .sk-table .sk-w-note { width: 23%; }
.sk-table .sk-w-date { width: 9%; } .sk-table .sk-w-acts { width: 17%; }
.sk-qty { display: inline-block; min-width: 40px; padding: 2px 10px; border-radius: 999px; background: #ecfdf3; color: #067647; font-size: 15.5px; font-variant-numeric: tabular-nums; }
.sk-qty.low { background: #fff4e5; color: #b54708; }
.sk-qty.zero { background: var(--gf-red-tint); color: #b42318; }
.sk-qty.none { background: #f2f4f7; color: var(--gf-muted); }
.sk-ordered { display: inline-block; min-width: 32px; padding: 1px 8px; border-radius: 999px; background: var(--gf-tint); color: var(--gf-navy); font-variant-numeric: tabular-nums; }
.gf-page .sk-table td.acts .btn.small { height: 30px; padding: 0 10px; font-size: 12.5px; }
.sk-import { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 14px; padding: 16px 20px; border-radius: 16px; background: linear-gradient(120deg, var(--gf-tint) 0%, #fff 70%); border: 1px solid #d3def5; }
.sk-import h2 { margin: 0; font-size: 17px; font-weight: 400; color: var(--gf-navy); }
.sk-import-status { margin: 2px 0 0; color: var(--gf-muted); font-size: 13.5px; }
/* adjust dialog */
.sk-card .sk-title { color: var(--gf-navy); }
.sk-kinds { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; }
.sk-kinds button { height: 42px; border: 1px solid var(--gf-line-strong); border-radius: 10px; background: #fff; color: var(--gf-ink-soft); font: inherit; font-size: 14.5px; cursor: pointer; }
.sk-kinds button.on { background: var(--gf-navy); border-color: var(--gf-navy); color: #fff; }
.sk-preview { display: flex; align-items: center; gap: 12px; padding: 10px 14px; border-radius: 10px; background: #f6f8fd; color: var(--gf-ink-soft); font-size: 14px; }
.sk-preview b { font-weight: 400; font-size: 20px; color: var(--gf-ink); margin-left: 4px; }
.sk-preview b.neg { color: #b42318; }
.sk-arrow { color: var(--gf-muted); }
.sk-sep { margin-top: 4px; padding-top: 12px; border-top: 1px dashed var(--gf-line-strong); color: var(--gf-muted); font-size: 12.5px; }
/* history drawer */
.sk-dr-ov { position: fixed; inset: 0; z-index: 150; display: flex; justify-content: flex-end; background: rgb(16 24 40 / 28%); -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px); }
.sk-dr { width: min(640px, 100%); height: 100%; display: flex; flex-direction: column; background: #fff; box-shadow: -12px 0 40px rgb(16 24 40 / 14%); }
.sk-dr .pd-card-head h2 { margin: 0; }
.sk-dr-body { flex: 1; overflow-y: auto; padding: 16px 20px 30px; }
.sk-sum { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; margin-bottom: 12px; }
.sk-sum > div { padding: 10px 12px; border-radius: 12px; background: #f6f8fd; display: flex; flex-direction: column; }
.sk-sum span { font-size: 12px; color: var(--gf-muted); }
.sk-sum b { font-weight: 400; font-size: 18px; color: var(--gf-ink); }
.sk-sum b.pos, .sk-htable .pos { color: #067647; }
.sk-sum b.neg, .sk-htable .neg { color: #b42318; }
.sk-chart { display: block; width: 100%; height: 120px; margin-bottom: 12px; border-radius: 12px; background: linear-gradient(180deg, #f6f8fd, #fff); }
.sk-area { fill: rgb(11 42 134 / 10%); stroke: none; }
.sk-line { fill: none; stroke: var(--gf-navy); stroke-width: 1.6; }
.sk-htable b { font-weight: 400; }
.sk-kind { display: inline-block; padding: 0 8px; border-radius: 999px; font-size: 12px; background: #f2f4f7; color: var(--gf-ink-soft); }
.sk-kind.k-in { background: #ecfdf3; color: #067647; } .sk-kind.k-out { background: var(--gf-red-tint); color: #b42318; } .sk-kind.k-count { background: var(--gf-tint); color: var(--gf-navy); }
.sk-hnote { margin-left: 8px; color: var(--gf-muted); font-size: 12.5px; }
.sk-more { text-align: center; margin-top: 10px; }
@media (max-width: 760px) {
  .sk-table th:nth-child(1), .sk-table td:nth-child(1), .sk-table th:nth-child(6), .sk-table td:nth-child(6), .sk-table th:nth-child(7), .sk-table td:nth-child(7) { display: none; }
  .sk-table .sk-w-model { width: 26%; } .sk-table .sk-w-width { width: 15%; } .sk-table .sk-w-qty { width: 17%; } .sk-table .sk-w-ord { width: 14%; } .sk-table .sk-w-acts { width: 28%; }
  .gf-page .sk-table td.acts { white-space: normal; } .gf-page .sk-table td.acts .btn.small { margin: 2px 0 2px 4px; }
  .sk-sum { grid-template-columns: repeat(2, 1fr); }
  .sk-seg { order: 3; }
}
@media (max-width: 760px) { .sk-table th:nth-child(4), .sk-table td:nth-child(4) { display: table-cell; } .sk-table th:nth-child(5), .sk-table td:nth-child(5) { display: none; } .sk-table .sk-w-model { width: 30%; } .sk-table .sk-w-width { width: 18%; } .sk-table .sk-w-qty { width: 20%; } .sk-table .sk-w-acts { width: 32%; } }

/* /products with the 3M cost column (7 columns) */
.pd-table .pd-w-sku { width: 15%; } .pd-table .pd-w-model { width: 17%; } .pd-table .pd-w-width { width: 9%; }
.pd-table .pd-w-cost { width: 12%; } .pd-table .pd-w-note { width: 25%; } .pd-table .pd-w-date { width: 10%; } .pd-table .pd-w-acts { width: 12%; }
.gf-page .pd-table th.pd-r, .gf-page .pd-table td.pd-r { text-align: right; font-variant-numeric: tabular-nums; }
.pd-3m { padding: 10px 12px; border-radius: 10px; background: #f6f8fd; font-size: 13.5px; color: var(--gf-ink); line-height: 1.5; }
.pd-3m .sub { font-size: 12.5px; }
@media (max-width: 600px) {
  .pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) th, .pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) td { display: table-cell; }
  .pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) th:nth-child(5), .pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) td:nth-child(5), .pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) th:nth-child(6), .pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) td:nth-child(6) { display: none; }
  .pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) tr.pd-group td { display: table-cell; }
  .pd-table .pd-w-sku { width: 30%; } .pd-table .pd-w-model { width: 22%; } .pd-table .pd-w-width { width: 12%; } .pd-table .pd-w-cost { width: 0; display: none; } .pd-table .pd-w-acts { width: 24%; }
  .pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) th:nth-child(4), .pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) td:nth-child(4) { display: none; }
}
.pd-table td.pd-name3m { color: var(--gf-ink-soft); font-size: 13px; }
/* /products: 10 columns with roll length + area. Columns are picked by class (pc-*), not position. */
/* narrow data columns get a share, the buttons a fixed 100px, and the official 3M name takes what is left */
.pd-table .pd-w-sku { width: 11.5%; } .pd-table .pd-w-model { width: 8%; } .pd-table .pd-w-width { width: 6%; }
.pd-table .pd-w-len { width: 7%; } .pd-table .pd-w-area { width: 9%; } .pd-table .pd-w-name3m { width: auto; }
.pd-table .pd-w-cost { width: 9%; } .pd-table .pd-w-note { width: 10.5%; } .pd-table .pd-w-date { width: 7%; } .pd-table .pd-w-acts { width: 100px; }
.pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) .pc-width, .pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) .pc-len, .pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) .pc-area, .pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) .pc-cost, .pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) .pc-date { padding-left: 8px; padding-right: 8px; }
.pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) td.pc-sku { overflow: hidden; text-overflow: ellipsis; }
.pd-len { display: flex; gap: 8px; }
.pd-len input { flex: 1; min-width: 0; }
.pd-len select { height: 42px; padding: 4px 10px; border: 1px solid var(--gf-line-strong); border-radius: 10px; font: inherit; font-size: 15px; background: #fff; }
@media (max-width: 1280px) {   /* narrower desktops: drop the note and date so the 3M name keeps its room */
  .pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) .pc-note, .pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) .pc-date { display: none; }
  .pd-table .pd-w-sku { width: 14%; } .pd-table .pd-w-model { width: 11%; } .pd-table .pd-w-width { width: 8%; } .pd-table .pd-w-len { width: 10%; }
  .pd-table .pd-w-area { width: 11%; } .pd-table .pd-w-cost { width: 12%; } .pd-table .pd-w-acts { width: 96px; }
}
@media (max-width: 600px) {   /* phones: SKU · model · width · area · buttons */
  .pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) thead th, .pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) tbody tr:not(.pd-group) td { display: none !important; }
  .pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) thead th.pc-sku, .pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) tbody tr:not(.pd-group) td.pc-sku,
  .pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) thead th.pc-model, .pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) tbody tr:not(.pd-group) td.pc-model,
  .pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) thead th.pc-width, .pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) tbody tr:not(.pd-group) td.pc-width,
  .pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) thead th.pc-area, .pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) tbody tr:not(.pd-group) td.pc-area,
  .pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) thead th.pc-acts, .pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) tbody tr:not(.pd-group) td.pc-acts { display: table-cell !important; }
  .pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) .pd-w-sku { width: 26% !important; } .pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) .pd-w-model { width: 18% !important; } .pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) .pd-w-width { width: 11% !important; }
  .pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) .pd-w-area { width: 22% !important; } .pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) .pd-w-acts { width: 23% !important; }
  .gf-page .pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) thead th { white-space: normal; line-height: 1.3; vertical-align: bottom; }
  .gf-page .pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) td.acts { padding-left: 4px; padding-right: 6px; }
  .gf-page .pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) td.acts > * { margin-left: 2px; }
}

/* /purchases — 3M purchase history (admin) */
.sub-item[data-sub="purchases"] { --dot: #5ec8f0; }
.pu-sum { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 14px; }
.pu-card { display: flex; flex-direction: column; gap: 2px; padding: 14px 16px; border: 1px solid var(--gf-line); border-radius: 14px; background: #fff; box-shadow: 0 1px 2px rgb(16 24 40 / 4%); border-left: 4px solid var(--gf-navy); }
.pu-card.plan { border-left-color: #2e90fa; } .pu-card.over { border-left-color: var(--gf-red); } .pu-card.ok { border-left-color: #12b76a; }
.pu-card .pu-cl { font-size: 13px; color: var(--gf-muted); }
.pu-card b { font-weight: 400; font-size: 22px; color: var(--gf-ink); font-variant-numeric: tabular-nums; }
.pu-card.over b { color: #b42318; }
.pu-card .pu-cs { font-size: 12.5px; color: var(--gf-muted); }
.pu-chips .tab { padding: 4px 12px; }
.pu-pill { display: inline-block; padding: 2px 10px; border-radius: 999px; font-size: 12.5px; line-height: 20px; white-space: nowrap; }
.pu-pill.paid { background: #ecfdf3; color: #067647; } .pu-pill.plan { background: #eff8ff; color: #175cd3; }
.pu-pill.due { background: #f2f4f7; color: #475467; } .pu-pill.over { background: var(--gf-red-tint); color: #b42318; }
.pu-table { table-layout: fixed; }
.pu-table .pu-w-date { width: 7%; } .pu-table .pu-w-po { width: 10%; } .pu-table .pu-w-inv { width: 9%; } .pu-table .pu-w-sku { width: 9%; } .pu-table .pu-w-prod { width: auto; }
.pu-table .pu-w-unit { width: 8%; } .pu-table .pu-w-psf { width: 6%; } .pu-table .pu-w-qty { width: 6%; } .pu-table .pu-w-amt { width: 9%; } .pu-table .pu-w-due { width: 7%; } .pu-table .pu-w-st { width: 12%; }
.gf-page .pu-table th.pd-r, .gf-page .pu-table td.pd-r { text-align: right; font-variant-numeric: tabular-nums; }
@media (max-width: 1280px) { .gf-page .pu-table th.qc-po, .gf-page .pu-table tbody tr:not(.pd-group) td.qc-po, .gf-page .pu-table th.qc-inv, .gf-page .pu-table tbody tr:not(.pd-group) td.qc-inv { display: none; } }
.pu-table td.qc-sku .sku { font-variant-numeric: tabular-nums; font-size: 13.5px; color: var(--gf-ink); }
.pu-table td.qc-po, .pu-table td.qc-inv { color: var(--gf-ink-soft); font-size: 13.5px; font-variant-numeric: tabular-nums; }
.pu-table td.pu-prod { min-width: 0; } .pu-table td.pu-prod .cut { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--gf-ink); }
.pu-table td.pu-prod .sub { font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pu-table td { height: auto; padding-top: 9px; padding-bottom: 9px; }
/* overview */
.pu-ov { display: grid; grid-template-columns: 1.6fr 1.3fr 1fr; gap: 12px; margin-bottom: 14px; }
.pu-panel { border: 1px solid var(--gf-line); border-radius: 14px; background: #fff; padding: 12px 16px; min-width: 0; }
.pu-panel h3 { margin: 0 0 10px; font-size: 14px; font-weight: 400; color: var(--gf-ink-soft); }
.pu-chart { display: flex; align-items: flex-end; gap: 6px; height: 170px; }
.pu-col { flex: 1; height: 100%; display: flex; flex-direction: column; justify-content: flex-end; align-items: center; gap: 4px; min-width: 0; }
.pu-barv { width: 70%; min-height: 2px; border-radius: 6px 6px 2px 2px; background: var(--gf-navy); }
.pu-col.now .pu-barv { background: var(--gf-red); }   /* this month */
.pu-val { font-size: 11px; color: var(--gf-muted); } .pu-mon { font-size: 11.5px; color: var(--gf-muted); white-space: nowrap; display: flex; flex-direction: column; align-items: center; line-height: 1.2; }
.pu-mon small { font-size: 10px; color: #98a2b3; }
.pu-rounds, .pu-top { list-style: none; margin: 0; padding: 0; }
.pu-rounds li { display: grid; white-space: nowrap; grid-template-columns: 76px 1fr auto; gap: 8px; padding: 7px 0; border-bottom: 1px solid var(--gf-line); font-size: 13.5px; }
.pu-rounds b, .pu-top b { font-weight: 400; font-variant-numeric: tabular-nums; }
.pu-top li { display: grid; grid-template-columns: 1fr 60px 28px; gap: 8px; align-items: center; padding: 5px 0; font-size: 13px; }
.pu-top .cut { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pu-tbar { height: 8px; border-radius: 4px; background: #eef2fa; overflow: hidden; } .pu-tbar i { display: block; height: 100%; background: #2e90fa; }
@media (max-width: 1100px) { .pu-ov { grid-template-columns: 1fr 1fr; } .pu-ov .wide { grid-column: 1 / -1; } }
@media (max-width: 760px) {
  .pu-sum { grid-template-columns: repeat(2, 1fr); } .pu-card b { font-size: 18px; }
  .pu-ov { grid-template-columns: 1fr; } .pu-chart { gap: 3px; } .pu-val { display: none; } .pu-mon { font-size: 10px; }
  .gf-page .pu-table th.qc-po, .gf-page .pu-table th.qc-inv, .gf-page .pu-table th.qc-due, .gf-page .pu-table th.qc-unit, .gf-page .pu-table th.qc-psf, .gf-page .pu-table tbody tr:not(.pd-group) td.qc-unit, .gf-page .pu-table tbody tr:not(.pd-group) td.qc-psf, .gf-page .pu-table th.qc-date, .gf-page .pu-table tbody tr:not(.pd-group) td.qc-date, .gf-page .pu-table th.qc-sku, .gf-page .pu-table tbody tr:not(.pd-group) td.qc-sku,
  .gf-page .pu-table tbody tr:not(.pd-group) td.qc-po, .gf-page .pu-table tbody tr:not(.pd-group) td.qc-inv, .gf-page .pu-table tbody tr:not(.pd-group) td.qc-due { display: none; }   /* phones: date · product · rolls · amount */
  .gf-page .pu-table th.qc-st, .gf-page .pu-table tbody tr:not(.pd-group) td.qc-st, .gf-page .pu-table th.qc-prod, .gf-page .pu-table th.qc-qty, .gf-page .pu-table th.qc-amt,
  .gf-page .pu-table tbody tr:not(.pd-group) td.qc-prod,
  .gf-page .pu-table tbody tr:not(.pd-group) td.qc-qty, .gf-page .pu-table tbody tr:not(.pd-group) td.qc-amt { display: table-cell; }
  .pu-table .pu-w-prod { width: 34%; } .pu-table .pu-w-qty { width: 12%; } .pu-table .pu-w-amt { width: 24%; } .pu-table .pu-w-st { width: 30%; }
  .pu-pill { white-space: normal; }
}

/* conditions page: each price group card carries its own price image (moved from the old "แหล่งข้อมูล" section) */
.cond-group { display: flex; flex-direction: column; }
.cond-section > #source-file { margin: -4px 0 12px; }
.sk-missing { margin: 0 0 10px; padding: 8px 12px; border-radius: 10px; background: #fff8eb; color: #93370d; font-size: 13px; }

/* /purchases: quarters vs target (from "-สรุปยอดสั่งซื้อ-") */
.pu-qs { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.pu-qi { padding-bottom: 8px; border-bottom: 1px solid var(--gf-line); }
.pu-qi:last-child { border-bottom: 0; padding-bottom: 0; }
.pu-qh { display: flex; align-items: baseline; gap: 8px; font-size: 13.5px; }
.pu-qh b { font-weight: 400; color: var(--gf-navy); font-size: 15px; }
.pu-qa { font-variant-numeric: tabular-nums; color: var(--gf-ink); }
.pu-qp { min-width: 42px; text-align: right; font-variant-numeric: tabular-nums; color: var(--gf-ink-soft); }
.pu-qbar { height: 8px; margin: 6px 0 4px; border-radius: 4px; background: #eef2fa; overflow: hidden; }
.pu-qbar i { display: block; height: 100%; background: var(--gf-navy); border-radius: 4px; }
.pu-qi.hit .pu-qbar i { background: #12b76a; } .pu-qi.hit .pu-qp { color: #067647; }
.pu-qi.miss .pu-qbar i { background: var(--gf-red); } .pu-qi.miss .pu-qp { color: #b42318; }
.pu-qi.future { opacity: .55; }
.pu-qm, .pu-qt { font-size: 12px; line-height: 1.5; }

/* /purchases overview: three panels of equal height, nothing left empty */
.pu-ov { align-items: stretch; }
.pu-panel { display: flex; flex-direction: column; }
.pu-panel.wide .pu-chart { flex: 1; height: auto; min-height: 200px; padding-top: 8px; }
.pu-barv { width: 62%; max-width: 46px; }
.pu-top { flex: 1; display: flex; flex-direction: column; justify-content: space-between; }
.pu-top li { grid-template-columns: minmax(0, 1fr) 72px 30px; padding: 4px 0; }
.pu-top b { text-align: right; }
.pu-q .pu-qs { flex: 1; justify-content: space-between; }

/* /costs — cost prices (admin) */
.sub-item[data-sub="costs"] { --dot: #7ad7a0; }
.ct-table { table-layout: fixed; }
.ct-table .ct-w-sku { width: 10%; } .ct-table .ct-w-model { width: 11%; } .ct-table .ct-w-w { width: 7%; } .ct-table .ct-w-stock { width: 7%; }
.ct-table .ct-w-cost { width: 10%; } .ct-table .ct-w-psf { width: 8%; } .ct-table .ct-w-last { width: 9%; } .ct-table .ct-w-lots { width: auto; } .ct-table .ct-w-acts { width: 110px; }
.gf-page .ct-table th.pd-r, .gf-page .ct-table td.pd-r { text-align: right; font-variant-numeric: tabular-nums; }
.ct-table td { height: auto; padding-top: 9px; padding-bottom: 9px; vertical-align: middle; }
.ct-table .sku { font-variant-numeric: tabular-nums; font-size: 13.5px; color: var(--gf-ink); }
.ct-table td.ct-model { color: var(--gf-ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ct-psf { display: block; font-size: 11.5px; color: var(--gf-muted); }
.gf-page .ct-table td.ct-lots { line-height: 1.9; white-space: normal; overflow: hidden; }
.ct-lot { display: inline-block; margin: 2px 6px 2px 0; padding: 1px 10px; border-radius: 999px; background: #eff8ff; color: #175cd3; font-size: 12.5px; white-space: nowrap; font-variant-numeric: tabular-nums; }
.ct-lot b { font-weight: 400; color: var(--gf-navy); }
.ct-lot small { color: #528bff; font-size: 11.5px; }
.ct-lot.unknown { background: #f2f4f7; color: #475467; } .ct-lot.unknown b { color: #344054; }
.sk-sum > div > span + b + span { font-size: 11.5px; color: var(--gf-muted); }
.ct-dot { fill: #fff; stroke: var(--gf-navy); stroke-width: 2; } .ct-dot.on { fill: var(--gf-red); stroke: var(--gf-red); }
.sk-htable tr.ct-in td { background: #fff8f8; }
.ct-note { margin-top: 10px; font-size: 12px; }
@media (max-width: 1100px) { .ct-table .ct-w-last, .ct-table td.ct-last { display: none; } }
@media (max-width: 760px) {
  .gf-page .ct-table th.ct-w-sku, .gf-page .ct-table td.ct-sku, .gf-page .ct-table th.ct-w-w, .gf-page .ct-table td.ct-w { display: none; }
  .gf-page .ct-table th.ct-w-lots, .gf-page .ct-table td.ct-lots { display: none; }
  .ct-table .ct-w-model { width: 30%; } .ct-table .ct-w-cost { width: 26%; } .ct-table .ct-w-psf { width: 24%; } .ct-table .ct-w-stock { width: 20%; } .ct-table .ct-w-acts { width: 0; }
  .gf-page .ct-table th.ct-w-acts, .gf-page .ct-table td.ct-acts { display: none; }
  .ct-table tbody tr:not(.pd-group) { cursor: pointer; }
}
@media (max-width: 760px) {   /* phones: model · cost per roll · per sq ft · stock (tap a row for the history) */
  .gf-page .ct-table th.ct-w-model, .gf-page .ct-table th.ct-w-cost, .gf-page .ct-table th.ct-w-psf, .gf-page .ct-table th.ct-w-stock,
  .gf-page .ct-table tbody tr:not(.pd-group) td.ct-model, .gf-page .ct-table tbody tr:not(.pd-group) td.ct-cost,
  .gf-page .ct-table tbody tr:not(.pd-group) td.ct-psfc, .gf-page .ct-table tbody tr:not(.pd-group) td.ct-stock { display: table-cell; }
  .gf-page .ct-table th.ct-w-last, .gf-page .ct-table tbody tr:not(.pd-group) td.ct-last { display: none; }
}

/* /purchases cards: tinted backgrounds so the money still owed stands out (over due darker) */
.pu-card.over { background: #fde4e1; border-color: #f8b4ad; }
.pu-card.over .pu-cl, .pu-card.over .pu-cs { color: #912018; }
.pu-card.over b { color: #b42318; }
.pu-card.plan { background: #eaf4ff; border-color: #b9dcff; }
.pu-card.plan .pu-cl, .pu-card.plan .pu-cs { color: #1849a9; }
.ct-lot.back { background: #fff6e5; color: #93370d; } .ct-lot.back b { color: #7a2e0e; }
.ct-h3 { margin: 18px 0 8px; font-size: 14px; font-weight: 400; color: var(--gf-ink-soft); }
@media (max-width: 1500px) and (min-width: 761px) {   /* notebooks: 12 columns need tighter spacing */
  .gf-page .pu-table th, .gf-page .pu-table td { padding-left: 7px; padding-right: 7px; font-size: 13px; }
  .pu-table .pu-w-st { width: 14%; } .pu-table .pu-w-po { width: 10.5%; }
  .pu-table .pu-pill { font-size: 11.5px; padding: 1px 8px; }
}
.ct-unlisted { margin: -4px 0 14px; line-height: 1.6; } .ct-unlisted a { color: var(--gf-navy); }

/* /purchases (owner's choice): over due = dark red, still unpaid = light red */
.pu-card.over { background: #b42318; border-color: #b42318; border-left-color: #7a271a; }
.pu-card.over .pu-cl, .pu-card.over .pu-cs { color: #fee4e2; }
.pu-card.over b { color: #fff; }
.pu-card.unpaid { background: #fde4e1; border-color: #f8b4ad; border-left-color: #f04438; }
.pu-card.unpaid .pu-cl, .pu-card.unpaid .pu-cs { color: #912018; }
.pu-card.unpaid b { color: #b42318; }

/* /products: average cost per area after the cost column */
.pd-table .pd-w-psa { width: 7%; }
.pd-table td.pc-psa { font-variant-numeric: tabular-nums; color: var(--gf-ink-soft); font-size: 13px; }
@media (max-width: 1280px) { .pd-table .pd-w-psa { width: 9%; } }
.pd-table .pd-w-psa { width: 9%; }
.gf-page .pd-table td.pc-psa { overflow: hidden; text-overflow: ellipsis; padding-right: 14px; }
.pd-table td.pc-psa small { font-size: 11px; }
@media (max-width: 1500px) { .pd-table .pd-w-psa { width: 10%; } .pd-table .pd-w-note { width: 8%; } }

/* /costs: structure price (per roll · per sq ft) then cost = latest purchase (per roll · per sq ft) */
.ct-table .ct-w-cost { width: 9%; } .ct-table .ct-w-psf { width: 7%; } .ct-table .ct-w-last { width: 9%; } .ct-table .ct-w-lpsf { width: 7%; } .ct-table .ct-w-stock { width: 6%; }
.ct-table .ct-w-sku { width: 9%; } .ct-table .ct-w-model { width: 9%; } .ct-table .ct-w-w { width: 6%; }
@media (max-width: 1100px) { .ct-table .ct-w-lpsf, .ct-table td.ct-lpsf { display: none; } .ct-table .ct-w-last, .ct-table td.ct-last { display: table-cell; } }
@media (max-width: 760px) { .gf-page .ct-table th.ct-w-lpsf, .gf-page .ct-table td.ct-lpsf, .gf-page .ct-table th.ct-w-last, .gf-page .ct-table tbody tr:not(.pd-group) td.ct-last { display: none; } }
.gf-page .ct-table thead th { white-space: normal; line-height: 1.3; vertical-align: bottom; }

/* /costs: structure price | cost (price paid) — divider lines and light group tints; blue when the cost is below the structure price */
.gf-page .ct-table th.ct-w-cost, .gf-page .ct-table td.ct-cost { border-left: 2px solid var(--gf-line-strong); }
.gf-page .ct-table th.ct-w-last, .gf-page .ct-table td.ct-last { border-left: 2px solid var(--gf-line-strong); }
.gf-page .ct-table th.ct-w-stock, .gf-page .ct-table td.ct-stock { border-left: 2px solid var(--gf-line-strong); }
.gf-page .ct-table tbody tr:not(.pd-group) td.ct-cost, .gf-page .ct-table tbody tr:not(.pd-group) td.ct-psfc { background: #f8f9fc; }
.gf-page .ct-table thead th.ct-w-cost, .gf-page .ct-table thead th.ct-w-psf { background: #eef1f7; }
.gf-page .ct-table thead th.ct-w-last, .gf-page .ct-table thead th.ct-w-lpsf { background: #eaf2ff; color: #1849a9; }
.gf-page .ct-table td.ct-cheaper { color: #175cd3; background: #f2f7ff; }

/* /costs price history: every lot that still has rolls in stock is tinted (stronger than the table's zebra rows) */
.gf-page table.t.sk-htable tbody tr.ct-in td { background: #fff1f0; }
.gf-page table.t.sk-htable tbody tr.ct-in td:last-child b { color: #b42318; }
.ct-legend { display: inline-block; width: 12px; height: 12px; margin-right: 6px; border-radius: 3px; background: #fff1f0; border: 1px solid #fecdca; vertical-align: -1px; }

/* /costs price-history panel: wider, summary boxes a little darker */
.sk-dr.ct-dr { width: min(820px, 100%); }
.ct-dr .sk-sum { gap: 10px; }
.ct-dr .sk-sum > div { background: #e6ecf7; border: 1px solid #d5deee; padding: 12px 14px; }
.ct-dr .sk-sum > div > span:first-child { white-space: nowrap; color: #475467; }
@media (max-width: 760px) { .ct-dr .sk-sum > div > span:first-child { white-space: normal; } }

/* /costs: stock value = darker blue than the back-order card */
.pu-card.value { background: #175cd3; border-color: #175cd3; border-left-color: #0b2a86; }
.pu-card.value .pu-cl, .pu-card.value .pu-cs { color: #d1e9ff; }
.pu-card.value b { color: #fff; }
.gf-page .ct-table td.ct-dearer { color: #b42318; background: #fff4f3; }
/* owner: no tint on the structure-price columns (lines stay) */
.gf-page .ct-table tbody tr:not(.pd-group) td.ct-cost, .gf-page .ct-table tbody tr:not(.pd-group) td.ct-psfc { background: transparent; }
.gf-page .ct-table thead th.ct-w-cost, .gf-page .ct-table thead th.ct-w-psf { background: transparent; }
/* owner: no background colours in the cost table — divider lines and blue / red numbers only */
.gf-page .ct-table thead th.ct-w-last, .gf-page .ct-table thead th.ct-w-lpsf { background: transparent; color: inherit; }
.gf-page .ct-table td.ct-cheaper, .gf-page .ct-table td.ct-dearer { background: transparent; }
/* /costs: % difference from the structure price, after the cost per sq ft */
.ct-table .ct-w-diff { width: 6%; } .ct-table .ct-w-lots { width: auto; }
.gf-page .ct-table td.ct-diff { font-variant-numeric: tabular-nums; }
@media (max-width: 1100px) { .gf-page .ct-table th.ct-w-diff, .gf-page .ct-table td.ct-diff { display: table-cell; } }
@media (max-width: 760px) { .gf-page .ct-table th.ct-w-diff, .gf-page .ct-table tbody tr:not(.pd-group) td.ct-diff { display: none; } }
/* cost table header: one colour across the whole row (no group tints) */
.gf-page .ct-table thead th.ct-w-cost, .gf-page .ct-table thead th.ct-w-psf,
.gf-page .ct-table thead th.ct-w-last, .gf-page .ct-table thead th.ct-w-lpsf { background: var(--gf-tint-2); color: var(--gf-ink-soft); }

/* /costs: structure-price columns folded by default (button "แสดงราคาโครงสร้าง") */
.gf-page .ct-table.ct-folded th.ct-w-cost, .gf-page .ct-table.ct-folded th.ct-w-psf,
.gf-page .ct-table.ct-folded tbody tr:not(.pd-group) td.ct-cost, .gf-page .ct-table.ct-folded tbody tr:not(.pd-group) td.ct-psfc { display: none; }
.ct-fold-btn { padding: 4px 12px; font-size: 13px; } .ct-fold-btn.on { background: var(--gf-tint-2); }
@media (max-width: 760px) {   /* phones, folded: model · cost per roll · per sq ft · stock */
  .gf-page .ct-table.ct-folded th.ct-w-last, .gf-page .ct-table.ct-folded tbody tr:not(.pd-group) td.ct-last,
  .gf-page .ct-table.ct-folded th.ct-w-lpsf, .gf-page .ct-table.ct-folded tbody tr:not(.pd-group) td.ct-lpsf { display: table-cell; }
  .ct-table.ct-folded .ct-w-last { width: 26%; } .ct-table.ct-folded .ct-w-lpsf { width: 24%; }
}
.gf-page .ct-table { width: 100%; }
@media (min-width: 761px) { .ct-table.ct-folded .ct-w-last { width: 11%; } .ct-table.ct-folded .ct-w-lpsf { width: 9%; } .ct-table.ct-folded .ct-w-diff { width: 8%; } .ct-table.ct-folded .ct-w-model { width: 11%; } }

/* ===== /costs table widths (final set, 19.10.26): balanced and compact; later than every earlier .ct-* width rule ===== */
.gf-page .ct-table { width: 100%; table-layout: fixed; }
.gf-page .ct-table .ct-w-acts { width: 104px; }
.gf-page .ct-table .ct-w-lots { width: auto; }
/* structure price open (11 columns) */
.gf-page .ct-table .ct-w-sku { width: 10%; } .gf-page .ct-table .ct-w-model { width: 9%; } .gf-page .ct-table .ct-w-w { width: 5%; }
.gf-page .ct-table .ct-w-cost { width: 8%; } .gf-page .ct-table .ct-w-psf { width: 6.5%; }
.gf-page .ct-table .ct-w-last { width: 8%; } .gf-page .ct-table .ct-w-lpsf { width: 6.5%; } .gf-page .ct-table .ct-w-diff { width: 6.5%; }
.gf-page .ct-table .ct-w-stock { width: 5.5%; }
/* folded (9 columns) */
.gf-page .ct-table.ct-folded .ct-w-sku { width: 11%; } .gf-page .ct-table.ct-folded .ct-w-model { width: 11%; } .gf-page .ct-table.ct-folded .ct-w-w { width: 6%; }
.gf-page .ct-table.ct-folded .ct-w-last { width: 9%; } .gf-page .ct-table.ct-folded .ct-w-lpsf { width: 7.5%; } .gf-page .ct-table.ct-folded .ct-w-diff { width: 7.5%; }
.gf-page .ct-table.ct-folded .ct-w-stock { width: 6%; }
.gf-page .ct-table th, .gf-page .ct-table td { padding-left: 10px; padding-right: 10px; }
.gf-page .ct-table td.ct-w, .gf-page .ct-table th.ct-w-w, .gf-page .ct-table td.ct-stock, .gf-page .ct-table th.ct-w-stock { text-align: center; }
@media (max-width: 1100px) {   /* tablets: SKU and the cost per sq ft step back; auto layout so hidden columns take no room */
  .gf-page .ct-table { table-layout: auto; }
  .gf-page .ct-table th.ct-w-sku, .gf-page .ct-table tbody tr:not(.pd-group) td.ct-sku { display: none; }
  .gf-page .ct-table th, .gf-page .ct-table td { padding-left: 7px; padding-right: 7px; }
}
@media (max-width: 760px) {   /* phones */
  .gf-page .ct-table.ct-folded .ct-w-model { width: 34%; } .gf-page .ct-table.ct-folded .ct-w-last { width: 24%; }
  .gf-page .ct-table.ct-folded .ct-w-lpsf { width: 22%; } .gf-page .ct-table.ct-folded .ct-w-stock { width: 20%; }
  .gf-page .ct-table:not(.ct-folded) .ct-w-model { width: 30%; } .gf-page .ct-table:not(.ct-folded) .ct-w-cost { width: 26%; }
  .gf-page .ct-table:not(.ct-folded) .ct-w-psf { width: 22%; } .gf-page .ct-table:not(.ct-folded) .ct-w-stock { width: 22%; }
}

/* ---- new Dealer registrations: red count on the menu item (auth-ui.js) ---- */
.app-shell > aside.sidebar .nav-item { position: relative; }
.app-shell > aside.sidebar .nav-item .nav-badge { margin-left: auto; min-width: 22px; height: 22px; padding: 0 7px; border-radius: 999px; background: var(--gf-red); color: #fff; font-size: 12px; font-weight: 700; line-height: 22px; text-align: center; box-shadow: 0 0 0 2px rgb(255 255 255 / 22%); animation: gfBadgeIn .3s ease-out; }
.app-shell > aside.sidebar .nav-item.active .nav-badge { box-shadow: none; }
@keyframes gfBadgeIn { from { transform: scale(.4); opacity: 0; } to { transform: none; opacity: 1; } }
@media (max-width: 960px) { .app-shell > aside.sidebar .nav-item .nav-badge { margin-left: 4px; min-width: 18px; height: 18px; padding: 0 5px; font-size: 11px; line-height: 18px; } }
@media (min-width: 961px) { html.nav-collapsed .app-shell > aside.sidebar .nav-item .nav-badge { position: absolute; top: 3px; right: 6px; margin: 0; min-width: 18px; height: 18px; padding: 0 5px; font-size: 11px; line-height: 18px; } }

/* ---------------------------------------------------------------- phone / tablet menu (19.10.26): top bar with "☰ เมนู" + slide-in drawer
   auth-ui.js adds .m-menu to the logo row and toggles html.mnav-open. Closed: only the bar (menu button + logo).
   Open: the same <aside> becomes a full-height drawer that looks like the desktop menu (icons, sub-menus, user card). */
.m-menu, .m-backdrop { display: none; }
@media (max-width: 960px) {
  html body .app-shell > aside.sidebar { flex-wrap: nowrap; padding: 8px 12px; min-height: 56px; }
  .app-shell > aside.sidebar .brand-row { flex: 1 1 auto; justify-content: flex-start; gap: 12px; }
  .app-shell > aside.sidebar .nav-label,
  .app-shell > aside.sidebar .side-nav,
  .app-shell > aside.sidebar .topbar-meta { display: none !important; }
  .m-menu { position: relative; display: inline-flex; align-items: center; gap: 7px; height: 40px; padding: 0 14px 0 10px; border: 1px solid rgb(255 255 255 / 26%); border-radius: 12px; background: rgb(255 255 255 / 12%); color: #fff; font: inherit; font-size: 15px; font-weight: 600; cursor: pointer; -webkit-tap-highlight-color: transparent; }
  .m-menu svg { width: 22px; height: 22px; }
  .m-menu:active { background: rgb(255 255 255 / 22%); }
  .m-menu .m-close { display: none; }
  .m-menu .m-dot { position: absolute; top: -4px; right: -4px; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 999px; background: var(--gf-red); color: #fff; font-size: 11px; font-weight: 700; line-height: 18px; text-align: center; box-shadow: 0 0 0 2px var(--gf-navy); }
  .m-menu .m-dot:empty { display: none; }

  /* open drawer */
  html.mnav-open, html.mnav-open body { overflow: hidden; }
  html.mnav-open body .app-shell { padding-top: var(--mbar-h, 56px); }
  html.mnav-open body .app-shell > aside.sidebar {
    position: fixed; inset: 0 auto 0 0; width: min(320px, 88vw); height: 100%; min-height: 0; z-index: 210;
    flex-direction: column; align-items: stretch; justify-content: flex-start; gap: 4px; padding: 12px 14px 18px; overflow-y: auto; overscroll-behavior: contain;
    box-shadow: 12px 0 40px rgb(0 0 0 / 35%); animation: mnavIn .2s ease-out;
  }
  @keyframes mnavIn { from { transform: translateX(-100%); } to { transform: none; } }
  html.mnav-open .app-shell > aside.sidebar .brand-row { flex: none; order: 0; margin: 0 0 14px; justify-content: space-between; }
  html.mnav-open .m-menu { order: 2; padding: 0 12px; }
  html.mnav-open .m-menu .m-open, html.mnav-open .m-menu .m-dot { display: none; }
  html.mnav-open .m-menu .m-close { display: block; }
  html.mnav-open .app-shell > aside.sidebar .nav-label { display: block !important; order: 1; margin: 4px 10px 6px; }
  html.mnav-open .app-shell > aside.sidebar .side-nav { display: flex !important; order: 2; flex: none; flex-direction: column; overflow: visible; margin: 0; padding: 0; gap: 4px; }
  html.mnav-open .app-shell > aside.sidebar .nav-item { width: 100%; min-height: 52px; padding: 8px 10px; gap: 12px; font-size: 16px; white-space: normal; }
  html.mnav-open .app-shell > aside.sidebar .nav-item svg { display: block; width: 34px; height: 34px; }
  html.mnav-open .app-shell > aside.sidebar .nav-item.active { box-shadow: 0 8px 20px rgb(0 0 0 / 20%); }
  html.mnav-open .app-shell > aside.sidebar .sub-nav { display: flex !important; }
  html.mnav-open .app-shell > aside.sidebar .sub-item { min-height: 44px; font-size: 15px; }
  html.mnav-open .app-shell > aside.sidebar .sub-item .sub-ic { display: none; }
  html.mnav-open .app-shell > aside.sidebar .topbar-meta { display: block !important; order: 99; flex: none; margin: auto 0 0; padding-top: 16px; text-align: left; }
  html.mnav-open .app-shell > aside.sidebar .auth-box { padding: 10px 10px 10px 12px; background: rgb(255 255 255 / 7%); gap: 10px; }
  html.mnav-open .app-shell > aside.sidebar .auth-avatar { width: 36px; height: 36px; font-size: 15px; }
  html.mnav-open .app-shell > aside.sidebar .auth-who { display: flex; }
  html.mnav-open .app-shell > aside.sidebar .nav-item .nav-badge { margin-left: auto; min-width: 22px; height: 22px; font-size: 12px; line-height: 22px; }
  .m-backdrop { position: fixed; inset: 0; z-index: 200; background: rgb(6 22 70 / 45%); -webkit-backdrop-filter: blur(2px); backdrop-filter: blur(2px); }
  html.mnav-open .m-backdrop { display: block; animation: mnavFade .2s ease-out; }
  @keyframes mnavFade { from { opacity: 0; } to { opacity: 1; } }
}
@media (max-width: 960px) and (prefers-reduced-motion: reduce) { html.mnav-open body .app-shell > aside.sidebar, html.mnav-open .m-backdrop { animation: none; } }

/* ---------------------------------------------------------------- warnings as a small ⚠ icon + count, tap to expand (costs.js, stock-page.js) */
.gf-alert { margin: 0 0 10px; }
.gf-alert > summary { display: inline-flex; align-items: center; gap: 5px; height: 28px; padding: 0 9px 0 5px; border: 1px solid #f7d79a; border-radius: 999px; background: #fff8eb; color: #93370d; font-size: 12.5px; font-weight: 700; cursor: pointer; list-style: none; user-select: none; }
.gf-alert > summary::-webkit-details-marker { display: none; }
.gf-alert > summary:hover { background: #fff1d6; border-color: #f0b85a; }
.gf-alert > summary:focus-visible { outline: 3px solid rgb(247 144 9 / 35%); outline-offset: 2px; }
.gf-alert-ic { display: grid; place-items: center; width: 18px; height: 18px; border-radius: 50%; background: #f79009; color: #fff; font-size: 12px; font-weight: 800; line-height: 1; }
.gf-alert[open] > summary { border-bottom-left-radius: 0; border-bottom-right-radius: 0; background: #fff1d6; }
.gf-alert-body { padding: 8px 12px; border: 1px solid #f7d79a; border-radius: 0 10px 10px 10px; background: #fff8eb; color: #93370d; font-size: 13px; line-height: 1.6; }
.gf-alert-body a { color: var(--gf-navy); }
/* warning icon in the page heading (after the description): details open as a pop-over instead of pushing the page down */
.gf-head .gf-alert { position: relative; display: inline-block; vertical-align: middle; margin: 0 0 0 8px; }
.gf-head .gf-alert > summary { height: 26px; }
.gf-head .gf-alert[open] > summary { border-radius: 999px; }
.gf-head .gf-alert-body { position: absolute; top: calc(100% + 6px); left: 0; z-index: 60; width: min(640px, calc(100vw - 28px)); max-height: min(60vh, 420px); overflow-y: auto; border-radius: 12px; box-shadow: 0 12px 32px rgb(16 24 40 / 18%); }

/* /purchases: pick lines → sticky total bar → transfer e-mail dialog */
.pu-table .pu-w-ck { width: 34px; }
.gf-page .pu-table th.pu-ck, .gf-page .pu-table td.pu-ck { padding-left: 10px; padding-right: 0; text-align: center; }
.gf-page .pu-table tr.pd-group td.pu-ck { background: var(--gf-tint-2) !important; }
.pu-check { width: 17px; height: 17px; accent-color: var(--gf-navy); cursor: pointer; vertical-align: middle; }
.gf-page .pu-table tbody tr.pu-sel td { background: #eef4ff; }
.pu-selbar { position: sticky; bottom: 12px; z-index: 30; display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin: 12px 0 0; padding: 12px 16px; border-radius: 14px; background: var(--gf-navy); color: #fff; box-shadow: 0 10px 30px rgb(11 42 134 / 28%); font-size: 14px; }
.pu-selbar b { font-weight: 600; font-variant-numeric: tabular-nums; }
.pu-selbar .pu-selsum b { font-size: 18px; }
.pu-selbar .btn { background: #fff; color: var(--gf-navy); border-color: #fff; }
.pu-selbar .btn.primary { background: var(--gf-red); color: #fff; border-color: var(--gf-red); }
.pd-card.pu-mail { width: min(980px, calc(100vw - 32px)); max-height: calc(100vh - 40px); display: flex; flex-direction: column; }
.pu-mail-body { padding: 14px 20px; overflow-y: auto; display: flex; flex-direction: column; gap: 10px; }
.pu-mail-row { display: flex; gap: 12px; flex-wrap: wrap; }
.pu-mail-row .pu-mail-grow { flex: 1; min-width: 260px; }
.pu-mail-subject { width: 100%; }
.pu-mail-preview { border: 1px solid var(--gf-line); border-radius: 12px; padding: 14px 16px; background: #fff; overflow-x: auto; }
.pu-mail-sign { width: 100%; min-height: 120px; padding: 8px 12px; border: 1px solid var(--gf-line-strong); border-radius: 10px; font: inherit; font-size: 13.5px; resize: vertical; }
.pu-mail-label { margin-top: 4px; }
.pu-mail .pd-card-foot { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.pu-mail-hint { flex: 1; min-width: 200px; font-size: 12.5px; }
@media (max-width: 760px) { .pu-selbar { bottom: 8px; gap: 8px 12px; } .pu-selbar .grow { display: none; } }


/* ---------------------------------------------------------------- prices stand out (owner 20.10.26): every price tab
   price columns tinted, numbers large / bold / navy, "—" faded; one-price tabs (ปลีก / ตร.ฟ., ราคาเริ่มต้น) extra large red like the price images */
html .price-table thead th.number { color: var(--gf-navy); font-weight: 700; background: #eef3ff; }
.price-table td.number { background: #f7f9ff; font-size: 17px; font-weight: 700; color: var(--gf-navy); font-variant-numeric: tabular-nums; letter-spacing: .01em; }
.price-table tr:hover td.number { background: #edf2ff; }
.price-table td.number.na { font-size: 14px; font-weight: 400; color: #c3cad6; }
.price-table.single-price td.number:not(.na) { font-size: 22px; font-weight: 800; color: #d92d20; }
html .price-table.single-price thead th.number { color: #b42318; background: #fff1f0; }
.price-table.single-price td.number { background: #fff8f7; }
.price-table.single-price tr:hover td.number { background: #ffeeec; }
@media (max-width: 640px) {
  .price-table td.number { font-size: 15px; }
  .price-table.single-price td.number:not(.na) { font-size: 19px; }
}
/* two-row price header (app.js renderCatalog): title over the price columns, sub-columns below */
html .price-table thead th.price-group { text-align: center; font-size: 13.5px; letter-spacing: .01em; color: var(--gf-navy); background: #e3ebff; border-bottom: 1px solid #c9d7f5; white-space: nowrap; }
html .price-table thead tr.sub-head th.number { top: var(--ph1, 38px); font-size: 13px; }
.price-table thead th[rowspan] { vertical-align: middle; }
/* phones: the frozen "รุ่นฟิล์ม" column is the 2nd cell of the FIRST header row only */
.price-table thead tr.sub-head th:nth-child(2) { left: auto; box-shadow: none; z-index: 2; }
@media (max-width: 640px) { html .price-table thead th.price-group { font-size: 12px; white-space: normal; } }

/* price page heading: "ราคายังไม่รวม VAT" + "ราคาประกาศใช้วันที่ …" side by side (summary cards removed 20.10.26) */
#view-prices .heading-meta { flex-direction: row !important; flex-wrap: nowrap; flex: none; align-items: center; justify-content: flex-end; gap: 8px; }
#view-prices .heading-meta .price-date { display: inline-flex; align-items: center; padding: 4px 10px; border-radius: 8px; background: var(--gf-tint-2, #f2f5fb); border: 1px solid var(--gf-line); color: var(--gf-navy); font-size: 12.5px; font-weight: 600; }
@media (max-width: 760px) { #view-prices .heading-meta { flex-wrap: wrap; justify-content: flex-start; } }

/* cost drawer summary tiles: each its own colour (owner 20.10.26) — stock gray · structure price amber · average cost green · stock value blue (like the page's "มูลค่าสต๊อกคงเหลือ" card) */
.ct-dr .sk-sum > div:nth-child(1) { background: #f2f4f7; border-color: #e1e5eb; }
.ct-dr .sk-sum > div:nth-child(2) { background: #fff4e0; border-color: #f5dcae; }
.ct-dr .sk-sum > div:nth-child(2) span:first-child { color: #93370d; }
.ct-dr .sk-sum > div:nth-child(3) { background: #e8f7ee; border-color: #bfe6cf; }
.ct-dr .sk-sum > div:nth-child(3) span:first-child { color: #0f6b3a; }
.ct-dr .sk-sum > div:nth-child(4) { background: #175cd3; border-color: #175cd3; }
.ct-dr .sk-sum > div:nth-child(4) span, .ct-dr .sk-sum > div:nth-child(4) b { color: #fff; }
.ct-dr .sk-sum > div:nth-child(4) span:last-child { color: #d4e3ff; }
/* /costs: "% ส่วนต่าง" column narrower (owner 20.10.26); the lot column takes the space */
.gf-page .ct-table .ct-w-diff, .gf-page .ct-table.ct-folded .ct-w-diff { width: 70px; }
.gf-page .ct-table td.ct-diff { padding-left: 6px; padding-right: 10px; white-space: nowrap; }
.gf-page .ct-table th.ct-w-diff { white-space: normal; line-height: 1.25; }
/* /stock history drawer: summary tiles each their own colour (owner 20.10.26) — balance blue · received green · issued red · first record gray */
.sk-dr:not(.ct-dr) .sk-sum > div { border: 1px solid transparent; }
.sk-dr:not(.ct-dr) .sk-sum > div:nth-child(1) { background: #175cd3; border-color: #175cd3; }
.sk-dr:not(.ct-dr) .sk-sum > div:nth-child(1) span, .sk-dr:not(.ct-dr) .sk-sum > div:nth-child(1) b { color: #fff; }
.sk-dr:not(.ct-dr) .sk-sum > div:nth-child(2) { background: #e8f7ee; border-color: #bfe6cf; }
.sk-dr:not(.ct-dr) .sk-sum > div:nth-child(2) span { color: #0f6b3a; }
.sk-dr:not(.ct-dr) .sk-sum > div:nth-child(3) { background: #fdecec; border-color: #f6c9c6; }
.sk-dr:not(.ct-dr) .sk-sum > div:nth-child(3) span { color: #9f2a1f; }
.sk-dr:not(.ct-dr) .sk-sum > div:nth-child(4) { background: #f2f4f7; border-color: #e1e5eb; }

/* phones: the product-group filter is a dropdown (owner 20.10.26) instead of a row of buttons */
@media (max-width: 760px) {
  .filter-group:has(#category) .choice-group { display: none !important; }
  .filter-group #category.visually-hidden-select {
    position: static !important; width: 100% !important; max-width: none; height: 46px; opacity: 1; pointer-events: auto; clip-path: none; overflow: visible;
    padding: 0 40px 0 14px; border: 1.5px solid var(--gf-line-strong, #cfd8e6); border-radius: 12px; background-color: #fff; color: var(--gf-navy);
    font: inherit; font-size: 16px; font-weight: 600; appearance: none; -webkit-appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230b2a86' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
    background-repeat: no-repeat; background-position: right 14px center; background-size: 18px;
  }
  .filter-group #category.visually-hidden-select:focus { outline: 3px solid rgb(22 119 210 / 25%); border-color: var(--gf-navy); }
}

/* /margins — profit per model (admin): % margin of every selling price against the stock's average cost */
.sub-item[data-sub="margins"] { --dot: #f4a3c2; }
.mg-wrap { overflow-x: auto; }
.gf-page .mg-table { width: 100%; min-width: 1100px; table-layout: fixed; }
.gf-page .mg-table .mg-w-model { width: 11%; } .gf-page .mg-table .mg-w-w { width: 6%; } .gf-page .mg-table .mg-w-stock { width: 5%; } .gf-page .mg-table .mg-w-cost { width: 8%; }
.gf-page .mg-table th, .gf-page .mg-table td { padding-left: 8px; padding-right: 8px; }
.gf-page .mg-table thead th { white-space: normal; line-height: 1.3; vertical-align: bottom; }
.gf-page .mg-table th.mg-group { text-align: center; border-left: 2px solid var(--gf-line-strong); color: var(--gf-navy); }
.gf-page .mg-table td.mg-cost, .gf-page .mg-table th.mg-w-cost { border-right: 2px solid var(--gf-line-strong); font-variant-numeric: tabular-nums; }
.mg-table td.mg-model { color: var(--gf-ink); }
.mg-basis { display: block; font-size: 11px; color: #b54708; }
.gf-page .mg-table td.mg-cell { line-height: 1.25; font-variant-numeric: tabular-nums; }
.mg-table td.mg-cell b { display: block; font-weight: 400; font-size: 14.5px; }
.mg-table td.mg-cell small { display: block; font-size: 11.5px; color: var(--gf-muted); }
.mg-table td.mg-ok b { color: #067647; }
.mg-table td.mg-low b, .mg-note .mg-low { color: #b54708; }
.mg-table td.mg-loss b, .mg-note .mg-loss { color: #b42318; }
.mg-note { margin-top: 10px; font-size: 12.5px; }
@media (max-width: 1500px) { .gf-page .mg-table { min-width: 1000px; } .gf-page .mg-table th, .gf-page .mg-table td { padding-left: 6px; padding-right: 6px; font-size: 13px; } .mg-table td.mg-cell b { font-size: 13.5px; } }

/* /costs: "ทุนเฉลี่ย /ตร.ฟ." column (average cost of the rolls in stock) — after % ส่วนต่าง, hidden on phones */
.gf-page .ct-table .ct-w-avg { width: 78px; }
.gf-page .ct-table th.ct-w-avg { white-space: normal; line-height: 1.25; }
.gf-page .ct-table td.ct-avg { font-variant-numeric: tabular-nums; font-weight: 600; }
@media (max-width: 760px) { .gf-page .ct-table th.ct-w-avg, .gf-page .ct-table tbody tr:not(.pd-group) td.ct-avg { display: none; } }
/* /costs: "ทุนเฉลี่ย /ตร.ฟ." smaller (owner, 21.10.26) — narrower, normal weight, smaller digits */
.gf-page .ct-table .ct-w-avg { width: 68px; }
.gf-page .ct-table th.ct-w-avg { font-size: 12px; }
.gf-page .ct-table td.ct-avg { font-size: 13px; font-weight: 400; color: var(--gf-ink-soft); padding-left: 6px; padding-right: 10px; }

/* every other visible column of every table gets a faint tint (marked by auth-ui.js; owner's choice, 21.10.26) —
   drawn as an image layer so the row colours (zebra, hover, highlighted rows) still show under it */
table .gf-col-alt { background-image: linear-gradient(rgb(23 92 211 / 3.5%), rgb(23 92 211 / 3.5%)) !important; }
table thead .gf-col-alt { background-image: linear-gradient(rgb(23 92 211 / 6%), rgb(23 92 211 / 6%)) !important; }

/* /margins: each selling group has its own header colour — ติดตั้ง = navy blue, End User = sky, Dealer = purple, New Channel = green (owner, 21.10.26) */
.gf-page .mg-table thead th.mg-group { border-top: 3px solid var(--mg-gb); background: var(--mg-gt) !important; color: var(--mg-ga) !important; font-weight: 600; }
.gf-page .mg-table thead th.mg-w-sell { background: var(--mg-gs) !important; color: var(--mg-ga) !important; }
.gf-page .mg-table thead th.mg-w-sell.mg-gstart { border-left: 2px solid var(--gf-line-strong); }
.gf-page .mg-table thead th.mg-w-sell.gf-col-alt { background-image: linear-gradient(rgb(0 0 0 / 3.5%), rgb(0 0 0 / 3.5%)) !important; }
.gf-page .mg-table thead th.mg-group.gf-col-alt { background-image: none !important; }
.mg-table .mg-g-inst { --mg-ga: #1849a9; --mg-gb: #2e6be6; --mg-gt: #dfe9fd; --mg-gs: #eef3fe; }
.mg-table .mg-g-eu { --mg-ga: #026aa2; --mg-gb: #0ba5ec; --mg-gt: #dcf2fd; --mg-gs: #effaff; }
.mg-table .mg-g-dealer { --mg-ga: #5b3fae; --mg-gb: #8b5cf6; --mg-gt: #ece5fe; --mg-gs: #f6f2ff; }
.mg-table .mg-g-nc { --mg-ga: #05603f; --mg-gb: #17b36f; --mg-gt: #dcf5e8; --mg-gs: #effbf4; }

/* coloured column-group headers on the other tables too (owner, 21.10.26) — same colours as /margins:
   blue = cost / price, sky = product & size, purple = amounts / average cost, green = stock, amber = structure price / payment.
   A header cell gets "hg hg-<colour>"; "hg-start" draws the divider where a group begins. */
.hg-blue { --hg-a: #1849a9; --hg-b: #2e6be6; --hg-t: #e6eefd; }
.hg-sky { --hg-a: #026aa2; --hg-b: #0ba5ec; --hg-t: #e3f5fd; }
.hg-purple { --hg-a: #5b3fae; --hg-b: #8b5cf6; --hg-t: #f0eafe; }
.hg-green { --hg-a: #05603f; --hg-b: #17b36f; --hg-t: #e3f7ec; }
.hg-amber { --hg-a: #93370d; --hg-b: #f79009; --hg-t: #fef3e2; }
html body.gf-page table thead th.hg { background-color: var(--hg-t) !important; color: var(--hg-a) !important; box-shadow: inset 0 3px 0 var(--hg-b); }
html body.gf-page table thead th.hg.gf-col-alt { background-image: linear-gradient(rgb(0 0 0 / 3.5%), rgb(0 0 0 / 3.5%)) !important; }
html body.gf-page table thead th.hg-start { border-left: 2px solid var(--gf-line-strong); }

/* price history = 📈 icon in the last column of /costs and /margins (owner 21.10.26); phones open it by tapping the row */
.ic.hist-ic { width: 34px; height: 32px; padding: 0; display: inline-grid; place-items: center; font-size: 16px; line-height: 1; border-radius: 9px; cursor: pointer; }
.ic.hist-ic:hover { background: var(--gf-tint-2, #eef3ff); border-color: var(--gf-navy); }
.ic.hist-ic:focus-visible { outline: 3px solid rgb(22 119 210 / 30%); outline-offset: 1px; }
.gf-page .ct-table .ct-w-acts, .gf-page .ct-table.ct-folded .ct-w-acts { width: 52px; }
.gf-page .ct-table td.ct-acts { text-align: center; padding-left: 4px; padding-right: 8px; }
.gf-page .mg-table .mg-w-acts { width: 52px; }
.gf-page .mg-table td.mg-acts { text-align: center; padding-left: 4px; padding-right: 8px; }
@media (max-width: 760px) {
  .gf-page .mg-table th.mg-w-acts, .gf-page .mg-table td.mg-acts { display: none; }
  .mg-table tr.mg-row, .ct-table tbody tr:not(.pd-group) { cursor: pointer; }
}
/* /products, /stock: SKU tied to nothing (shown only with "แสดงทั้งหมด") */
.pd-table .flag.gray { background: #f2f4f7; color: #667085; }
.pd-table td.sub .flag { margin-left: 6px; }

/* "รูปแบบราคา" segmented buttons: the chosen one is filled with the price-group colour (owner, 21.10.26 — more visible) */
html #calc-mode + .choice-group button.active,
html #catalog-mode + .choice-group button.active {
  background: var(--ch-a, var(--gf-navy)); color: #fff; font-weight: 600 !important;
  box-shadow: 0 2px 4px rgb(11 47 92 / 18%), 0 6px 14px -4px var(--ch-a, var(--gf-navy));
}
html #calc-mode + .choice-group button.active .ico,
html #catalog-mode + .choice-group button.active .ico { color: #fff !important; }
html #calc-mode + .choice-group button.active:hover,
html #catalog-mode + .choice-group button.active:hover { background: var(--ch-a, var(--gf-navy)); color: #fff; }

/* /pricing "คำนวณราคา" (owner, 21.10.26): one selling price per model = (ทุนเฉลี่ย + ต้นทุนบริษัท + ต้นทุนอื่นๆ) × (1 + % บวก).
   Own table class (not .pd-table: that one carries column-hiding rules of /products). Inputs are typed per row. */
.gf-page .pz-table { table-layout: fixed; min-width: 1200px; }
.pz-table col.pz-c-num { width: 80px; }
.pz-table col.pz-c-grp { width: 94px; }
.pz-table col.pz-c-pct { width: 68px; }
.pz-table col.pz-c-in { width: 84px; }
.pz-table col.pz-c-roll { width: 88px; }
.pz-table col.pz-c-acts { width: 44px; }
.pz-table col.pz-c-cmp { width: 210px; }
.pz-table.pz-apply col.pz-c-cmp { width: 278px; }
/* last column "เทียบราคาปัจจุบัน" (owner, 21.10.26): current price of the price list · difference · "ใช้" (Super Admin) · ↺ */
.gf-page .pz-table th.pz-cmp-h { text-align: left; line-height: 1.3; }
.gf-page .pz-table th.pz-cmp-h small { display: block; font-size: 11px; font-weight: 400; opacity: .85; }
.gf-page .pz-table td.pz-cmp { padding: 3px 8px; white-space: normal; }
.pz-ci { display: flex; align-items: center; gap: 4px; min-height: 26px; font-size: 12.5px; font-variant-numeric: tabular-nums; }
.pz-ci + .pz-ci { border-top: 1px dashed #edf0f5; }
.pz-cl { flex: none; width: 40px; font-size: 11.5px; color: var(--gf-muted); white-space: nowrap; }
.pz-cur { flex: none; width: 56px; text-align: right; color: var(--gf-ink); white-space: nowrap; }
.pz-cur.pz-changed { color: var(--gf-navy); }
.pz-cur.pz-changed::after { content: "•"; margin-left: 2px; color: var(--gf-red); }
.pz-diff { flex: 1 1 auto; min-width: 0; text-align: right; white-space: nowrap; font-size: 12px; overflow: hidden; text-overflow: ellipsis; }
.pz-up, .mg-note .pz-up { color: #b42318; }
.pz-dn, .mg-note .pz-dn { color: #067647; }
.pz-eq { color: var(--gf-muted); }
.pz-use { flex: none; height: 24px; padding: 0 8px; border: 1px solid var(--gf-navy); border-radius: 7px; background: var(--gf-navy); color: #fff; font: inherit; font-size: 12px; cursor: pointer; }
.pz-use:hover { background: var(--gf-navy-700); }
.pz-use:disabled { border-color: var(--gf-line); background: #f2f4f7; color: #98a2b3; cursor: default; }
.pz-use:focus-visible, .pz-rev:focus-visible { outline: 3px solid rgb(22 119 210 / 30%); outline-offset: 1px; }
.pz-rev { flex: none; width: 22px; height: 22px; padding: 0; border: 1px solid var(--gf-line-strong); border-radius: 6px; background: #fff; color: var(--gf-ink-soft); font: inherit; font-size: 12px; line-height: 1; cursor: pointer; }
.pz-rev:hover { border-color: var(--gf-navy); color: var(--gf-navy); }
.pz-nolist { font-size: 12px; color: #98a2b3; }
/* 21.10.26 (owner): one line per price group — End User / Dealer / New Channel, each typed apart */
.gf-page .pz-table th.pz-wrap-th { white-space: normal; line-height: 1.25; }
.gf-page .pz-table td[rowspan] { vertical-align: middle; background: #fff; }
.gf-page .pz-table.pz-multi tr.pz-row td { height: 40px; padding-top: 3px; padding-bottom: 3px; }
.gf-page .pz-table.pz-multi tr.pz-row:not(.pz-first) td { border-top: 0; }
.gf-page .pz-table.pz-multi tr.pz-first td { border-top: 2px solid var(--gf-line); }
.gf-page .pz-table.pz-multi tr.pz-row td { border-bottom-color: #f1f3f8; }
.pz-tag { display: inline-block; padding: 2px 8px; border-radius: 999px; font-size: 12px; line-height: 1.5; background: var(--pz-t); color: var(--pz-a); }
.pz-g-eu { --pz-a: #1849a9; --pz-t: #e6eefd; }
.pz-g-dealer { --pz-a: #5b3fae; --pz-t: #f0eafe; }
.pz-g-nc { --pz-a: #05603f; --pz-t: #e3f7ec; }
.gf-page .pz-table td.pz-grp { padding-left: 10px; }
.pz-table td.pz-marked { color: #93370d; }
.gf-page .pz-gseg button.on.pz-gb-eu { background: #1849a9; }
.gf-page .pz-gseg button.on.pz-gb-dealer { background: #6941c6; }
.gf-page .pz-gseg button.on.pz-gb-nc { background: #067647; }
.gf-page .pz-table th { padding: 8px 8px; font-size: 12.5px; white-space: nowrap; }
.gf-page .pz-table td { height: 46px; padding: 5px 8px; white-space: nowrap; }
.gf-page .pz-table .pd-r { text-align: right; font-variant-numeric: tabular-nums; }
.gf-page .pz-table .pd-c { text-align: center; }
.gf-page .pz-table thead th.pz-group { text-align: center; font-weight: 600; }
html body.gf-page .pz-table thead tr + tr th.hg { box-shadow: none; }
.gf-page .pz-table td.hg-start { border-left: 2px solid var(--gf-line-strong); }
.pz-table tr.pd-group td { height: auto; padding: 14px 12px 6px; background: var(--gf-tint-2) !important; border-bottom: 1px solid var(--gf-line); }
.gf-page .pz-table td.pz-model { white-space: normal; overflow-wrap: anywhere; line-height: 1.35; color: var(--gf-ink); }
.pz-table td.pz-model .pz-wd { display: block; margin-top: 2px; font-size: 11.5px; color: var(--gf-muted); }
.pz-table td.pz-cost { line-height: 1.2; color: var(--gf-ink); }
.pz-table td.pz-price { color: var(--gf-ink); }
.pz-table td.pz-price.pz-main { font-size: 15px; color: var(--gf-navy); }
.pz-table td.pz-empty { color: #c0c7d2; }
.pz-table td.pz-acts { text-align: center; padding-left: 4px; padding-right: 8px; }
.gf-page .pz-meta { white-space: normal; min-width: 0; }
.pz-in { box-sizing: border-box; width: 100%; height: 32px; padding: 2px 8px; border: 1px solid var(--gf-line-strong); border-radius: 8px; background: #fff; font: inherit; font-size: 13.5px; text-align: right; font-variant-numeric: tabular-nums; color: var(--gf-ink); }
.pz-in::placeholder { color: #b8c0cc; }
.pz-in:hover { border-color: #9db0d8; }
.pz-in:focus { outline: 0; border-color: var(--gf-navy); box-shadow: 0 0 0 3px rgb(11 42 134 / 14%); }
.pz-in.pct { border-color: #f5c27a; background: #fffaf2; }
.pz-in.pct:focus { border-color: #dc6803; box-shadow: 0 0 0 3px rgb(247 144 9 / 18%); }
.pz-in.bad, .pz-in.bad:focus { border-color: #f04438; background: #fff5f4; box-shadow: none; }
.pz-table tr.pz-saved td { animation: pz-flash 1.4s ease-out; }
@keyframes pz-flash { from { background-color: #d1fadf; } to { background-color: transparent; } }
@media (max-width: 760px) {
  .pz-in { font-size: 16px; }   /* iOS zooms into smaller inputs */
  .gf-page .pz-table td.pz-model, .gf-page .pz-table th.pz-w-model { position: sticky; left: 0; z-index: 2; background: #fff; }
  .pz-table col.pz-c-model { width: 120px; }
}

/* ---- Pop-ups: smooth open/close on every page (owner, 23.10.26) ----
   keyframes run as soon as the overlay is inserted, so no dependency on paint frames */
@keyframes gfOvIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes gfCardIn { from { opacity: 0; transform: translateY(14px) scale(.965); } to { opacity: 1; transform: none; } }
@keyframes gfDrawerIn { from { transform: translateX(40px); opacity: 0; } to { transform: none; opacity: 1; } }
@keyframes gfImgIn { from { opacity: 0; transform: scale(.985); } to { opacity: 1; transform: none; } }
html .pd-ov, html .sk-dr-ov { animation: gfOvIn .24s ease-out both; }
html .pd-ov > * { animation: gfCardIn .32s cubic-bezier(.2, .8, .2, 1) both; }
html .sk-dr-ov .sk-dr { animation: gfDrawerIn .3s cubic-bezier(.2, .8, .2, 1) both; }
@media (prefers-reduced-motion: reduce) {
  html .pd-ov, html .sk-dr-ov, html .pd-ov > *, html .sk-dr-ov .sk-dr { animation-duration: .01s !important; }
}

/* "ภาพราคา" icon at the end of the catalog search row */
html .catalog-toolbar .price-image-btn { order: 2; flex: 0 0 auto; display: inline-flex; align-items: center; gap: 7px; height: 44px; padding: 0 14px 0 12px; border: 1px solid #f6c5c7; border-radius: 12px; background: #fdecec; color: #c4161c; font: inherit; font-size: 14px; white-space: nowrap; cursor: pointer; transition: background .18s, border-color .18s, color .18s; }
html .catalog-toolbar .price-image-btn svg { width: 20px; height: 20px; flex: 0 0 auto; }
html .catalog-toolbar .price-image-btn:hover { background: var(--gf-red); border-color: var(--gf-red); color: #fff; }
html .catalog-toolbar .price-image-btn:focus-visible { outline: 2px solid var(--gf-red); outline-offset: 2px; }
@media (max-width: 900px) {
  /* narrow screens: the icon sits right beside the search box */
  html .catalog-toolbar .search-field { flex: 1 1 0; min-width: 0; }
  html .catalog-toolbar .price-image-btn { order: 1; }
}

/* Full-width content on every page (owner, 23.10.26): no 1640px cap — tables use the whole screen */
html body.gf-page main.adm-wrap, html body.gf-page .gf-head, html .workspace > .view { max-width: none; width: auto; margin-left: 0; margin-right: 0; }

/* Page titles (owner, 23.10.26): every page has the same heading — bold title + grey description on one line */
html body .page-heading h1, html body .gf-head h1 { font-weight: 600 !important; font-size: 25px; color: var(--gf-ink); }
html body .page-heading h1 .aud, html body .page-heading h1 strong { font-weight: 600 !important; }
html body #view-calculator > .page-heading { display: block; position: static; width: auto; height: auto; margin: 0 0 18px; overflow: visible; clip-path: none; white-space: normal; }
@media (max-width: 960px) { html body .page-heading h1, html body .gf-head h1 { font-size: 21px; } }

/* Page-title icon (owner, 23.10.26): menu icon in a soft navy box before every page title (added by auth-ui.js) */
html body .gf-h-ic { flex: 0 0 auto; align-self: center; display: inline-grid; place-items: center; width: 42px; height: 42px; margin-right: 2px; border-radius: 12px; background: #eaf0fb; border: 1px solid #d6e0f5; color: var(--gf-navy); box-shadow: 0 2px 6px rgb(11 42 134 / 8%); }
html body .gf-h-ic svg { width: 24px; height: 24px; }
html body #view-prices .gf-h-ic { background: color-mix(in srgb, var(--ch-a, var(--gf-navy)) 10%, #fff); border-color: color-mix(in srgb, var(--ch-a, var(--gf-navy)) 22%, #fff); color: var(--ch-a, var(--gf-navy)); }
@media (max-width: 960px) { html body .gf-h-ic { width: 34px; height: 34px; border-radius: 10px; } html body .gf-h-ic svg { width: 20px; height: 20px; } }

/* /pricing: product group | model | width as separate columns (owner, 23.10.26) */
.pz-table col.pz-c-cat { width: 140px; }
.pz-table col.pz-c-model { width: 118px; }
.pz-table col.pz-c-wd { width: 76px; }
.gf-page .pz-table td.pz-cat { white-space: normal; line-height: 1.35; color: var(--gf-muted); font-size: 13px; }
.gf-page .pz-table td.pz-wdc { color: var(--gf-ink); }
@media (max-width: 760px) { .pz-table col.pz-c-cat { width: 104px; } .pz-table col.pz-c-wd { width: 64px; } .pz-table col.pz-c-model { width: 110px; } }

/* /products on phones (owner, 23.10.26): no edit/delete buttons; the table scrolls sideways to show the prices */
@media (max-width: 600px) {
  html body.gf-page .wrap:has(> table.pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table)) { overflow-x: auto; -webkit-overflow-scrolling: touch; }
  html body.gf-page table.pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) { min-width: 640px; }
  html body.gf-page table.pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) thead th.pc-acts,
  html body.gf-page table.pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) tbody tr:not(.pd-group) td.pc-acts { display: none !important; }
  html body.gf-page table.pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) thead th.pc-cost,
  html body.gf-page table.pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) tbody tr:not(.pd-group) td.pc-cost,
  html body.gf-page table.pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) thead th.pc-psa,
  html body.gf-page table.pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) tbody tr:not(.pd-group) td.pc-psa { display: table-cell !important; }
  html body.gf-page table.pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) .pd-w-sku { width: 120px !important; }
  html body.gf-page table.pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) .pd-w-model { width: 92px !important; }
  html body.gf-page table.pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) .pd-w-width { width: 64px !important; }
  html body.gf-page table.pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) .pd-w-area { width: 104px !important; }
  html body.gf-page table.pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) .pd-w-cost { width: 120px !important; display: table-cell !important; }
  html body.gf-page table.pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) .pd-w-psa { width: 120px !important; }
  html body.gf-page table.pd-table:not(.sk-table):not(.pu-table):not(.ct-table):not(.mg-table) .pd-w-acts { width: 0 !important; }
}

/* Summary cards (/costs, /purchases): the big figure is bold (owner, 23.10.26) */
html body .pu-card > b { font-weight: 600 !important; letter-spacing: -.01em; }

/* "สินค้า 3M" pages: same first columns everywhere — กลุ่มสินค้า | SKU | รุ่น | หน้ากว้าง (owner, 23.10.26).
   Columns are picked by class (gc-*), never by position. */
.gf-page .pd-table td.gc-cat { color: var(--gf-ink-soft); font-size: 13px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pd-table .pd-w-cat { width: 10%; }
.ct-table .ct-w-cat { width: 9%; }
.sk-table .sk-w-cat { width: 12%; } .sk-table .sk-w-sku { width: 11%; } .sk-table .sk-w-note { width: 19%; } .sk-table .sk-w-acts { width: 14%; }
.gf-page .mg-table { min-width: 1260px; }
.gf-page .mg-table .mg-w-cat { width: 9%; } .gf-page .mg-table .mg-w-sku { width: 7.5%; }
.pz-table col.pz-c-sku { width: 108px; }
@media (max-width: 1280px) { .pd-table .pd-w-cat { width: 11%; } }
@media (max-width: 760px) {
  /* phones keep their short column sets; the group shows in the grey row above each group */
  html body.gf-page .ct-table .gc-cat, html body.gf-page .mg-table .gc-cat, html body.gf-page .mg-table .gc-sku, html body.gf-page .sk-table .gc-cat { display: none !important; }
  html body.gf-page .sk-table .gc-sku, html body.gf-page .sk-table .sk-w-ord, html body.gf-page .sk-table td.sk-c-ord,
  html body.gf-page .sk-table .sk-w-note, html body.gf-page .sk-table td.sk-c-note, html body.gf-page .sk-table .sk-w-date, html body.gf-page .sk-table td.sk-c-date { display: none !important; }
  html body.gf-page .sk-table .gc-model, html body.gf-page .sk-table .gc-wd, html body.gf-page .sk-table .sk-w-qty, html body.gf-page .sk-table td.sk-c-qty,
  html body.gf-page .sk-table .sk-w-acts, html body.gf-page .sk-table td.acts { display: table-cell !important; }
  /* /margins phone: model · width · stock · selling groups (cost and the new first columns hidden) — by class, not position */
  html body.gf-page .mg-table .gc-model, html body.gf-page .mg-table .gc-wd, html body.gf-page .mg-table .mg-w-stock, html body.gf-page .mg-table td.mg-stock { display: table-cell !important; }
  html body.gf-page .mg-table .mg-w-cost, html body.gf-page .mg-table td.mg-cost { display: none !important; }
}

/* /purchases: table header and panel titles bold (owner, 23.10.26) */
html body .pu-table thead th, html body .pu-panel h3 { font-weight: 600 !important; }
/* /costs: price paid per roll and per sq ft bold (owner, 23.10.26) */
html body .ct-table td.ct-last, html body .ct-table td.ct-lpsf { font-weight: 600 !important; }
@media (max-width: 760px) { html body.gf-page .pd-meta { white-space: normal; min-width: 0; } }   /* long count text wraps on phones instead of widening the page */

/* Every table header on every page is bold (owner, 23.10.26) — the one more exception to the 400-weight rule */
html body table thead th, html body table thead th * { font-weight: 600 !important; }
html body table thead th small { font-weight: 400 !important; }   /* the small hint line under a header stays light */

/* /pricing: selling-price columns stand out and can be typed in (owner, 23.10.26) */
.pz-table col.pz-c-sell { width: 104px; }
.pz-table col.pz-c-sellr { width: 116px; }
.gf-page .pz-table td.pz-price { background: #eef4ff; padding-left: 6px; padding-right: 6px; }
.gf-page .pz-table td.pz-price.hg-start { border-left: 2px solid #2e6be6; }
.gf-page .pz-table thead th.hg-blue { background: #dfe9ff !important; color: var(--gf-navy) !important; }
.pz-in.pz-sell { width: 100%; text-align: right; font-size: 15px; font-weight: 600 !important; color: var(--gf-navy); background: #fff; border-color: #b9cdf5; font-variant-numeric: tabular-nums; }
.pz-in.pz-sell:hover { border-color: var(--gf-navy); }
.pz-in.pz-sell::placeholder { color: #c0c7d2; font-weight: 400; }
.gf-page .pz-table td.pz-price.pz-manual { background: #fff4e5; }
.pz-in.pz-sell.manual { border-color: #f5b25b; color: #9a4b00; background: #fffaf2; }
.pz-in.pz-sell.manual.src { border-width: 2px; background: #fff; box-shadow: 0 0 0 2px rgb(247 144 9 / 15%); }
.mg-note .pz-note-sell { display: block; margin-bottom: 4px; color: #9a4b00; font-weight: 600 !important; }
@media (max-width: 760px) { .pz-in.pz-sell { font-size: 16px; } }

/* /pricing ↺ reset beside the price group: clears what was typed on that line (owner, 23.10.26) */
.gf-page .pz-table td.pz-grp { white-space: nowrap; }
.pz-reset { display: inline-grid; place-items: center; vertical-align: middle; width: 24px; height: 24px; margin-left: 6px; padding: 0; border: 1px solid var(--gf-line-strong); border-radius: 7px; background: #fff; color: var(--gf-muted); cursor: pointer; transition: color .15s, border-color .15s, background .15s; }
.pz-reset svg { width: 14px; height: 14px; }
.pz-reset:hover { color: #b54708; border-color: #f5b25b; background: #fff7ed; }
.pz-reset:focus-visible { outline: 3px solid rgb(22 119 210 / 30%); outline-offset: 1px; }
.pz-reset[hidden] { display: none; }
/* ↺ after "ใช้" (back to the price-list price) a little easier to see */
.pz-rev { border-color: #f5b25b; color: #b54708; background: #fff7ed; }
.pz-table col.pz-c-grp { width: 124px; }

/* /pricing End User "ติดตั้ง" line (owner, 23.10.26): installation cost per area tier → installed price = retail /ตร.ฟ. + cost */
.gf-page .pz-table tr.pz-g-inst td { background: #fffaf2; }
.pz-tag.pz-tag-inst { background: #fdecd3; color: #93370d; }
.gf-page .pz-table td.pz-inst-in, .gf-page .pz-table td.pz-inst-res { padding-top: 6px; padding-bottom: 6px; }
.pz-inst-in, .pz-inst-res { white-space: nowrap; }
.pz-tier { display: inline-flex; flex-direction: column; align-items: stretch; gap: 2px; width: 24%; margin-right: 1%; vertical-align: top; font-size: 11.5px; color: var(--gf-muted); text-align: center; }
.pz-tier:last-child { margin-right: 0; }
.pz-in.pz-inst { width: 100%; text-align: right; border-color: #f5c27a; background: #fff; }
.pz-tier-v { font-size: 14px; font-weight: 600 !important; color: var(--gf-navy); text-align: right; padding-right: 4px; }
.pz-tier-v.pz-empty { color: #c0c7d2; font-weight: 400 !important; }
.gf-page .pz-table td.pz-na { text-align: center; color: #c0c7d2; }

/* "ทุนเฉลี่ย / ตร.ฟ." stands out on every page it appears (owner, 23.10.26): purple tint, bold, larger */
html body.gf-page .pz-table td.pz-cost, html body.gf-page .mg-table td.mg-cost, html body.gf-page .ct-table td.ct-avg {
  background: #f4effe; color: #4a2f9a; font-size: 15px; font-weight: 600 !important; font-variant-numeric: tabular-nums;
}
html body.gf-page .pz-table td.pz-cost { border-left: 2px solid #8b5cf6; border-right: 2px solid #8b5cf6; }
html body.gf-page .pz-table td.pz-cost .mg-basis, html body.gf-page .mg-table td.mg-cost .mg-basis { font-weight: 400 !important; font-size: 11px; }
html body.gf-page .pz-table td.pz-cost .sub, html body.gf-page .mg-table td.mg-cost .sub, html body.gf-page .ct-table td.ct-avg .sub { color: #b9a7e8; font-weight: 400 !important; }
/* "ติดตั้ง" line: one tier per line, like the comparison column beside it (owner, 23.10.26) — the 4 tiers line up across */
html body.gf-page .pz-table td.pz-inst-in, html body.gf-page .pz-table td.pz-inst-res { vertical-align: top; padding-top: 3px; padding-bottom: 3px; }
.pz-inst-in .pz-tier, .pz-inst-res .pz-tier { display: flex; flex-direction: row; align-items: center; justify-content: space-between; gap: 10px; width: 100%; margin: 0; min-height: 26px; font-size: 12.5px; text-align: left; }
.pz-inst-in .pz-tier + .pz-tier, .pz-inst-res .pz-tier + .pz-tier { border-top: 1px dashed #f1e2c8; }
.pz-inst-in .pz-tier > span:first-child, .pz-inst-res .pz-tier > span:first-child { color: var(--gf-muted); min-width: 56px; }
.pz-inst-in .pz-tier > span:first-child::before { content: 'ค่าติดตั้ง '; }
.pz-inst-res .pz-tier > span:first-child::before { content: 'ราคาติดตั้ง '; }
.pz-in.pz-inst { width: 110px; height: 22px; padding-top: 0; padding-bottom: 0; }
.pz-inst-res .pz-tier-v { padding-right: 6px; }

/* /dealers: "ลิงก์ช่องทาง" panel — ready-made registration links with utm per channel (24.10.26) */
.lk-row { border: 1px solid var(--gf-line); border-radius: 10px; padding: 10px 12px 12px; margin-bottom: 10px; background: #fff; }
.lk-row h3 { margin: 0 0 2px; font-size: 14.5px; }
.lk-d { font-size: 12.5px; color: var(--gf-muted); margin-bottom: 7px; }
.lk-url { display: block; font-size: 12px; line-height: 1.5; background: var(--gf-tint-2); border-radius: 8px; padding: 8px 10px; margin-bottom: 8px; word-break: break-all; user-select: all; }
.lk-name { margin-bottom: 14px; }
.lk-note { margin-top: 4px; }

/* /dealers: the four tool buttons live as icons in the page-heading row (owner, 24.10.26) */
.gf-head .hd-acts { margin-left: auto; display: inline-flex; gap: 8px; align-self: center; }
.gf-head .hd-acts > span { display: contents; }
.hd-ic { width: 38px; height: 38px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--gf-line-strong); border-radius: 10px; background: #fff; color: var(--gf-navy); font-size: 17px; line-height: 1; cursor: pointer; text-decoration: none; }
.hd-ic:hover { background: var(--gf-tint-2); border-color: var(--gf-navy); }
@media (max-width: 760px) { .hd-ic { width: 34px; height: 34px; font-size: 15.5px; } }

/* sub-menus folded by default (owner, 25.10.26) — the caret on the parent item unfolds them */
.app-shell > aside.sidebar .sub-nav.folded { display: none; }
.app-shell > aside.sidebar .nav-item .nav-caret { margin-left: auto; width: 24px; height: 24px; flex: none; display: inline-flex; align-items: center; justify-content: center; border-radius: 7px; font-size: 11px; opacity: .72; transition: transform .15s; }
.app-shell > aside.sidebar .nav-item .nav-caret.open { transform: rotate(90deg); }
.app-shell > aside.sidebar .nav-item .nav-caret:hover { background: rgb(255 255 255 / 16%); opacity: 1; }
.app-shell > aside.sidebar .nav-item.active .nav-caret:hover { background: rgb(11 42 134 / 10%); }
html.nav-collapsed .nav-caret { display: none; }
@media (max-width: 960px) { .nav-caret { display: none; } }

/* "ความยาว" (roll length) right after หน้ากว้าง on every 3M product table (owner, 26.10.26) — class gc-len, from GFRollLength in product-group.js.
   Phones keep their short column sets, so it is hidden there (the 3M product page shows it). */
.gf-page .pd-table td.gc-len { color: var(--gf-ink); }
.gf-page .ct-table .ct-w-len, .gf-page .ct-table .ct-w-w { width: 6%; } .gf-page .ct-table th.gc-wd, .gf-page .ct-table th.gc-len { white-space: nowrap; }
.gf-page .mg-table .mg-w-len { width: 6%; }
.sk-table .sk-w-len { width: 7%; } .sk-table .sk-w-note { width: 13%; } .gf-page .sk-table td.gc-sku { overflow: hidden; text-overflow: ellipsis; }
.pz-table col.pz-c-len { width: 80px; }
@media (max-width: 760px) {
  html body.gf-page .ct-table .gc-len, html body.gf-page .mg-table .gc-len, html body.gf-page .sk-table .gc-len, html body.gf-page .pz-table .gc-len { display: none !important; }
  .pz-table col.pz-c-len { width: 0; }
}

/* /pricing one model at a time + net profit (owner, 26.10.26): ‹ › model picker, two roll-only groups, net profit panel under the table */
.pz-g-c5 { --pz-a: #93370d; --pz-t: #fdecd3; }
.pz-g-c1 { --pz-a: #0e7090; --pz-t: #dff4fa; }
.gf-page .pz-gseg button.on.pz-gb-c5 { background: #b54708; }
.gf-page .pz-gseg button.on.pz-gb-c1 { background: #0e7090; }
.pz-model-select { min-width: 260px; font-weight: 600; }
.pz-step { width: 38px; height: 38px; flex: none; border: 1px solid var(--gf-line-strong); border-radius: 10px; background: #fff; color: var(--gf-navy); font-size: 20px; line-height: 1; cursor: pointer; }
.pz-step:hover:not(:disabled) { background: var(--gf-tint-2); border-color: var(--gf-navy); }
.pz-step:disabled { opacity: .35; cursor: default; }
.pz-net { margin-top: 22px; }
.pz-net-h { margin: 0 0 4px; font-size: 18px; color: var(--gf-ink); }
.pz-net-m { color: var(--gf-navy); }
.pz-net-note { margin: 0 0 10px; }
.pz-net .wrap { margin-bottom: 12px; }
.gf-page .pz-net-cfg, .gf-page .pz-net-table { min-width: 0; width: 100%; }
.gf-page .pz-net-cfg { max-width: 640px; }
.pz-net-table td, .pz-net-cfg td { padding: 6px 10px; }
.pz-net-table tr.pz-first td { border-top: 2px solid var(--gf-line-strong); }
.pz-net-table .pz-pos { color: #067647; font-weight: 600; }
.pz-net-table .pz-neg { color: #b42318; font-weight: 600; }
.pz-net-table tr.pz-g-c5 td, .pz-net-table tr.pz-g-c1 td { background: #fcfcfd; }
.pz-net-cfg input.pz-in.pz-saved { animation: pz-flash 1.4s ease-out; }
@media (max-width: 600px) { .pz-model-select { min-width: 0; flex: 1 1 auto; } }

/* /pricing manage price groups (owner, 26.10.26): "⚙ จัดการกลุ่ม" panel under the toolbar; groups added by hand (code g1, g2 …) get a colour from this cycle */
.pz-g-g1, .pz-g-g7 { --pz-a: #b42318; --pz-t: #fee4e2; }
.pz-g-g2, .pz-g-g8 { --pz-a: #0e7090; --pz-t: #dff4fa; }
.pz-g-g3, .pz-g-g9 { --pz-a: #4f46a5; --pz-t: #eceafc; }
.pz-g-g4, .pz-g-g10 { --pz-a: #3b7a0a; --pz-t: #eaf6dc; }
.pz-g-g5, .pz-g-g11 { --pz-a: #a1440c; --pz-t: #fdebd9; }
.pz-g-g6, .pz-g-g12 { --pz-a: #8a1f66; --pz-t: #fbe6f3; }
.pz-manage-btn { height: 38px; padding: 0 12px; border: 1px solid var(--gf-line-strong); border-radius: 10px; background: #fff; color: var(--gf-navy); font: inherit; font-size: 14px; cursor: pointer; white-space: nowrap; }
.pz-manage-btn:hover, .pz-manage-btn.on { background: var(--gf-tint-2); border-color: var(--gf-navy); }
.pz-manage { margin-top: 10px; padding: 12px 14px; border: 1px solid var(--gf-line-strong); border-radius: 12px; background: #fff; max-width: 640px; }
.pz-manage-h { font-weight: 600; margin-bottom: 8px; }
.pz-manage-h small { font-weight: 400; margin-left: 6px; }
.pz-grow { display: flex; align-items: center; gap: 8px; padding: 4px 0; border-bottom: 1px dashed #edf0f5; }
.pz-grow .pz-tag { width: 16px; height: 16px; padding: 0; flex: none; }
.pz-gname { flex: 1 1 auto; min-width: 0; height: 34px; padding: 0 10px; border: 1px solid var(--gf-line-strong); border-radius: 8px; font: inherit; font-size: 14px; }
.pz-gname:focus { outline: 0; border-color: var(--gf-navy); box-shadow: 0 0 0 3px rgb(11 42 134 / 14%); }
.pz-gkind, .pz-gfixed { flex: none; font-size: 12.5px; color: var(--gf-muted); white-space: nowrap; }
.pz-gdel { flex: none; width: 30px; height: 30px; border: 1px solid #fda29b; border-radius: 8px; background: #fff5f4; color: #b42318; cursor: pointer; }
.pz-gdel:hover { background: #fee4e2; }
.pz-gnew { display: flex; gap: 8px; margin-top: 10px; flex-wrap: wrap; }
.pz-gnew .pd-select { height: 34px; }
.pz-gadd { height: 34px; padding: 0 14px; border: 0; border-radius: 8px; background: var(--gf-navy); color: #fff; font: inherit; font-size: 14px; cursor: pointer; }
.pz-gadd:hover { filter: brightness(1.12); }
@media (max-width: 600px) { .pz-gname { font-size: 16px; } .pz-manage { max-width: none; } }

/* /pricing easy view (owner, 26.10.26: simple enough to use without explanation): steps line, one block per price group with ONE % box
   for every width of the model, big selling price, plain "กำไร / ขาดทุน" badge. The detailed table stays behind the "แบบละเอียด" switch. */
.pz-steps { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 14px; padding: 0; list-style: none; counter-reset: pzs; }
.pz-steps li { counter-increment: pzs; display: inline-flex; align-items: center; gap: 8px; padding: 6px 12px; border-radius: 999px; background: #eef4ff; color: var(--gf-navy); font-size: 14px; }
.pz-steps li::before { content: counter(pzs); display: inline-flex; width: 22px; height: 22px; align-items: center; justify-content: center; border-radius: 50%; background: var(--gf-navy); color: #fff; font-size: 12.5px; font-weight: 700; }
.pz-view { flex: none; }
/* Model search filters the picker and its arrows together; keep keyboard focus while typing. */
html body.gf-page .pz-search-wrap { position: relative; flex: 1 1 180px; min-width: 160px; max-width: 260px; }
html body.gf-page .pz-search { width: 100%; min-width: 0; padding-right: 34px; }
html body.gf-page .pz-search::-webkit-search-cancel-button { display: none; }
html body.gf-page .pz-search-clear { position: absolute; right: 3px; top: 3px; bottom: 3px; width: 30px; border: 0; border-radius: 6px; color: var(--gf-ink-soft); background: transparent; font-size: 22px; cursor: pointer; }
html body.gf-page .pz-search-clear:hover { background: var(--gf-tint-2); }
html body.gf-page .pz-search-clear:focus-visible { outline: 2px solid var(--gf-navy); }
html body.gf-page .pz-model-nav { display: flex; align-items: center; gap: 8px; flex: 1 1 330px; min-width: 240px; max-width: 500px; }
html body.gf-page .pz-model-nav .pz-model-select { width: 100%; flex: 1 1 0; min-width: 0; max-width: none; }
@media (max-width: 760px) {
  html body.gf-page .pz-search-wrap { flex: 1 1 100%; min-width: 0; max-width: none; }
  html body.gf-page .pz-search { height: 44px; font-size: 16px; padding-right: 46px; }
  html body.gf-page .pz-search-clear { width: 44px; top: 0; bottom: 0; right: 0; }
  html body.gf-page .pz-model-nav { flex: 1 1 100%; min-width: 0; max-width: none; }
}
.pz-easy-g { margin-bottom: 14px; padding: 12px 14px; border: 1px solid var(--gf-line-strong); border-left: 5px solid var(--pz-a, #98a2b3); border-radius: 12px; background: #fff; }
.pz-easy-h { display: flex; align-items: center; flex-wrap: wrap; gap: 10px 14px; margin-bottom: 8px; }
.pz-easy-h .pz-tag { font-size: 15px; font-weight: 600; padding: 3px 12px; }
.pz-easy-l { display: inline-flex; align-items: center; gap: 8px; font-size: 14px; color: var(--gf-ink); }
.pz-easy-pct { width: 92px; height: 40px; font-size: 18px; font-weight: 700; text-align: right; }
.pz-easy-k { margin-left: auto; font-size: 12.5px; color: var(--gf-muted); }
.gf-page .pz-easy-table { min-width: 0; width: 100%; }
.pz-easy-table td, .pz-easy-table th { padding: 8px 10px; vertical-align: middle; }
.pz-easy-w { font-weight: 600; }
.pz-easy-w small, .pz-easy-price small, .pz-easy-table td small.mg-basis { display: block; font-weight: 400; font-size: 11.5px; color: var(--gf-muted); }
.pz-easy-price b { font-size: 20px; color: var(--gf-navy); font-variant-numeric: tabular-nums; }
.pz-easy-price b + small { display: inline; margin-left: 4px; }
.pz-easy-own { color: #b54708 !important; }
.pz-easy-net { display: inline-block; padding: 3px 10px; border-radius: 999px; font-size: 14px; font-weight: 600; }
.pz-easy-net.pz-pos { background: #dcfae6; color: #067647; }
.pz-easy-net.pz-neg { background: #fee4e2; color: #b42318; }
.pz-easy-table .pz-empty { color: var(--gf-muted); font-size: 13px; }
.pz-easy-cfg { margin-top: 6px; padding: 10px 14px; border: 1px dashed var(--gf-line-strong); border-radius: 12px; background: #fcfcfd; }
.pz-easy-cfg summary { cursor: pointer; font-weight: 600; color: var(--gf-navy); }
.pz-easy-cfg .pz-net-cfg { max-width: 640px; margin-top: 8px; }
@media (max-width: 600px) { .pz-easy-pct { font-size: 18px; } .pz-easy-k { margin-left: 0; } .pz-steps li { font-size: 13px; } }

/* /pricing: the แบบง่าย / แบบละเอียด switch comes first in the toolbar and stands out (owner, 26.10.26) */
html body.gf-page .pz-view { padding: 4px; border: 2px solid var(--gf-navy); border-radius: 14px; background: #eef4ff; box-shadow: 0 2px 8px rgb(11 42 134 / 14%); }
html body.gf-page .pz-view button { height: 40px; padding: 0 20px; border-radius: 10px; font-size: 16px; font-weight: 700; color: var(--gf-navy); }
html body.gf-page .pz-view button.on { background: var(--gf-navy); color: #fff; }
html body.gf-page .pz-view button:not(.on):hover { background: #dbe7ff; }
@media (max-width: 600px) { html body.gf-page .pz-view { order: -1; width: 100%; } html body.gf-page .pz-view button { flex: 1; padding: 0 8px; } }
.pz-easy-table td small.pz-easy-src { display: block; margin-top: 2px; font-size: 11px; color: var(--gf-muted); white-space: normal; max-width: 110px; margin-left: auto; line-height: 1.3; }
.pz-easy-table th.pz-easy-costh small { display: block; font-weight: 400; font-size: 11px; opacity: .85; white-space: normal; }
/* loss reason + advice under the red badge, and the one-click fix in the group header (owner, 26.10.26) */
.pz-easy-why { margin-top: 6px; max-width: 300px; padding: 6px 10px; border-radius: 8px; background: #fff5f4; border: 1px solid #fecdca; color: #7a271a; font-size: 12.5px; line-height: 1.5; white-space: normal; }
.pz-easy-fixslot { display: inline-flex; }
.pz-easy-fix { height: 34px; padding: 0 14px; border: 1px solid #f79009; border-radius: 999px; background: #fffaeb; color: #93370d; font: inherit; font-size: 13.5px; font-weight: 600; cursor: pointer; }
.pz-easy-fix:hover { background: #fef0c7; }
/* plain-language loss box: "ทุกๆ ราคาขาย 100 บาท …" lines + a 💡 tip (owner, 26.10.26) */
.pz-easy-why { max-width: 280px; font-size: 13.5px; line-height: 1.6; color: #55160c; }
.pz-easy-why .pz-why-h { font-weight: 700; margin-bottom: 2px; }
.pz-easy-why .pz-why-lose { color: #b42318; font-weight: 600; }
.pz-easy-why .pz-why-tip { margin-top: 6px; padding-top: 6px; border-top: 1px dashed #fda29b; color: #7a2e0e; font-weight: 500; }
/* easy view, compact (owner, 26.10.26): fixed column widths, left-aligned cells, loss = badge + one-line tip with the long reason folded */
.gf-page .pz-easy-table { table-layout: fixed; font-size: 14px; }
.pz-easy-table col.pz-ec-w { width: 72px; } .pz-easy-table col.pz-ec-l { width: 84px; } .pz-easy-table col.pz-ec-a { width: 96px; }
.pz-easy-table col.pz-ec-c { width: 128px; } .pz-easy-table col.pz-ec-p { width: 170px; } .pz-easy-table col.pz-ec-n { width: 250px; } .pz-easy-table col.pz-ec-m { width: auto; }
.pz-easy-table td, .pz-easy-table th { padding: 6px 8px; text-align: left; }
.pz-easy-table th { font-size: 12.5px; }
.pz-easy-table td.pz-e-cost small.mg-basis { display: inline; margin-left: 3px; }
.pz-easy-table td small.pz-easy-src { display: block; max-width: none; margin: 1px 0 0; text-align: left; }
.pz-easy-price b { font-size: 18px; }
.pz-easy-table td .pz-why-tip { margin: 4px 0 0; padding: 0; border: 0; font-size: 12.5px; line-height: 1.45; color: #7a2e0e; }
details.pz-easy-why { margin-top: 3px; max-width: none; padding: 0; border: 0; background: none; font-size: 12.5px; }
details.pz-easy-why summary { cursor: pointer; color: #b42318; font-size: 12px; }
details.pz-easy-why[open] { padding: 6px 10px; border: 1px solid #fecdca; border-radius: 8px; background: #fff5f4; }
.pz-easy-table td.pz-cmp { padding: 4px 8px; }
.pz-easy-table .pz-ci { gap: 6px; min-height: 24px; }
.pz-easy-table .pz-diff { white-space: nowrap; }
/* loss box fills its whole column (owner, 26.10.26) */
.pz-easy-table td .pz-easy-why, .pz-easy-table td details.pz-easy-why, .pz-easy-table td .pz-why-tip { max-width: none; width: 100%; box-sizing: border-box; }
.pz-easy-table td .pz-easy-net { margin-bottom: 2px; }

/* /pricing easy view on phones (owner, 26.10.26): every width becomes a small card — no sideways scrolling, big tap targets */
@media (max-width: 760px) {
  .pz-steps { flex-direction: column; gap: 6px; }
  .pz-steps li { width: 100%; font-size: 14px; }
  .pz-model-select { flex: 1 1 0; min-width: 0; height: 44px; font-size: 16px; }
  .pz-step { width: 44px; height: 44px; }
  .pz-manage-btn { height: 44px; flex: 1 1 100%; }
  .pz-easy-g { padding: 10px; border-left-width: 4px; }
  .pz-easy-h { gap: 8px; }
  .pz-easy-l { flex: 1 1 auto; }
  .pz-easy-pct { width: 104px; height: 46px; font-size: 20px; }
  .pz-easy-fixslot, .pz-easy-fix { width: 100%; }
  .pz-easy-fix { height: 42px; white-space: normal; }
  .pz-easy-k { margin-left: auto; }
  .gf-page .pz-easy-table { table-layout: auto; min-width: 0; width: 100%; }
  .pz-easy-table colgroup, .pz-easy-table thead { display: none; }
  .pz-easy-table, .pz-easy-table tbody { display: block; }
  .pz-easy-table tr { display: grid; grid-template-columns: repeat(6, 1fr); gap: 6px 8px; padding: 10px 4px; border-bottom: 1px solid var(--gf-line-strong); }
  .pz-easy-table tr:last-child { border-bottom: 0; }
  .pz-easy-table td { display: block; padding: 0; border: 0; background: none !important; min-width: 0; white-space: normal; }
  .pz-easy-table td[data-l]::before { content: attr(data-l); display: block; font-size: var(--gf-type-table); color: var(--gf-muted); font-weight: 400; margin-bottom: 1px; }
  .pz-easy-table td.pz-easy-w { grid-column: span 2; font-size: 17px; }
  .pz-easy-table td.pz-e-len, .pz-easy-table td.pz-e-area { grid-column: span 2; }
  .pz-easy-table td.pz-e-cost { grid-column: span 3; }
  .pz-easy-table td.pz-easy-price { grid-column: span 3; }
  .pz-easy-table td.pz-e-net, .pz-easy-table td.pz-cmp { grid-column: 1 / -1; }
  .pz-easy-price b { font-size: 22px; }
  .pz-easy-table .pz-ci { flex-wrap: wrap; min-height: 36px; font-size: 13.5px; }
  .pz-easy-table .pz-use { min-height: 36px; min-width: 52px; }
  .pz-easy-table td.pz-cmp { border-top: 1px dashed #edf0f5; padding-top: 6px; }
  .pz-net-cfg .pz-in { width: 100%; min-width: 0; }
  .pz-easy-cfg { padding: 8px 10px; }
  .pz-easy-cfg summary { font-size: 15px; }
}
@media (max-width: 760px) {
  .pz-steps { gap: 4px; margin-bottom: 10px; }
  .pz-steps li { padding: 4px 10px; font-size: 13px; }
  .pz-steps li::before { width: 20px; height: 20px; font-size: 12px; }
  .pz-easy-g .wrap { overflow: visible; border: 0; box-shadow: none; background: none; }
  .gf-page .pz-easy-table td, .gf-page .pz-easy-table th { border: 0 !important; }
  .pz-easy-table tr { row-gap: 12px; }
  .pz-easy-table td.pz-e-cost small.mg-basis { display: inline; }
  .pz-easy-table td small.pz-easy-src { margin-top: 2px; }
}
/* easy view: text in the net-profit cell must wrap inside its column (it ran over the price-list column) */
.pz-easy-table td.pz-e-net, .pz-easy-table td.pz-e-net * { white-space: normal; overflow-wrap: anywhere; }
.pz-easy-table td.pz-e-net .pz-easy-net { white-space: nowrap; }
.pz-easy-table td.pz-e-net { overflow: visible; }
.pz-easy-table col.pz-ec-n { width: 270px; }
.pz-easy-table td.pz-cmp .pz-ci { max-width: 440px; }
.pz-easy-table td.pz-cmp .pz-diff { margin-left: auto; }
/* easy view: leave room for the price-list column and never cut its numbers with "…" */
.pz-easy-table col.pz-ec-w { width: 64px; } .pz-easy-table col.pz-ec-l { width: 76px; } .pz-easy-table col.pz-ec-a { width: 88px; }
.pz-easy-table col.pz-ec-c { width: 120px; } .pz-easy-table col.pz-ec-p { width: 150px; } .pz-easy-table col.pz-ec-n { width: 240px; }
.pz-easy-table .pz-ci { flex-wrap: wrap; }
.pz-easy-table .pz-diff { flex: 0 1 auto; overflow: visible; text-overflow: clip; }

/* easy view: the group's controls are the FIRST COLUMN of its table (owner, 26.10.26); cells never keep a fixed height (they clipped their text on phones) */
.gf-page .pz-easy-table td, .gf-page .pz-easy-table tr { height: auto !important; }
.pz-easy-table col.pz-ec-g { width: 200px; }
.pz-easy-g { padding: 0; overflow: hidden; }
.pz-easy-g .wrap { border: 0; box-shadow: none; border-radius: 0; background: none; }
.pz-easy-table td.pz-e-ctl { vertical-align: top; padding: 12px 12px; background: var(--pz-t, #f2f4f7) !important; border-right: 1px solid var(--gf-line-strong); }
.pz-e-ctl .pz-tag { font-size: 15px; font-weight: 600; padding: 3px 12px; }
.pz-e-ctl .pz-easy-k { display: block; margin: 6px 0 10px; font-size: 12.5px; color: var(--gf-muted); }
.pz-e-ctl .pz-easy-l { display: flex; align-items: center; flex-wrap: nowrap; gap: 6px; font-size: 13px; color: var(--gf-ink); white-space: nowrap; }
.pz-e-ctl .pz-easy-l > span:first-child { flex: 0 0 auto; }
.pz-e-ctl .pz-easy-in { display: inline-flex; align-items: center; flex: 0 0 auto; gap: 4px; margin-top: 0; }
.pz-e-ctl .pz-easy-pct { width: 76px; flex: 0 0 76px; min-width: 0; padding-inline: 6px; font-size: 16px; }
.pz-e-ctl .pz-easy-fixslot { display: block; margin-top: 10px; }
.pz-e-ctl .pz-easy-fix { width: 100%; height: auto; min-height: 34px; padding: 6px 10px; border-radius: 12px; white-space: normal; line-height: 1.35; }
@media (max-width: 760px) {
  .pz-easy-g { padding: 0; border-left-width: 4px; }
  .pz-easy-table tr { padding: 10px 12px; }
  .pz-easy-table td.pz-e-ctl { grid-column: 1 / -1; border-right: 0; border-radius: 10px; padding: 10px 12px; margin-bottom: 4px; }
  .pz-easy-table td.pz-e-ctl[data-l]::before { content: none; }
  .pz-e-ctl .pz-easy-pct { width: 88px; flex-basis: 88px; font-size: 20px; }
}
/* easy view column widths with the controls column in front (fits a 1366px laptop without sideways scrolling) */
.pz-easy-table col.pz-ec-g { width: 168px; } .pz-easy-table col.pz-ec-w { width: 60px; } .pz-easy-table col.pz-ec-l { width: 70px; } .pz-easy-table col.pz-ec-a { width: 82px; }
.pz-easy-table col.pz-ec-c { width: 108px; } .pz-easy-table col.pz-ec-p { width: 132px; } .pz-easy-table col.pz-ec-n { width: 216px; }
.pz-easy-table td, .pz-easy-table th { padding-left: 6px; padding-right: 6px; }

/* easy view balance (owner, 26.10.26): column widths in % so the table scales from a 1366px laptop to a wide monitor; the price-list column keeps its items together instead of pushing them to the far edge */
@media (min-width: 761px) {
  .gf-page .pz-easy-table { min-width: 960px; }
  .pz-easy-table col.pz-ec-g { width: 14%; } .pz-easy-table col.pz-ec-w { width: 6%; } .pz-easy-table col.pz-ec-l { width: 7%; } .pz-easy-table col.pz-ec-a { width: 8%; }
  .pz-easy-table col.pz-ec-c { width: 11%; } .pz-easy-table col.pz-ec-p { width: 13%; } .pz-easy-table col.pz-ec-n { width: 21%; } .pz-easy-table col.pz-ec-m { width: auto; }
  .pz-easy-table th { white-space: normal; line-height: 1.3; vertical-align: middle; }
  .pz-easy-table td.pz-cmp .pz-ci { max-width: 340px; gap: 8px; }
  .pz-easy-table td.pz-cmp .pz-diff { margin-left: 0; }
  .pz-easy-table td.pz-cmp .pz-cl { width: 44px; }
  .pz-easy-table td.pz-cmp .pz-cur { width: 52px; }
}
@media (min-width: 761px) {
  .pz-easy-table col.pz-ec-g { width: 13%; } .pz-easy-table col.pz-ec-p { width: 12%; } .pz-easy-table col.pz-ec-n { width: 19%; } .pz-easy-table col.pz-ec-c { width: 10%; }
  .pz-easy-table td.pz-cmp .pz-ci { flex-wrap: nowrap; }
}
.pz-easy-table th small { display: block; font-weight: 400; font-size: 11px; opacity: .85; white-space: normal; }
.pz-e-ctl .pz-tag { display: inline-block; max-width: 100%; box-sizing: border-box; white-space: normal; line-height: 1.35; }

/* easy view, price-list column: everything left-aligned in tidy columns (owner, 26.10.26) */
.pz-easy-table td.pz-cmp .pz-cur, .pz-easy-table td.pz-cmp .pz-diff { text-align: left; }
@media (min-width: 761px) {
  .pz-easy-table td.pz-cmp .pz-ci { display: grid; grid-template-columns: 46px 56px 118px auto; align-items: center; justify-content: start; justify-items: start; column-gap: 8px; max-width: none; }
  .pz-easy-table td.pz-cmp .pz-cur { width: auto; }
}
@media (min-width: 761px) {
  .pz-easy-table td.pz-cmp .pz-ci { grid-template-columns: 38px 50px 108px auto; column-gap: 5px; }
  .pz-easy-table td.pz-cmp .pz-diff { font-size: 11.5px; }
  .pz-easy-table col.pz-ec-n { width: 18%; }
}

/* group name stands out in the first column: solid group colour, white bold text (owner, 26.10.26) */
.pz-e-ctl .pz-tag { background: var(--pz-a, #344054); color: #fff; font-size: 17px; font-weight: 700; padding: 5px 16px; border-radius: 10px; letter-spacing: .1px; }
.pz-e-ctl .pz-easy-k { margin: 8px 0 12px; }

/* price-list column wording (owner, 26.10.26): "ราคาขายปัจจุบัน", longer labels (ปลีก ตร.ฟ. / แบ่งเมตร / เต็มม้วน / ราคาเริ่มต้น) */
@media (min-width: 761px) {
  .pz-easy-table td.pz-cmp .pz-ci { grid-template-columns: 62px 46px 100px auto; column-gap: 5px; }
  .pz-easy-table td.pz-cmp .pz-cl { width: auto; white-space: nowrap; font-size: 11.5px; }
  .pz-easy-table td.pz-cmp .pz-cur { width: auto; }
  .pz-easy-table col.pz-ec-g { width: 12%; } .pz-easy-table col.pz-ec-a { width: 7%; } .pz-easy-table col.pz-ec-n { width: 17%; }
}
.pz-easy-table th.pz-easy-cmph small { display: block; font-weight: 400; font-size: 11px; opacity: .9; line-height: 1.35; }
@media (max-width: 760px) { .pz-easy-table td.pz-cmp .pz-cl { width: 62px; } }

/* cost source ("เฉลี่ยจากสต๊อก N ม้วน") is its own column (owner, 26.10.26) */
.pz-easy-table td.pz-e-src { font-size: 12.5px; color: var(--gf-muted); white-space: normal; }
@media (min-width: 761px) {
  .gf-page .pz-easy-table { min-width: 1000px; }
  .pz-easy-table col.pz-ec-g { width: 11%; } .pz-easy-table col.pz-ec-w { width: 5%; } .pz-easy-table col.pz-ec-l { width: 6%; } .pz-easy-table col.pz-ec-a { width: 7%; }
  .pz-easy-table col.pz-ec-c { width: 8%; } .pz-easy-table col.pz-ec-s { width: 9%; } .pz-easy-table col.pz-ec-p { width: 11%; } .pz-easy-table col.pz-ec-n { width: 16%; }
}
@media (max-width: 760px) {
  .pz-easy-table td.pz-e-src { grid-column: span 3; align-self: end; }
  .pz-easy-table td.pz-easy-price { grid-column: 1 / -1; }
}
@media (min-width: 761px) {
  .pz-easy-table col.pz-ec-w { width: 6.5%; } .pz-easy-table col.pz-ec-n { width: 15.5%; } .pz-easy-table col.pz-ec-s { width: 8.5%; }
}
.pz-e-ctl .pz-tag { font-size: 16px; padding: 4px 10px; }
@media (min-width: 761px) {
  .pz-easy-table col.pz-ec-g { width: 12.5%; } .pz-easy-table col.pz-ec-n { width: 15%; } .pz-easy-table col.pz-ec-p { width: 10.5%; }
  .pz-easy-table td.pz-e-ctl { padding: 10px 8px; }
  .pz-e-ctl .pz-easy-fix { font-size: 12.5px; padding: 5px 8px; }
}
@media (min-width: 761px) {
  .pz-easy-table col.pz-ec-p { width: 12.5%; } .pz-easy-table col.pz-ec-n { width: 14.5%; } .pz-easy-table col.pz-ec-g { width: 12%; }
  .pz-easy-table th { overflow-wrap: anywhere; }
}
@media (min-width: 761px) {
  .pz-easy-table td.pz-cmp .pz-ci { grid-template-columns: 56px 44px 98px auto; column-gap: 4px; }
  .pz-easy-table col.pz-ec-s { width: 8%; } .pz-easy-table col.pz-ec-c { width: 7.5%; }
  .pz-easy-table td.pz-cmp { padding-left: 4px; padding-right: 4px; }
}
@media (min-width: 761px) { .pz-easy-table td.pz-e-cost small.mg-basis { display: block; margin-left: 0; } }
/* Keep the markup label, input and percent unit together without crowding adjacent cells. */
html body.gf-page .pz-easy-table th { white-space: normal; overflow-wrap: anywhere; }
@media (min-width: 761px) {
  .pz-easy-table col.pz-ec-g { width: 21%; }
  .pz-easy-table col.pz-ec-w, .pz-easy-table col.pz-ec-l { width: 5.5%; }
  .pz-easy-table col.pz-ec-a { width: 6.5%; }
  .pz-easy-table col.pz-ec-c, .pz-easy-table col.pz-ec-s { width: 7%; }
  .pz-easy-table col.pz-ec-p { width: 11%; }
  .pz-easy-table col.pz-ec-n { width: 12%; }
}

/* conditions page: "ตารางราคาปัจจุบัน" built from the current prices + save as picture (owner, 26.10.26) */
.pt-bar { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 10px 16px; margin: 4px 0 12px; }
.pt-title { display: flex; flex-direction: column; gap: 2px; }
.pt-title b { font-size: 18px; color: #0b2a86; }
.pt-title span { font-size: 13px; color: #667085; }
.pt-acts { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 10px; }
.pt-save, .pt-share { height: 44px; padding: 0 20px; border-radius: 12px; font: inherit; font-size: 15.5px; font-weight: 600; cursor: pointer; }
.pt-save { border: 0; background: #d7263d; color: #fff; box-shadow: 0 2px 8px rgb(215 38 61 / 30%); }
.pt-save:hover { filter: brightness(1.08); }
.pt-share { border: 2px solid #06c755; background: #fff; color: #05a346; }
.pt-share:hover { background: #effcf4; }
.pt-status { font-size: 13px; color: #067647; }
.pt-status.bad { color: #b42318; }
.pt-scroll { overflow-x: auto; border: 1px solid #d7deea; border-radius: 12px; }
.pt-table { width: 100%; border-collapse: collapse; font-size: 14px; min-width: 900px; }
.pt-table th, .pt-table td { padding: 7px 9px; border-bottom: 1px solid #e8ecf4; text-align: center; white-space: nowrap; }
.pt-table th { background: #eef2fb; color: #0b2a86; font-weight: 600; font-size: 13px; }
.pt-table th.pt-g { background: var(--pt-price-accent, var(--gf-navy)); color: #fff; }
.pt-table th.pt-s { background: var(--pt-price-tint, var(--gf-tint-2)); color: var(--pt-price-accent, var(--gf-navy)); }
.pt-table td.l, .pt-table th.l { text-align: left; }
.pt-table td.pt-cat { text-align: left; font-weight: 600; color: #0b2a86; background: #f7f9fe; vertical-align: top; border-right: 1px solid #e8ecf4; }
.pt-table td.pt-price { font-weight: 600; color: var(--pt-price-accent, var(--gf-navy)); font-variant-numeric: tabular-nums; }
.pt-table td.pt-num { color: var(--pt-price-accent, var(--gf-navy)); font-variant-numeric: tabular-nums; }
.pt-table td.pt-none { color: #b5bdcc; }
.pt-table tr.pt-first td { border-top: 2px solid #cfd8ec; }
.pt-cards { display: none; }
@media (max-width: 760px) {
  .pt-scroll { display: none; }
  .pt-cards { display: grid; gap: 10px; }
  .pt-card { border: 1px solid #d7deea; border-left: 4px solid #d7263d; border-radius: 12px; padding: 10px 12px; background: #fff; }
  .pt-card h4 { margin: 0; font-size: 16px; color: #0b2a86; }
  .pt-card p { margin: 2px 0 8px; font-size: 12.5px; color: #667085; }
  .pt-blk { margin-top: 8px; }
  .pt-bt { display: block; font-size: 12.5px; color: var(--pt-price-accent, var(--gf-muted)); margin-bottom: 4px; }
  .pt-chips { display: flex; flex-wrap: wrap; gap: 6px; }
  .pt-chip { display: inline-flex; flex-direction: column; align-items: center; min-width: 62px; padding: 4px 10px; border-radius: 10px; background: var(--pt-price-tint, var(--gf-tint-2)); border: 1px solid var(--pt-price-line, var(--gf-line)); }
  .pt-chip small { font-size: 11px; color: #667085; }
  .pt-chip b { font-size: 16px; color: var(--pt-price-accent, var(--gf-navy)); font-variant-numeric: tabular-nums; }
  .pt-bar { flex-direction: column; align-items: stretch; }
  .pt-save, .pt-share { width: 100%; height: 48px; }
}

/* table pop-up (the picture icon beside the calculator search) + "ดูตารางราคา" buttons on the group cards (owner, 26.10.26: the old price images are gone) */
body.pt-lock { overflow: hidden; }
.pt-modal { position: fixed; inset: 0; z-index: 300; display: flex; align-items: center; justify-content: center; padding: 18px; background: rgb(8 24 64 / 68%); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
.pt-mcard { display: flex; flex-direction: column; width: min(1240px, 100%); max-height: 100%; background: #fff; border-radius: 18px; box-shadow: 0 30px 80px rgb(8 24 64 / 35%); overflow: hidden; }
.pt-mhead { display: flex; align-items: center; gap: 12px; padding: 12px 16px; background: #0b2a86; color: #fff; }
.pt-mhead strong { font-size: 17px; }
.pt-mhead span { flex: 1; font-size: 13px; opacity: .85; }
.pt-x { width: 38px; height: 38px; border: 0; border-radius: 10px; background: rgb(255 255 255 / 16%); color: #fff; font-size: 16px; cursor: pointer; }
.pt-x:hover { background: rgb(255 255 255 / 30%); }
.pt-mbody { padding: 14px 16px 18px; overflow: auto; }
.pt-mbody .pt-title { display: none; }
.pt-mbody .pt-bar { justify-content: flex-end; }
.cond-open { margin-top: auto; padding-top: 12px; }
.cond-thumb { display: block; text-decoration: none; border: 1px solid var(--line, #d7deea); border-radius: 14px; overflow: hidden; background: #fff; color: #0b2f5c; box-shadow: 0 2px 10px rgb(11 47 92 / 8%); cursor: zoom-in; transition: border-color .18s, box-shadow .18s, transform .18s; }
.cond-thumb:hover, .cond-thumb:focus-visible { border-color: #1677d2; box-shadow: 0 8px 20px rgb(11 47 92 / 14%); transform: translateY(-2px); outline: 0; }
.cond-thumb-img { display: block; aspect-ratio: 1456 / 940; background: linear-gradient(110deg, #eef5fb 30%, #f8fbfe 50%, #eef5fb 70%); background-size: 200% 100%; animation: pt-shimmer 1.4s linear infinite; }
.cond-thumb.ready .cond-thumb-img { animation: none; background: #f4f8fc; }
.cond-thumb-img img { display: block; width: 100%; height: 100%; object-fit: contain; object-position: top center; }
.cond-thumb:not(.ready) img { visibility: hidden; }
.cond-thumb-cap { display: block; padding: 10px 12px; font-size: 13.5px; font-weight: 600; text-align: center; border-top: 1px solid var(--line, #d7deea); background: #f7fbff; }
@keyframes pt-shimmer { to { background-position: -200% 0; } }
@media (max-width: 760px) { .pt-modal { padding: 0; } .pt-mcard { border-radius: 0; height: 100%; } .pt-mhead span { display: none; } .pt-mhead strong { flex: 1; } }
@media print { .pt-modal { display: none !important; } }
.pt-copy { height: 44px; padding: 0 18px; border: 2px solid #06c755; border-radius: 12px; background: #fff; color: #05a346; font: inherit; font-size: 15px; font-weight: 600; cursor: pointer; }
.pt-copy:hover { background: #effcf4; }
.pt-status { max-width: 360px; line-height: 1.4; }
@media (max-width: 760px) { .pt-copy { width: 100%; height: 48px; } .pt-status { max-width: none; } }

/* "ตารางราคา" button in the heading row of the product pages + group tabs inside the pop-up (owner, 26.10.26) */
.gf-head .hd-acts .pt-open-btn, .pt-open-btn { display: inline-flex; align-items: center; gap: 7px; height: 44px; padding: 0 16px 0 13px; border: 1px solid #f6c5c7; border-radius: 12px; background: #fdecec; color: #c4161c; font: inherit; font-size: 14.5px; white-space: nowrap; cursor: pointer; transition: background .18s, border-color .18s, color .18s; }
.pt-open-btn svg { width: 20px; height: 20px; flex: 0 0 auto; }
.pt-open-btn:hover { background: #d7263d; border-color: #d7263d; color: #fff; }
.pt-open-btn:focus-visible { outline: 2px solid #d7263d; outline-offset: 2px; }
.pt-mtabs { display: flex; flex-wrap: wrap; gap: 8px; padding: 10px 16px 0; }
.pt-mtabs button { height: 38px; padding: 0 16px; border: 2px solid #0b2a86; border-radius: 10px; background: #fff; color: #0b2a86; font: inherit; font-weight: 600; font-size: 14px; cursor: pointer; }
.pt-mtabs button.on { background: #0b2a86; color: #fff; }
@media (max-width: 760px) { .gf-head .hd-acts { margin-left: 0; width: 100%; } .gf-head .hd-acts .pt-open-btn { width: 100%; justify-content: center; } .pt-mtabs button { flex: 1 1 auto; } }
@media print { .pt-open-btn { display: none !important; } }

/* small line icons beside the filter buttons (owner, 26.10.26) */
.gf-ic { width: 16px; height: 16px; flex: 0 0 auto; }
.sk-seg button:not(.on) .gf-ic.ic-ok, .tabs .tab:not(.on) .gf-ic.ic-ok { color: #067647; }
.sk-seg button:not(.on) .gf-ic.ic-bad, .tabs .tab:not(.on) .gf-ic.ic-bad { color: #d92d20; }
.sk-seg button:not(.on) .gf-ic.ic-warn, .tabs .tab:not(.on) .gf-ic.ic-warn { color: #dc6803; }
.sk-seg button:not(.on) .gf-ic.ic-info, .tabs .tab:not(.on) .gf-ic.ic-info { color: #1570ef; }
.sk-seg button:not(.on) .gf-ic.ic-muted, .tabs .tab:not(.on) .gf-ic.ic-muted { color: #667085; }
.tabs .tab { display: inline-flex; align-items: center; gap: 6px; }
/* filter buttons with icons never wrap their label; on a phone the strip scrolls sideways inside its own box */
.sk-seg button { white-space: nowrap; }
@media (max-width: 600px) {
  .sk-seg { max-width: 100%; overflow-x: auto; scrollbar-width: none; }
  .sk-seg::-webkit-scrollbar { display: none; }
  .sk-seg button { padding: 0 9px; gap: 5px; flex: 0 0 auto; }
  .sk-seg button .cnt { margin-left: 1px; }
  .tabs.pu-chips { flex-wrap: wrap; }
}

/* the table pop-up slides in from the right and slides back out (owner, 26.10.26: "สไลด์จากด้านขวา สมูทๆ") */
.pt-modal { background: transparent; -webkit-backdrop-filter: none; backdrop-filter: none; padding: 0; justify-content: flex-end; align-items: stretch; overflow: hidden; }
.pt-modal::before { content: ""; position: absolute; inset: 0; background: rgb(8 24 64 / 62%); -webkit-backdrop-filter: blur(5px); backdrop-filter: blur(5px); opacity: 0; transition: opacity .34s ease; }
.pt-modal.open::before { opacity: 1; }
.pt-mcard { position: relative; z-index: 1; width: min(1240px, 100%); height: 100%; max-height: 100%; border-radius: 22px 0 0 22px; box-shadow: -24px 0 70px rgb(8 24 64 / 38%); transform: translateX(104%); transition: transform .42s cubic-bezier(.22, 1, .36, 1); will-change: transform; }
.pt-modal.open .pt-mcard { transform: translateX(0); }
.pt-modal.closing::before { opacity: 0; transition-duration: .3s; }
.pt-modal.closing .pt-mcard { transform: translateX(104%); transition: transform .3s cubic-bezier(.4, 0, 1, 1); }
.pt-modal.closing { pointer-events: none; }
@media (max-width: 760px) { .pt-mcard { width: 100%; border-radius: 0; } }
@media (prefers-reduced-motion: reduce) { .pt-modal::before, .pt-mcard, .pt-modal.closing .pt-mcard { transition-duration: .01s !important; } }

/* /pricing simple view: the calculated selling price is bold (owner, 26.10.26) */
html body .pz-easy-price b { font-weight: 600 !important; }
/* Keep the converted unit price readable while secondary to the main amount. */
html body .pz-easy-price .pz-easy-sub { font-weight: 600 !important; font-size: 13px; color: var(--gf-navy); margin-top: 3px; line-height: 1.45; }

/* /pricing: one shared header; independent colored row groups retain their controls. */
.pz-easy-grid { margin-bottom: 14px; background: #fff; border-color: var(--gf-line-strong); }
@media (min-width: 761px) {
  .pz-easy-grid col.pz-ec-g { width: 20.5%; }
  .pz-easy-grid col.pz-ec-s { width: 6.5%; }
  .pz-easy-grid col.pz-ec-p { width: 12%; }
  .pz-easy-table .pz-easy-group .pz-e-ctl { border-left: 4px solid var(--pz-a, var(--gf-line-strong)); }
  .pz-easy-table > tbody + tbody > tr:first-child > td { border-top: 2px solid var(--gf-line-strong); }
}
@media (max-width: 760px) {
  .pz-easy-grid { overflow: visible; border: 0; border-radius: 0; box-shadow: none; background: none; }
  .pz-easy-table .pz-easy-group { margin-bottom: 12px; border: 1px solid var(--gf-line-strong); border-left: 4px solid var(--pz-a, var(--gf-line-strong)); border-radius: 12px; background: #fff; overflow: hidden; }
  .pz-easy-table .pz-easy-group:last-child { margin-bottom: 0; }
}

/* Keep the price-group badge and its selling unit on the same row. */
.pz-e-ctl .pz-easy-group-title { display: flex; align-items: center; flex-wrap: nowrap; gap: 8px; min-width: 0; margin-bottom: 12px; }
.pz-e-ctl .pz-easy-group-title .pz-tag { flex: 0 1 auto; min-width: 0; overflow-wrap: anywhere; }
.pz-e-ctl .pz-easy-group-title .pz-easy-k { display: inline; flex: 0 0 auto; margin: 0; white-space: nowrap; }

/* Give net-profit explanations more room while retaining usable controls and comparison actions. */
@media (min-width: 761px) {
  .gf-page .pz-easy-grid .pz-easy-table { min-width: 1048px; }
  .pz-easy-grid col.pz-ec-g { width: 210px; }
  .pz-easy-grid col.pz-ec-w, .pz-easy-grid col.pz-ec-l { width: 4.5%; }
  .pz-easy-grid col.pz-ec-a { width: 5.5%; }
  .pz-easy-grid col.pz-ec-c { width: 6.5%; }
  .pz-easy-grid col.pz-ec-s { width: 6%; }
  .pz-easy-grid col.pz-ec-p { width: 11.5%; }
  .pz-easy-grid col.pz-ec-n { width: 18%; }
  .pz-easy-grid .pz-easy-table th { padding-inline: 4px; }
}
@media (min-width: 1500px) { .pz-easy-grid col.pz-ec-g { width: 18%; } }

/* /pricing group controls: softer colours only; retain the existing layout and behaviour. */
.pz-easy-table td.pz-e-ctl { background: #fff !important; }
.pz-easy-table .pz-e-ctl .pz-tag { background: var(--pz-t, var(--gf-tint-2)); color: var(--pz-a, var(--gf-navy)); }
.pz-easy-table .pz-e-ctl .pz-easy-l { color: var(--gf-ink-soft); }
.pz-easy-table .pz-e-ctl .pz-easy-pct { color: var(--gf-ink); }
.pz-easy-table .pz-e-ctl .pz-easy-pct:not(.bad) { background: #fff; border-color: var(--gf-line-strong); }
.pz-easy-table .pz-e-ctl .pz-easy-pct:not(.bad):focus { border-color: var(--gf-navy) !important; box-shadow: 0 0 0 3px rgb(11 42 134 / 14%); }
.pz-easy-table .pz-e-ctl .pz-easy-pct.bad { border-color: #f04438 !important; }
.pz-easy-table .pz-e-ctl .pz-easy-pct::placeholder { color: var(--gf-muted); }
.pz-easy-table .pz-easy-group .pz-e-ctl { border-left-color: var(--pz-t, var(--gf-line)); }
@media (max-width: 760px) {
  .pz-easy-table .pz-easy-group { border-left-color: var(--pz-t, var(--gf-line)); }
}

/* /pricing: explicitly fill the shared markup from a selected width's current selling price. */
html body.gf-page .pz-current-tools { display: grid; gap: 6px; margin-top: 10px; min-width: 0; }
html body.gf-page .pz-current-ref { display: flex; align-items: center; gap: 6px; min-width: 0; font-size: 12px; color: var(--gf-ink-soft); }
html body.gf-page .pz-current-ref > span:first-child { flex: 0 0 auto; }
html body.gf-page .pz-current-width { width: 100%; min-width: 0; height: 34px; padding: 4px 6px; border: 1px solid var(--gf-line-strong); border-radius: 8px; background: #fff; color: var(--gf-ink); font: inherit; }
html body.gf-page .pz-current-single { color: var(--gf-ink); }
html body.gf-page .pz-current-use { width: 100%; min-height: 34px; padding: 6px; border: 1px solid var(--gf-line-strong); border-radius: 9px; background: var(--gf-tint-2); color: var(--gf-navy); font: inherit; font-size: 12px; line-height: 1.4; white-space: normal; cursor: pointer; }
html body.gf-page .pz-current-use:hover:not(:disabled) { border-color: var(--gf-navy); }
html body.gf-page .pz-current-use:disabled { color: var(--gf-muted); cursor: not-allowed; }
html body.gf-page .pz-current-width:focus-visible, html body.gf-page .pz-current-use:focus-visible { outline: 2px solid var(--gf-navy); outline-offset: 2px; }
html body.gf-page .pz-current-note { font-size: 12px; line-height: 1.4; white-space: normal; color: var(--gf-muted); }
html body.gf-page .pz-current-note:empty { display: none; }
@media (max-width: 760px) {
  html body.gf-page .pz-current-width, html body.gf-page .pz-current-use { min-height: 44px; }
  html body.gf-page .pz-current-width { width: auto; flex: 1 1 auto; }
}

/* Keep the two markup actions together, with concise labels and full tooltips. */
html body.gf-page .pz-easy-actions { display: flex; align-items: stretch; gap: 6px; min-width: 0; }
html body.gf-page .pz-easy-actions .pz-current-use { flex: 1 1 0; width: auto; min-width: 0; padding: 6px 3px; font-size: 11px; white-space: nowrap; }
html body.gf-page .pz-easy-actions .pz-easy-fixslot { flex: 1 1 0; min-width: 0; margin-top: 0; }
html body.gf-page .pz-easy-actions .pz-easy-fixslot:empty { display: none; }
html body.gf-page .pz-easy-actions .pz-easy-fix { height: 100%; min-height: 34px; padding: 6px 3px; border-radius: 9px; font-size: 11px; white-space: nowrap; }
@media (max-width: 760px) {
  html body.gf-page .pz-easy-actions .pz-current-use, html body.gf-page .pz-easy-actions .pz-easy-fix { min-height: 44px; font-size: 12px; }
}

/* Open the illustrated guide beside the calculator without losing experiments. */
.gf-head .hd-acts .pz-help-btn { display:inline-flex; align-items:center; justify-content:center; gap:7px; min-height:44px; padding:0 13px; border:1px solid var(--gf-line-strong); border-radius:12px; background:#fff; color:var(--gf-navy); font:inherit; font-size:14.5px; text-decoration:none; white-space:nowrap; }
.pz-help-btn svg { width:20px; height:20px; flex:0 0 auto; }
.pz-help-btn:hover { background:var(--gf-tint); border-color:var(--gf-navy); }
.pz-help-btn:focus-visible { outline:2px solid var(--gf-navy); outline-offset:2px; }
@media (max-width:760px) { .gf-head .hd-acts:has(.pz-help-btn) > * { flex:1 1 0; width:auto; min-width:0; padding-inline:10px; } }
@media print { .pz-help-btn { display:none !important; } }

/* Pricing guide document (27.10.26): isolated from the app shell. */
:is(body.pz-guide,.pz-help-body){--navy:var(--gf-navy);--ink:var(--gf-ink);--line:var(--gf-line);--red:var(--gf-red)}:is(body.pz-guide,.pz-help-body) *{box-sizing:border-box}:is(body.pz-guide,.pz-help-body){margin:0;background:#f3f6fb;color:var(--ink);font:16px/1.8 Tahoma,"Leelawadee UI",sans-serif}:is(body.pz-guide,.pz-help-body) main{max-width:1080px;margin:0 auto;padding:34px 24px 56px}:is(body.pz-guide,.pz-help-body) header{background:var(--navy);color:white;padding:30px 34px;border-radius:18px}:is(body.pz-guide,.pz-help-body) h1{font-size:32px;line-height:1.4;margin:8px 0 10px}:is(body.pz-guide,.pz-help-body) header p{margin:4px 0;color:#e1e9ff}:is(body.pz-guide,.pz-help-body) .eyebrow{font-size:13px;letter-spacing:.04em}:is(body.pz-guide,.pz-help-body) nav{display:flex;flex-wrap:wrap;gap:8px;margin:20px 0}:is(body.pz-guide,.pz-help-body) nav a,:is(body.pz-guide,.pz-help-body) .print{border:1px solid var(--line);background:white;color:var(--navy);text-decoration:none;padding:8px 13px;border-radius:9px;font:inherit;font-size:14px;cursor:pointer}:is(body.pz-guide,.pz-help-body) section{background:white;border:1px solid var(--line);border-radius:15px;margin-top:18px;padding:26px 30px}:is(body.pz-guide,.pz-help-body) h2{font-size:23px;line-height:1.5;margin:0 0 15px;color:var(--navy)}:is(body.pz-guide,.pz-help-body) h3{font-size:17px;margin:20px 0 8px}:is(body.pz-guide,.pz-help-body) p{margin:10px 0}:is(body.pz-guide,.pz-help-body) ul,:is(body.pz-guide,.pz-help-body) ol{padding-left:25px;margin:8px 0}:is(body.pz-guide,.pz-help-body) li{padding:3px 0}:is(body.pz-guide,.pz-help-body) strong{font-weight:700}:is(body.pz-guide,.pz-help-body) .note{border-left:4px solid var(--navy);padding:13px 18px;background:#f0f4ff;border-radius:0 9px 9px 0;margin:16px 0}:is(body.pz-guide,.pz-help-body) .attention{border-left-color:#ed9b18;background:#fff7e8}:is(body.pz-guide,.pz-help-body) .step{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--navy);color:white;font-size:18px;margin-right:8px}:is(body.pz-guide,.pz-help-body) .n{display:inline-grid;place-items:center;min-width:23px;height:23px;border-radius:50%;background:var(--red);color:white;font-size:12px;font-weight:700;margin-right:6px;vertical-align:middle}:is(body.pz-guide,.pz-help-body) .table-scroll{overflow-x:auto}:is(body.pz-guide,.pz-help-body) table{width:100%;border-collapse:collapse;font-size:15px}:is(body.pz-guide,.pz-help-body) th,:is(body.pz-guide,.pz-help-body) td{text-align:left;border-bottom:1px solid var(--line);padding:12px 14px;vertical-align:top}:is(body.pz-guide,.pz-help-body) th{background:#edf2fc;color:var(--navy)}:is(body.pz-guide,.pz-help-body) figure{margin:20px 0 12px}:is(body.pz-guide,.pz-help-body) .picture{display:block;padding:0;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#f4f6fb;width:100%;cursor:zoom-in}:is(body.pz-guide,.pz-help-body) .picture img{display:block;width:100%;height:auto}:is(body.pz-guide,.pz-help-body) figcaption{font-size:13px;color:#5b6881;margin-top:6px}:is(body.pz-guide,.pz-help-body) .confirm figure{max-width:600px;margin-left:auto;margin-right:auto}:is(body.pz-guide,.pz-help-body) .green{color:#087f59}:is(body.pz-guide,.pz-help-body) .red{color:#be2929}:is(body.pz-guide,.pz-help-body) details{border-bottom:1px solid var(--line);padding:12px 0}:is(body.pz-guide,.pz-help-body) summary{cursor:pointer;font-weight:700;color:var(--navy)}:is(body.pz-guide,.pz-help-body) footer{color:#66728a;font-size:12px;padding:16px 4px}:is(body.pz-guide,.pz-help-body) dialog{width:min(96vw,1550px);max-height:95vh;border:0;border-radius:12px;padding:14px;background:white}:is(body.pz-guide,.pz-help-body) dialog::backdrop{background:#13213bbd}:is(body.pz-guide,.pz-help-body) dialog img{display:block;max-width:none;height:auto;margin:auto}:is(body.pz-guide,.pz-help-body) dialog{overflow:auto}:is(body.pz-guide,.pz-help-body) dialog button{position:sticky;left:0;top:0;z-index:1}:is(body.pz-guide,.pz-help-body) dialog button{display:block;margin:0 0 10px auto;border:0;border-radius:7px;padding:8px 14px;background:var(--navy);color:white;font:inherit}:is(body.pz-guide,.pz-help-body) .small{font-size:14px;color:#526078}:is(body.pz-guide,.pz-help-body) .legend{display:flex;gap:12px;flex-wrap:wrap}:is(body.pz-guide,.pz-help-body) .legend span{padding:4px 12px;background:#edf2fc;border-radius:20px}:is(body.pz-guide,.pz-help-body) a:where(:not(.gf-menu-fab)){color:var(--navy)}@media(max-width:640px){:is(body.pz-guide,.pz-help-body) main{padding:15px 12px 30px}:is(body.pz-guide,.pz-help-body) header{padding:24px 21px}:is(body.pz-guide,.pz-help-body) h1{font-size:26px}:is(body.pz-guide,.pz-help-body) section{padding:21px 17px}:is(body.pz-guide,.pz-help-body) h2{font-size:21px}:is(body.pz-guide,.pz-help-body) th,:is(body.pz-guide,.pz-help-body) td{padding:10px;font-size:14px}:is(body.pz-guide,.pz-help-body) nav a,:is(body.pz-guide,.pz-help-body) .print{font-size:13px}}@media print{:is(body.pz-guide,.pz-help-body){background:white;font-size:12px}:is(body.pz-guide,.pz-help-body) main{max-width:none;padding:0}:is(body.pz-guide,.pz-help-body) header{background:white;color:var(--navy);padding:0;border-radius:0}:is(body.pz-guide,.pz-help-body) header p{color:#46516b}:is(body.pz-guide,.pz-help-body) nav,:is(body.pz-guide,.pz-help-body) .print,:is(body.pz-guide,.pz-help-body) dialog{display:none}:is(body.pz-guide,.pz-help-body) section{break-inside:avoid;padding:16px;border-radius:0}:is(body.pz-guide,.pz-help-body) h1{font-size:24px}:is(body.pz-guide,.pz-help-body) h2{font-size:18px}:is(body.pz-guide,.pz-help-body) .picture{border:0}:is(body.pz-guide,.pz-help-body) figure{margin:12px 0}:is(body.pz-guide,.pz-help-body) footer{font-size:10px}}
/* End pricing guide document. */

/* /pricing help uses the same right-hand slide and backdrop as the price table. */
body.pz-help-lock { overflow:hidden; }
.pz-help-drawer { position:fixed; inset:0 0 0 auto; margin:0; padding:0; border:0; width:min(1240px,100%); max-width:100%; height:100%; height:100dvh; max-height:100%; border-radius:22px 0 0 22px; background:#fff; color:var(--gf-ink); box-shadow:-24px 0 70px rgb(8 24 64 / 38%); overflow:hidden; transform:translateX(104%); transition:transform .42s cubic-bezier(.22,1,.36,1); }
.pz-help-drawer[open] { display:flex; flex-direction:column; }
.pz-help-drawer.open { transform:translateX(0); }
.pz-help-drawer::backdrop { background:rgb(8 24 64 / 62%); backdrop-filter:blur(5px); opacity:0; transition:opacity .34s ease; }
.pz-help-drawer.open::backdrop { opacity:1; }
.pz-help-drawer.closing { transform:translateX(104%); transition:transform .3s cubic-bezier(.4,0,1,1); pointer-events:none; }
.pz-help-drawer.closing::backdrop { opacity:0; transition-duration:.3s; }
.pz-help-drawer > .pt-mhead { flex:0 0 auto; }
.pz-help-drawer > .pt-mhead .pt-x { min-width:44px; height:44px; flex-shrink:0; }
.pz-help-body { flex:1; min-height:0; overflow:auto; overscroll-behavior:contain; }
.pz-help-body[aria-busy],.pz-help-body:has(> .pz-help-retry) { padding:24px; }
.pz-help-retry { padding:10px 16px; border:1px solid var(--gf-line-strong); border-radius:10px; background:#fff; color:var(--gf-navy); font:inherit; cursor:pointer; }
@media (max-width:760px) { .pz-help-drawer { width:100%; border-radius:0; } }
@media (prefers-reduced-motion:reduce) { .pz-help-drawer,.pz-help-drawer::backdrop,.pz-help-drawer.closing { transition-duration:.01s !important; } }
@media print {
 body.pz-help-lock > :not(.pz-help-drawer) { display:none !important; }
 body.pz-help-lock,.pz-help-drawer[open],.pz-help-drawer .pz-help-body { height:auto !important; max-height:none !important; overflow:visible !important; }
 .pz-help-drawer[open] { display:block !important; position:static; width:100%; max-width:none; margin:0; transform:none !important; border-radius:0; box-shadow:none; }
 .pz-help-drawer > .pt-mhead,.pz-help-drawer::backdrop { display:none; }
}

/* Keep the document typography isolated from legacy page-wide headings. */
html body.gf-page .pz-help-drawer,html body.gf-page .pz-help-drawer * { font-family:var(--gf-font); }
.pz-help-body .eyebrow { display:block; color:#e1e9ff; letter-spacing:.04em; text-transform:none; }

/* ===== ตรวจข้อมูล CAR (/car/data-quality, 3.11.26): summary cards → sheet-tab chips → one row per (tab, field, issue);
   a row opens the texts found. Tabs follow the .mk-tabs look; status = small badge with a dot (owner: less text). ===== */
.dq-kpis .kpi.dq-zero { opacity: .55; }
.dq-tabs { display: flex; gap: 4px; padding: 4px; margin: 0 0 14px; background: #eef1f6; border-radius: 12px; overflow-x: auto; scrollbar-width: none; }
.dq-tabs::-webkit-scrollbar { display: none; }
.dq-tab { flex: none; display: inline-flex; align-items: center; gap: 6px; min-height: 36px; padding: 6px 12px; border: 0; border-radius: 9px; background: transparent; color: var(--gf-ink-soft); font: inherit; font-size: 13.5px; cursor: pointer; white-space: nowrap; }
.dq-tab:hover { background: #fff; color: var(--gf-ink); }
.dq-tab.on { background: var(--gf-navy); color: #fff; }
.dq-cnt { font-size: 12px; color: var(--gf-muted); }
.dq-tab.on .dq-cnt { color: #c9d6ff; }
.dq-card { background: #fff; border: 1px solid var(--gf-line); border-radius: 16px; box-shadow: var(--gf-shadow); overflow: hidden; }
.dq-table { width: 100%; border-collapse: collapse; table-layout: fixed; }
.dq-table th { background: var(--gf-navy); color: #fff; font-weight: 600; font-size: 13px; text-align: left; padding: 10px 12px; }
.dq-table td { padding: 10px 12px; border-top: 1px solid var(--gf-line); font-size: 14px; vertical-align: middle; overflow-wrap: anywhere; }
.dq-c-tab { width: 20%; } .dq-c-field { width: 26%; } .dq-c-issue { width: 26%; } .dq-c-n { width: 20%; text-align: right !important; } .dq-c-go { width: 8%; text-align: center !important; }
.dq-table.one-tab .dq-c-tab { display: none; }
.dq-row { cursor: pointer; }
.dq-row:hover td, .dq-row:focus-visible td { background: var(--gf-tint); }
.dq-row:focus-visible { outline: 2px solid var(--gf-blue); outline-offset: -2px; }
.dq-row .dq-c-go svg { color: var(--gf-muted); transition: transform .2s; }
.dq-row.open .dq-c-go svg { transform: rotate(90deg); }
.dq-row.open td { background: var(--gf-tint); }
.dq-sub-n { display: block; font-size: 12px; color: var(--gf-muted); }
.dq-badge { display: inline-flex; align-items: center; gap: 6px; padding: 2px 10px; border-radius: 999px; font-size: 12.5px; white-space: nowrap; }
.dq-dot { width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
.dq-badge.dq-red { background: var(--gf-red-tint); color: #b42318; }
.dq-badge.dq-amber { background: #fff4e5; color: #b54708; }
.dq-badge.dq-blue { background: var(--gf-tint); color: var(--gf-navy); }
.dq-open-row > td { padding: 0 12px 12px; background: var(--gf-tint); }
.dq-detail { background: #fff; border: 1px solid var(--gf-line); border-radius: 12px; overflow: hidden; }
.dq-sub { width: 100%; border-collapse: collapse; table-layout: fixed; }
.dq-sub th { background: #f4f6fb; color: var(--gf-ink-soft); font-weight: 600; font-size: 12.5px; text-align: left; padding: 8px 10px; }
.dq-sub td { padding: 8px 10px; border-top: 1px solid var(--gf-line); font-size: 13px; vertical-align: top; overflow-wrap: anywhere; }
.dq-sub th:first-child { width: 34%; } .dq-sub .dq-n { width: 12%; text-align: right; }
.dq-refs { color: var(--gf-ink-soft); }
.dq-muted { color: var(--gf-muted); }
.dq-more { padding: 8px 10px; border-top: 1px solid var(--gf-line); font-size: 12.5px; color: var(--gf-muted); }
.dq-empty { padding: 28px 16px; text-align: center; color: var(--gf-muted); }
.dq-empty.dq-ok { display: grid; justify-items: center; gap: 8px; color: #067647; background: #fff; border: 1px solid var(--gf-line); border-radius: 16px; }
.dq-empty.dq-err { color: #b42318; }
.dq-retry { display: block; margin: 12px auto 0; width: auto !important; padding: 0 16px; }
@media (max-width: 760px) {
  .dq-table thead { display: none; }
  .dq-table, .dq-table tbody, .dq-table tr, .dq-table td { display: block; width: auto !important; }
  .dq-table tr.dq-row { position: relative; padding: 10px 40px 10px 12px; border-top: 1px solid var(--gf-line); }
  .dq-table tr.dq-row:first-child { border-top: 0; }
  .dq-table tr.dq-row td { border: 0; padding: 2px 0; text-align: left !important; }
  .dq-table tr.dq-row td[data-l]::before { content: attr(data-l) " · "; color: var(--gf-muted); font-size: var(--gf-type-table); }
  .dq-table tr.dq-row .dq-c-go { position: absolute; right: 10px; top: 50%; transform: translateY(-50%); }
  .dq-table.one-tab tr.dq-row .dq-c-tab { display: none; }
  .dq-open-row > td { display: block; padding: 0 10px 10px; }
  .dq-sub thead { display: none; }
  .dq-sub, .dq-sub tbody, .dq-sub tr, .dq-sub td { display: block; width: auto !important; }
  .dq-sub tr { padding: 8px 10px; border-top: 1px solid var(--gf-line); }
  .dq-sub td { border: 0; padding: 1px 0; text-align: left !important; }
  .dq-sub td[data-l]::before { content: attr(data-l) " · "; color: var(--gf-muted); font-size: var(--gf-type-table); }
}

/* /admin "แก้ CAR" (3.11.26): a small drop-down of CAR CRM features per user — ticked = may add / change */
.adm-car { position: relative; }
.adm-car > summary { list-style: none; cursor: pointer; display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px;
  border: 1px solid var(--gf-line); border-radius: 999px; background: #fff; color: var(--gf-navy); font-size: 13px; white-space: nowrap; }
.adm-car > summary::-webkit-details-marker { display: none; }
.adm-car > summary::after { content: ""; width: 6px; height: 6px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor;
  transform: rotate(45deg) translateY(-2px); }
.adm-car[open] > summary { border-color: var(--gf-navy); }
.adm-car-menu { position: absolute; z-index: 30; right: 0; top: calc(100% + 6px); width: min(320px, 86vw); padding: 10px 12px;
  background: #fff; border: 1px solid var(--gf-line); border-radius: 14px; box-shadow: 0 12px 32px rgba(11, 42, 134, .14); }
.adm-car-menu label { display: flex !important; flex-wrap: nowrap; align-items: flex-start; gap: 8px; padding: 5px 2px; margin: 0;
  font-size: 13px; color: #101828; cursor: pointer; }
.adm-car-menu label input[type="checkbox"] { flex: 0 0 16px; width: 16px; height: 16px; margin: 2px 0 0; order: -1; }
.adm-car-menu label span { flex: 1; white-space: normal; }
.adm-car-menu label em { font-style: normal; font-size: 11px; color: #667085; background: #f2f4f7; border-radius: 999px; padding: 1px 8px; white-space: nowrap; }
.adm-car-menu p { margin: 6px 0 0; font-size: 12px; color: #667085; }
.adm-car-off { color: #98a2b3; }

/* ข้อมูลหลัก CAR (/car/master-data, 3.11.26): same look as ตรวจข้อมูล (dq-*); search + add on one row, aliases as chips,
   a row opens the theme's side drawer (.sk-dr) */
.md-kpis { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.md-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: 0 0 12px; }
.md-bar .pd-search { flex: 1 1 260px; width: auto; }
.md-off { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: var(--gf-ink-soft); white-space: nowrap; }
.md-add { margin-left: auto; white-space: nowrap; }
.md-table .md-c-name { width: 34%; } .md-table .md-c-sub { width: 18%; } .md-table .md-c-alias { width: 32%; }
.md-table .md-c-used { width: 10%; text-align: right !important; } .md-table .md-c-go { width: 6%; text-align: center !important; }
.md-chip { display: inline-block; margin: 2px 4px 2px 0; padding: 1px 8px; border-radius: 999px; background: var(--gf-tint); color: var(--gf-navy); font-size: 12.5px; }
.md-badge-off { margin-left: 8px; background: #f2f4f7; color: #667085; }
.md-offrow td { color: #98a2b3; }
.md-form { display: grid; gap: 14px; }
.md-field { display: grid; gap: 6px; }
.md-lab { font-size: 13px; color: var(--gf-ink-soft); }
.md-field input, .md-field textarea { width: 100%; max-width: none; min-height: 40px; padding: 8px 12px; border: 1px solid var(--gf-line-strong);
  border-radius: 10px; font: inherit; color: var(--gf-ink); background: #fff; }
.md-field input:disabled { background: #f4f6fb; color: var(--gf-muted); }
.md-field textarea { min-height: 130px; resize: vertical; }
.md-note { font-size: 12px; color: var(--gf-muted); }
.md-switch { display: flex; align-items: center; gap: 8px; font-size: 13.5px; }
.md-meta { display: flex; flex-wrap: wrap; gap: 6px 14px; padding: 10px 12px; border-radius: 12px; background: #f4f6fb; font-size: 13px; color: var(--gf-ink-soft); }
.md-err { color: #b42318; font-size: 13px; min-height: 0; }
.md-err:empty { display: none; }
.md-acts { display: flex; justify-content: flex-end; gap: 10px; }
.md-toast { position: fixed; left: 50%; bottom: 24px; transform: translateX(-50%); z-index: 200; max-width: min(520px, 92vw); padding: 10px 18px;
  border-radius: 12px; background: var(--gf-navy); color: #fff; font-size: 14px; box-shadow: 0 10px 30px rgb(16 24 40 / 25%); }
.md-toast.bad { background: #b42318; }
@media (max-width: 760px) {
  .md-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .md-add { margin-left: 0; width: 100%; min-height: 44px; }
  .md-bar .pd-search { min-height: 44px; flex-basis: 100%; }
  .md-acts .adm-btn { min-height: 44px; flex: 1; }
}

/* MHL → CAR CRM → pages (3.11.26): a group row inside the MHL sub-menu folds its own page list; nested list indents once more */
.app-shell > aside.sidebar .sub-nav .sub-nav.sub-nested { margin: 0 0 4px 14px; padding-left: 12px; }
.app-shell > aside.sidebar .sub-item.sub-group { color: #fff; }
.app-shell > aside.sidebar .sub-item.sub-group > svg { display: none; }
.app-shell > aside.sidebar .sub-item .nav-caret { margin-left: auto; width: 22px; height: 22px; flex: none; display: inline-flex; align-items: center;
  justify-content: center; border-radius: 7px; font-size: 11px; opacity: .8; transition: transform .2s; }
.app-shell > aside.sidebar .sub-item .nav-caret.open { transform: rotate(90deg); }
.app-shell > aside.sidebar .sub-item .nav-caret:hover { background: rgb(255 255 255 / 16%); opacity: 1; }
@media (min-width: 961px) { html.nav-collapsed .app-shell > aside.sidebar .sub-item.sub-group { display: none; }
  html.nav-collapsed .app-shell > aside.sidebar .sub-nav .sub-nav.sub-nested { margin: 0; padding: 0; border: 0; } }

/* CAR menu only: light blue surface, visible icons and a solid selected row (owner 5.11.26). */
  html:is(:not(.nav-collapsed), .mnav-open) .app-shell > aside.sidebar .sub-mhl {
    margin-left: 0; padding-left: 0; border-left: 0;
  }
  html:is(:not(.nav-collapsed), .mnav-open) .app-shell > aside.sidebar .sub-mhl > .sub-group {
    padding-left: 12px; min-height: 44px;
  }
  html:is(:not(.nav-collapsed), .mnav-open) .app-shell > aside.sidebar .car-menu {
    margin: 4px 0 8px; padding: 6px; gap: 4px; border: 1px solid #dce7fa;
    border-radius: 16px; background: #f2f7ff;
  }
  html:is(:not(.nav-collapsed), .mnav-open) .app-shell > aside.sidebar .car-menu .sub-item {
    gap: 9px; min-height: 50px; padding: 8px; border-radius: 12px;
    color: #475569; font-size: 14px; line-height: 1.5; overflow-wrap: anywhere;
  }
  html:is(:not(.nav-collapsed), .mnav-open) .app-shell > aside.sidebar .car-menu .sub-dot { display: none; }
  html:is(:not(.nav-collapsed), .mnav-open) .app-shell > aside.sidebar .car-menu .sub-ic {
    display: block; box-sizing: border-box; flex: 0 0 32px; width: 32px; height: 32px;
    padding: 7px; border: 1px solid #ccdcfc; border-radius: 50%; background: #e0ebff; color: #2563eb;
  }
  html:is(:not(.nav-collapsed), .mnav-open) .app-shell > aside.sidebar .car-menu .sub-item:hover {
    background: #e2edff; color: #1d4ed8;
  }
  html:is(:not(.nav-collapsed), .mnav-open) .app-shell > aside.sidebar .car-menu .sub-item.active {
    background: #2563eb; color: #fff; font-weight: 600; box-shadow: 0 4px 12px rgb(37 99 235 / 18%);
  }
  html:is(:not(.nav-collapsed), .mnav-open) .app-shell > aside.sidebar .car-menu .sub-item.active .sub-ic {
    background: #fff; border-color: #fff; color: #1d4ed8;
  }
  .app-shell > aside.sidebar .car-menu .sub-item:focus-visible {
    outline: 2px solid #2563eb; outline-offset: 2px;
  }

/* MHL CAR: pale blue surfaces, navy controls and gold ribbon accents. */
body:is(.car-navigation, .gf-stock-navigation) {
  --car-ink: #111d38;
  --car-blue: #1246a6;
  --car-action: linear-gradient(120deg, #1860d8, #0b3aa7 75%, #0a318d);
  --car-surface: linear-gradient(145deg, #fcfdff, #f1f6fe);
  --car-line: #cfdcf0;
  --car-shadow: 0 8px 20px rgb(25 63 122 / 11%);
  --car-icon-calendar: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='16' rx='2'/%3E%3Cpath d='M7 3v4m10-4v4M3 10h18m-13 5h4'/%3E%3C/svg%3E");
  --car-icon-report: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linejoin='round'%3E%3Crect x='3' y='13' width='4' height='8' rx='1'/%3E%3Crect x='10' y='8' width='4' height='13' rx='1'/%3E%3Crect x='17' y='3' width='4' height='18' rx='1'/%3E%3C/svg%3E");
  --car-icon-people: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round'%3E%3Ccircle cx='9' cy='7' r='3.3'/%3E%3Cpath d='M2.5 21v-2a6.5 6.5 0 0 1 13 0v2m2-16a3.3 3.3 0 0 1 0 6.5m1 3a5 5 0 0 1 3 4.5v2'/%3E%3C/svg%3E");
  --car-icon-tools: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linejoin='round'%3E%3Cpath d='m14 3-2 5 4 4 5-2a7 7 0 0 1-9 8l-3 3a3 3 0 0 1-4-4l3-3a7 7 0 0 1 6-11Z'/%3E%3C/svg%3E");
  --car-icon-data: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8'%3E%3Cellipse cx='12' cy='5' rx='8' ry='3'/%3E%3Cpath d='M4 5v14c0 4 16 4 16 0V5M4 12c0 4 16 4 16 0'/%3E%3C/svg%3E");
  --car-icon-filter: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linejoin='round'%3E%3Cpath d='M3 4h18l-7 8v6l-4 3v-9L3 4Z'/%3E%3C/svg%3E");
  --car-icon-list: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round'%3E%3Ccircle cx='4' cy='6' r='1'/%3E%3Ccircle cx='4' cy='12' r='1'/%3E%3Ccircle cx='4' cy='18' r='1'/%3E%3Cpath d='M9 6h12M9 12h12M9 18h12'/%3E%3C/svg%3E");
}
html body.car-navigation .app-shell {
  background:
    url('/assets/car-ribbon-top.svg') right top / min(48vw, 760px) auto no-repeat,
    radial-gradient(ellipse at 25% 5%, #f4f8ff 0%, transparent 58%),
    linear-gradient(155deg, #d8e5f7, #eef4fc 48%, #dbe8fa);
}
html body:is(.car-navigation, .gf-stock-navigation) .app-shell > aside.sidebar {
  background: linear-gradient(160deg, #f7faff, #e3edfc);
  border-right: 1px solid rgb(255 255 255 / 86%);
  box-shadow: 5px 0 22px rgb(36 76 138 / 12%);
  color: var(--car-ink);
}
html body:is(.car-navigation, .gf-stock-navigation) .app-shell > aside.sidebar .nav-label { color: #33496c; letter-spacing: 0; }
html body:is(.car-navigation, .gf-stock-navigation) .app-shell > aside.sidebar .nav-item { color: var(--car-ink); }
html body:is(.car-navigation, .gf-stock-navigation) .app-shell > aside.sidebar .nav-item svg { background: transparent; color: var(--car-blue); }
html body:is(.car-navigation, .gf-stock-navigation) .app-shell > aside.sidebar :is(.nav-item, .car-menu .sub-item, .car-menu-heading):hover {
  background: #e0ebfb; color: #123b80;
}
html body:is(.car-navigation, .gf-stock-navigation) .app-shell > aside.sidebar :is(.nav-item.active, .car-menu .sub-item.active) {
  background: var(--car-action); color: #fff; box-shadow: 0 5px 12px rgb(9 55 153 / 23%);
}
html body:is(.car-navigation, .gf-stock-navigation) .app-shell > aside.sidebar .car-menu .sub-item.active .sub-ic {
  background: transparent; color: #fff;
}
html body:is(.car-navigation, .gf-stock-navigation) .app-shell > aside.sidebar .car-menu {
  margin: 0; padding: 0; gap: 8px; border: 0; border-radius: 0; background: transparent;
}
html body:is(.car-navigation, .gf-stock-navigation) .app-shell > aside.sidebar .car-menu-section {
  display: flex; flex-direction: column; gap: 4px; padding: 0;
  border: 0 !important; outline: none; background: transparent; box-shadow: none;
}
html body:is(.car-navigation, .gf-stock-navigation) .app-shell > aside.sidebar .car-menu-heading {
  display: flex; align-items: center; gap: 10px; width: 100%; min-height: 48px;
  padding: 9px 10px; border: 0; border-radius: 11px; background: #e3edfc;
  color: var(--car-ink); font: inherit; font-weight: 600; text-align: left; cursor: pointer;
}
body.car-navigation .car-menu-heading::before {
  content: ''; flex: 0 0 22px; height: 22px; background: var(--car-blue);
  mask: var(--car-section-icon, var(--car-icon-tools)) center / contain no-repeat;
}
body.car-navigation [aria-controls="car-section-0"] { --car-section-icon: var(--car-icon-report); }
body.car-navigation [aria-controls="car-section-1"] { --car-section-icon: var(--car-icon-people); }
body.car-navigation [aria-controls="car-section-3"] { --car-section-icon: var(--car-icon-data); }
html body:is(.car-navigation, .gf-stock-navigation) .app-shell > aside.sidebar .car-menu-heading::after { content: '›'; margin-left: auto; font-size: 22px; line-height: 1; color: #2563eb; }
html body:is(.car-navigation, .gf-stock-navigation) .app-shell > aside.sidebar .car-menu-heading[aria-expanded="true"]::after { transform: rotate(90deg); }
html body:is(.car-navigation, .gf-stock-navigation) .app-shell > aside.sidebar .car-menu-heading:focus-visible { outline: 2px solid #2563eb; outline-offset: 2px; }
html body:is(.car-navigation, .gf-stock-navigation) .app-shell > aside.sidebar .car-menu-children {
  display: flex; flex-direction: column; gap: 4px; padding-inline-start: 28px;
}
html body:is(.car-navigation, .gf-stock-navigation) .app-shell > aside.sidebar .car-menu-children[hidden] { display: none !important; }
html body:is(.car-navigation, .gf-stock-navigation) .app-shell > aside.sidebar :is(.nav-toggle, .m-menu) {
  background: #e0ebff; border-color: #ccdcfc; color: #1d4ed8; box-shadow: none;
}
html body:is(.car-navigation, .gf-stock-navigation) .app-shell > aside.sidebar .nav-toggle svg { background: transparent; }
html body:is(.car-navigation, .gf-stock-navigation) .app-shell > aside.sidebar .auth-box {
  background: rgb(248 251 255 / 92%); border: 1px solid rgb(255 255 255 / 75%);
}
html body:is(.car-navigation, .gf-stock-navigation) .app-shell > aside.sidebar .auth-user { color: #334155; }
html body:is(.car-navigation, .gf-stock-navigation) .app-shell > aside.sidebar :is(.auth-role, .topbar-meta) { color: #64748b; }
html body:is(.car-navigation, .gf-stock-navigation) .app-shell > aside.sidebar .sub-item:not(.active) { color: #475569; }
html body:is(.car-navigation, .gf-stock-navigation) .app-shell > aside.sidebar .sub-nav:not(.car-menu) { border-left-color: #cbd5e1; }
@media (min-width: 961px) {
  html:not(.nav-collapsed) body:is(.car-navigation, .gf-stock-navigation) .app-shell { padding-left: 264px; }
  html:not(.nav-collapsed) body:is(.car-navigation, .gf-stock-navigation) .app-shell > aside.sidebar {
    width: 264px; border-radius: 0 0 14px 0;
    background: url('/assets/car-ribbon-side.svg') bottom center / 100% min(29vh, 268px) no-repeat,
      linear-gradient(160deg, #f7faff, #e3edfc);
  }
  html:not(.nav-collapsed) body:is(.car-navigation, .gf-stock-navigation) .app-shell > aside.sidebar .brand-row {
    padding-bottom: 14px; margin-bottom: 10px; border-bottom: 1px solid var(--car-line);
  }
  html:not(.nav-collapsed) body.car-navigation .app-shell > aside.sidebar .brand.car-only-brand > img:not(.brand-mini) { width: 172px; }
  html.nav-collapsed body:is(.car-navigation, .gf-stock-navigation) .app-shell > aside.sidebar .car-menu-heading { display: none; }
  html.nav-collapsed body:is(.car-navigation, .gf-stock-navigation) .app-shell > aside.sidebar .car-menu-children,
  html.nav-collapsed body:is(.car-navigation, .gf-stock-navigation) .app-shell > aside.sidebar .car-menu-children[hidden] { display: flex !important; margin: 0; padding: 0; border: 0; }
  html.nav-collapsed body:is(.car-navigation, .gf-stock-navigation) .app-shell > aside.sidebar .car-menu .sub-ic { background: #e0ebff; color: #2563eb; }
  html.nav-collapsed body:is(.car-navigation, .gf-stock-navigation) .app-shell > aside.sidebar .car-menu .active { background: var(--car-action); }
  html.nav-collapsed body:is(.car-navigation, .gf-stock-navigation) .app-shell > aside.sidebar .car-menu .active .sub-ic { background: transparent; color: #fff; }
}

.gf-stock-navigation .car-menu-heading > svg { flex: 0 0 22px; width: 22px; height: 22px; color: var(--car-blue); }
.gf-stock-navigation .sidebar .m-dot { display: none; }

/* The CAR theme gives the booking drawer header a navy background. */
body.car-navigation #bookingModal .br-header h3 { color: #fff; }
body.car-navigation #bookingModal .br-header #bk-customerInfo { color: #e0ebff; }

/* Keep the overview notice previews compact on desktop and mobile. */
body.car-navigation #overviewMemoCard #overviewMemoTitle { font-size: calc(var(--gf-type-section) - 2px) !important; }
body.car-navigation #overviewMemoCard :is(.overview-memo-preview, .overview-memo-more) { font-size: 14px; }

/* Installation appointments: wrap controls according to the space left by the sidebar. */
body.car-navigation .booking-page { container: booking-page / inline-size; }
body.car-navigation .gf-head:has(> .booking-add-lead) { align-items: center; flex-wrap: nowrap; }
body.car-navigation .booking-heading-copy {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 14px; min-width: 0;
}
body.car-navigation .gf-head > .booking-add-lead { margin-inline-start: auto; }
body.car-navigation .booking-toolbar {
  padding: 14px clamp(12px, 2.2cqi, 24px);
}
body.car-navigation .booking-toolbar .booking-heading-row { display: none; }
body.car-navigation .booking-toolbar .booking-controls {
  display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center;
  gap: 8px; width: 100%; min-width: 0;
}
body.car-navigation .booking-toolbar .booking-controls > * { margin: 0; }
body.car-navigation .booking-controls > :has(> #datePreset) { grid-column: 1 / -1; min-width: 0; }
body.car-navigation .booking-controls > :has(> #searchInput) { min-width: 0; max-width: none; padding: 0; border: 0; }
body.car-navigation .booking-controls #searchInput + svg { left: 12px; top: 50%; transform: translateY(-50%); }
body.car-navigation .booking-controls :is(input, select, button) { min-height: 44px; }
body.car-navigation .booking-controls select { min-width: 0; max-width: 100%; }
body.car-navigation .booking-custom-date { display: none; }
body.car-navigation .booking-custom-date:has(> :not(.hidden)) {
  display: flex; align-items: center; gap: 8px; min-width: 0; max-width: 100%;
}
body.car-navigation .booking-controls #dateFilter { width: auto; min-width: 0; max-width: 100%; }
body.car-navigation .booking-page #table-body > tr[data-job-id] { border-bottom-width: 0; }
body.car-navigation .booking-page #table-body > tr[data-job-id] > td {
  border-bottom: 1px solid #edf0f5 !important;
}
body.car-navigation .booking-page #tableContainer + div { flex-wrap: wrap; gap: 4px 12px; padding-inline: clamp(12px, 2.2cqi, 24px); }
@container booking-page (min-width: 1120px) {
  body.car-navigation .booking-toolbar .booking-controls { grid-template-columns: auto minmax(0, 1fr) auto; }
  body.car-navigation .booking-controls > :has(> #datePreset) { grid-column: auto; }
}
@container booking-page (max-width: 560px) {
  body.car-navigation .booking-controls label[for="datePreset"],
  body.car-navigation .booking-controls #datePreset { flex-basis: 100%; }
  body.car-navigation .booking-controls :is(#paymentStatusFilter, #customerTypeFilter) { flex: 1 1 145px; }
}

/* Lead inbox presentation. The existing tab, date and refresh controls keep their behavior. */
body.car-navigation .workspace:has(.lead-inbox-toolbar) {
  --gf-type-detail: var(--gf-type-body);
}
body.car-navigation .workspace:has(.lead-inbox-toolbar) > .gf-head {
  align-items: center; gap: 14px 20px; padding-top: clamp(28px, 3.15vw, 54px); margin-bottom: 18px;
}
body.car-navigation .workspace:has(.lead-inbox-toolbar) > .gf-head::before {
  content: ''; flex: 0 0 52px; height: 52px; border-radius: 15px;
  background:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='1.8' stroke-linecap='round'%3E%3Crect x='3' y='5' width='18' height='16' rx='2'/%3E%3Cpath d='M7 3v4m10-4v4M3 10h18m-13 5h4'/%3E%3C/svg%3E") center / 26px no-repeat,
    var(--car-action);
  border: 1px solid #eef5ff; box-shadow: 0 0 0 5px rgb(68 114 201 / 12%), var(--car-shadow);
}
body.car-navigation .workspace:has(.lead-inbox-toolbar) .gf-head h1 { color: var(--car-ink); }
body.car-navigation .workspace:has(.lead-inbox-toolbar) .gf-head p {
  padding-left: 20px; border-left: 1px solid #8fa7cb; color: #33496c;
}
body.car-navigation .lead-inbox-toolbar { margin-bottom: 16px; }
body.car-navigation .lead-inbox-heading { flex-wrap: wrap; gap: 9px; padding: 4px 0 10px; overflow: visible; }
body.car-navigation .lead-inbox-heading :is(.lead-tabs, .lead-range-buttons) { gap: 8px; }
body.car-navigation .lead-inbox-heading :is(.lead-tabs button, .lead-range-buttons button, .lead-customer-link) {
  min-height: 44px; padding: 8px 12px; border: 1px solid var(--car-line); border-radius: 12px;
  background: var(--car-surface); color: var(--car-ink); box-shadow: 0 3px 6px rgb(25 63 122 / 10%);
}
body.car-navigation .lead-inbox-heading .lead-customer-link { width: 44px; margin: 0; padding: 0; }
body.car-navigation .lead-inbox-heading .lead-tabs button.lead-tab-icon-only { width: 46px; padding: 0; }
body.car-navigation .lead-inbox-heading .lead-tab-icon-only svg { width: 22px; height: 22px; }
body.car-navigation .lead-inbox-heading [data-tab="facebook"]:not([aria-current]) { color: #0866ff; }
body.car-navigation .lead-inbox-heading :is(.lead-tabs button[aria-current], .lead-range-buttons button[aria-pressed="true"], #add-lead),
body.car-navigation .lead-refresh-control #refresh-inbox {
  border-color: transparent !important; background: var(--car-action) !important;
  color: #fff !important; box-shadow: 0 4px 10px rgb(9 55 153 / 22%);
}
body.car-navigation .lead-inbox-heading :is([data-tab="followups"], [data-range="custom"])::before {
  content: ''; display: inline-block; width: 17px; height: 17px; margin-right: 6px;
  vertical-align: -3px; background: currentColor; mask: var(--car-icon-list) center / contain no-repeat;
}
body.car-navigation .lead-inbox-heading [data-range="custom"]::before { mask-image: var(--car-icon-calendar); }
body.car-navigation .lead-inbox-heading .lead-range-buttons { flex-wrap: wrap; }
body.car-navigation .lead-notice:not(.error) {
  display: flex; align-items: center; gap: 12px; padding: 13px 18px;
  border: 1px solid rgb(255 255 255 / 85%); border-radius: 16px;
  background: linear-gradient(105deg, #edf5ff, #c9dcfb); color: #173b84;
}
body.car-navigation .lead-notice:not(.error)::before {
  content: ''; flex: 0 0 20px; height: 20px; background: currentColor;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 11v5m0-9h.01'/%3E%3C/svg%3E") center / contain no-repeat;
}
body.car-navigation .lead-card {
  border: 1px solid rgb(255 255 255 / 90%); border-radius: 20px;
  background: var(--car-surface); box-shadow: var(--car-shadow);
}
body.car-navigation .lead-inbox-stats { padding: 18px; margin-bottom: 18px; }
body.car-navigation .lead-summary-scope {
  display: flex; align-items: center; gap: 10px; margin: 0 0 16px;
  color: var(--car-ink); font-size: 17px; font-weight: 600;
}
body.car-navigation .lead-summary-scope::before {
  content: ''; flex: 0 0 22px; height: 22px; background: var(--car-blue);
  mask: var(--car-icon-report) center / contain no-repeat;
}
body.car-navigation .lead-inbox-stats .lead-stat {
  --stat-start: #f4f7fc; --stat-end: #e4ebf6; --stat-icon: var(--car-icon-report);
  position: relative; isolation: isolate; min-height: 108px; padding: 13px 16px; border: 0;
  border-radius: 15px; background: linear-gradient(145deg, var(--stat-start), var(--stat-end));
}
body.car-navigation .lead-inbox-stats .stat-new { --stat-start: #effcf6; --stat-end: #d6f4e7; --stat-icon: var(--car-icon-people); }
body.car-navigation .lead-inbox-stats .stat-old { --stat-start: #fffaf0; --stat-end: #f9ecd3; --stat-icon: var(--car-icon-people); }
body.car-navigation .lead-inbox-stats .stat-total { --stat-start: #f0f6ff; --stat-end: #d9e8fd; --stat-icon: var(--car-icon-data); }
body.car-navigation .lead-inbox-stats .stat-saved { --stat-start: #f5f0ff; --stat-end: #e7ddfb; --stat-icon: var(--car-icon-filter); }
body.car-navigation .lead-inbox-stats .lead-stat::after {
  content: ''; position: absolute; z-index: -1; bottom: 12px; right: 14px; width: 42px; height: 42px;
  background: var(--stat-color); mask: var(--stat-icon) center / contain no-repeat; opacity: .23;
}
body.car-navigation .lead-inbox-stats .lead-stat-label {
  color: var(--car-ink); font-size: 14px; white-space: normal;
}
body.car-navigation .lead-inbox-stats .lead-stat-label i {
  width: 19px; height: 19px; border-radius: 0; mask: var(--stat-icon) center / contain no-repeat;
}
body.car-navigation .lead-inbox-stats .lead-stat strong { color: var(--car-ink) !important; font-size: 34px; font-weight: 600; }
body.car-navigation .lead-refresh-control { gap: 8px; }
body.car-navigation .lead-refresh-control #refresh-inbox { min-height: 46px; border-radius: 13px; padding-inline: 18px; }
body.car-navigation #inbox-list > .lead-empty {
  display: flex; flex-direction: column; justify-content: center; align-items: center; gap: 16px;
  min-height: clamp(220px, 34vh, 322px); padding: 26px 12px;
  color: #33435f; font-size: clamp(17px, 1.55vw, 24px); font-weight: 600;
}
body.car-navigation #inbox-list > .lead-empty::before {
  content: ''; width: clamp(96px, 12vw, 160px); aspect-ratio: 168 / 164;
  background: url('/assets/car-lead-empty.svg') center / contain no-repeat;
}
body.car-navigation #inbox-list:has(> .lead-empty):has(+ .lead-pagination:not([hidden])) {
  margin-bottom: 0; border-bottom: 0; border-radius: 20px 20px 0 0;
}
body.car-navigation #inbox-list:has(> .lead-empty) + .lead-pagination:not([hidden]) {
  position: relative; margin: 0; padding: 11px 10px; text-align: center; color: #314363;
  border: 1px solid #fff; border-top: 0; border-radius: 0 0 20px 20px;
  background: #eef4fd; box-shadow: var(--car-shadow);
}
@media (max-width: 960px) {
  html body.car-navigation .app-shell { background-size: 62vw auto, auto, auto; }
  body.car-navigation .workspace:has(.lead-inbox-toolbar) > .gf-head { gap: 8px 12px; padding-top: 16px; margin-bottom: 6px; }
  body.car-navigation .workspace:has(.lead-inbox-toolbar) > .gf-head::before { flex-basis: 38px; height: 38px; border-radius: 11px; background-size: 22px, auto; }
  body.car-navigation .workspace:has(.lead-inbox-toolbar) .gf-head p { width: 100%; padding-left: 0; border-left: 0; }
}
@media (max-width: 640px) {
  body.car-navigation .lead-inbox-heading .lead-customer-link { width: 40px; }
  body.car-navigation .lead-inbox-heading .lead-tabs:not(.lead-channel-tabs) {
    display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr);
    flex: 1 1 min(240px, calc(100% - 50px)); min-width: 0;
  }
  body.car-navigation .lead-inbox-heading .lead-tabs:not(.lead-channel-tabs) button {
    padding: 5px 6px; white-space: normal; font-size: 13px; line-height: 1.3;
  }
  body.car-navigation .lead-inbox-heading .lead-channel-tabs { margin-left: 0; }
  body.car-navigation .lead-inbox-heading .lead-range-buttons { flex: 1 0 100%; }
  body.car-navigation .lead-inbox-stats { padding: 13px; }
  body.car-navigation .lead-inbox-stats .lead-stat { min-height: 90px; padding: 10px; }
  body.car-navigation .lead-inbox-stats .lead-stat strong { font-size: 27px; }
  body.car-navigation .lead-refresh-control { width: 100%; }
  body.car-navigation .lead-refresh-control #refresh-inbox { width: 100%; }
  body.car-navigation:has(.lead-inbox-toolbar) > [role="status"][style*="position: fixed"] {
    position: static !important; align-self: flex-end; margin: 0 10px 10px;
  }
}
@media (max-width: 360px) {
  body.car-navigation .lead-inbox-heading .lead-tab-icon,
  body.car-navigation .lead-inbox-heading [data-tab="followups"]::before { display: none; }
}

/* ===== ภาพรวมผู้บริหาร /exec (3.11.26, layout C "ตารางคะแนน" picked from three samples): company tabs + month row, the
   site's .kpis cards with a ▲▼ line, one score table (a row per business, 12-month bars, total row), top sales people.
   Numbers right-aligned; phones turn the tables into cards (data-l). ===== */
.ex-ctl { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 0 0 14px; padding: 8px; background: #fff; border: 1px solid var(--gf-line); border-radius: 14px; }
.ex-ctl .grow { flex: 1; }
.ex-tabs { display: inline-flex; gap: 2px; padding: 3px; background: #eef1f7; border-radius: 11px; }
.ex-tab { border: 0; background: transparent; padding: 7px 16px; border-radius: 9px; font: inherit; font-size: 14px; color: var(--gf-ink-soft); cursor: pointer; }
.ex-tab.on { background: var(--gf-navy); color: #fff; }
.ex-pick { display: inline-flex; align-items: center; gap: 6px; }
.ex-step { width: 36px; height: 36px; border: 1px solid var(--gf-line); border-radius: 10px; background: #fff; font: inherit; font-size: 18px; color: var(--gf-navy); cursor: pointer; }
.ex-step:disabled { opacity: .35; cursor: default; }
.ex-month { height: 36px; padding: 0 10px; border: 1px solid var(--gf-line); border-radius: 10px; background: #fff; font: inherit; font-size: 14px; color: var(--gf-ink); }
.ex-kpis .kpi-v { font-size: 26px; font-weight: 600; }
.ex-d { display: block; font-size: 12.5px; color: var(--gf-muted); }
.ex-d.up { color: #067647; }
.ex-d.down { color: #b42318; }
td .ex-d { display: inline; }
.ex-card { padding: 14px 16px 6px; margin: 0 0 14px; }
.ex-h2 { margin: 0 0 10px; font-size: 16px; font-weight: 400; color: var(--gf-ink); }
.ex-table th, .ex-table td { padding: 10px; }
.ex-table th.n, .ex-table td.n { text-align: right; }
.ex-table .ex-c-name { width: 22%; }
.ex-table .ex-c-spark { width: 120px; }
.ex-sellers .ex-c-unit { width: 34%; }
.ex-total td { background: var(--gf-tint); }
.ex-spark { display: inline-flex; align-items: flex-end; gap: 2px; height: 22px; vertical-align: middle; }
.ex-spark i { display: block; width: 6px; border-radius: 2px; background: #a9bbe8; }
.ex-spark i.now { background: var(--gf-navy); }
.ex-chip { display: inline-block; margin: 1px 4px 1px 0; padding: 2px 9px; border-radius: 99px; background: var(--gf-tint); color: var(--gf-navy); font-size: 12px; white-space: nowrap; }
.ex-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 14px; }
@media (max-width: 760px) {
  .ex-ctl { padding: 8px; }
  .ex-ctl .grow { display: none; }
  .ex-tabs, .ex-pick { width: 100%; }
  .ex-tab { flex: 1; min-height: 44px; }
  .ex-step { width: 44px; height: 44px; flex: none; }
  .ex-month { flex: 1; height: 44px; min-width: 0; }
  .ex-table, .ex-table tbody, .ex-table tr, .ex-table td { display: block; width: 100% !important; }
  .ex-table thead { display: none; }
  .ex-table tr { padding: 8px 0; border-bottom: 1px solid var(--gf-line); }
  .ex-table td { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 3px 4px; border: 0; text-align: right; }
  .ex-table td::before { content: attr(data-l); color: var(--gf-muted); font-size: var(--gf-type-table); text-align: left; }
  .ex-table td.ex-c-name { font-size: 15px; }
  .ex-table td.ex-c-name::before { content: none; }
  .ex-c-unit { flex-wrap: wrap; justify-content: flex-end; }
}

.app-shell > aside.sidebar .brand.car-only-brand > img:not(.brand-mini) { width: 140px; height: auto; }
html.nav-collapsed .app-shell > aside.sidebar .brand.car-only-brand .brand-mini { height: auto; border-radius: 0; box-shadow: none; }
@media (max-width: 960px) {
  .app-shell > aside.sidebar .brand.car-only-brand > img:not(.brand-mini) { width: 112px; }
}

/* CAR CRM pages: the MHL CARFILM logo smaller under the GOODFILM logo in the menu (3.11.26, owner: logos on the same
   side; the whole site reads as one). Hidden when the menu is folded to icons. */
.app-shell > aside.sidebar .car-brand-mark { display: block; margin: -12px 8px 22px; }
.app-shell > aside.sidebar .car-brand-mark img { display: block; width: 112px; height: auto; }
html.nav-collapsed .app-shell > aside.sidebar .car-brand-mark { display: none; }
@media (max-width: 960px) {
  html.nav-collapsed .app-shell > aside.sidebar .car-brand-mark { display: block; }
  /* phone top bar: right after the GOODFILM logo (the logo row stops growing), a thin line between; open menu: under it */
  html:not(.mnav-open) .app-shell > aside.sidebar:has(.car-brand-mark) .brand-row { flex: 0 1 auto; }
  html:not(.mnav-open) .app-shell > aside.sidebar .car-brand-mark { margin: 0 auto 0 4px; padding-left: 10px; border-left: 1px solid rgb(255 255 255 / 25%); }
  html:not(.mnav-open) .app-shell > aside.sidebar .car-brand-mark img { width: 78px; }
  html.mnav-open .app-shell > aside.sidebar .car-brand-mark { margin: -4px 0 16px; }
  html.mnav-open .app-shell > aside.sidebar .car-brand-mark img { width: 92px; }
}

/* ===== คิดกำไรต่องาน /exec-profit (3.11.26): inputs in white sections on the left, the result card on the right (sticky);
   numbers right-aligned, profit big with a green / red badge; phones: one column, fields 44px ===== */
.pf-tabs { margin: 0 0 14px; }
.pf-grid { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: 14px; align-items: start; }
.pf-form { display: grid; gap: 12px; }
.pf-sec { padding: 14px 16px; overflow: visible; }
.pf-h2 { margin: 0 0 10px; font-size: 16px; font-weight: 400; color: var(--gf-ink); }
.pf-row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 12px; align-items: end; }
.pf-row3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.pf-row + .pf-row, .pf-f + .pf-row, .pf-row + .pf-ck, .pf-map + .pf-row, .pf-ck + .pf-row { margin-top: 10px; }
.pf-f { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.pf-l { font-size: 13px; color: var(--gf-ink-soft); }
.pf-h { font-size: 12px; color: var(--gf-muted); line-height: 1.4; }
.pf-in { width: 100%; max-width: 100%; height: 40px; padding: 0 10px; border: 1px solid var(--gf-line-strong, #cfd8e6); border-radius: 10px;
  font: inherit; font-size: 15px; color: var(--gf-ink); background: #fff; box-sizing: border-box; }
.pf-in:focus { outline: none; border-color: var(--gf-navy); box-shadow: 0 0 0 3px rgb(11 42 134 / 12%); }
.pf-ck { display: flex; align-items: center; gap: 8px; font-size: 14px; color: var(--gf-ink); cursor: pointer; }
.pf-ck input { width: 18px; height: 18px; accent-color: var(--gf-navy); }
.pf-inline { align-self: center; padding-top: 18px; }
.pf-map { display: inline-flex; margin-top: 10px; }
.pf-map.off { opacity: .55; }
.pf-res { position: sticky; top: 14px; padding: 16px; display: grid; gap: 6px; }
.pf-wait { margin: 0 0 4px; color: var(--gf-muted); font-size: 14px; }
.pf-line { display: flex; justify-content: space-between; gap: 10px; font-size: 14px; color: var(--gf-ink-soft); padding: 2px 0; }
.pf-ll small { display: block; font-size: 12px; color: var(--gf-muted); }
.pf-lv { font-variant-numeric: tabular-nums; color: var(--gf-ink); white-space: nowrap; }
.pf-line.pf-top { color: var(--gf-ink); }
.pf-line.pf-sum { border-top: 1px solid var(--gf-line); padding-top: 8px; color: var(--gf-ink); }
.pf-big { display: grid; gap: 2px; margin: 6px 0; padding: 12px 14px; border-radius: 14px; background: #ecfdf3; }
.pf-big.bad { background: var(--gf-red-tint); }
.pf-bl { font-size: 13px; color: var(--gf-ink-soft); }
.pf-bv { font-size: 26px; font-weight: 600; color: #067647; font-variant-numeric: tabular-nums; }
.pf-big.bad .pf-bv { color: #b42318; }
.pf-badge { justify-self: start; padding: 2px 10px; border-radius: 99px; font-size: 12.5px; background: #fff; color: #067647; }
.pf-big.bad .pf-badge { color: #b42318; }
@media (max-width: 960px) { .pf-grid { grid-template-columns: minmax(0, 1fr); } .pf-res { position: static; } }
@media (max-width: 760px) {
  .pf-row, .pf-row3 { grid-template-columns: minmax(0, 1fr); }
  .pf-in { height: 44px; }
  .pf-inline { padding-top: 0; }
  .pf-map { width: 100%; justify-content: center; min-height: 44px; align-items: center; }
  .pf-tabs { width: 100%; } .pf-tabs .ex-tab { flex: 1; min-height: 44px; }
}

.pf-bar { display: none; }
@media (max-width: 960px) {
  .pf-bar { display: block; position: fixed; left: 10px; right: 10px; bottom: 10px; z-index: 40; min-height: 48px; padding: 10px 14px;
    border: 0; border-radius: 14px; background: var(--gf-navy); color: #fff; font: inherit; font-size: 15px; text-align: center;
    box-shadow: 0 8px 24px rgb(16 24 40 / 25%); }
  .pf-bar.good { background: #067647; } .pf-bar.bad { background: #b42318; }
  .pf-wrap { padding-bottom: 80px; }
}

/* numbers the page filled in itself (owner 3.11.26: they must show it — the row of pills above the form was dropped on
   the owner's word, the green tint + "ดึงอัตโนมัติ" on each field stays) */
.pf-in.pf-auto { background: #f2fbf5; border-color: #a6e3bd; }
.pf-pill { margin-left: 6px; padding: 1px 7px; border-radius: 99px; background: #ecfdf3; color: #067647; font-size: 11.5px; }

/* pick the technicians of the job (3.11.26): chips with nickname + own hourly cost; picked = navy */
.pf-crew { display: grid; gap: 6px; margin: 0 0 10px; }
.pf-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.pf-chip { display: inline-flex; align-items: center; gap: 6px; min-height: 36px; padding: 4px 12px; border: 1px solid var(--gf-line-strong, #cfd8e6);
  border-radius: 99px; background: #fff; font: inherit; font-size: 14px; color: var(--gf-ink); cursor: pointer; max-width: 100%; }
.pf-chip-r { font-size: 12.5px; color: var(--gf-muted); white-space: nowrap; }
.pf-chip.on { background: var(--gf-navy); border-color: var(--gf-navy); color: #fff; }
.pf-chip.on .pf-chip-r { color: rgb(255 255 255 / 80%); }
.pf-crew-sum { align-self: center; padding-top: 18px; font-size: 14px; color: var(--gf-ink); }
@media (max-width: 760px) { .pf-chip { min-height: 44px; } .pf-crew-sum { padding-top: 0; } }

/* คิดกำไรต่องาน, tidier (3.11.26, owner "ปรับยูไอให้ดีๆหน่อย"): each box = icon + title + its own cost on the right; the unit
   sits inside the number box; the result card shows how the price splits (film / technicians / travel / overhead / profit) */
.pf-sh { display: flex; align-items: center; gap: 10px; margin: 0 0 12px; }
.pf-si { flex: none; width: 32px; height: 32px; border-radius: 10px; display: grid; place-items: center; background: var(--gf-tint); color: var(--gf-navy); }
.pf-si svg { width: 18px; height: 18px; }
.pf-sh .pf-h2 { margin: 0; flex: 1; }
.pf-st { font-size: 14px; color: var(--gf-ink-soft); font-variant-numeric: tabular-nums; white-space: nowrap; }
.pf-sec { padding: 16px 18px; }
.pf-f.wide { margin-bottom: 10px; }
.pf-inwrap { position: relative; display: block; }
.pf-inwrap .pf-in { padding-right: 76px; text-align: right; font-variant-numeric: tabular-nums; }
.pf-unit { position: absolute; right: 12px; top: 50%; transform: translateY(-50%); font-size: 13px; color: var(--gf-muted); pointer-events: none; }
.pf-row-price { grid-template-columns: minmax(0, 1fr) auto; }
.pf-row-price .pf-in { height: 48px; font-size: 20px; }
.pf-row-price .pf-ck { padding-top: 22px; }
.pf-row-map { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto; }
.pf-row + .pf-row, .pf-ck + .pf-row, .pf-row + .pf-ck, .pf-crew + .pf-row { margin-top: 12px; }
.pf-map { display: inline-flex; align-items: center; justify-content: center; height: 40px; padding: 0 14px; border-radius: 10px; background: var(--gf-navy);
  color: #fff; font-size: 14px; text-decoration: none; white-space: nowrap; }
.pf-map.off { background: #c3cbd9; pointer-events: none; }
.pf-res { gap: 8px; padding: 18px; }
.pf-net { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; font-size: 14px; color: var(--gf-ink-soft); }
.pf-net b { font-size: 20px; font-weight: 600; color: var(--gf-ink); font-variant-numeric: tabular-nums; }
.pf-split { display: flex; height: 12px; border-radius: 99px; overflow: hidden; background: var(--gf-line); margin: 2px 0 6px; }
.pf-split span { display: block; height: 100%; }
.pf-dot { display: inline-block; width: 9px; height: 9px; border-radius: 3px; margin-right: 7px; vertical-align: 1px; }
.pf-ll small { padding-left: 16px; }
.pf-note { margin: 0; font-size: 13px; color: var(--gf-muted); }
@media (max-width: 760px) {
  .pf-row-price, .pf-row-map { grid-template-columns: minmax(0, 1fr); }
  .pf-row-price .pf-ck { padding-top: 0; }
  .pf-map { height: 44px; }
}

/* ===== สรุปการเงิน /exec-finance (3.11.26): the exec page parts (tabs, .kpis, dq-table ex-table) + a 6-month profit and loss
   table, bills to pay (late in red), booked jobs, 3M stock by series (out / low as chips in a closed fold), payroll by
   department. Each box: title + grey note on where the numbers come from. ===== */
.fn-head { display: flex; align-items: baseline; flex-wrap: wrap; gap: 4px 12px; margin: 0 0 10px; }
.fn-head .ex-h2 { margin: 0; }
.fn-sub { font-size: 12.5px; color: var(--gf-muted); }
.fn-card { padding-bottom: 12px; }
.fn-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 14px; }   /* full width: supplier names and document numbers need the room */
.fn-bills .fn-c-name { width: 38%; } .fn-bills th:nth-child(2), .fn-bills td:nth-child(2) { width: 9%; } .fn-bills th:nth-child(3), .fn-bills td:nth-child(3) { width: 20%; } .fn-bills th:nth-child(4), .fn-bills td:nth-child(4) { width: 19%; } .fn-bills .n { width: 14%; }
.fn-grid > .ex-card { margin: 0; }
.fn-grid + .ex-card, .ex-card + .fn-grid { margin-top: 14px; }
.fn-sum { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 4px 12px; margin: 0 0 8px; font-size: 14px; color: var(--gf-ink); }
.fn-late { color: #b42318; }
.fn-scroll { overflow-x: auto; }
.fn-pnl { min-width: 720px; }
.fn-pnl th.n, .fn-pnl td.n { width: 12%; }
.fn-pnl .fn-c-name { width: 28%; }
.fn-rev td { color: var(--gf-navy); }
.fn-sumrow td { border-top: 1px solid var(--gf-line-strong, #cfd8e6); }
.fn-pos { color: #067647; }
.fn-neg { color: #b42318; }
.fn-fold { margin-top: 10px; border: 1px solid var(--gf-line); border-radius: 12px; }
.fn-fold > summary { cursor: pointer; list-style: none; padding: 10px 14px; background: var(--gf-tint); border-radius: 12px; font-size: 14px; color: var(--gf-ink); }
.fn-fold[open] > summary { border-radius: 12px 12px 0 0; }
.fn-fold > summary::-webkit-details-marker { display: none; }
.fn-fold > summary::before { content: '▸'; display: inline-block; margin-right: 8px; transition: transform .15s; }
.fn-fold[open] > summary::before { transform: rotate(90deg); }
.fn-fold > :not(summary) { margin: 10px 12px 12px; }
.fn-cnt { color: var(--gf-muted); }
.fn-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.fn-chip { padding: 3px 10px; border-radius: 99px; background: #fff4e5; color: #b54708; font-size: 13px; }
.fn-chip.out { background: var(--gf-red-tint); color: #b42318; }
@media (max-width: 960px) { .fn-grid { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 760px) { .fn-pnl { min-width: 0; } .fn-scroll { overflow: visible; } }

/* ===== เงินเดือน /payroll (3.11.26, owner: "เป็นตารางๆ ให้กรอกแก้ไขเหมือนชีต"): spreadsheet-like grid — yellow = typed in
   (as the sheet), grey = from elsewhere, green = worked out; header row navy and sticky, code + name frozen on the left;
   a cell being saved shows an amber edge, saved flashes green, refused turns red. The grid scrolls inside its box. ===== */
.pr-head { margin: 0 0 12px; }
.pr-period { font-size: 13.5px; color: var(--gf-ink-soft); }
.pr-tabs { overflow-x: auto; max-width: 100%; }
.pr-tools { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; margin: 0 0 10px; }
.pr-search { max-width: 320px; }
.pr-add { max-width: 280px; }
.pr-meta { font-size: 13px; color: var(--gf-muted); }
.pr-lock { margin: 0 0 10px; padding: 8px 12px; border-radius: 10px; background: var(--gf-tint); color: var(--gf-navy); font-size: 14px; }
.pr-tsum { display: flex; gap: 10px; flex-wrap: wrap; margin: 0 0 10px; }
.pr-tsum-i { display: grid; grid-template-columns: auto auto; align-items: baseline; gap: 2px 12px; min-width: 170px; padding: 10px 14px; border: 1px solid var(--gf-line); border-radius: 14px; background: #fff; }
.pr-tsum-l { font-size: 13px; color: var(--gf-muted); }
.pr-tsum-n { font-size: 13px; color: var(--gf-muted); text-align: right; }
.pr-tsum-v { grid-column: 1 / -1; font-size: 20px; font-weight: 600; color: var(--gf-ink, #101828); font-variant-numeric: tabular-nums; }
.pr-grid td.pr-acct { font-variant-numeric: tabular-nums; letter-spacing: .02em; }
@media (max-width: 760px) { .pr-tsum { gap: 6px; flex-wrap: nowrap; } .pr-tsum-i { flex: 1 1 0; min-width: 0; padding: 8px 10px; gap: 0 6px; } .pr-tsum-l, .pr-tsum-n { font-size: 12px; } .pr-tsum-v { font-size: 14px; } }
.pr-ck { display: inline-flex; align-items: center; gap: 6px; font-size: 14px; }
.pr-wrapgrid { overflow: auto; max-height: calc(100vh - 230px); border: 1px solid var(--gf-line); border-radius: 12px; background: #fff; }
.pr-grid { border-collapse: separate; border-spacing: 0; font-size: 13.5px; table-layout: fixed; }
.pr-grid td { overflow: hidden; text-overflow: ellipsis; }
.pr-grid th { position: sticky; top: 0; z-index: 2; background: var(--gf-navy); color: #fff; font-weight: 600; font-size: 12.5px; padding: 8px 8px;
  text-align: left; white-space: normal; line-height: 1.25; vertical-align: bottom; border-right: 1px solid rgb(255 255 255 / 12%); }
.pr-grid th.n { text-align: right; }
.pr-grid td { padding: 0; border-bottom: 1px solid var(--gf-line); border-right: 1px solid var(--gf-line); height: 34px; white-space: nowrap; background: #fff; }
.pr-grid td.ro { padding: 0 8px; color: var(--gf-ink-soft); background: #f8fafc; }
.pr-grid td.calc { padding: 0 8px; background: #f2fbf5; font-variant-numeric: tabular-nums; }
.pr-grid td.edit { background: #fffbea; }
.pr-grid td.n { text-align: right; }
.pr-grid td.bad { color: #b42318; }
.pr-grid .fz { position: sticky; z-index: 1; }
.pr-grid th.fz { z-index: 3; }
.pr-grid td.fz { box-shadow: inset -1px 0 0 var(--gf-line); }
.pr-grid tr.left td { opacity: .55; }
.pr-grid tfoot td { position: sticky; bottom: 0; z-index: 1; background: var(--gf-tint); font-weight: 600; padding: 0 8px; }
.pr-grid tfoot td.fz { z-index: 2; }
.pr-cell { width: 100%; min-width: 0; height: 33px; border: 0; padding: 0 8px; background: transparent; font: inherit; color: var(--gf-ink); box-sizing: border-box; }
.pr-grid td.n .pr-cell { text-align: right; font-variant-numeric: tabular-nums; }
.pr-cell:focus { outline: 2px solid var(--gf-navy); outline-offset: -2px; background: #fff; }
.pr-grid td.saving { box-shadow: inset 3px 0 0 #f79009; }
.pr-grid td.saved { box-shadow: inset 3px 0 0 #12b76a; }
.pr-grid td.err { box-shadow: inset 0 0 0 2px #b42318; }
.pr-x { width: 28px; height: 28px; margin: 2px 4px; border: 0; border-radius: 8px; background: transparent; color: var(--gf-muted); font-size: 18px; cursor: pointer; }
.pr-x:hover { background: var(--gf-red-tint); color: #b42318; }
.pr-set { padding: 16px 18px; max-width: 860px; }
.pr-closebox { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 14px; margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--gf-line); }
@media (max-width: 760px) { .pr-wrapgrid { max-height: calc(100vh - 200px); } .pr-cell { height: 40px; } .pr-grid td { height: 41px; } .pr-search, .pr-add { max-width: none; width: 100%; } }
.pr-tabs .ex-tab { white-space: nowrap; flex: none; }
@media (max-width: 760px) { .pr-tabs .ex-tab { min-height: 40px; padding: 6px 14px; } .pr-head .grow { display: none; } }

/* Own Super Admin credentials: contained form, password fields usable on mobile. */
.adm-credentials-form { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); gap: 14px; margin-top: 16px; }
.adm-credentials-form input { box-sizing: border-box; width: 100%; min-height: 44px; padding: 8px 10px; font: inherit; font-size: 16px; border: 1px solid var(--gf-line); border-radius: 6px; }
.adm-credentials-form button, .adm-credentials-error { grid-column: 1 / -1; }
.adm-credentials-form button { width: fit-content; min-height: 44px; height: auto; padding: 8px 16px; }
.adm-credentials-error { color: var(--gf-red); margin: 0; }

/* The shared menu link for internal pages without a sidebar. */
:is(body:has(> .gf-menu-paused), .adm-page, .consumables, .pz-guide, .catalog-page) {
  --gf-menu-fab-bottom: calc(16px + env(safe-area-inset-bottom));
  --gf-menu-fab-height: 44px;
  --gf-menu-fab-clearance: calc(var(--gf-menu-fab-bottom) + var(--gf-menu-fab-height) + 12px);
}
.adm-page { min-height: 100vh; }
.gf-menu-fab {
  position: fixed;
  z-index: 40;
  right: calc(16px + env(safe-area-inset-right));
  bottom: var(--gf-menu-fab-bottom);
  display: inline-flex;
  align-items: center;
  gap: 8px;
  box-sizing: border-box;
  min-height: var(--gf-menu-fab-height);
  padding: 8px 16px;
  border-radius: 999px;
  background: color-mix(in srgb, var(--gf-navy) 30%, transparent);
  color: var(--gf-navy-700);
  font-size: 16px;
  font-weight: 600;
  line-height: 1.5;
  box-shadow: var(--gf-shadow-lg);
  text-decoration: none;
}
.gf-menu-fab:is(:hover, :focus-visible) {
  background: var(--gf-navy-700);
  color: #fff;
}
.gf-menu-fab:focus-visible { outline: 2px solid var(--gf-navy); outline-offset: 3px; }
.gf-menu-fab svg { flex: none; width: 20px; height: 20px; }
@media screen {
  :is(.gf-menu-paused, .adm-page, .pz-guide) { padding-bottom: var(--gf-menu-fab-clearance); }
  :is(body:has(> .gf-menu-paused), .adm-page) :is(.toast, .adm-toast, .pu-selbar) { bottom: var(--gf-menu-fab-clearance); }
}
@media screen and (max-width: 960px) {
  body:has(> .gf-menu-paused) > .pf-bar { bottom: var(--gf-menu-fab-clearance); }
}
@media print { .gf-menu-fab { display: none; } }

/* Good Group home — follows the owner's supplied ERP reference. */
body.gg-home{margin:0;background:#fff;color:#071a59;font:400 var(--gf-type-body)/1.5 var(--gf-font)}
.gg-home *,.gg-home *::before,.gg-home *::after{box-sizing:border-box}
.gg-home [hidden]{display:none!important}
.gg-home a{color:inherit}.gg-home button,.gg-home input,.gg-home select{font:inherit}
.gg-home :is(a,button,input,select,summary):focus-visible{outline:3px solid #0865ed;outline-offset:3px}
.gg-home h1,.gg-home h2,.gg-home h3,.gg-home strong{font-weight:600}
.gg-skip{position:fixed;top:-80px;left:16px;z-index:30;background:#fff;padding:12px 20px;border:2px solid #075de5;border-radius:8px}.gg-skip:focus{top:8px}
.gg-top{height:54px;padding:6px 38px;display:flex;align-items:center;gap:30px;border-bottom:1px solid #dce7f7;background:#fff}
.gg-brand{font-weight:600;display:flex;align-items:center;gap:9px;text-decoration:none;font-size:27px;letter-spacing:-1px;white-space:nowrap}
.gg-mark{width:43px;height:40px;flex-shrink:0;background:linear-gradient(135deg,#ed1725 0 47%,#fff 48% 57%,#003f95 58%);border-radius:32px 0 24px 0;transform:skew(-14deg)}
.gg-top-caption{display:flex;align-items:center;gap:10px;border-left:1px solid #9bb5e3;padding-left:30px;color:#063693;font-size:18px;font-weight:600;white-space:nowrap}
.gg-home svg{width:28px;height:28px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
.gg-account{margin-left:auto;display:flex;align-items:center;gap:13px;min-width:0;font-size:15px}
.gg-help{display:flex;gap:8px;align-items:center;text-decoration:none;padding:6px 18px;border-right:1px solid #d9e4f4;white-space:nowrap}
.gg-avatar{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:#dceaff;color:#0755ae}
.gg-profile{position:relative;min-width:0}.gg-profile summary{cursor:pointer;white-space:nowrap;max-width:165px;min-height:40px;display:flex;align-items:center;gap:10px}.gg-profile summary span{min-width:0;overflow:hidden;text-overflow:ellipsis}.gg-profile summary::after{content:'⌄';font-size:19px;flex-shrink:0}.gg-profile a{position:absolute;z-index:20;right:0;top:44px;white-space:nowrap;padding:12px 18px;background:white;border:1px solid #dbe5f7;border-radius:10px;box-shadow:0 6px 20px #15376820}
.gg-account .gg-admin-link{display:grid;place-items:center;flex:0 0 44px;height:44px;border-radius:9px;color:#0755ae}
.gg-admin-link:hover{background:#eaf4ff}.gg-admin-link svg{width:20px;height:20px}
.gg-hero{min-height:280px;position:relative;display:flex;flex-direction:column;justify-content:space-between;gap:14px;padding:8px 0 11px;overflow:hidden;background:linear-gradient(110deg,#f4faff 0,#fff 39%,#fff 65%,#e4f1ff 100%);border-bottom:1px solid #d4e5fc}
.gg-intro{position:absolute;z-index:2;left:40px;top:26px}.gg-intro h1{font-size:32px;line-height:1.3;margin:0 0 1px;letter-spacing:-.5px}.gg-intro p{font-size:23px;margin:0;font-weight:600}
.gg-building-art{position:absolute;left:0;bottom:0;width:238px;height:162px;object-fit:cover;mask-image:linear-gradient(90deg,#000 90%,transparent)}
.gg-car-art{position:absolute;right:0;bottom:0;width:202px;height:203px;object-fit:cover;mask-image:linear-gradient(90deg,transparent,#000 15%)}
.gg-org{--gg-branch-gap:23px;position:relative;z-index:2;width:51%;margin-left:30%;text-align:center}
.gg-org-root{
  width:220px;margin:0 auto var(--gg-branch-gap);padding:5px 12px;border:2px solid #fff;border-radius:22px;
  position:relative;color:#fff;font-size:22px;font-weight:600;line-height:1.18;
  background:linear-gradient(133deg,#54b2ff30 0 19%,transparent 19% 79%,#0085ff66 79% 91%,#72bcff40 91%),
             linear-gradient(150deg,#0965eb,#063e9d 53%,#062d7c 77%,#075ef3);
  box-shadow:0 3px 8px #0e56bb63,inset 0 0 0 1px #a4cfff75;
}
.gg-org-root span{display:table;margin:3px auto 0;padding:1px 12px;border-radius:99px;background:#cce4ff;color:#0b377e;font-size:13px;line-height:1.25}
.gg-org-root::after{content:'';position:absolute;top:calc(100% + 2px);left:calc(50% - 1px);height:calc(var(--gg-branch-gap)/2 + 1px);border-left:2px solid #79a6e7}
.gg-company-row{--gg-company-gap:94px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--gg-company-gap);position:relative}
.gg-company-row::before{content:'';position:absolute;left:calc(25% - var(--gg-company-gap)/4 - 1px);right:calc(25% - var(--gg-company-gap)/4 - 1px);top:calc(var(--gg-branch-gap)/-2);height:calc(var(--gg-branch-gap)/2 + 1px);border:2px solid #8bb2e9;border-bottom:0;border-radius:8px 8px 0 0}

.gg-company,.gg-unit-chip{
  --gg-edge:#2879f3;--gg-surface:#deecff;--gg-ribbon:#88bafa;--gg-divider:#8fb6e896;--gg-shadow:#3065ab48;
  border:1px solid var(--gg-edge);border-radius:16px;
  background:radial-gradient(ellipse at 100% 100%,transparent 68%,#ffffff80 69% 77%,var(--gg-ribbon) 78%) left top / 36% 115% no-repeat,
             radial-gradient(ellipse at 0 0,transparent 67%,#ffffff80 68% 77%,var(--gg-ribbon) 78%) right bottom / 38% 115% no-repeat,
             linear-gradient(145deg,#fcfdff 8%,var(--gg-surface) 82%);
  box-shadow:0 0 0 2px #fff,0 5px 10px var(--gg-shadow);
}
.gg-company-mhl,.gg-unit-chip[data-tone=orange]{--gg-edge:#e96d09;--gg-surface:#ffecd8;--gg-ribbon:#ffc078;--gg-divider:#e8aa739e;--gg-shadow:#ab5a2b40}
.gg-unit-chip[data-tone=rose]{--gg-edge:#e86a99;--gg-surface:#ffdeed;--gg-ribbon:#ffa6c5;--gg-divider:#d681a98c;--gg-shadow:#a73e6840}
.gg-company{width:94%;justify-self:center;border-width:2px;display:flex;align-items:center;justify-content:center;flex-direction:column;position:relative;padding:6px 8px;min-width:0;min-height:86px}
.gg-company::before{content:'';position:absolute;left:50%;top:-2px;transform:translate(-50%,-50%);width:10px;height:10px;border:2px solid #fff;border-radius:50%;background:var(--gg-edge)}
.gg-company img{width:130px;height:40px;object-fit:contain}.gg-company-mhl img{width:112px}
.gg-company strong{width:76%;font-size:18px;line-height:1.3;margin-top:3px;padding-top:3px;border-top:1px solid var(--gg-divider)}.gg-company>span{display:none}
.gg-one-company{width:32%;margin-left:45%}.gg-one-company .gg-company-row{grid-template-columns:1fr;max-width:350px;margin:auto}.gg-one-company .gg-company-row::before{display:none}.gg-one-company .gg-org-root::after{height:calc(var(--gg-branch-gap) + 1px)}
.gg-unit-strip{position:relative;z-index:3;display:flex;flex-shrink:0;width:67.2%;margin-left:20.5%;gap:14px}
.gg-unit-chip{flex:1;min-width:0;min-height:62px;display:flex;align-items:center;gap:10px;padding:8px 12px;border-color:var(--gg-divider);border-radius:13px;color:#0744ae;cursor:pointer;text-align:left}
.gg-unit-chip>span{padding-left:9px;border-left:1px solid var(--gg-divider);min-width:0}
.gg-unit-chip strong{display:block;font-size:18px;line-height:1.25;white-space:nowrap}.gg-unit-chip span span{display:block;font-size:12px;color:#172a4d}.gg-unit-chip svg{width:32px;height:32px}
.gg-unit-chip::after{content:'→';margin-left:auto;background:#fff;border-radius:50%;width:26px;height:26px;display:grid;place-items:center;flex-shrink:0;font-size:20px;box-shadow:0 2px 5px var(--gg-shadow)}
.gg-unit-chip[aria-pressed=true]{border-color:currentColor;box-shadow:0 0 0 2px #fff,0 5px 10px var(--gg-shadow),inset 0 0 0 1px currentColor}
.gg-unit-chip[data-tone=orange]{color:#a84600}.gg-unit-chip[data-tone=rose]{color:#b80047}
.gg-layout{max-width:1760px;padding:14px 14px 20px;margin:auto;display:grid;grid-template-columns:minmax(245px,.94fr) minmax(470px,1.85fr) minmax(280px,1.08fr);gap:14px;--gg-accent:#0757cf;--gg-tint:#eaf4ff;align-items:stretch}
.gg-layout.gg-without-tasks{grid-template-columns:minmax(245px,.8fr) minmax(0,2.2fr)}
.gg-card{background:linear-gradient(125deg,#fff,#fbfdff);border:1px solid #dce8f8;border-radius:22px;padding:14px 16px;box-shadow:0 6px 15px #2868b610;min-width:0}
.gg-home h2{display:flex;align-items:center;gap:9px;font-size:25px;line-height:1.3;margin:0;font-weight:600;letter-spacing:-.4px}
.gg-muted{color:#3b5989;font-size:16px;margin:4px 0 18px}.gg-business{display:flex;flex-direction:column;padding:16px 24px}.gg-business h2{font-size:25px;white-space:normal}.gg-business .gg-muted{font-size:15px;margin-bottom:16px}
.gg-business-group{border:1px solid #e0e7f2;border-radius:12px;overflow:hidden;margin-bottom:16px}.gg-business-group h3{font-size:18px;margin:0;padding:7px 10px;color:#0746bd;background:linear-gradient(100deg,#dcecff,#edf5ff);line-height:1.45}.gg-business-group[data-company=MHL] h3{color:#bf4800;background:linear-gradient(100deg,#fff0df,#fff8ef)}
.gg-business-option{position:relative;display:flex;flex-direction:column;align-items:flex-start;text-align:left;width:100%;padding:8px 10px 8px 48px;min-height:59px;border:0;background:transparent;color:#091b50;cursor:pointer}.gg-business-option::before{content:'';position:absolute;left:19px;top:19px;width:22px;height:22px;border:2px solid #8aa2c4;border-radius:50%;background:#fff}.gg-business-option strong{font-size:19px;line-height:1.35}.gg-business-option>span{font-size:15px;color:#12254a}
.gg-business-option[aria-pressed=true]{background:linear-gradient(110deg,#d1e6ff,#eaf5ff);color:#003ac0;box-shadow:inset 0 0 0 4px #fff;border-radius:12px}.gg-business-option[aria-pressed=true]::before{border:6px solid #0963ed;background:#fff}.gg-business-option:hover{background-color:#eaf3ff}
.gg-enter{margin-top:auto;display:block;text-align:center;text-decoration:none;padding:9px 8px;min-height:48px;background:linear-gradient(110deg,#0087cc,#0054a3);color:#fff!important;border-radius:11px;font-size:18px;font-weight:600}
.gg-access-note{font-size:11px;color:#7386a2;margin:10px 0 0;text-align:center}.gg-mobile-select{display:none}
.gg-home .gg-core-option{border:1px solid #d5e3f6;border-radius:12px;margin-bottom:9px;min-height:52px}
.gg-work-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin:0 0 16px}.gg-title-row{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.gg-unit-badge{font-size:11px;color:#4c72a6;display:none}.gg-work-head .gg-muted{margin:5px 0 0}.gg-find{position:relative;margin-top:4px}.gg-find>summary{font-size:12px;color:#55759f;cursor:pointer;white-space:nowrap;padding:5px;min-height:36px}.gg-search{position:absolute;right:0;top:36px;background:white;z-index:8;padding:14px;width:240px;border:1px solid #d5e3f6;border-radius:12px;box-shadow:0 5px 18px #1e427120}.gg-search label{display:block;font-size:13px;margin-bottom:5px}.gg-search input{width:100%;height:44px;border:1px solid #c5d8f3;border-radius:8px;padding:7px 10px;color:#102752;font-size:16px}
.gg-modules{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px 10px}
.gg-module{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:133px;padding:12px 5px;text-decoration:none;text-align:center;border:1px solid transparent;border-radius:17px;background:linear-gradient(120deg,#edf7ff,#e8f3ff);color:#061c59;transition:border-color .15s,box-shadow .15s}
.gg-module>svg{width:48px;height:48px;color:#0055c9;margin-bottom:9px;stroke-width:1.55}.gg-module strong{display:block;font-size:17px;line-height:1.35}.gg-module span span{display:block;margin-top:4px;color:#273d60;font-size:12px;line-height:1.4}.gg-module[data-tone=orange]{background:linear-gradient(120deg,#fff7ef,#fff2e4)}.gg-module[data-tone=orange]>svg{color:#e46d00}.gg-module:hover{border-color:#6ea8f3;box-shadow:0 3px 12px #2b66b51a}
.gg-continue,.gg-tools{display:flex;align-items:center;gap:10px;border-top:1px solid #e2ebf7;margin-top:16px;padding-top:12px}.gg-continue h3,.gg-tools h3{font-size:14px;margin:0;white-space:nowrap}.gg-continue>div,.gg-tools>div{display:flex;flex-wrap:wrap;gap:8px;flex:1}.gg-shortcut{display:flex;align-items:center;gap:8px;min-height:44px;padding:7px 10px;border:1px solid #d4e3f8;border-radius:9px;text-decoration:none;background:#fff;font-size:13px}.gg-shortcut svg{width:21px;height:21px;color:#0757c2}.gg-shortcut strong{font-weight:400}.gg-shortcut:hover{background:#edf5ff}
.gg-tasks{padding:15px 18px}.gg-tasks h2{font-size:25px}.gg-tasks .gg-muted{font-size:15px;margin-bottom:12px}.gg-task-group{padding:0 0 10px;margin-bottom:8px;border-bottom:1px solid #ecf1f8}.gg-task-group .gg-shortcut{border:0;border-radius:5px;padding:5px 8px;background:linear-gradient(90deg,#fff,#eaf3ff);font-size:16px;color:#0044b9;font-weight:600}.gg-task-group .gg-shortcut strong{font-weight:600}.gg-task-group .gg-shortcut::after{content:'›';margin-left:auto;font-size:23px}.gg-task-group p{margin:3px 8px 0 38px;color:#405675;font-size:13px}.gg-booking-names{margin:0;padding:0;list-style:none}.gg-booking-names>li{padding:10px 8px;border-bottom:1px solid #ecf1f8;font-size:16px;overflow-wrap:anywhere}
.gg-booking-heading{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:8px}
.gg-booking-heading>strong{font-weight:600;overflow-wrap:anywhere}
.gg-booking-time{font-size:14px;color:#3b5989;font-variant-numeric:tabular-nums;white-space:nowrap}
.gg-booking-details{display:flex;flex-wrap:wrap;justify-content:space-between;gap:2px 12px;margin-top:4px;font-size:14px;color:#3b5989}
.gg-booking-details>span:first-child{min-width:0;overflow-wrap:anywhere}
.gg-booking-details>span:last-child{font-variant-numeric:tabular-nums}
#gg-tasks:has(#gg-car-today:not([hidden])){display:flex;flex-direction:column}
#gg-tasks:has(#gg-car-today:not([hidden])) #gg-tasks-label{white-space:nowrap}
#gg-car-today{display:flex;flex:1;min-height:0;flex-direction:column;gap:12px}
#gg-car-today .gg-booking-names{overflow-y:auto}
#gg-car-today .gg-booking-names:empty{display:none}
.gg-booking-total{display:flex;flex-shrink:0;flex-wrap:wrap;justify-content:space-between;gap:4px 12px;margin:auto 0 0;padding:10px 8px;border-radius:10px;background:#eaf3ff;font-size:15px}
.gg-booking-total strong{font-weight:600;font-variant-numeric:tabular-nums}
.gg-task-note{background:#f4f8fd;padding:12px;border-radius:10px;color:#62799a;font-size:12px;line-height:1.6;margin-top:18px}
.gg-footer-note{font-size:10px;color:#768ba8;text-align:center;margin:14px 0 0}.gg-footer{text-align:center;padding:0 14px 16px;font-size:11px;color:#7a8ea8}.gg-footer span{margin-left:10px}.gg-empty{background:#f5f9ff;border:1px dashed #cddcf1;border-radius:12px;color:#4c668c;padding:22px;font-size:15px;text-align:center}
.gg-status,.gg-error{max-width:850px;margin:12px auto;padding:20px;text-align:center}.gg-error{background:#fff2ef;border:1px solid #f1c8c0;border-radius:12px}.gg-error button{min-height:44px;padding:8px 18px;border:0;border-radius:8px;background:#0b2a86;color:white;margin-right:14px;cursor:pointer}
@media(min-width:1450px){.gg-card{padding-top:18px;padding-bottom:18px}.gg-module{min-height:140px}.gg-module strong{font-size:19px}.gg-module span span{font-size:14px}.gg-tasks h2,.gg-home h2{font-size:27px}.gg-business-group h3{font-size:20px}.gg-business-option{min-height:64px}.gg-layout{gap:15px}}
@media(max-width:1250px) and (min-width:901px){.gg-layout{grid-template-columns:240px minmax(0,1fr)}.gg-tasks{grid-column:1/-1}.gg-tasks #gg-task-links{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.gg-tasks .gg-task-note{display:none}.gg-top-caption{font-size:15px;padding-left:18px}.gg-org{margin-left:35%;width:52%}.gg-company-row{--gg-company-gap:30px}.gg-intro h1{font-size:28px}.gg-intro p{font-size:19px}.gg-unit-strip{width:72%;margin-left:24%}.gg-unit-chip{padding:8px;gap:7px}.gg-unit-chip strong{font-size:15px}.gg-unit-chip svg{width:25px}.gg-unit-chip::after{display:none}.gg-car-art{opacity:.7}}
@media(max-width:900px){
 .gg-top{height:auto;min-height:58px;padding:9px 16px;gap:10px}.gg-brand{font-size:21px;letter-spacing:-.7px}.gg-mark{width:30px;height:30px}.gg-top-caption{display:none}.gg-help{padding:4px 8px}.gg-help span{display:none}.gg-account{gap:5px;font-size:12px}.gg-avatar{width:27px;height:27px}.gg-profile summary{max-width:90px}.gg-profile summary::after{display:none}
 .gg-hero{min-height:340px;padding:18px 14px 16px;justify-content:flex-start;gap:16px}.gg-intro{position:relative;left:auto;top:auto;z-index:2}.gg-intro h1{font-size:28px}.gg-intro p{font-size:18px}.gg-building-art{width:130px;height:89px;opacity:.5}.gg-car-art{width:105px;height:106px;opacity:.55;top:3px;bottom:auto}
 .gg-org,.gg-one-company{width:100%;margin:0;z-index:2}.gg-org-root{font-size:19px;width:176px;padding:4px 12px}.gg-org-root span{font-size:11px}.gg-company-row{--gg-company-gap:14px}.gg-company{min-height:68px;padding:6px 3px;border-width:1.5px}.gg-company img{width:98px;height:31px}.gg-company-mhl img{width:78px}.gg-company strong{width:94%;font-size:12px}.gg-one-company .gg-company-row{max-width:250px}
 .gg-unit-strip{width:auto;margin:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.gg-unit-chip{min-height:55px;padding:6px 7px;gap:6px;border-radius:12px}.gg-unit-chip>span{padding-left:6px}.gg-unit-chip strong{font-size:14px}.gg-unit-chip span span{font-size:10px}.gg-unit-chip svg{width:22px;height:22px}.gg-unit-chip::after{width:20px;height:20px;font-size:16px}
 .gg-layout,.gg-layout.gg-without-tasks{display:flex;flex-direction:column;padding:10px 10px 18px;gap:12px}.gg-card{border-radius:16px;padding:16px}.gg-business h2{font-size:22px}.gg-business>.gg-muted{font-size:13px;margin-bottom:12px}.gg-business-list{display:none}.gg-mobile-select{display:block}.gg-mobile-select label{display:block;font-size:13px;color:#506c92;margin-bottom:5px}.gg-mobile-select select{width:100%;min-height:48px;padding:9px 10px;border:1px solid #9cbbee;border-radius:9px;background:white;color:#103a83;font-size:16px}.gg-enter{display:none!important}.gg-access-note{font-size:11px;margin:8px 0 0;text-align:left}
 .gg-home h2{font-size:22px}.gg-work-head{margin-bottom:14px;gap:6px}.gg-work-head .gg-muted{font-size:14px}.gg-find>summary{font-size:11px;min-height:44px;display:flex;align-items:center}.gg-search{top:42px;width:230px}.gg-unit-badge{display:none}.gg-modules{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.gg-module{min-height:142px;padding:14px 7px}.gg-module>svg{width:43px;height:43px;margin-bottom:10px}.gg-module strong{font-size:17px}.gg-module span span{font-size:12px}
 .gg-continue,.gg-tools{flex-direction:column;align-items:stretch;padding-top:14px;margin-top:16px}.gg-continue h3,.gg-tools h3{font-size:16px}.gg-continue>div,.gg-tools>div{flex-direction:column}.gg-shortcut{min-height:46px;font-size:14px;padding:9px 12px}.gg-tasks h2{font-size:23px}.gg-task-group .gg-shortcut{font-size:16px}.gg-tasks .gg-muted{font-size:14px}.gg-footer-note{font-size:11px;text-align:left;line-height:1.6}.gg-footer span{display:block;margin:3px 0 0}
}
@media(max-width:360px){.gg-brand{font-size:19px}.gg-mark{width:24px;height:27px}.gg-avatar{display:none}.gg-account{gap:0}.gg-help{padding:4px}.gg-profile summary{max-width:68px}.gg-home h2{font-size:20px}.gg-company strong{font-size:11px}.gg-unit-chip::after{display:none}}
@media(prefers-reduced-motion:reduce){.gg-home *{transition:none!important}}

/* Company → business lines are measured against the visible, permission-filtered cards. */
.gg-hero>svg.gg-unit-connectors{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:1;overflow:visible}
.gg-unit-connectors path{stroke-width:2}
.gg-unit-group{display:flex;flex:1;min-width:0;gap:14px}
@media(max-width:900px){.gg-unit-strip{gap:14px;padding-top:8px}.gg-unit-group{flex-direction:column;gap:10px;padding-left:10px}.gg-unit-chip{flex:none}.gg-unit-strip:has(.gg-unit-group:only-child){grid-template-columns:1fr;max-width:280px;align-self:center;width:100%}}

/* Fit the desktop work area to the actual viewport; retain normal page scrolling on phones/tablets. */
@media(min-width:1251px) and (min-height:600px){
 body.gg-home{height:100vh;height:100svh;display:flex;flex-direction:column;overflow:hidden;--gg-fit-hero:clamp(222px,28vh,242px)}
 .gg-top{height:50px;min-height:50px;flex-shrink:0;padding-top:4px;padding-bottom:4px}
 .gg-brand{font-size:25px}.gg-mark{height:36px;width:39px}
 .gg-hero{height:var(--gg-fit-hero);min-height:0;flex-shrink:0;gap:12px;padding:7px 0 10px}
 .gg-intro{top:20px}.gg-intro h1{font-size:30px}.gg-intro p{font-size:20px}
 .gg-building-art{width:162px;height:110px}.gg-car-art{width:165px;height:165px}
 .gg-org{--gg-branch-gap:14px;flex-shrink:0}.gg-org:not(.gg-one-company){width:67.2%;margin-left:20.5%}.gg-org-root{font-size:20px;padding:3px 12px}.gg-org-root span{margin-top:2px;font-size:11px}
 .gg-company-row{--gg-company-gap:10px}.gg-company{min-height:68px;padding:3px 6px}.gg-org:not(.gg-one-company) .gg-company{width:70%}.gg-company img{height:32px;width:120px}.gg-company-mhl img{width:92px}.gg-company strong{font-size:16px;margin-top:2px;padding-top:2px}
 .gg-unit-strip,.gg-unit-group{gap:10px}.gg-unit-chip{min-height:50px;padding:4px 10px;gap:8px}.gg-unit-chip strong{font-size:16px}.gg-unit-chip span span{font-size:11px}.gg-unit-chip svg{width:27px;height:27px}
 .gg-layout{flex:1;width:100%;min-height:0;padding:10px 14px 8px;align-items:stretch}
 .gg-card{padding:13px 16px;min-height:0}.gg-business{padding:13px 20px;overflow-y:auto}.gg-work{display:flex;flex-direction:column;overflow-y:auto}.gg-tasks{overflow-y:auto}
 .gg-home h2,.gg-tasks h2{font-size:23px}.gg-business h2{font-size:20px;gap:6px}.gg-business h2 svg{width:25px;height:25px}.gg-muted,.gg-tasks .gg-muted{font-size:13px;margin-top:3px;margin-bottom:12px}
 .gg-business .gg-muted{font-size:13px;margin-bottom:10px}.gg-business-group{margin-bottom:9px;flex-shrink:0}.gg-business-group h3{font-size:16px;padding:5px 9px}.gg-business-option{min-height:44px;padding:4px 8px 4px 43px}.gg-business-option strong{font-size:16px}.gg-business-option>span{font-size:12px}.gg-business-option::before{top:12px;left:16px;width:19px;height:19px}.gg-business-option[aria-pressed=true]::before{border-width:5px}
 .gg-enter{min-height:44px;padding:8px;font-size:16px;flex-shrink:0}.gg-access-note{font-size:10px;margin-top:7px}
 .gg-work-head{margin-bottom:12px;flex-shrink:0}.gg-work-head .gg-muted{font-size:13px}.gg-find{margin:0}
 .gg-modules{flex:1;min-height:0;grid-auto-rows:minmax(100px,1fr);gap:9px}.gg-module{min-height:100px;padding:8px 5px;border-radius:14px}.gg-module>svg{width:36px;height:36px;margin-bottom:6px}.gg-module strong{font-size:16px;line-height:1.35}.gg-module span span{font-size:12px;line-height:1.35;margin-top:3px}
 .gg-footer-note{font-size:10px;line-height:1.4;margin:9px 0 0;flex-shrink:0}
 .gg-task-group{padding-bottom:5px;margin-bottom:5px}.gg-task-group .gg-shortcut{min-height:34px;font-size:14px;padding:4px 7px}.gg-task-group p{font-size:12px;line-height:1.4;margin-top:2px}.gg-task-note{font-size:11px;padding:9px;margin-top:10px;line-height:1.5}
 .gg-task-group p{display:none}
 .gg-footer{font-size:10px;line-height:1.4;padding:0 14px 8px;flex-shrink:0}
}
@media(max-width:900px){
 .gg-hero{min-height:0;gap:10px;padding-top:14px;padding-bottom:12px}.gg-org{--gg-branch-gap:15px}.gg-unit-chip{min-height:52px}
 .gg-profile summary{min-height:44px}.gg-help{min-height:44px;align-items:center}
}

/* Shared navigation catalog: disabled entries have no destination. */
.gg-home :is(.gg-module,.gg-shortcut,.gg-enter)[aria-disabled="true"],
.gg-home :is(.gg-business-option,.gg-unit-chip):disabled{background:#f1f3f5;border-color:#d5dae0;color:#66717f;box-shadow:none;cursor:not-allowed;transform:none}
.gg-home :is(.gg-module,.gg-shortcut,.gg-enter)[aria-disabled="true"] *,
.gg-home :is(.gg-business-option,.gg-unit-chip):disabled *{color:inherit}
.gg-home .gg-business-option:disabled::before{border-color:#aab2bd;background:#e3e7ec}
.gg-home .gg-unit-chip:disabled>span{border-color:#d5dae0}
.gg-home .gg-unit-chip:disabled::after{color:#66717f;background:#e8ebef;box-shadow:none}
@media(min-width:1251px) and (min-height:600px){.gg-home .gg-modules{flex:0 0 auto;min-height:auto;grid-auto-rows:minmax(100px,1fr)}}

/* Temporarily hide the GOODFILM sidebar while the main menu is reorganized. */
html body .app-shell.gf-menu-paused { display: block; padding-left: 0; }
html body .app-shell.gf-menu-paused > aside.sidebar[hidden] { display: none !important; }
.gf-menu-paused .gf-page-links {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end;
  gap: 4px 16px; padding: 4px 32px; border-bottom: 1px solid var(--gf-line); background: #fff;
}
.gf-menu-paused .gf-page-links a {
  display: inline-flex; align-items: center; min-height: 44px;
  color: var(--gf-navy); font-weight: 600; text-decoration: underline; text-underline-offset: 3px;
}
.gf-menu-paused .gf-exec-links { justify-content: flex-start; background: transparent; border: 0; }
@media (max-width: 960px) { .gf-menu-paused .gf-page-links { padding-inline: 14px; } }
@media print { .gf-menu-paused .gf-page-links { display: none; } }
