
:root{
  --app-bg:#ffffff;
  --app-surface:#ffffff;
  --app-surface-alt:#f5f5f5;
  --app-surface-muted:#f0f0f0;
  --app-sidebar:#ffffff;
  --app-topbar:#ffffff;
  --app-border:#000000;
  --app-border-soft:#999999;
  --app-border-faint:#cccccc;
  --app-text:#000000;
  --app-text-muted:#555555;
  --app-text-subtle:#666666;
  --app-accent:#000000;
  --app-accent-contrast:#ffffff;
  --app-accent-soft:#e8e8e8;
  --app-result:#000000;
  --app-result-muted:#222222;
  --app-danger:#444444;
  --app-warning:#555555;
  --app-focus-ring:rgba(0,0,0,.12);
  --app-shadow:0 18px 40px rgba(0,0,0,.12);
  --app-radius-sm:8px;
  --app-radius-md:12px;
  --app-radius-lg:14px;
  --app-gap:12px;
  --app-gap-lg:20px;
  --app-font-body:Georgia,"Times New Roman",Times,serif;
  --app-font-ui:"Helvetica Neue",Helvetica,Arial,sans-serif;
  --app-font-mono:"Courier New",Courier,monospace;

  --bg:var(--app-bg);
  --panel:var(--app-surface);
  --panel2:var(--app-surface-alt);
  --line:var(--app-border-soft);
  --text:var(--app-text);
  --muted:var(--app-text-muted);
  --accent:var(--app-accent);
  --gold:var(--app-result);
  --danger:var(--app-danger);
}

body[data-skin="courtroom"]{
  --app-bg:#ffffff;
  --app-surface:#ffffff;
  --app-surface-alt:#f5f5f5;
  --app-surface-muted:#eeeeee;
  --app-sidebar:#ffffff;
  --app-topbar:#ffffff;
  --app-border:#000000;
  --app-border-soft:#999999;
  --app-border-faint:#cccccc;
  --app-text:#000000;
  --app-text-muted:#555555;
  --app-text-subtle:#666666;
  --app-accent:#000000;
  --app-accent-contrast:#ffffff;
  --app-accent-soft:#e8e8e8;
  --app-result:#000000;
  --app-result-muted:#222222;
  --app-danger:#444444;
  --app-warning:#555555;
  --app-focus-ring:rgba(0,0,0,.12);
  --app-shadow:0 18px 40px rgba(0,0,0,.12);
  --app-radius-sm:8px;
  --app-radius-md:12px;
  --app-radius-lg:14px;
  --app-font-body:Georgia,"Times New Roman",Times,serif;
  --app-font-ui:"Helvetica Neue",Helvetica,Arial,sans-serif;
  --app-font-mono:"Courier New",Courier,monospace;
  --bg:var(--app-bg);
  --panel:var(--app-surface);
  --panel2:var(--app-surface-alt);
  --line:var(--app-border-soft);
  --text:var(--app-text);
  --muted:var(--app-text-muted);
  --accent:var(--app-accent);
  --gold:var(--app-result);
  --danger:var(--app-danger);
}

body[data-skin="lab-night"]{
  --app-bg:#120e0b;
  --app-surface:#1a1410;
  --app-surface-alt:#211912;
  --app-surface-muted:#261d16;
  --app-sidebar:#17110d;
  --app-topbar:#120e0b;
  --app-border:#8e734e;
  --app-border-soft:#5c4a36;
  --app-border-faint:#3d3023;
  --app-text:#f1dcc1;
  --app-text-muted:#b59f85;
  --app-text-subtle:#998872;
  --app-accent:#f5b454;
  --app-accent-contrast:#1a1410;
  --app-accent-soft:#2b2118;
  --app-result:#56d4ff;
  --app-result-muted:#f5b454;
  --app-danger:#d27b6b;
  --app-warning:#f5b454;
  --app-focus-ring:rgba(86,212,255,.18);
  --app-shadow:0 18px 40px rgba(0,0,0,.42);
  --app-radius-sm:10px;
  --app-radius-md:14px;
  --app-radius-lg:16px;
  --app-font-body:Georgia,"Times New Roman",Times,serif;
  --app-font-ui:"Helvetica Neue",Helvetica,Arial,sans-serif;
  --app-font-mono:"Courier New",Courier,monospace;
  --bg:var(--app-bg);
  --panel:var(--app-surface);
  --panel2:var(--app-surface-alt);
  --line:var(--app-border-soft);
  --text:var(--app-text);
  --muted:var(--app-text-muted);
  --accent:var(--app-accent);
  --gold:var(--app-result);
  --danger:var(--app-danger);
}

body[data-skin="print"]{
  --app-bg:#ffffff;
  --app-surface:#ffffff;
  --app-surface-alt:#fafafa;
  --app-surface-muted:#f6f6f6;
  --app-sidebar:#ffffff;
  --app-topbar:#ffffff;
  --app-border:#333333;
  --app-border-soft:#a8a8a8;
  --app-border-faint:#d5d5d5;
  --app-text:#222222;
  --app-text-muted:#666666;
  --app-text-subtle:#777777;
  --app-accent:#333333;
  --app-accent-contrast:#ffffff;
  --app-accent-soft:#ededed;
  --app-result:#111111;
  --app-result-muted:#333333;
  --app-danger:#555555;
  --app-warning:#555555;
  --app-focus-ring:rgba(0,0,0,.08);
  --app-shadow:0 12px 28px rgba(0,0,0,.08);
  --app-radius-sm:6px;
  --app-radius-md:10px;
  --app-radius-lg:12px;
  --app-font-body:Georgia,"Times New Roman",Times,serif;
  --app-font-ui:"Helvetica Neue",Helvetica,Arial,sans-serif;
  --app-font-mono:"Courier New",Courier,monospace;
  --bg:var(--app-bg);
  --panel:var(--app-surface);
  --panel2:var(--app-surface-alt);
  --line:var(--app-border-soft);
  --text:var(--app-text);
  --muted:var(--app-text-muted);
  --accent:var(--app-accent);
  --gold:var(--app-result);
  --danger:var(--app-danger);
}

