/* Local mirror: departments are composed of distinct working blocks.
   Existing form nodes, calendar cells, drag targets, native permissions and
   scroll containers keep their DOM and behaviour. This file is screen-only. */
@media screen {
body.bm-app-mirror {
  --bm-work-gap:22px;
  --bm-work-pad:22px;
}
/* One rhythm for the department shell, without setting display on permission-
   controlled content. Full-width production boards keep their usable width. */
body.bm-app-mirror .dept-page-wrap:not(.supply-flux) {
  padding:26px 28px 44px;
}
body.bm-app-mirror .dept-page-wrap>.dept-page-header:not(.cnc-page-header):not(.p3d-page-header) {
  min-height:88px;
  padding:20px 22px;
  margin:0 0 var(--bm-work-gap);
  gap:12px;
  flex-wrap:wrap;
  background:var(--bm-glass);
  border:1px solid var(--bm-line);
  border-radius:26px;
  box-shadow:var(--bm-shadow);
}
body.bm-app-mirror .dept-page-title {font-size:25px;letter-spacing:-.035em;line-height:1.2}
body.bm-app-mirror .dept-back-btn {min-height:36px;border-radius:12px;padding:8px 13px}
/* Shared production spaces: hero, tools, tasks and project board are independent
   zones, rather than one uninterrupted strip. No animation/transform on these
   ancestors: fullscreen windows and drag coordinates remain in viewport space. */
body.bm-app-mirror .elec-space:not([hidden]) {
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:var(--bm-work-gap);
  align-items:start;
  min-width:0;
  padding:18px 4px 36px;
}
body.bm-app-mirror .dept-page-wrap .elec-space {padding:0}
body.bm-app-mirror .elec-space>.elec-hero {
  min-height:104px;
  padding:25px 26px;
  margin:0;
  gap:12px 16px;
  background:var(--bm-glass);
  border:1px solid var(--bm-line);
  border-radius:26px;
  box-shadow:var(--bm-shadow);
}
body.bm-app-mirror .elec-hero-t {font-size:24px;letter-spacing:-.035em;color:var(--text)}
body.bm-app-mirror .elec-hero-s {font-size:13px;line-height:1.5;color:var(--muted)}
body.bm-app-mirror .elec-hero-ic {font-size:28px;animation:none}
body.bm-app-mirror .elec-hero::after {animation:none;background:none}
body.bm-app-mirror .elec-space>.elec-sec,
body.bm-app-mirror .el-proj-wrap,
body.bm-app-mirror .mech-wrap,
body.bm-app-mirror #mlDash {
  min-width:0;
  padding:var(--bm-work-pad);
  margin:0!important;
  background:var(--bm-glass);
  border:1px solid var(--bm-line);
  border-radius:26px;
  box-shadow:var(--bm-shadow);
}
body.bm-app-mirror .elec-space>.elec-sec {animation:none}
body.bm-app-mirror .elec-sec:empty {padding:0;border:0;box-shadow:none}
body.bm-app-mirror .elec-sec-hd,
body.bm-app-mirror .el-proj-ttl,
body.bm-app-mirror .mech-hd {font-size:18px;letter-spacing:-.025em;margin-bottom:18px}
body.bm-app-mirror .elec-space>.carp-bar {padding:12px 16px;margin:0;justify-self:start;gap:12px}
/* The week remains a calendar table. Its controls now form a real two-row
   control block, and the calendar occupies a separate working area below it. */
