/* Printer actions share the dashboard's quiet, neutral surface system. */
.printer-controls {
  grid-column: 1 / -1;
  min-width: 0;
  padding: 20px;
  background: var(--panel);
  border: 1px solid var(--border);
  border-radius: 12px;
}
.printer-controls-heading,
.printer-controls-heading-actions {
  display: flex;
  align-items: center;
  gap: 12px;
}
.printer-controls-heading { justify-content: space-between; margin-bottom: 22px; }
.printer-controls-heading-actions { flex-wrap: wrap; }
.printer-controls.is-collapsed .printer-controls-heading { margin-bottom: 0; }
.printer-controls-heading h2 {
  margin: 0;
  color: var(--text);
  font-size: 17px;
  font-weight: 600;
  letter-spacing: -.25px;
}
.printer-controls-heading .pill { font-size: 12px; white-space: nowrap; }
#printer-controls-toggle {
  min-height: 36px;
  padding: 7px 11px;
  color: var(--muted);
  background: transparent;
  border-color: transparent;
  font-size: 12px;
  white-space: nowrap;
}
#printer-controls-toggle:hover { color: var(--text); background: var(--panel-raised); }
.printer-main-controls {
  display: grid;
  grid-template-columns: minmax(0, 1.55fr) minmax(150px, .7fr) minmax(240px, 1.2fr);
  gap: 28px;
}
.printer-control-group { min-width: 0; }
.printer-control-group h3,
.printer-target-form label {
  margin: 0 0 10px;
  color: var(--text);
  font-size: 13px;
  font-weight: 500;
}
.printer-speed-modes,
.printer-light-buttons {
  display: grid;
  gap: 3px;
  padding: 3px;
  border-radius: 9px;
  background: var(--panel-raised);
}
.printer-speed-modes { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.printer-light-buttons { grid-template-columns: repeat(2, minmax(0, 1fr)); max-width: 180px; }
.printer-controls button {
  min-height: 36px;
  font-size: 12px;
  transition: background-color .15s, border-color .15s, color .15s;
}
.printer-speed-modes button,
.printer-light-buttons button {
  min-width: 0;
  padding: 8px 6px;
  border: 1px solid transparent;
  border-radius: 6px;
  background: transparent;
  color: var(--muted);
}
.printer-speed-modes button { min-height: 52px; }
.printer-speed-modes button small {
  display: block;
  margin-top: 3px;
  color: var(--muted);
  font-size: 11px;
  font-variant-numeric: tabular-nums;
}
.printer-controls button.is-current { color: var(--text); background: var(--accent-soft); border-color: var(--border); }
.printer-controls button.is-pending { outline: 1px dashed var(--accent); outline-offset: 2px; }
.printer-controls button.is-current small { color: var(--accent); }
.printer-speed-modes button:hover:enabled,
.printer-light-buttons button:hover:enabled { background: var(--accent-soft); color: var(--text); }
.printer-control-note {
  min-height: 16px;
  margin: 8px 0 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.5;
}
.printer-job-buttons { display: flex; flex-wrap: wrap; gap: 7px; }
.printer-job-buttons button { padding: 8px 11px; background: var(--panel-raised); border-color: var(--border); }
.printer-job-buttons .printer-danger { color: var(--danger); background: transparent; border-color: var(--border); }
.printer-job-buttons .printer-danger:hover:enabled { background: rgba(240, 165, 165, .09); border-color: var(--danger); }
.printer-controls button:disabled,
.printer-controls input:disabled { opacity: .4; cursor: not-allowed; }
.printer-controls :is(button, input, summary):focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
.printer-controls-help { margin: 20px 0 0; color: var(--muted); font-size: 12px; line-height: 1.5; }
.printer-command-status {
  margin: 9px 0 0;
  padding: 9px 11px;
  border-radius: 7px;
  color: var(--muted);
  background: var(--panel-raised);
  font-size: 12px;
  line-height: 1.5;
}
.printer-command-status[data-state="neutral"] { display: none; }
.printer-command-status[data-state="sent"],
.printer-command-status[data-state="accepted"],
.printer-command-status[data-state="confirmed"],
.printer-command-status[data-state="reported"],
.printer-command-status[data-state="unchanged"] { color: var(--accent); background: var(--accent-soft); }
.printer-command-status[data-state="rejected"],
.printer-command-status[data-state="unconfirmed"] { color: var(--danger); background: rgba(240, 165, 165, .07); }
.printer-manual-controls { margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--border); }
.printer-manual-controls summary { color: var(--muted); font-size: 13px; font-weight: 500; cursor: pointer; }
.printer-manual-controls summary:hover,
.printer-manual-controls[open] summary { color: var(--text); }
.printer-manual-controls > .hint { max-width: 800px; margin: 12px 0 18px; font-size: 12px; line-height: 1.6; }
.printer-manual-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }
.printer-target-form { min-width: 0; }
.printer-target-form label { display: block; }
.printer-target-inputs { display: flex; align-items: center; gap: 6px; }
.printer-target-inputs button { min-width: 36px; padding: 7px 10px; background: var(--panel-raised); border-color: var(--border); }
.printer-target-inputs button:last-child { margin-left: 4px; background: var(--accent-soft); color: var(--accent); }
.printer-target-inputs input {
  width: 64px;
  min-width: 0;
  min-height: 36px;
  padding: 7px 5px;
  border: 1px solid var(--border);
  border-radius: 7px;
  background: var(--panel-raised);
  color: var(--text);
  font: inherit;
  font-size: 13px;
  font-variant-numeric: tabular-nums;
  text-align: center;
  appearance: textfield;
  -moz-appearance: textfield;
}
.printer-target-inputs input::-webkit-outer-spin-button,
.printer-target-inputs input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.printer-target-unit { margin-right: 3px; color: var(--muted); font-size: 12px; }
@media (max-width: 1100px) {
  .printer-main-controls { grid-template-columns: minmax(0, 1.6fr) minmax(160px, 1fr); gap: 22px; }
  .printer-main-controls .printer-control-group:last-child { grid-column: 1 / -1; }
  .printer-manual-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 680px) {
  .printer-controls { padding: 16px; }
  .printer-controls-heading { align-items: center; gap: 12px; margin-bottom: 20px; }
  .printer-controls-heading-actions { justify-content: flex-end; gap: 8px; }
  .printer-controls-heading .pill { white-space: normal; }
  .printer-main-controls { grid-template-columns: minmax(0, 1fr); gap: 20px; }
  .printer-main-controls .printer-control-group:last-child { grid-column: auto; }
  .printer-manual-grid { grid-template-columns: minmax(0, 1fr); gap: 20px; }
  .printer-target-inputs { max-width: 310px; }
  .printer-target-inputs input { width: 76px; }
}
@media (max-width: 520px) {
  .printer-controls-heading .pill { display: none; }
  .printer-controls-heading h2 { font-size: 15px; }
}
.printer-auto-light{margin-top:18px;padding-top:14px;border-top:1px solid var(--border)}
.printer-auto-light label{display:flex;align-items:center;justify-content:space-between;gap:16px;font-size:13px;font-weight:500;cursor:pointer}
.printer-auto-light input{appearance:none;width:36px;height:21px;flex:0 0 36px;margin:0;border:1px solid var(--border);border-radius:12px;background:var(--inset);cursor:pointer;position:relative}
.printer-auto-light input:before{content:"";position:absolute;top:3px;left:3px;width:13px;height:13px;border-radius:50%;background:var(--muted);transition:transform .15s}
.printer-auto-light input:checked{background:var(--accent-soft);border-color:var(--accent)}
.printer-auto-light input:checked:before{transform:translateX(15px);background:var(--accent)}
.printer-auto-light input:disabled{cursor:wait;opacity:.5}
#printer-light-auto-status{color:var(--text);font-size:11px;line-height:1.6}
.printer-maintenance{grid-column:1/-1;border-top:1px solid var(--border);padding-top:20px;display:flex;flex-wrap:wrap;align-items:center;gap:12px 24px}.printer-maintenance h3{margin:0 0 8px}.printer-maintenance>div:first-child{flex:1;min-width:220px}.maintenance-actions{display:flex;gap:8px;flex-wrap:wrap}.printer-maintenance>p{flex-basis:100%;margin:0}.printer-maintenance button{white-space:nowrap}
.maintenance-page-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.maintenance-card{padding:24px}.maintenance-card .printer-maintenance{border:0;padding:0;align-items:flex-start;gap:20px}.maintenance-card .printer-maintenance>div:first-child{flex-basis:100%}.maintenance-card .maintenance-actions{margin:18px 0}.filament-temperature{display:flex;align-items:center;gap:10px;margin:10px 0}.filament-temperature input{width:110px;padding:9px 12px;border:1px solid var(--border);border-radius:7px;background:var(--inset);color:var(--text)}.filament-reported{padding:12px;border:1px solid var(--border);border-radius:7px;font-size:13px}.maintenance-card>label{font-size:12px;color:var(--muted)}#maintenance-command-status{margin:0 0 20px;padding:12px 16px;border-radius:8px;background:var(--panel)}.printer-controls-heading-actions .button-link{text-decoration:none;font-size:12px}@media(max-width:950px){.maintenance-page-grid{grid-template-columns:1fr}}
.maintenance-card .maintenance-action-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;flex-basis:100%;margin:0}
.maintenance-action{min-width:0}
.maintenance-action button{width:100%;min-height:38px;padding:9px 10px;font-size:12px}
.maintenance-action button:disabled{cursor:not-allowed;opacity:.45}
.maintenance-action-reason{margin:9px 0 0;color:var(--muted);font-size:11px;line-height:1.6}
.maintenance-action-reason[data-available="true"]{color:var(--text)}
.maintenance-thermal{flex-basis:100%;padding:15px;border:1px solid var(--border);border-radius:8px;background:var(--inset)}
.maintenance-thermal h4{margin:0 0 15px;color:var(--muted);font-size:11px;font-weight:500}
.maintenance-thermal-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.maintenance-thermal-grid>div+div{padding-left:18px;border-left:1px solid var(--border)}
.maintenance-thermal-heading{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:5px 10px;color:var(--muted);font-size:12px}
.maintenance-thermal-heading strong{color:var(--text);font-size:17px;font-weight:500;font-variant-numeric:tabular-nums}
.maintenance-thermal-target{display:block;margin-top:5px;color:var(--muted);font-size:11px;font-variant-numeric:tabular-nums}
.maintenance-thermal-readiness{margin:13px 0 3px;color:var(--muted);font-size:11px;line-height:1.5}
.maintenance-thermal-readiness[data-ready="true"]{color:var(--text)}
.maintenance-thermal .hint{margin:0;font-size:10px;line-height:1.5}
@media(max-width:480px){.maintenance-card .maintenance-action-grid{grid-template-columns:1fr;gap:18px}.maintenance-card{padding:18px}.maintenance-thermal{padding:12px}.maintenance-thermal-grid{gap:12px}.maintenance-thermal-grid>div+div{padding-left:12px}}
.maintenance-control-space{min-width:0}
.maintenance-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;padding:5px;margin-bottom:16px;border:1px solid var(--border);border-radius:10px;background:var(--inset)}
.maintenance-tabs button{min-width:0;min-height:40px;padding:8px 5px;background:transparent;border:1px solid transparent;color:var(--muted);font-size:12px}
.maintenance-tabs button[aria-selected="true"]{background:var(--panel);border-color:var(--border);color:var(--text)}
.maintenance-tabs button:focus-visible,.maintenance-tabpanel :is(button,input,select):focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.maintenance-workspace .maintenance-control-space .maintenance-page-grid{display:block}
.maintenance-tabpanel[hidden]{display:none}
.movement-access{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px;padding:16px;border:1px solid var(--border);border-radius:10px;background:var(--panel)}
.movement-access strong{display:block;font-size:13px;line-height:1.5}
.movement-access p{margin:5px 0 0;color:var(--muted);font-size:12px;line-height:1.6}
.movement-access button{flex-shrink:0}
.movement-access[data-enabled="true"]{border-color:var(--accent);background:var(--accent-soft)}
.movement-warning{box-sizing:border-box;width:calc(100% - 32px);max-width:510px;max-height:calc(100dvh - 32px);overflow:auto;padding:28px;border:1px solid var(--border);border-radius:16px;background:var(--panel);color:var(--text);box-shadow:0 24px 80px #0006}
.movement-warning::backdrop{background:#0009;backdrop-filter:blur(3px)}
.movement-warning-icon{display:grid;place-items:center;width:38px;height:38px;border:1px solid var(--accent);border-radius:12px;background:var(--accent-soft);color:var(--accent);font-size:20px;font-weight:600}
.movement-warning h2{margin:18px 0 12px;font-size:21px;line-height:1.3}
.movement-warning p{font-size:13px;line-height:1.7;color:var(--muted)}
.movement-warning .hint{font-size:12px}
.movement-warning-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:24px}
.movement-warning :is(button,a):focus-visible,.movement-access:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
@media(max-width:600px){.movement-access{align-items:flex-start;flex-direction:column}.movement-access button{align-self:flex-start}.movement-warning{padding:22px}}
.maintenance-tabpanel .maintenance-card+.maintenance-card{margin-top:16px}
.maintenance-tabpanel button:disabled,.maintenance-tabpanel input:disabled,.maintenance-tabpanel select:disabled{opacity:.45;cursor:not-allowed}
.maintenance-tabpanel h3{margin:0 0 10px}
.maintenance-tabpanel .hint{font-size:11px}
.printer-jog{flex-basis:100%;padding:16px;border:1px solid var(--border);border-radius:10px;background:var(--inset)}
.printer-jog-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px}
.printer-jog-heading[hidden]{display:none}
.printer-jog-mode{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px;padding:12px;border:1px solid var(--border);border-radius:8px;background:var(--panel);cursor:pointer}
.printer-jog-mode>span{display:grid;gap:5px;min-width:0}
.printer-jog-mode strong{font-size:12px;font-weight:600}
.printer-jog-mode small{font-size:11px;color:var(--muted);line-height:1.5}
.printer-jog-mode input{width:18px;height:18px;flex-shrink:0;accent-color:var(--accent)}
.printer-jog-mode.is-armed{border-color:var(--accent);background:var(--accent-soft)}
.printer-equipment-fact{display:flex;align-items:flex-start;gap:10px;margin:14px 0;padding:12px;border:1px solid var(--border);border-radius:8px;background:var(--inset);font-size:12px;cursor:pointer}
.printer-equipment-fact[hidden]{display:none}
.printer-equipment-fact input{margin:2px 0 0;accent-color:var(--accent)}
.printer-equipment-fact small{display:block;margin-top:5px;color:var(--muted);font-size:11px}
.printer-jog-hold-status{font-size:12px;line-height:1.6;margin:12px 0;color:var(--text)}
.printer-jog-hold-status:empty{display:none}
.printer-jog-hold-status[data-state="unconfirmed"]{color:var(--danger)}
.printer-jog-hold-status[data-state="reported"]{color:var(--accent)}
.printer-jog-heading label,.printer-extrude-heading label{font-size:12px;color:var(--muted)}
.printer-jog select,.printer-extrude-heading select,.printer-preheat-choice select{min-height:38px;padding:7px 10px;border:1px solid var(--border);border-radius:7px;background:var(--panel);color:var(--text);font:inherit;font-size:12px}
.printer-jog-layout{display:flex;align-items:center;justify-content:center;gap:24px}
.printer-xy-pad{display:grid;grid-template-columns:repeat(3,56px);grid-template-rows:repeat(3,52px);gap:5px}
.printer-xy-pad button,.printer-z-pad button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:44px;min-height:44px;padding:5px;border-color:var(--border);background:var(--panel);color:var(--text)}
.printer-xy-pad button.hold-enabled,.printer-z-pad button.hold-enabled{touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.printer-xy-pad button.is-holding,.printer-z-pad button.is-holding{border-color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 2px var(--accent-soft)}
.printer-xy-pad button:focus-visible,.printer-z-pad button:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.printer-xy-pad button>span,.printer-z-pad button>span{font-size:21px;line-height:1}
.printer-xy-pad small,.printer-z-pad small{font-size:10px;line-height:1.4;color:var(--muted)}
.jog-y-plus{grid-column:2;grid-row:1}.jog-x-minus{grid-column:1;grid-row:2}.jog-x-plus{grid-column:3;grid-row:2}.jog-y-minus{grid-column:2;grid-row:3}
.printer-xy-center{grid-column:2;grid-row:2;display:grid;place-items:center;color:var(--muted);font-size:10px}
.printer-z-pad{display:flex;flex-direction:column;align-items:stretch;gap:10px;min-width:56px;padding-left:22px;border-left:1px solid var(--border)}
.printer-z-pad>span{text-align:center;font-size:10px;color:var(--muted)}
.printer-jog>.printer-control-note{margin-top:16px}
.printer-jog>.hint{margin:8px 0 0}
.printer-extrude-heading{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:18px 0}
.printer-extrude-heading .filament-reported{margin:0;padding:10px;line-height:1.5}
.printer-extrude-heading label{display:grid;gap:7px}
.printer-calibration-choices{display:grid;gap:8px;border:0;padding:0;margin:18px 0}
.printer-calibration-choices legend{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.printer-calibration-choices label{display:flex;align-items:flex-start;gap:12px;padding:13px;border:1px solid var(--border);border-radius:8px;background:var(--inset);cursor:pointer}
.printer-calibration-choices input{margin:3px 0 0;accent-color:var(--accent)}
.printer-calibration-choices strong,.printer-preferences strong{display:block;color:var(--text);font-size:12px;font-weight:500;line-height:1.5}
.printer-calibration-choices small,.printer-preferences small{display:block;margin-top:4px;color:var(--muted);font-size:11px;line-height:1.5}
.printer-preferences{display:grid;margin-top:16px}
.printer-preferences label{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 0;border-top:1px solid var(--border);cursor:pointer}
.printer-preferences input{appearance:none;position:relative;width:36px;height:22px;flex:0 0 36px;margin:0;border:1px solid var(--border);border-radius:12px;background:var(--inset)}
.printer-preferences input:before{content:"";position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:var(--muted);transition:transform .15s}
.printer-preferences input:checked{background:var(--accent-soft);border-color:var(--accent)}
.printer-preferences input:checked:before{transform:translateX(14px);background:var(--accent)}
.printer-heating-presets{display:flex;flex-wrap:wrap;align-items:flex-start;gap:18px 30px;padding-bottom:20px;margin-bottom:20px;border-bottom:1px solid var(--border)}
.printer-heating-presets>div:first-child{flex:1;min-width:220px}
.printer-heating-presets label{display:block;font-size:12px;color:var(--muted);margin-bottom:8px}
.printer-preheat-choice{display:flex;align-items:center;gap:8px}
.printer-preheat-choice select{min-width:0;flex:1;max-width:280px}
.printer-heaters-off{padding-top:25px}
#printer-heating-help{flex-basis:100%;margin:0}
.printer-diagnostics-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}
.printer-diagnostics-heading h3{margin:0}
.printer-diagnostics-heading .pill{font-size:10px}
.printer-detail-list{margin:18px 0 0}
.printer-detail-list>div{display:flex;align-items:baseline;justify-content:space-between;gap:16px;padding:10px 0;border-bottom:1px solid var(--border);font-size:12px;line-height:1.5}
.printer-detail-list dt{color:var(--muted)}
.printer-detail-list dd{margin:0;text-align:right;overflow-wrap:anywhere;color:var(--text)}
.printer-detail-subheading{margin:22px 0 10px;font-size:11px;font-weight:500;color:var(--muted)}
.printer-detail-chips{display:flex;flex-wrap:wrap;gap:7px;color:var(--muted);font-size:12px;line-height:1.6}
.printer-detail-chips>span{padding:5px 8px;border:1px solid var(--border);border-radius:6px;background:var(--inset)}
.printer-material-details{display:grid;gap:8px;font-size:12px;color:var(--muted);line-height:1.6}
.printer-material-details>div{padding:10px;border:1px solid var(--border);border-radius:7px;background:var(--inset)}
.printer-material-details strong{display:block;font-size:12px;color:var(--text);font-weight:500}
.printer-material-details small{display:block;font-size:11px;margin-top:4px}
.printer-health-issues{display:grid;gap:10px;margin-top:16px}
.printer-health-issues article{padding:13px;border:1px solid var(--border);border-radius:8px;background:var(--inset)}
.printer-health-issues strong{font-size:12px;font-weight:500;color:var(--text);line-height:1.6}
.printer-health-issues p{margin:6px 0;color:var(--muted);font-size:11px;line-height:1.6}
.printer-health-issues a{color:var(--accent);font-size:11px;line-height:1.6}
@media(max-width:1180px){.maintenance-tabpanel .maintenance-card{max-width:none}.printer-jog-layout{justify-content:flex-start}.maintenance-tabs{max-width:600px}}
@media(max-width:600px){.printer-heating-presets{gap:16px}.printer-heaters-off{padding-top:0}.printer-jog-layout{justify-content:center;gap:14px}.printer-z-pad{padding-left:14px}.printer-xy-pad{grid-template-columns:repeat(3,50px)}.maintenance-tabs button{font-size:11px}.printer-jog{padding:13px}.printer-extrude-heading{align-items:flex-start}}
@media(max-width:380px){.printer-jog-layout{gap:10px}.printer-xy-pad{grid-template-columns:repeat(3,44px);grid-template-rows:repeat(3,48px)}.printer-z-pad{min-width:44px;padding-left:10px}.maintenance-tabs{gap:2px;padding:3px}.maintenance-tabs button{font-size:10px}}