*{box-sizing:border-box}
html{background:var(--app-bg)}
body{margin:0;font-family:var(--app-font-body);background:var(--app-bg);color:var(--app-text)}
.topbar{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--app-border);background:var(--app-topbar);gap:12px;position:sticky;top:0;z-index:40}
.brand{font-weight:700;letter-spacing:.02em;font-family:var(--app-font-body)}
.top-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.btn{background:var(--app-surface-alt);color:var(--text);border:1px solid var(--app-border-soft);border-radius:8px;padding:8px 12px;cursor:pointer}
.btn:hover{border-color:var(--accent);color:var(--app-accent-contrast)}
.btn.primary{background:var(--app-accent);border-color:var(--app-border);color:var(--app-accent-contrast)}
.btn.good{background:var(--app-surface-alt);border-color:var(--app-border-soft)}
.btn.danger{background:var(--app-surface-alt);border-color:var(--app-border-soft)}
.btn.small{padding:6px 9px;font-size:12px}
.layout{display:grid;grid-template-columns:320px 1fr 370px;height:calc(100vh - 57px)}
.left,.center,.right{overflow:auto;padding:12px}
.left{border-right:1px solid var(--line);background:var(--app-sidebar)}
.right{border-left:1px solid var(--line);background:var(--app-sidebar)}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:12px;margin-bottom:12px}
.panel h3,.panel h4{margin:0 0 10px}
.muted{color:var(--muted)}
input,select,textarea{width:100%;background:var(--app-surface-muted);border:1px solid var(--app-border-soft);border-radius:8px;padding:8px 10px;color:var(--text)}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--app-focus-ring)}
textarea{min-height:88px;resize:vertical}
.folder{margin-top:10px}
.folder-title{font-weight:700;color:var(--accent);padding:8px;border-radius:8px;background:var(--app-surface-alt);border:1px solid var(--app-border-soft)}
.folder-items{padding:8px 0 0 10px}
.eq-item{padding:8px 10px;border-radius:8px;cursor:pointer;border:1px solid transparent;margin-bottom:6px}
.eq-item:hover{background:var(--app-accent-soft);border-color:var(--app-border)}
.eq-item.active{background:var(--app-accent-soft);border-color:var(--app-accent)}
.eq-sub{font-size:12px;color:var(--muted);margin-top:2px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.field label{display:block;font-size:12px;color:var(--muted);margin-bottom:4px}
.result-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px}
.result-card{background:var(--panel2);border:1px solid var(--app-border-soft);border-radius:12px;padding:12px}
.result-label{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.result-value{font-size:26px;color:var(--gold);font-weight:800;margin-top:6px}
.formula{font-family:Consolas,Monaco,monospace;background:var(--app-surface-muted);border:1px solid var(--app-border-soft);border-radius:10px;padding:10px;color:var(--app-text)}
.steps{font-family:Consolas,Monaco,monospace;white-space:pre-wrap;line-height:1.5;background:var(--app-surface-muted);border:1px solid var(--app-border-soft);border-radius:10px;padding:10px}
.saved-item{padding:10px;border-radius:10px;border:1px solid var(--app-border-soft);background:var(--app-surface-muted);margin-bottom:8px;cursor:pointer;user-select:none}
.saved-item.active{border-color:var(--app-accent);background:var(--app-accent-soft)}
.saved-item.multisel{border-color:var(--app-result);background:#3b2f0b}
.saved-title{font-weight:700}
.saved-sub{font-size:12px;color:var(--muted);margin-top:4px}
.tiny{font-size:12px}
.status{padding:7px 10px;border-radius:999px;background:var(--app-surface-muted);border:1px solid var(--app-border-soft)}
.report-preview{white-space:pre-wrap;line-height:1.45;background:var(--app-accent-contrast);color:var(--app-text);border-radius:12px;padding:14px;min-height:200px}
.split{display:flex;justify-content:space-between;align-items:center;gap:8px}
.tag{font-size:11px;padding:3px 8px;border-radius:999px;background:var(--app-accent-soft);border:1px solid var(--app-border);color:var(--app-text)}
.small-actions,.bulkbar{display:flex;gap:6px;flex-wrap:wrap}
.empty{padding:20px;border:1px dashed var(--app-border-soft);border-radius:12px;color:var(--muted);text-align:center}
.tabs-wrap{position:sticky;top:0;z-index:20;background:var(--bg);padding-bottom:10px}
.tabs{display:flex;gap:6px;overflow:auto;padding:0 0 6px}
.tab{display:flex;align-items:center;gap:8px;padding:9px 12px;border-radius:10px;background:#0a1324;border:1px solid var(--app-border-soft);cursor:pointer;white-space:nowrap}
.tab.active{background:var(--app-accent-soft);border-color:var(--app-accent)}
.tab.unsaved::after{content:"●";font-size:12px;color:var(--app-result)}
.tab .close{opacity:.7;font-weight:700;cursor:pointer}
.workspace-titlebar{display:grid;grid-template-columns:1fr 220px auto;gap:10px;align-items:end}
.note{padding:10px;border-left:3px solid var(--accent);background:#0f172a;border-radius:0 8px 8px 0;color:var(--app-text);font-size:13px}
.mt8{margin-top:8px}.mt10{margin-top:10px}.no-margin{margin:0}
.vehicle-row{display:grid;grid-template-columns:88px 1fr 32px;gap:8px;align-items:end;margin-bottom:8px}
.vehicle-code{background:var(--app-accent-soft);border:1px solid var(--app-border);border-radius:8px;padding:8px 10px;text-align:center;font-weight:700}
.vehicle-remove{height:38px}
@media (max-width: 1200px){ .layout{grid-template-columns:280px 1fr 320px} }

.bulk-vehicle-select{min-width:180px;max-width:240px;width:auto}


.context-menu{
  position:fixed;
  z-index:9999;
  min-width:220px;
  background:var(--app-sidebar);
  border:1px solid var(--app-border-soft);
  border-radius:12px;
  box-shadow:0 10px 30px rgba(0,0,0,.32);
  padding:6px;
}
.context-menu.hidden{display:none}
.context-item{
  display:block;
  width:100%;
  text-align:left;
  background:transparent;
  color:var(--text);
  border:none;
  border-radius:8px;
  padding:9px 10px;
  cursor:pointer;
}
.context-item:hover{background:var(--app-accent-soft)}
.context-sep{height:1px;background:var(--app-border-soft);margin:6px 4px}
.context-subtitle{
  font-size:11px;
  color:var(--muted);
  padding:6px 10px 4px;
  text-transform:uppercase;
  letter-spacing:.06em;
}


.modal{
  position:fixed;
  inset:0;
  background:rgba(2,6,23,.66);
  display:flex;
  align-items:center;
  justify-content:center;
  z-index:10000;
}
.modal.hidden{display:none}
.modal-card{
  width:min(440px, calc(100vw - 32px));
  background:var(--app-sidebar);
  border:1px solid var(--app-border-soft);
  border-radius:14px;
  padding:18px;
  box-shadow:0 20px 50px rgba(0,0,0,.28);
}
.modal-actions{
  display:flex;
  justify-content:flex-end;
  gap:8px;
  margin-top:16px;
}

.status.warn{border-color:var(--app-warning);color:var(--app-text)}


.tabs-meta{margin-bottom:6px}
.meta-good{color:var(--app-text)}
.meta-bad{color:var(--app-text-muted)}


.group-block{border:1px solid var(--app-border-soft);border-radius:12px;background:#0a1324;margin-bottom:10px;overflow:hidden}
.group-header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 12px;background:var(--app-accent-soft);border-bottom:1px solid var(--app-border-soft)}
.group-title{font-weight:700;color:var(--app-text);cursor:pointer}
.group-header-actions{display:flex;gap:6px;align-items:center}
.group-body{padding:10px}
.group-collapsed .group-body{display:none}
.group-dropzone{border:1px dashed var(--app-border-soft);border-radius:8px;padding:10px;text-align:center;color:var(--app-text-muted);margin-top:8px}
.saved-item.ungrouped{border-style:dashed}

.group-header-actions .btn{min-width:32px}

.saved-item.dragging{opacity:.45;border-color:var(--app-accent)}
.group-block.drop-target{outline:2px solid var(--app-accent);outline-offset:2px}
.group-body.drop-target{background:var(--app-accent-soft)}
.ungrouped-drop.drop-target{outline:2px dashed var(--app-accent);outline-offset:2px;background:var(--app-accent-soft)}


.group-tree{display:flex;flex-direction:column;gap:10px}
.group-level-1{margin-left:18px}
.group-level-2{margin-left:36px}
.group-level-3{margin-left:54px}
.group-level-4{margin-left:72px}
.group-block.subgroup{border-color:#3b4b60}
.group-title-wrap{display:flex;align-items:center;gap:8px}
.twisty{font-size:12px;color:var(--app-text-muted);min-width:10px}


.group-color-0{border-left:5px solid var(--app-border)}
.group-color-1{border-left:5px solid var(--app-border-soft)}
.group-color-2{border-left:5px solid var(--app-border)}
.group-color-3{border-left:5px solid var(--app-border-soft)}
.group-color-4{border-left:5px solid var(--app-border-soft)}
.group-color-5{border-left:5px solid var(--app-border-soft)}
.group-color-6{border-left:5px solid var(--app-border-soft)}
.group-color-7{border-left:5px solid var(--app-border-faint)}
.saved-item.group-tinted-0{background:var(--app-accent-soft)}
.saved-item.group-tinted-1{background:var(--app-surface-alt)}
.saved-item.group-tinted-2{background:var(--app-surface-alt)}
.saved-item.group-tinted-3{background:var(--app-surface-alt)}
.saved-item.group-tinted-4{background:var(--app-surface-alt)}
.saved-item.group-tinted-5{background:var(--app-surface-alt)}
.saved-item.group-tinted-6{background:var(--app-surface-alt)}
.saved-item.group-tinted-7{background:var(--app-surface-alt)}
.group-children{margin-top:8px}


/* v93 stable: visible, restrained group coloring */
.group-color-0{border-left:6px solid var(--app-border) !important;background:rgba(96,165,250,.06) !important}
.group-color-1{border-left:6px solid var(--app-border-soft) !important;background:rgba(52,211,153,.06) !important}
.group-color-2{border-left:6px solid var(--app-border) !important;background:rgba(251,191,36,.06) !important}
.group-color-3{border-left:6px solid var(--app-border-soft) !important;background:rgba(244,114,182,.06) !important}
.group-color-4{border-left:6px solid var(--app-border-soft) !important;background:rgba(167,139,250,.06) !important}
.group-color-5{border-left:6px solid var(--app-border-soft) !important;background:rgba(251,113,133,.06) !important}
.group-color-6{border-left:6px solid var(--app-border-soft) !important;background:rgba(34,211,238,.06) !important}
.group-color-7{border-left:6px solid var(--app-border-faint) !important;background:rgba(203,213,225,.06) !important}

.saved-item.group-tinted-0{background:var(--app-accent-soft) !important}
.saved-item.group-tinted-1{background:var(--app-surface-alt) !important}
.saved-item.group-tinted-2{background:var(--app-surface-alt) !important}
.saved-item.group-tinted-3{background:var(--app-surface-alt) !important}
.saved-item.group-tinted-4{background:var(--app-surface-alt) !important}
.saved-item.group-tinted-5{background:var(--app-surface-alt) !important}
.saved-item.group-tinted-6{background:var(--app-surface-alt) !important}
.saved-item.group-tinted-7{background:var(--app-surface-alt) !important}

.group-children{margin-top:8px}


/* v101 drag scroll zones + group picker support */
#savedList{
  max-height: calc(100vh - 320px);
  overflow: auto;
  overscroll-behavior: contain;
  padding-right: 4px;
}

.drag-scroll-zone{
  border: 1px dashed var(--app-border-soft);
  border-radius: 10px;
  padding: 8px 10px;
  text-align: center;
  font-size: 12px;
  color: var(--app-text-muted);
  background: var(--app-surface-alt);
}
.drag-scroll-zone.active{
  border-color: var(--app-accent);
  background: var(--app-accent-soft);
  color: var(--app-text);
}

.group-picker-overlay{
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,.28);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 9999;
}
.group-picker-dialog{
  width: min(560px, 92vw);
  max-height: 80vh;
  overflow: auto;
  background: var(--app-text);
  border: 1px solid var(--app-border-soft);
  border-radius: 16px;
  padding: 16px;
  box-shadow: 0 24px 50px rgba(0,0,0,.22);
}
.group-picker-title{
  font-weight: 700;
  margin-bottom: 10px;
}
.group-picker-list{
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin: 12px 0;
}
.group-picker-item{
  width: 100%;
  text-align: left;
  padding: 10px 12px;
  border: 1px solid var(--app-border-soft);
  background: var(--app-surface-muted);
  color: #e5eef9;
  border-radius: 10px;
  cursor: pointer;
}
.group-picker-item:hover{
  border-color: var(--app-accent);
  background: var(--app-accent-soft);
}
.group-picker-actions{
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  margin-top: 12px;
}
.group-picker-input{
  width: 100%;
  margin-top: 8px;
}


/* v102 picker dialogs */
.picker-overlay{
  position:fixed;
  inset:0;
  background:rgba(0,0,0,.48);
  display:flex;
  align-items:center;
  justify-content:center;
  z-index:9999;
}
.picker-dialog{
  width:min(700px,94vw);
  max-height:86vh;
  overflow:auto;
  background:var(--app-text);
  border:1px solid var(--app-border-soft);
  border-radius:16px;
  padding:16px;
  box-shadow:0 28px 60px rgba(0,0,0,.32);
}
.picker-title{
  font-weight:700;
  margin-bottom:8px;
}
.picker-sub{
  font-size:12px;
  color:var(--app-text-muted);
  margin-bottom:12px;
}
.picker-columns{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:14px;
}
.picker-list{
  display:flex;
  flex-direction:column;
  gap:8px;
  max-height:320px;
  overflow:auto;
  border:1px solid var(--app-border-soft);
  border-radius:12px;
  padding:10px;
  background:var(--app-surface-muted);
}
.picker-item{
  width:100%;
  text-align:left;
  padding:10px 12px;
  border:1px solid var(--app-border-soft);
  border-radius:10px;
  background:#0f172a;
  color:#e5eef9;
  cursor:pointer;
}
.picker-item:hover,
.picker-item.active{
  border-color:var(--app-accent);
  background:var(--app-accent-soft);
}
.picker-item .small{
  display:block;
  margin-top:4px;
}
.picker-actions{
  display:flex;
  gap:10px;
  flex-wrap:wrap;
  margin-top:14px;
}
.picker-input{
  width:100%;
  margin-top:8px;
}
.picker-note{
  margin-top:10px;
  font-size:12px;
  color:var(--app-text-muted);
}


/* v103 move group/subgroup controls */
.group-picker-item.danger-like:hover{
  border-color:var(--app-warning);
  background:#241406;
}


/* v104 group editing cleanup */
.group-header{
  align-items:flex-start;
}
.group-title-wrap{
  flex:1 1 auto;
  min-width:0;
}
.group-title{
  display:inline-block;
  max-width:100%;
  word-break:break-word;
}
.group-header-actions{
  display:none !important;
}
.group-inline-edit{
  width:100%;
  max-width:100%;
  margin-top:2px;
  padding:6px 8px;
  border:1px solid var(--app-accent);
  border-radius:8px;
  background:var(--app-surface-muted);
  color:#e5eef9;
}


/* v105 overflow + full subgroup picker fix */
#vehicleManager{
  max-height: min(42vh, 520px);
  overflow: auto;
  padding-right: 4px;
}
.vehicle-row{
  display:grid;
  grid-template-columns: 92px minmax(0,1fr) 44px;
  gap:8px;
  align-items:center;
  margin-bottom:8px;
}
.vehicle-row input{
  min-width:0;
  width:100%;
}
.context-menu{
  max-width: min(340px, calc(100vw - 16px));
  max-height: min(78vh, 680px);
  overflow:auto;
}
.picker-list{
  max-height:min(42vh, 360px);
}
.picker-item.indent-1{padding-left:24px}
.picker-item.indent-2{padding-left:36px}
.picker-item.indent-3{padding-left:48px}
.picker-item.indent-4{padding-left:60px}


/* v107 unified picker + right pane readability */
#savedList{
  max-height: calc(100vh - 320px);
  overflow: auto;
  padding-right: 4px;
}
.group-tree{
  gap: 8px;
}
.group-level-1{margin-left:14px}
.group-level-2{margin-left:26px}
.group-level-3{margin-left:34px}
.group-level-4{margin-left:40px}
.group-block{
  overflow: hidden;
}
.group-title-wrap{
  min-width: 0;
}
.group-title{
  line-height: 1.28;
  white-space: normal;
  overflow-wrap: anywhere;
}
.saved-item{
  min-width: 0;
}
.saved-title{
  line-height: 1.28;
  white-space: normal;
  overflow-wrap: anywhere;
}
.saved-sub{
  white-space: normal;
  overflow-wrap: anywhere;
}
.group-body{
  padding-right: 2px;
}
.group-children{
  margin-top: 6px;
  border-left: 1px dashed rgba(148,163,184,.35);
  padding-left: 8px;
}

.picker-tree-list{
  display:flex;
  flex-direction:column;
  gap:8px;
  max-height:min(48vh, 420px);
  overflow:auto;
  border:1px solid var(--app-border-soft);
  border-radius:12px;
  padding:10px;
  background:var(--app-surface-muted);
}
.picker-tree-item{
  width:100%;
  text-align:left;
  padding:10px 12px;
  border:1px solid var(--app-border-soft);
  border-radius:10px;
  background:#0f172a;
  color:#e5eef9;
  cursor:pointer;
}
.picker-tree-item:hover,
.picker-tree-item.active{
  border-color:var(--app-accent);
  background:var(--app-accent-soft);
}
.picker-tree-item .small{
  display:block;
  margin-top:4px;
}
.picker-indent-0{padding-left:12px}
.picker-indent-1{padding-left:26px}
.picker-indent-2{padding-left:40px}
.picker-indent-3{padding-left:54px}
.picker-indent-4{padding-left:68px}


/* v108 layout cleanup / vehicle dialog */
.vehicle-modal-card{
  width:min(820px, 94vw);
  max-height:82vh;
  overflow:auto;
}
#vehicleManager{
  max-height:min(52vh, 560px);
  overflow:auto;
  padding-right:4px;
}
.vehicle-row{
  display:grid;
  grid-template-columns: 92px minmax(0,1fr) 44px;
  gap:8px;
  align-items:center;
  margin-bottom:8px;
}
.vehicle-row input{
  min-width:0;
  width:100%;
}
.left .panel h3{
  margin-bottom:6px;
}