body.bm-app-mirror .wt-wrap {
  min-width:0;
  padding:var(--bm-work-pad);
  margin:0;
  background:var(--bm-glass);
  border:1px solid var(--bm-line);
  border-radius:26px;
  box-shadow:var(--bm-shadow);
}
body.bm-app-mirror .elec-sec .wt-wrap {padding:0;background:transparent;border:0;border-radius:0;box-shadow:none}
body.bm-app-mirror .wt-head:not([hidden]) {
  display:grid;
  grid-template-columns:minmax(0,1fr) auto auto;
  gap:16px 12px;
  align-items:center;
  margin:0 0 20px;
}
body.bm-app-mirror .wt-head>.wt-title {grid-column:1;grid-row:1;font-size:19px;line-height:1.35;letter-spacing:-.025em}
body.bm-app-mirror .wt-head>.wt-dash-btn,
body.bm-app-mirror .wt-head>.wt-cfg-btn {grid-row:1;min-height:38px;white-space:normal}
body.bm-app-mirror .wt-head>.wt-spans {
  grid-column:1 / 3;
  grid-row:2;
  min-width:0;
  padding:8px;
  margin:0;
  gap:6px;
  flex-wrap:wrap;
  border:1px solid #e0e6ef;
  border-radius:17px;
  background:rgba(242,246,251,.8);
}
body.bm-app-mirror .wt-head>.wt-nav {
  grid-column:3;
  grid-row:2;
  justify-content:flex-end;
  min-width:0;
  margin:0;
  gap:7px;
}
body.bm-app-mirror .wt-navbtn {min-height:35px;padding:7px 11px;border-radius:11px}
body.bm-app-mirror .wt-tablewrap {min-width:0;border-radius:18px;border-color:#dbe3ed}
body.bm-app-mirror .wt-empty {padding:28px 20px;border:1px dashed #d7e1eb;border-radius:18px;background:rgba(255,255,255,.55);line-height:1.6}
/* CNC / 3D: title and equipment have separate surfaces. Equipment retains its
   original flex strip, native horizontal scroll, units and drop targets. */
body.bm-app-mirror .dept-page-header:is(.cnc-page-header,.p3d-page-header):not([hidden]) {
  display:grid;
  grid-template-columns:minmax(190px,230px) minmax(0,1fr);
  gap:var(--bm-work-gap);
  align-items:stretch;
  margin:0 0 var(--bm-work-gap);
}
body.bm-app-mirror :is(.cnc-page-header,.p3d-page-header)>.cnc-page-heading {
  grid-template-columns:auto minmax(0,1fr) auto;
  align-content:start;
  padding:25px 20px;
  row-gap:22px;
  min-width:0;
  border:1px solid var(--bm-line);
  border-radius:26px;
  background:var(--bm-glass);
  box-shadow:var(--bm-shadow);
}
body.bm-app-mirror :is(.cnc-page-header,.p3d-page-header)>.cnc-page-heading>.dept-page-title {font-size:25px;white-space:normal}
body.bm-app-mirror :is(.cnc-page-header .cnc-machines,.p3d-page-header .p3d-printers) {
  padding:18px 16px;
  gap:14px;
  border:1px solid var(--bm-line);
  border-radius:26px;
  background:var(--bm-glass);
  box-shadow:var(--bm-shadow);
}
body.bm-app-mirror :is(#cncBoardRoot,#p3dBoardRoot,#plzContent>.cnc-board) {
  min-width:0;
  padding:20px;
  margin:0;
  border:1px solid var(--bm-line);
  border-radius:26px;
  background:var(--bm-glass);
  box-shadow:var(--bm-shadow);
}
body.bm-app-mirror :is(#cncBoardRoot,#p3dBoardRoot,#plzContent) .cnc-bar {padding:13px 14px;margin-bottom:18px;gap:10px}
body.bm-app-mirror :is(#cncBoardRoot,#p3dBoardRoot,#plzContent) .cnc-cols {gap:16px;padding-bottom:16px}
body.bm-app-mirror :is(#cncBoardRoot,#p3dBoardRoot,#plzContent) .cnc-col {padding:13px 12px 14px;border-radius:20px}
/* Statistics and staff are a two-part dashboard. The grid does not force
   visibility: native inline display:none and the hidden attribute still win. */
body.bm-app-mirror #deptMoneyBlock:not([hidden]) {
  display:grid;
  grid-template-columns:minmax(220px,.75fr) minmax(0,1.65fr);
  column-gap:22px;
  row-gap:14px;
  align-items:start;
  padding:22px;
  margin-bottom:22px;
  border:1px solid var(--bm-line);
  border-radius:26px;
  background:var(--bm-glass);
  box-shadow:var(--bm-shadow);
}
body.bm-app-mirror #deptMoneyBlock>.dept-stats-row {grid-column:1;grid-row:1 / 3;grid-template-columns:minmax(0,1fr);gap:12px;margin:0}
body.bm-app-mirror #deptMoneyBlock>div:not(.dept-stats-row):not(.dept-emp-grid) {grid-column:2;grid-row:1;margin:2px 0 0!important}
body.bm-app-mirror #deptMoneyBlock>.dept-emp-grid {grid-column:2;grid-row:2;grid-template-columns:repeat(auto-fill,minmax(min(250px,100%),1fr));gap:12px;margin:0}
body.bm-app-mirror #deptMoneyBlock .dept-stat-card {padding:17px 18px;min-width:0}
body.bm-app-mirror #deptMoneyBlock .dept-emp-card {min-height:92px;padding:18px;min-width:0}
/* Remote / contractor registry: existing direct person cards become a real
   collection grid. Header, period, totals and search span the collection. */
body.bm-app-mirror .vac-page:has(>.ctr-card):not([hidden]) {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  align-items:start;
  gap:18px;
  padding:26px 28px 44px;
}
body.bm-app-mirror .vac-page:has(>.ctr-card)>:not(.ctr-card) {grid-column:1 / -1;margin:0}
body.bm-app-mirror .vac-page:has(>.ctr-card)>.vac-header {padding:18px 20px;min-height:86px;background:var(--bm-glass);border:1px solid var(--bm-line);border-radius:26px;gap:12px;flex-wrap:wrap}
body.bm-app-mirror .vac-page:has(>.ctr-card)>.ctr-mbar {padding:8px 10px;gap:8px}
body.bm-app-mirror .vac-page:has(>.ctr-card)>.ctr-add-row {padding:14px;background:var(--bm-glass);border:1px solid var(--bm-line);border-radius:20px}
body.bm-app-mirror .vac-page:has(>.ctr-card)>.ctr-card {min-width:0;margin:0;align-self:start;border-radius:24px!important}
body.bm-app-mirror .ctr-card-hd {padding:18px;flex-wrap:wrap;gap:9px}
body.bm-app-mirror .ctr-fin-box {padding:12px 10px;border-radius:18px!important;box-shadow:0 3px 12px #293e5510!important}
body.bm-app-mirror .ctr-fin {gap:10px;padding:14px 18px}
body.bm-app-mirror .ctr-top-sum {padding:0}
/* Mechanics: action tiles form their own navigation group, while financial
   summary and project mechanisms occupy independent adjacent working blocks. */
body.bm-app-mirror .dept-page-ml:not([hidden]) {display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:22px;align-items:start;max-width:1400px}
body.bm-app-mirror .dept-page-ml>.bm-screen-map,
body.bm-app-mirror .dept-page-ml>.dept-page-header,
body.bm-app-mirror .dept-page-ml>.ml-nav {grid-column:1 / -1;margin:0!important}
body.bm-app-mirror .dept-page-ml>.ml-nav {padding:14px;gap:12px;border:1px solid var(--bm-line);border-radius:26px;background:var(--bm-glass)}
body.bm-app-mirror .ml-nav-btn {min-height:98px;flex-direction:column;gap:12px;border-radius:20px;padding:18px 12px;font-weight:600}
body.bm-app-mirror .ml-nav-btn .ml-nav-ico {font-size:26px}
body.bm-app-mirror .dept-page-ml>:is(.ml-section,.ml-wrap) {grid-column:1 / -1;min-width:0}
body.bm-app-mirror .ml-wrap:not([hidden]) {display:grid;grid-template-columns:minmax(0,1fr);gap:18px}
body.bm-app-mirror .dept-page-ml>.ml-wrap {width:100%;max-width:none;margin:0}
body.bm-app-mirror .ml-wrap>.ml-head {padding:20px 22px;margin:0;border:1px solid var(--bm-line);border-radius:24px;background:var(--bm-glass);gap:14px;flex-wrap:wrap}
body.bm-app-mirror .ml-wrap>.ml-month {padding:14px 16px;margin:0;border:1px solid var(--bm-line);border-radius:20px;background:var(--bm-glass);gap:12px;flex-wrap:wrap}
body.bm-app-mirror .ml-wrap>.ml-grp {padding:20px;margin:0;border:1px solid var(--bm-line);border-radius:24px;background:var(--bm-glass)}
body.bm-app-mirror .ml-wrap>.ml-tbl {border-radius:20px;margin:0}
body.bm-app-mirror .ml-dash-hd {gap:12px;margin-bottom:20px}
body.bm-app-mirror .ml-dash-row {padding:10px 0;gap:14px}
body.bm-app-mirror .ml-dash-total {margin-top:14px;padding-top:16px}
body.bm-app-mirror .mech-proj {padding:18px;margin-bottom:14px;border-radius:20px}
/* Roll workspace is a collection of full working columns, not a narrow strip
   of 320px panels surrounded by unused desktop space. */
body.bm-app-mirror .asm-roll-board {grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;align-items:start}
body.bm-app-mirror .asm-roll-col {border-radius:24px}
body.bm-app-mirror .asm-roll-col-head {padding:20px 18px 16px}
body.bm-app-mirror .asm-roll-list {padding:0 14px 16px;gap:14px}
body.bm-app-mirror .asm-roll-card-body {padding:16px}
@media(max-width:1100px) {
  body.bm-app-mirror .wt-head>.wt-spans {grid-column:1 / -1;grid-row:2}
  body.bm-app-mirror .wt-head>.wt-nav {grid-column:1 / -1;grid-row:3;justify-content:flex-start}
  body.bm-app-mirror .dept-page-header:is(.cnc-page-header,.p3d-page-header):not([hidden]) {grid-template-columns:minmax(0,1fr)}
  body.bm-app-mirror :is(.cnc-page-header,.p3d-page-header)>.cnc-page-heading {grid-template-columns:auto minmax(0,1fr) auto;align-items:center;row-gap:12px;padding:20px}
  body.bm-app-mirror .asm-roll-board {grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:900px) {
  body.bm-app-mirror .dept-page-ml:not([hidden]) {grid-template-columns:minmax(0,1fr)}
  body.bm-app-mirror .vac-page:has(>.ctr-card):not([hidden]) {grid-template-columns:minmax(0,1fr)}
  body.bm-app-mirror #deptMoneyBlock:not([hidden]) {grid-template-columns:minmax(0,1fr)}
  body.bm-app-mirror #deptMoneyBlock>.dept-stats-row {grid-column:1;grid-row:1;grid-template-columns:repeat(3,minmax(0,1fr))}
  body.bm-app-mirror #deptMoneyBlock>div:not(.dept-stats-row):not(.dept-emp-grid) {grid-column:1;grid-row:2}
  body.bm-app-mirror #deptMoneyBlock>.dept-emp-grid {grid-column:1;grid-row:3}
}
@media(max-width:760px) {
  body.bm-app-mirror {--bm-work-gap:16px;--bm-work-pad:16px}
  body.bm-app-mirror .dept-page-wrap:not(.supply-flux),
  body.bm-app-mirror .vac-page:has(>.ctr-card):not([hidden]) {padding:14px 12px 30px}
  body.bm-app-mirror .dept-page-title {font-size:23px}
  body.bm-app-mirror .dept-page-wrap>.dept-page-header:not(.cnc-page-header):not(.p3d-page-header) {min-height:96px;padding:18px 16px;gap:10px;border-radius:22px}
  body.bm-app-mirror .elec-space:not([hidden]) {padding:14px 12px 28px}
  body.bm-app-mirror .dept-page-wrap .elec-space {padding:0}
  body.bm-app-mirror .elec-space>.elec-hero {padding:20px 18px;min-height:112px;border-radius:22px}
  body.bm-app-mirror .elec-hero-t {font-size:22px}
  body.bm-app-mirror .elec-hero-s {flex-basis:100%;margin-left:0}
  body.bm-app-mirror :is(.elec-space>.elec-sec,.el-proj-wrap,.mech-wrap,#mlDash,.wt-wrap) {border-radius:22px}
  body.bm-app-mirror .wt-head:not([hidden]) {grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}
  body.bm-app-mirror .wt-head>.wt-title {grid-column:1 / -1;grid-row:1;font-size:18px}
  body.bm-app-mirror .wt-head>.wt-dash-btn,
  body.bm-app-mirror .wt-head>.wt-cfg-btn {grid-row:2;min-width:0;min-height:40px}
  body.bm-app-mirror .wt-head>.wt-spans {grid-column:1 / -1;grid-row:3;padding:8px;gap:6px}
  body.bm-app-mirror .wt-head>.wt-nav {grid-column:1 / -1;grid-row:4;gap:8px}
  body.bm-app-mirror .wt-navbtn {min-height:38px;padding:8px 10px}
  body.bm-app-mirror :is(#cncBoardRoot,#p3dBoardRoot,#plzContent>.cnc-board) {padding:14px 12px;border-radius:22px}
  body.bm-app-mirror :is(.cnc-page-header .cnc-machines,.p3d-page-header .p3d-printers) {padding:14px 12px;border-radius:22px}
  body.bm-app-mirror #deptMoneyBlock:not([hidden]) {padding:16px;gap:16px}
  body.bm-app-mirror #deptMoneyBlock>.dept-stats-row {grid-template-columns:minmax(0,1fr)}
  body.bm-app-mirror #deptMoneyBlock .dept-stat-card {display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 16px}
  body.bm-app-mirror #deptMoneyBlock .dept-stat-lbl {margin:0}
  body.bm-app-mirror .ctr-fin {padding:12px;gap:7px;flex-wrap:wrap}
  body.bm-app-mirror .ctr-fin-box {min-width:110px;flex:1 1 110px}
  body.bm-app-mirror .dept-page-ml>.ml-nav {padding:10px;gap:10px;grid-template-columns:repeat(2,minmax(0,1fr))}
  body.bm-app-mirror .ml-nav-btn {min-height:104px;padding:18px 10px}
  body.bm-app-mirror .ml-dash-month {flex-wrap:wrap;min-width:0}
  body.bm-app-mirror .ml-msel.ml-msel-sm {min-width:0;max-width:100%}
  body.bm-app-mirror .asm-roll-board {grid-template-columns:minmax(0,1fr);gap:16px}
}
}

@media screen {
/* Native flux workspaces already have meaningful zones. Give those real panels
   the same working rhythm as the rest of the mirror without changing their
   flex/grid tracks, drag columns, hidden toolbars or scroll containers. */
body.bm-app-mirror {--bm-work-radius:26px}
body.bm-app-mirror .dept-fs.trips-flux,
body.bm-app-mirror .dept-page-wrap.supply-flux {
  min-width:0;
  padding:var(--bm-work-pad);
  gap:var(--bm-work-gap);
  border-radius:var(--bm-work-radius)!important;
}
body.bm-app-mirror .dept-fs.trips-flux>aside.dept-fs-side,
body.bm-app-mirror .dept-fs.trips-flux>main.dept-fs-main,
body.bm-app-mirror .dept-page-wrap.supply-flux>section.supply-hero,
body.bm-app-mirror .dept-page-wrap.supply-flux>section.sup-board-wrap {
  min-width:0;
  padding:var(--bm-work-pad);
  gap:var(--bm-work-gap);
  border-radius:var(--bm-work-radius)!important;
}
/* Supply remains a native block shell; its two work panels are separated by
   an actual margin, while the three-part hero keeps its existing grid. */
body.bm-app-mirror .dept-page-wrap.supply-flux>section.sup-board-wrap {
  margin-top:var(--bm-work-gap);
}
/* The trip canvas already sits inside the padded main work panel. Keep one
   padding layer, and reserve a single full-width track for every native view. */
body.bm-app-mirror .dept-fs.trips-flux #deptWorkspace.trip-workspace:not([hidden]) {
  display:grid;
  grid-template-columns:minmax(0,1fr);
  min-width:0;
  gap:var(--bm-work-gap);
  border-radius:var(--bm-work-radius)!important;
}
body.bm-app-mirror .dept-fs.trips-flux #deptWorkspace.trip-workspace>.trip-view-stage {min-width:0}
@media(max-width:760px) {body.bm-app-mirror {--bm-work-radius:22px}}
}