/* v109 vehicle system */
.vehicle-row{
  display:grid;
  grid-template-columns: 92px minmax(0,1fr) 40px 40px 44px;
  gap:8px;
  align-items:center;
  margin-bottom:8px;
}
.vehicle-code-input{
  width:100%;
  text-align:center;
  font-weight:700;
}
.vehicle-order-btn{
  min-width:36px;
}

/* v113 dev log + save/save as */
.devlog-modal-card{
  width:min(1100px, 96vw);
  max-height:86vh;
  overflow:auto;
}
.devlog-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:14px;
}
.devlog-box{
  border:1px solid var(--app-border-soft);
  border-radius:12px;
  background:var(--app-surface-muted);
  padding:12px;
  min-height:180px;
  white-space:pre-wrap;
  line-height:1.45;
}
@media (max-width: 900px){
  .devlog-grid{grid-template-columns:1fr}
}

/* v114 recovery */
.recovery-modal-card{
  width:min(1100px, 96vw);
  max-height:86vh;
  overflow:auto;
}
.recovery-item{
  border:1px solid var(--app-border-soft);
  border-radius:10px;
  padding:10px 12px;
  margin-bottom:8px;
  background:#0f172a;
}
.recovery-item .small{
  display:block;
  margin-top:4px;
  color:var(--app-text-muted);
}
.recovery-actions-list{
  display:flex;
  flex-direction:column;
  gap:10px;
}

/* v118 clean dev log */
.devlog-accordion .section{
  border:1px solid var(--app-border-soft);
  border-radius:10px;
  margin-bottom:10px;
  background:var(--app-surface-muted);
}
.devlog-accordion .header{
  padding:10px 12px;
  cursor:pointer;
  font-weight:600;
  background:var(--app-text);
}
.devlog-accordion .body{
  padding:10px 14px;
  display:none;
}
.devlog-accordion .body.open{
  display:block;
}
.devlog-accordion .item{
  margin:5px 0;
  line-height:1.4;
}
.devlog-accordion .high{color:#f87171;}
.devlog-accordion .medium{color:var(--app-border);}
.devlog-accordion .low{color:var(--app-border-soft);}


/* v119 bottom panel redesign */
.bottom-workspace{
  margin-top: 14px;
  padding: 0 12px 12px 12px;
}
.bottom-grid{
  display:grid;
  grid-template-columns: 1fr 1.25fr 1.1fr;
  gap:12px;
}
.bottom-box{
  border:1px solid var(--app-border-soft);
  border-radius:12px;
  background:var(--app-surface-muted);
  min-height:220px;
  padding:12px;
  white-space:pre-wrap;
  line-height:1.45;
  overflow:auto;
}
.bottom-notes{
  width:100%;
  min-height:220px;
  border:1px solid var(--app-border-soft);
  border-radius:12px;
  background:var(--app-surface-muted);
  color:#e5eef9;
  padding:12px;
  resize:vertical;
}
.activity-log{
  min-height:120px;
  max-height:220px;
}
.activity-entry{
  padding:6px 0;
  border-bottom:1px solid rgba(148,163,184,.12);
}
.activity-entry:last-child{
  border-bottom:none;
}
.report-order-group{
  margin-bottom:10px;
}
.report-order-group-title{
  font-weight:700;
  margin-bottom:4px;
}
.report-order-item{
  padding-left:12px;
  line-height:1.35;
}
.summary-row{
  margin-bottom:6px;
}
@media (max-width: 1100px){
  .bottom-grid{grid-template-columns:1fr}
}


/* v123 tab-state fix */
.tab.unsaved{
  background:#2a1f08 !important;
  border-color:var(--app-warning) !important;
  box-shadow: inset 0 0 0 1px rgba(245,158,11,.22);
}
.tab.active.unsaved{
  background:#3a2a0d !important;
  border-color:var(--app-border) !important;
}
.tab.unsaved .tab-title,
.tab.active.unsaved .tab-title{
  color:var(--app-text) !important;
}
.tab.unsaved::after{
  content:"";
  display:inline-block;
  width:10px;
  height:10px;
  margin-left:8px;
  border-radius:999px;
  background:var(--app-result);
  box-shadow:0 0 0 1px rgba(250,204,21,.45);
  vertical-align:middle;
}

#saveBtn{
  transition:background .12s ease, border-color .12s ease, color .12s ease, opacity .12s ease;
}
#saveBtn.clean{
  background:var(--app-surface-alt) !important;
  border-color:var(--app-border-soft) !important;
  color:var(--app-border-faint) !important;
}
#saveBtn.dirty{
  background:var(--app-border-soft) !important;
  border-color:#16a34a !important;
  color:#ffffff !important;
}


/* v125 close-all unsaved sequence */
#confirmModal .modal-card{
  max-width: 640px;
}


/* v127 dedicated close-all modal */
#closeAllUnsavedModal .modal-card{
  max-width:680px;
}

/* v128 stability */
#autosaveStatus.warn{
  border-color:var(--app-warning);
}


/* v130 close-all patch */
#closeAllUnsavedModal .modal-card{max-width:680px;}
#closeAllUnsavedHeader{user-select:none;}


/* v132 modal drag fix */

#closeAllUnsavedModal .modal-card .split{
  cursor: move;
  user-select: none;
}
#closeAllUnsavedModal .modal-card .split button{
  cursor: pointer;
}


/* v133 drag activation fix */
#closeAllUnsavedModal .modal-card{
  will-change: left, top;
}


/* v135 safer stability patch */
.recovery-banner{
  margin:10px 12px 0 12px;
  padding:10px 12px;
  border:1px solid var(--app-border-soft);
  border-radius:10px;
  background:#132033;
  color:#e5eef9;
}
.recovery-banner.hidden{display:none;}
.recovery-banner .split{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
}
.recovery-banner .actions{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
}


/* v136 layout/banner/modal anchor fix */
.recovery-banner{
  width: calc(100% - 24px);
  box-sizing: border-box;
}
#closeAllUnsavedHeader{
  cursor: move;
  user-select: none;
}
#closeAllUnsavedHeader button{
  cursor: pointer;
}


/* v137 right pane scroll fix */
#savedCalculationsList,
.saved-calculations-list,
.saved-items {
  padding-bottom: 100px !important;
}

.saved-pane,
#savedPane,
.saved-container {
  overflow-y: auto;
  scroll-padding-bottom: 100px;
}

.saved-item:last-child {
  margin-bottom: 60px;
}

.recovery-banner[data-level="warning"]{
  border-color:var(--app-warning);
  background:#3b2a08;
  color:#fff4d6;
}


.skin-control{display:flex;align-items:center;gap:6px;font-family:var(--app-font-ui);font-size:10pt}
.skin-control label{font-size:9pt;letter-spacing:.05em;text-transform:uppercase;color:var(--app-text-muted)}
.skin-control select{width:auto;min-width:140px;font-family:var(--app-font-ui)}
.top-actions{font-family:var(--app-font-ui)}
.btn{font-family:var(--app-font-ui);border-radius:var(--app-radius-sm)}
.btn:hover{border-color:var(--app-accent);color:var(--app-accent-contrast);background:var(--app-accent)}
.btn.primary{background:var(--app-accent);border-color:var(--app-border);color:var(--app-accent-contrast)}
.btn.good,.btn.danger{color:var(--app-text)}
.layout{grid-template-columns:320px 1fr 370px;height:calc(100vh - 61px)}
.left,.center,.right{background:var(--app-sidebar)}
.panel{background:var(--app-surface);border-color:var(--app-border-soft);border-radius:var(--app-radius-lg);box-shadow:none}
.panel h3,.panel h4,.field label,.tag,.status,.note,.folder-title,.tabs-meta,.result-label,.modal-card h3{font-family:var(--app-font-ui)}
.status{background:var(--app-surface-alt);border:1px solid var(--app-border-soft);color:var(--app-text)}
input,select,textarea{background:var(--app-surface);border:1px solid var(--app-border-soft);color:var(--app-text);font-family:var(--app-font-mono)}
select,button,.field label,.muted,.tiny,.note,.tag{font-family:var(--app-font-ui)}
textarea{font-family:var(--app-font-body)}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--app-border);box-shadow:0 0 0 3px var(--app-focus-ring)}
.folder-title,.note,.tab,.saved-item,.group-block,.result-card,.formula,.steps,.report-preview,.modal-card,.context-menu,.group-picker-dialog{background:var(--app-surface);color:var(--app-text)}
.folder-title,.tab,.saved-item,.group-block,.result-card,.formula,.steps,.report-preview,.modal-card,.context-menu,.group-picker-dialog,.group-picker-item,.context-item{border-color:var(--app-border-soft)}
.eq-item.active,.tab.active,.saved-item.active,.unc-toggle.active,.group-block.drop-target,.ungrouped-drop.drop-target,.drag-scroll-zone.active{border-color:var(--app-border)}
.eq-item.active,.tab.active,.saved-item.active,.group-body.drop-target,.drag-scroll-zone.active{background:var(--app-accent-soft)}
.result-value{color:var(--app-result);font-family:var(--app-font-mono)}
.formula,.steps,.result-value,.conv,.build,.result-range,.f-effective .val{font-family:var(--app-font-mono)}
.report-preview{border:1px solid var(--app-border-soft)}
.modal{background:rgba(0,0,0,.5)}
.modal-card{background:var(--app-surface);border:1px solid var(--app-border);box-shadow:var(--app-shadow)}
.context-menu{background:var(--app-surface);border:1px solid var(--app-border);box-shadow:var(--app-shadow)}
.group-picker-dialog{background:var(--app-surface);border:1px solid var(--app-border);box-shadow:var(--app-shadow)}

.prefs-modal-shell.hidden{display:none}
.prefs-modal-shell{position:fixed;inset:0;z-index:10020;display:flex;align-items:center;justify-content:center}
.prefs-modal-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.5)}
.prefs-modal{position:relative;z-index:1;max-width:760px;width:calc(100vw - 40px);max-height:calc(100vh - 60px);margin:0;background:var(--app-surface);border:2px solid var(--app-border);display:flex;flex-direction:column;box-shadow:var(--app-shadow);overflow:hidden}
.prefs-modal-header{padding:18px 24px 14px;border-bottom:2px solid var(--app-border);display:flex;justify-content:space-between;align-items:flex-start;gap:16px;background:var(--app-surface)}
.prefs-modal-header-titles h2{margin:0;font-family:var(--app-font-body);font-size:16pt;font-weight:700}
.prefs-modal-subtitle{margin-top:3px;font-family:var(--app-font-ui);font-size:9pt;color:var(--app-text-muted);letter-spacing:.05em;text-transform:uppercase}
.prefs-modal-header-actions{display:flex;gap:8px;flex-shrink:0}
.prefs-tab-strip{display:grid;grid-template-columns:repeat(4,1fr);border-bottom:1px solid var(--app-border);background:var(--app-surface)}
.prefs-tab-btn{background:var(--app-surface);color:var(--app-text);border:none;border-right:1px solid var(--app-border-soft);padding:10px 8px;font-family:var(--app-font-body);font-size:11pt;cursor:pointer;text-align:center}
.prefs-tab-btn:last-child{border-right:none}
.prefs-tab-btn:hover{background:var(--app-surface-alt)}
.prefs-tab-btn.active{background:var(--app-accent);color:var(--app-accent-contrast);font-weight:700}
.prefs-tab-label{font-family:var(--app-font-body);font-size:11pt}
.prefs-tab-sublabel{display:block;font-family:var(--app-font-ui);font-size:7.5pt;letter-spacing:.06em;text-transform:uppercase;margin-top:2px;opacity:.8}
.prefs-modal-body{flex:1;overflow-y:auto;padding:20px 24px;background:var(--app-surface)}
.prefs-pane{display:none}
.prefs-pane.active{display:block}
.prefs-group{margin-bottom:24px;padding-bottom:18px;border-bottom:1px solid var(--app-border-faint)}
.prefs-group:last-child{margin-bottom:0;border-bottom:none}
.prefs-group-hd{font-family:var(--app-font-ui);font-size:9pt;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--app-text);margin-bottom:12px;padding-bottom:4px;border-bottom:1px solid var(--app-border)}
.prefs-placeholder{padding:14px 16px;background:var(--app-surface-alt);border:1px solid var(--app-border-soft);font-family:var(--app-font-ui);font-size:10pt;color:var(--app-text-muted)}
.prefs-modal-footer{padding:14px 24px;border-top:2px solid var(--app-border);display:flex;justify-content:space-between;align-items:center;gap:16px;background:var(--app-surface)}
.prefs-footer-notes{font-family:var(--app-font-ui);font-size:9pt;color:var(--app-text-muted);font-style:italic}
.prefs-footer-actions{display:flex;gap:8px}


.prefs-row{display:grid;grid-template-columns:1fr 220px;gap:18px;align-items:start;padding:10px 0}
.prefs-row + .prefs-row{border-top:1px dotted var(--app-border-faint)}
.prefs-row-stack{grid-template-columns:1fr}
.prefs-label{font-family:var(--app-font-body);font-size:11pt;color:var(--app-text);line-height:1.35}
.prefs-desc{display:block;font-family:var(--app-font-ui);font-size:9pt;color:var(--app-text-muted);margin-top:3px;font-style:italic;line-height:1.4}
.prefs-control{font-family:var(--app-font-mono);font-size:11pt}
.prefs-control input[type="text"],.prefs-control input[type="number"],.prefs-control select{width:100%;padding:5px 8px;font-family:var(--app-font-mono);font-size:11pt;border:1px solid var(--app-border-soft);background:var(--app-surface);color:var(--app-text);font-variant-numeric:tabular-nums;border-radius:8px}
.prefs-control select{font-family:var(--app-font-ui);font-size:10pt}
.prefs-control input:focus,.prefs-control select:focus{outline:2px solid var(--app-border);outline-offset:-1px}
.prefs-control .is-readonly{background:var(--app-surface-alt)}
.prefs-check{display:flex;align-items:center}
.prefs-check label{display:flex;align-items:center;gap:8px;font-family:var(--app-font-ui);font-size:10pt}
.prefs-check input[type="checkbox"]{width:16px;height:16px;accent-color:var(--app-accent);margin:0}
.prefs-radio-group{display:flex;gap:8px;flex-wrap:wrap}
.prefs-radio-group label{display:flex;align-items:center;gap:6px;padding:6px 10px;border:1px solid var(--app-border-soft);border-radius:999px;font-family:var(--app-font-ui);font-size:9pt;background:var(--app-surface-alt);cursor:pointer}
.prefs-radio-group input{width:auto;margin:0}
.prefs-decimal-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;padding:8px;background:var(--app-surface-alt);border:1px solid var(--app-border-soft);border-radius:10px}
.prefs-decimal-cell{display:flex;flex-direction:column;gap:3px}
.prefs-decimal-cell label{font-family:var(--app-font-ui);font-size:8.5pt;color:var(--app-text-muted);letter-spacing:.04em;text-transform:uppercase}
.prefs-decimal-cell input{text-align:center}
.prefs-skin-tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:8px}
.prefs-skin-tile{border:1px solid var(--app-border-soft);padding:0;cursor:pointer;text-align:left;background:var(--app-surface);position:relative;border-radius:12px;overflow:hidden}
.prefs-skin-tile.selected{border:2px solid var(--app-border)}
.prefs-skin-preview{padding:10px 12px;min-height:68px}
.prefs-skin-label{padding:6px 10px;background:var(--app-surface);border-top:1px solid var(--app-border-soft);font-family:var(--app-font-ui);font-size:9pt;font-weight:600;letter-spacing:.05em;text-transform:uppercase;display:flex;justify-content:space-between;align-items:center}
.prefs-skin-badge{font-size:7.5pt;background:var(--app-accent);color:var(--app-accent-contrast);padding:1px 5px;letter-spacing:.08em;border-radius:999px}
.prefs-skin-preview-text{font-family:var(--app-font-body);font-size:10pt}
.prefs-skin-preview-value{font-family:var(--app-font-mono);font-size:14pt;font-weight:700;font-variant-numeric:tabular-nums;margin-top:2px}
.prefs-skin-tile.courtroom .prefs-skin-preview{background:#fff;color:#000}
.prefs-skin-tile.courtroom .prefs-skin-preview-text,.prefs-skin-tile.courtroom .prefs-skin-preview-value{color:#000}
.prefs-skin-tile.lab-night .prefs-skin-preview{background:#1a1410;color:#f5b454}
.prefs-skin-tile.lab-night .prefs-skin-preview-text{color:#998872}
.prefs-skin-tile.lab-night .prefs-skin-preview-value{color:#56d4ff;text-shadow:0 0 8px rgba(86,212,255,.5)}
.prefs-skin-tile.print .prefs-skin-preview{background:#fff;color:#333}
.prefs-skin-tile.print .prefs-skin-preview-text{color:#555}
.prefs-skin-tile.print .prefs-skin-preview-value{color:#111}
body[data-skin="lab-night"] .prefs-radio-group label{background:var(--app-accent-soft)}
body[data-skin="lab-night"] .prefs-control .is-readonly{background:#221a13}
@media (max-width: 760px){.prefs-row{grid-template-columns:1fr}.prefs-skin-tiles{grid-template-columns:1fr}.prefs-decimal-grid{grid-template-columns:repeat(2,1fr)}}

body[data-skin="lab-night"] .result-value{ text-shadow:0 0 10px rgba(86,212,255,.35)}
body[data-skin="lab-night"] .topbar, body[data-skin="lab-night"] .panel, body[data-skin="lab-night"] .modal-card, body[data-skin="lab-night"] .prefs-modal{box-shadow:var(--app-shadow)}
body[data-skin="print"] .topbar, body[data-skin="print"] .panel, body[data-skin="print"] .modal-card, body[data-skin="print"] .prefs-modal{box-shadow:none}

/* v142 Formula Tree */
.formula-tree{display:flex;flex-direction:column;gap:4px}
.tree-cat{border-radius:8px}
.tree-cat-title{display:flex;align-items:center;gap:6px;padding:7px 8px;cursor:pointer;border-radius:8px;background:var(--app-surface-alt);border:1px solid var(--app-border-soft);font-family:var(--app-font-ui);user-select:none}
.tree-cat-title:hover{border-color:var(--app-accent)}
.tree-caret{display:inline-block;width:12px;font-size:11px;color:var(--app-text-muted);text-align:center;flex-shrink:0}
.tree-cat-name{flex:1;font-weight:600;color:var(--app-text);line-height:1.25;overflow-wrap:anywhere}
.tree-cat-children{display:none;padding:4px 0 4px 14px;border-left:1px dashed var(--app-border-faint);margin:2px 0 2px 10px}
.tree-cat.open > .tree-cat-children{display:flex;flex-direction:column;gap:2px}
.tree-depth-1 > .tree-cat-title{font-size:12.5px;padding:6px 8px}
.tree-depth-2 > .tree-cat-title{font-size:12px;padding:5px 8px;background:transparent;border-color:var(--app-border-faint)}
.formula-tree .eq-item{display:flex;align-items:center;gap:6px;padding:6px 8px;border-radius:6px;cursor:pointer;border:1px solid transparent;margin:1px 0;font-size:13px;line-height:1.3;font-family:var(--app-font-ui)}
.formula-tree .eq-item:hover{background:var(--app-accent-soft);border-color:var(--app-border-soft)}
.formula-tree .eq-item.active{background:var(--app-accent-soft);border-color:var(--app-accent)}
.formula-tree .eq-name{flex:1;overflow-wrap:anywhere}
.eq-badge{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;font-size:10px;font-weight:700;flex-shrink:0;font-family:var(--app-font-ui)}
.eq-badge-impl{background:var(--app-accent);color:var(--app-accent-contrast);border:1px solid var(--app-border)}
.eq-badge-planned{background:transparent;color:var(--app-text-subtle);border:1px solid var(--app-border-faint)}

/* v142 Planned-equation placeholder workspace */
.planned-placeholder-panel{display:flex;flex-direction:column;gap:10px}
.planned-placeholder-message{border:1px dashed var(--app-border-soft);border-radius:10px;padding:18px 16px;background:var(--app-surface-alt)}
.planned-placeholder-heading{font-family:var(--app-font-body);font-weight:700;font-size:16px;color:var(--app-text);margin-bottom:6px}
.planned-placeholder-body{font-family:var(--app-font-body);color:var(--app-text-muted);line-height:1.5}

/* v143 skin-aware contrast fix for unsaved tab pills and disabled Save button.
 *
 * The v123 block (lines 848-886 above) hardcoded dark amber backgrounds
 * (#2a1f08, #3a2a0d) on .tab.unsaved and .tab.active.unsaved with !important.
 * Those colors read correctly in the Lab Night skin (dark background, dark warm
 * tab, light text) but produce unreadable dark-on-dark text in the Courtroom
 * and Print skins (which use --app-text black/near-black).
 *
 * Below we override the tab background and Save button colors for Courtroom
 * and Print only. Lab Night is intentionally not targeted and retains the
 * original v123 appearance. !important is required here to beat the v123
 * !important declarations; attribute-scoped selectors provide the necessary
 * specificity lift.
 *
 * Unsaved state is communicated in Courtroom/Print via the warning border and
 * the existing dot indicator (line 862 ::after), not via background fill.
 */
body[data-skin="courtroom"] .tab.unsaved,
body[data-skin="print"] .tab.unsaved{
  background:var(--app-surface) !important;
}
body[data-skin="courtroom"] .tab.active.unsaved,
body[data-skin="print"] .tab.active.unsaved{
  background:var(--app-accent-soft) !important;
}
body[data-skin="courtroom"] #saveBtn.clean,
body[data-skin="print"] #saveBtn.clean{
  background:var(--app-surface) !important;
  border-color:var(--app-border) !important;
  color:var(--app-text-subtle) !important;
}
