/* ============================== TOOL_DOCK_2026Q4 (LEFT_RAIL_B_2026Q4) ==================================
   R4L option B (owner-approved 2026-10-20; boards LeftRail3dLight, LeftRail3dDark, LeftRailDrawing): no left tool rail on the desktop,
   every tool panel in ONE dock at the left of the model. phase_tool_dock.js sets html.tye-tdock (its kill switch, localStorage
   tye_tdock_off = '1', leaves it off and brings today's rails and panel places back) and writes on <body>:
     --tdock-x / --tdock-y / --tdock-w / --tdock-h   the dock (16 px in from the pane, 16 px under the CommandManager or the Drawing's
                                                     status line; 360 px wide, 320 px in a pane under 760 px; down to 88 px above the
                                                     pane's bottom, clear of the mode bar)
     data-tdock-view = model | drawing | ''         the screen in front (each card belongs to one screen)
     data-tdock-acc  = solid | 3d | drawing         the area colour: Sketch Solid violet, 3D blue, Drawing red
     data-tdock-open = <key>                        a tool card is docked on this screen (the FEA progress card steps aside)
     data-tdock-yield                               the Pro Tools dock would cover the docked card: it steps aside
     data-tdock-pdbelow + --tdock-pd-top            the Pro Tools dock would cover the CommandManager: it starts under the bar
     data-tdock-pstack + --tdock-px / --tdock-py    the FEA progress card beside / under the docked card (fix round 1)
     data-tdock-hint + --tdock-hint-x / -w          the Drawing's canvas hint, centred in the span the cards leave free (fix round 1)
     data-tdock-empty + --tdock-el / -er / -ex / -ew the pane's empty state, centred in the span the docked card leaves free (fix round 3)
     data-tdock-kb (on a card)                      a keyboard open left the focus on the card itself: it shows the ring (fix round 3)
     data-tdock-narrow                              the dock is under 320 px: FEA materials and CFD scenarios one to a row (fix round 3)
   A panel dragged by its header carries data-tdock-free and stays where it was dropped until it is opened again. A card opened while
   another screen is in front (a chat command) carries data-tdock-away: it shows where it ships and docks when opened again; so does the
   FEA run's progress card while the model screen is not in front (fix round 4).
   A rail is hidden only while the CommandManager that replaces it runs (html.tye-mcm / html.tye-dcm-r4l; fix round 2).
   Every rule is scoped html.tye-tdock:not(.tye-ts): touch_shell.css keeps its own placement and look. The look is CSS only, by panel
   id (phase_section_panel.js and phase_panels_skin.js scope theirs by id, so class rules lose): sheet, hairline, radius 18; a 62 px
   header with a 36 px icon chip (area tint, accent icon), the title 15/600, its line 12/400, a 36 px round close; 40 px controls;
   primary = the black and white house pill, destructive = red, selection / sliders / segments in the area accent, secondary on
   the field fill. The content and the controls stay each module's own.
   ================================================================================================================ */

/* ---------- 0. tokens ---------- */
html.tye-tdock body {
  --td-sheet: #ffffff; --td-ink: #101114; --td-ink2: #3b3f46; --td-ink3: #636a76;
  --td-line: rgba(17, 20, 28, .10); --td-press: rgba(17, 20, 28, .07); --td-hover: rgba(17, 20, 28, .045); --td-field: #f4f5f7;
  --td-shadow: 0 10px 30px rgba(17, 20, 28, .12), 0 2px 8px rgba(17, 20, 28, .06);
  --td-pri-bg: #101114; --td-pri-fg: #ffffff; --td-danger: #c42b23; --td-seg-on: #ffffff; --td-seg-sh: 0 1px 3px rgba(0, 0, 0, .12);
  --td-font: Inter, 'Noto Sans Thai', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --td-acc: #185fa5; --td-acc-icon: #378add; --td-acc-ink: #185fa5; --td-tint: rgba(55, 138, 221, .12);
}
html.tye-tdock body[data-tdock-acc="solid"] { --td-acc: #7c3aed; --td-acc-icon: #7c3aed; --td-acc-ink: #7c3aed; --td-tint: rgba(124, 58, 237, .09); }
html.tye-tdock body[data-tdock-acc="drawing"] { --td-acc: #e5322a; --td-acc-icon: #e5322a; --td-acc-ink: #c42b23; --td-tint: rgba(229, 50, 42, .09); }
html.tye-tdock[data-theme="dark"] body {
  --td-sheet: #1c1d21; --td-ink: #f2f3f5; --td-ink2: #c9cdd4; --td-ink3: #9aa1ad;
  --td-line: rgba(255, 255, 255, .10); --td-press: rgba(255, 255, 255, .10); --td-hover: rgba(255, 255, 255, .06); --td-field: #25272c;
  --td-shadow: 0 12px 34px rgba(0, 0, 0, .55), 0 2px 10px rgba(0, 0, 0, .35);
  --td-pri-bg: #f2f3f5; --td-pri-fg: #101114; --td-danger: #ff7a71; --td-seg-on: rgba(255, 255, 255, .14); --td-seg-sh: none;
  --td-acc: #7dd3fc; --td-acc-icon: #7dd3fc; --td-acc-ink: #7dd3fc; --td-tint: rgba(125, 211, 252, .14);
}
html.tye-tdock[data-theme="dark"] body[data-tdock-acc="solid"] { --td-acc: #a78bfa; --td-acc-icon: #a78bfa; --td-acc-ink: #b9a3fc; --td-tint: rgba(167, 139, 250, .16); }
html.tye-tdock[data-theme="dark"] body[data-tdock-acc="drawing"] { --td-acc: #ff4d42; --td-acc-icon: #ff4d42; --td-acc-ink: #ff7a71; --td-tint: rgba(255, 77, 66, .14); }

/* ---------- 1. the rails: hidden on the desktop, never removed (touch's own rule) ---------- */
/* each rail only while the CommandManager that replaces it is running (fix round 2): the model rail with html.tye-mcm (phase_model_cm.js
   sets it as it starts; its kill switch tye_mcm_off leaves it off), the Drawing rail with html.tye-dcm-r4l, which only THIS release's
   phase_drawing_cm.js sets, once its bar is built with Evaluate > History and Sketch > Relations > Constraints in its table - a kill
   switch (tye_dcm_off), a Drawing CommandManager that failed at boot or an older copy of it keeps the rail and its four tools */
html.tye-tdock.tye-mcm:not(.tye-ts) :is(#tye-cad-rail, #tye-cad-rail-open) { display: none !important; }
html.tye-tdock.tye-dcm-r4l:not(.tye-ts) :is(#tye-drw-rail, #tye-drw-rail-open) { display: none !important; }

/* ---------- 2. the dock: one place, one card ---------- */
/* (two ids in the selector: cad_draw.css places the in-pane ones by '#v3d-cw > #tye-motion-panel') */
html.tye-tdock:not(.tye-ts) :is(body[data-tdock-view="model"], body[data-tdock-view="model"] #v3d-cw, body[data-tdock-view="model"] #vp-3d) > :is(#tye-section-dialog, #tye-explode-dialog, #tye-3dfea-mat-dialog, #tye-3dfea-progress, #tye-motion-panel, #tye-cfdpro-panel, #tye-mates-panel):not([data-tdock-free]):not([data-tdock-away]),
html.tye-tdock:not(.tye-ts) :is(body[data-tdock-view="drawing"], body[data-tdock-view="drawing"] #vp-cad) > :is(#tye-pdm-panel, #tye-cmp-panel, #tye-configs-panel, #tye-cstr-panel):not([data-tdock-free]):not([data-tdock-away]) {
  position: fixed !important; left: var(--tdock-x, 16px) !important; top: var(--tdock-y, 120px) !important; right: auto !important; bottom: auto !important;
  margin: 0 !important; transform: none !important; box-sizing: border-box !important;
  width: var(--tdock-w, 360px) !important; min-width: 0 !important; max-width: var(--tdock-w, 360px) !important;
  height: auto !important; min-height: 0 !important; max-height: var(--tdock-h, 70vh) !important;
  overflow-x: hidden !important; overflow-y: auto !important; overscroll-behavior: contain; z-index: 60 !important;
}
/* Versions: under its own name prompts (+ Branch, a commit's Tag: body > .tye-popup at z 9500); its backdrop is not used in the dock */
html.tye-tdock:not(.tye-ts) :is(body[data-tdock-view="drawing"], body[data-tdock-view="drawing"] #vp-cad) > #tye-pdm-panel:not([data-tdock-free]):not([data-tdock-away]) { z-index: 9400 !important; }
html.tye-tdock:not(.tye-ts) body #tye-pdm-drawer-bg { display: none !important; }
/* the app toast (#toast, z 99, bottom centre of the window) rises over the docked Versions card: PDM's own results (Committed, Enter a
   commit message, the checkout / tag / branch results) and a greyed row's reason were drawn under the card. It stays under the card's
   prompts (9500) and takes no pointer, so the card's buttons stay usable (fix round 3) */
html.tye-tdock:not(.tye-ts) body[data-tdock-view="drawing"]:has(#tye-pdm-panel.open:not([data-tdock-free]):not([data-tdock-away])) #toast { z-index: 9450 !important; }
/* the toast on the Drawing, dark theme: its shipped fill (white at 7 %, blurred) turned almost white over the white sheet, under light
   text - a greyed row's reason, PDM's results could not be read there. An opaque dark sheet (light is opaque white already; fix round 4) */
html.tye-tdock:not(.tye-ts)[data-theme="dark"] body[data-tdock-view="drawing"] #toast { background: #1c1d21 !important; border-color: rgba(255, 255, 255, .14) !important; box-shadow: 0 10px 28px rgba(0, 0, 0, .45) !important; }
/* each card belongs to one screen: off it, it stays open out of sight (its state survives) and comes back with the screen (not a card
   opened from another screen: it shows where it ships, fix round 1). Not the FEA run's progress card: a run takes minutes and the card
   holds its only Cancel FEA - off the model screen (the Drawing, the CAD closed) it shows where it ships, bottom centre of the window,
   as on 2723 (phase_tool_dock.js marks it data-tdock-away there; fix round 4) */
html.tye-tdock:not(.tye-ts) body:not([data-tdock-view="model"]) :is(#tye-section-dialog, #tye-explode-dialog, #tye-3dfea-mat-dialog, #tye-cfdpro-panel):not([data-tdock-away]),
html.tye-tdock:not(.tye-ts) body:not([data-tdock-view="drawing"]) #tye-pdm-panel:not([data-tdock-away]) { visibility: hidden !important; pointer-events: none !important; }
/* the FEA run's progress card (its Cancel FEA) stays in sight while another tool card is docked: beside it when the pane has room,
   else under it (phase_tool_dock.js writes the place; fix round 1 - it was hidden) */
html.tye-tdock:not(.tye-ts) body[data-tdock-view="model"][data-tdock-pstack] #tye-3dfea-progress#tye-3dfea-progress:not([data-tdock-free]):not([data-tdock-away]) {
  left: var(--tdock-px) !important; top: var(--tdock-py) !important; z-index: 61 !important;
}
/* the Pro Tools dock (its top written inline, top right, z 99999) starts under the CommandManager while it would cover the bar: with
   the rails gone the bar's rows are the only way to the tools (phase_tool_dock.js; fix round 1) */
html.tye-tdock:not(.tye-ts) body[data-tdock-pdbelow] #tye-pro-dock {
  top: var(--tdock-pd-top) !important; max-height: min(85vh, calc(100dvh - var(--tdock-pd-top) - var(--bb-clear, 0px) - 8px)) !important;
}
/* a card dragged out of the dock keeps a scroll of its own (its height is not pinned: fix round 1) */
html.tye-tdock:not(.tye-ts) body :is(#tye-section-dialog, #tye-explode-dialog, #tye-3dfea-mat-dialog, #tye-3dfea-progress, #tye-motion-panel, #tye-cfdpro-panel, #tye-mates-panel, #tye-pdm-panel, #tye-cmp-panel, #tye-configs-panel, #tye-cstr-panel)[data-tdock-free] {
  max-height: calc(100dvh - 16px) !important; overflow-y: auto !important;
}
/* the Drawing's canvas hint (the tools' prompts, top centre of the canvas) is centred in the span that the docked card and the Pro
   Tools dock leave free at the canvas top (phase_tool_dock.js writes it; fix round 1) */
html.tye-tdock:not(.tye-ts) body[data-tdock-view="drawing"][data-tdock-hint] #vp-cad #hint {
  left: var(--tdock-hint-x) !important; max-width: var(--tdock-hint-w) !important;
}
/* the Pro Tools dock steps aside while it would cover the docked card (touch's rule) */
html.tye-tdock:not(.tye-ts) body[data-tdock-yield] #tye-pro-dock { visibility: hidden !important; pointer-events: none !important; }
/* the pane's empty state - 3D "No 3D model yet" (#v3d-empty, inset 0, its lines centred), the Drawing "Nothing to draw on yet"
   (#tye-drw-empty, centred in #cw) - centred in the span the docked card leaves free (phase_tool_dock.js; fix round 3) */
html.tye-tdock:not(.tye-ts) body[data-tdock-view="model"][data-tdock-empty] #v3d-empty {
  padding-left: max(24px, var(--tdock-el)) !important; padding-right: max(24px, var(--tdock-er)) !important;
}
html.tye-tdock:not(.tye-ts) body[data-tdock-view="drawing"][data-tdock-empty] #tye-drw-empty {
  left: var(--tdock-ex) !important; max-width: min(360px, var(--tdock-ew)) !important;
}

/* ---------- 3. the house look: the card ---------- */
html.tye-tdock:not(.tye-ts) body :is(#tye-section-dialog, #tye-explode-dialog, #tye-3dfea-mat-dialog, #tye-3dfea-progress, #tye-motion-panel, #tye-cfdpro-panel, #tye-mates-panel, #tye-pdm-panel, #tye-cmp-panel, #tye-configs-panel, #tye-cstr-panel) {
  background: var(--td-sheet) !important; color: var(--td-ink) !important; border: 1px solid var(--td-line) !important; border-radius: 18px !important;
  box-shadow: var(--td-shadow) !important; font-family: var(--td-font) !important; -webkit-backdrop-filter: none !important; backdrop-filter: none !important;
  padding: 0 !important; outline: none !important; scrollbar-width: thin;
  /* the panels' own colour tokens, pointed at the house ones */
  --secp-bg: var(--td-sheet); --secp-line: var(--td-line); --secp-ink: var(--td-ink); --secp-ink2: var(--td-ink2); --secp-ink3: var(--td-ink3);
  --secp-fld: var(--td-field); --secp-fline: var(--td-line); --secp-card: var(--td-press); --secp-trk: var(--td-press);
  --fea-bg: var(--td-sheet); --fea-line: var(--td-line); --fea-line2: var(--td-line); --fea-txt: var(--td-ink); --fea-txt2: var(--td-ink2); --fea-txt3: var(--td-ink3);
  --fea-card: var(--td-field); --fea-card-h: var(--td-press); --fea-acc: var(--td-acc); --fea-acc-icon: var(--td-acc-icon); --fea-acc-badge: var(--td-tint);
  --fea-acc-line: var(--td-acc); --fea-acc-tint: var(--td-tint); --fea-acc-ring: var(--td-tint); --fea-foot: transparent; --fea-btn-line: var(--td-line); --fea-btn-h: var(--td-press);
  --fea-mesh-bg: var(--td-tint); --fea-mesh-line: var(--td-line);
  --tp-surface: var(--td-sheet); --tp-elev: var(--td-field); --tp-ink: var(--td-ink); --tp-ink2: var(--td-ink2); --tp-ink3: var(--td-ink3); --tp-line: var(--td-line);
  --tp-line2: var(--td-line); --tp-accent: var(--td-acc); --tp-accent2: var(--td-acc); --tp-soft: var(--td-tint); --tp-hover: var(--td-press);
  --cfd-bg: var(--td-sheet); --cfd-line: var(--td-line); --cfd-line2: var(--td-line); --cfd-txt: var(--td-ink); --cfd-txt2: var(--td-ink2); --cfd-txt3: var(--td-ink3);
  --cfd-card: var(--td-field); --cfd-hov: var(--td-press);
}
html.tye-tdock:not(.tye-ts) body :is(#tye-section-dialog, #tye-explode-dialog, #tye-3dfea-mat-dialog, #tye-3dfea-progress, #tye-motion-panel, #tye-cfdpro-panel, #tye-mates-panel, #tye-pdm-panel, #tye-cmp-panel, #tye-configs-panel, #tye-cstr-panel):focus { outline: none !important; }
/* (a keyboard open that left the focus on the card itself - no control to take it, or the FEA picker, whose first control would commit:
   the accent ring on the card; fix round 3. Outside the card, fix round 4: drawn inside it, its sticky header and footer, z 3, covered
   the ring's top and bottom) */
html.tye-tdock:not(.tye-ts) body :is(#tye-section-dialog, #tye-explode-dialog, #tye-3dfea-mat-dialog, #tye-3dfea-progress, #tye-motion-panel, #tye-cfdpro-panel, #tye-mates-panel, #tye-pdm-panel, #tye-cmp-panel, #tye-configs-panel, #tye-cstr-panel)[data-tdock-kb]:focus { outline: 2px solid var(--td-acc) !important; outline-offset: 2px !important; }
html.tye-tdock:not(.tye-ts) body :is(#tye-section-dialog, #tye-explode-dialog, #tye-3dfea-mat-dialog, #tye-3dfea-progress, #tye-motion-panel, #tye-cfdpro-panel, #tye-mates-panel, #tye-pdm-panel, #tye-cmp-panel, #tye-configs-panel, #tye-cstr-panel) :focus-visible { outline: 2px solid var(--td-acc) !important; outline-offset: -2px !important; }

/* ---------- 4. the header: 62 px, a 36 px icon chip, the title and its line, a 36 px round close (sticky while the card scrolls) ---------- */
html.tye-tdock:not(.tye-ts) body :is(#tye-section-dialog, #tye-explode-dialog, #tye-3dfea-mat-dialog, #tye-3dfea-progress, #tye-motion-panel, #tye-cfdpro-panel, #tye-mates-panel, #tye-pdm-panel, #tye-cmp-panel, #tye-configs-panel, #tye-cstr-panel) > :first-child {
  position: sticky !important; top: 0 !important; z-index: 3 !important; display: flex !important; align-items: center !important; gap: 12px !important;
  min-height: 62px !important; height: auto !important; margin: 0 !important; padding: 10px 10px 10px 14px !important; box-sizing: border-box !important;
  background: var(--td-sheet) !important; border: 0 !important; border-bottom: 1px solid var(--td-line) !important; border-radius: 0 !important; box-shadow: none !important;
}
html.tye-tdock:not(.tye-ts) body :is(#tye-pdm-panel, #tye-cmp-panel, #tye-configs-panel, #tye-cstr-panel) .titlerow {
  display: flex !important; align-items: center !important; gap: 8px !important; flex: 1 1 auto !important; min-width: 0 !important; width: 100% !important; padding: 0 !important;
}
html.tye-tdock:not(.tye-ts) body :is(#tye-motion-panel, #tye-mates-panel, #tye-pdm-panel, #tye-cmp-panel, #tye-configs-panel, #tye-cstr-panel) .ttl {
  display: flex !important; align-items: center !important; gap: 12px !important; flex: 1 1 auto !important; min-width: 0 !important; margin: 0 !important;
  font: 600 15px/1.2 var(--td-font) !important; color: var(--td-ink) !important; letter-spacing: 0 !important;
}
html.tye-tdock:not(.tye-ts) body :is(#tye-motion-panel, #tye-mates-panel, #tye-pdm-panel, #tye-cmp-panel, #tye-configs-panel, #tye-cstr-panel) .ttl::before { content: none !important; display: none !important; }
html.tye-tdock:not(.tye-ts) body :is(#tye-section-dialog, #tye-explode-dialog, #tye-3dfea-mat-dialog, #tye-cfdpro-panel, #tye-cmp-panel) :is(.fea-mgrip, .grip) { display: none !important; }
/* the icon chip */
html.tye-tdock:not(.tye-ts) body :is(#tye-section-dialog, #tye-explode-dialog, #tye-3dfea-mat-dialog) .fea-mhd-ic,
html.tye-tdock:not(.tye-ts) body :is(#tye-motion-panel, #tye-mates-panel) .ic-badge,
html.tye-tdock:not(.tye-ts) body #tye-cfdpro-panel > .hdr > .ic,
html.tye-tdock:not(.tye-ts) body :is(#tye-pdm-panel, #tye-cmp-panel, #tye-configs-panel, #tye-cstr-panel) .ttl .ic {
  width: 36px !important; height: 36px !important; min-width: 36px !important; flex: none !important; margin: 0 !important; border: 0 !important; border-radius: 11px !important;
  background: var(--td-tint) !important; color: var(--td-acc-icon) !important; box-shadow: none !important; display: flex !important; align-items: center !important; justify-content: center !important;
}
html.tye-tdock:not(.tye-ts) body :is(#tye-section-dialog, #tye-explode-dialog, #tye-3dfea-mat-dialog) .fea-mhd-ic i,
html.tye-tdock:not(.tye-ts) body :is(#tye-motion-panel, #tye-mates-panel) .ic-badge i,
html.tye-tdock:not(.tye-ts) body #tye-cfdpro-panel > .hdr > .ic i,
html.tye-tdock:not(.tye-ts) body :is(#tye-pdm-panel, #tye-cmp-panel, #tye-configs-panel, #tye-cstr-panel) .ttl .ic :is(i, svg) {
  font-size: 20px !important; width: auto !important; height: auto !important; color: var(--td-acc-icon) !important; line-height: 1 !important;
}
/* the title and its line */
html.tye-tdock:not(.tye-ts) body :is(#tye-section-dialog, #tye-explode-dialog, #tye-3dfea-mat-dialog) .fea-mhd-tx,
html.tye-tdock:not(.tye-ts) body :is(#tye-motion-panel, #tye-mates-panel, #tye-cmp-panel, #tye-configs-panel, #tye-cstr-panel) .tp-tt,
html.tye-tdock:not(.tye-ts) body #tye-cfdpro-panel .htx {
  display: flex !important; flex-direction: column !important; gap: 3px !important; flex: 1 1 auto !important; min-width: 0 !important; line-height: 1.2 !important;
}
html.tye-tdock:not(.tye-ts) body :is(#tye-section-dialog, #tye-explode-dialog, #tye-3dfea-mat-dialog) .fea-mhd-tx > b,
html.tye-tdock:not(.tye-ts) body :is(#tye-motion-panel, #tye-mates-panel, #tye-cmp-panel, #tye-configs-panel, #tye-cstr-panel) .tp-main,
html.tye-tdock:not(.tye-ts) body #tye-cfdpro-panel .htx > b,
html.tye-tdock:not(.tye-ts) body #tye-pdm-panel .ttl > span:not(.tdock-sub) {
  font: 600 15px/1.2 var(--td-font) !important; color: var(--td-ink) !important; letter-spacing: 0 !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important;
}
html.tye-tdock:not(.tye-ts) body :is(#tye-section-dialog, #tye-explode-dialog, #tye-3dfea-mat-dialog) .fea-mhd-tx > span,
html.tye-tdock:not(.tye-ts) body :is(#tye-motion-panel, #tye-mates-panel, #tye-cmp-panel, #tye-configs-panel, #tye-cstr-panel) .tp-sub,
html.tye-tdock:not(.tye-ts) body #tye-cfdpro-panel .htx .sub,
html.tye-tdock:not(.tye-ts) body #tye-pdm-panel .tdock-sub {
  font: 400 12px/1.3 var(--td-font) !important; font-style: normal !important; color: var(--td-ink3) !important; letter-spacing: 0 !important; margin: 0 !important;
  white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important;
}
/* Versions' header: the icon over two rows, its title and the line added beside it */
html.tye-tdock:not(.tye-ts) body #tye-pdm-panel .ttl { display: grid !important; grid-template-columns: 36px minmax(0, 1fr) !important; column-gap: 12px !important; row-gap: 3px !important; align-items: center !important; }
html.tye-tdock:not(.tye-ts) body #tye-pdm-panel .ttl .ic { grid-row: 1 / span 2 !important; }
html.tye-tdock:not(.tye-ts) body #tye-pdm-panel .ttl > span:not(.tdock-sub) { align-self: end !important; }
html.tye-tdock:not(.tye-ts) body #tye-pdm-panel .tdock-sub { align-self: start !important; }
html.tye-tdock:not(.tye-ts) body #tye-pdm-panel .tdock-sub:empty { display: none !important; }
html.tye-tdock:not(.tye-ts) body #tye-pdm-panel .title-right { display: flex !important; align-items: center !important; gap: 6px !important; flex: none !important; }
/* the close: round, 36 px; its tooltip says what it does (phase_tool_dock.js) */
html.tye-tdock:not(.tye-ts) body :is(#tye-section-dialog, #tye-explode-dialog, #tye-3dfea-mat-dialog) .fea-mx,
html.tye-tdock:not(.tye-ts) body :is(#tye-motion-panel, #tye-cfdpro-panel, #tye-mates-panel, #tye-pdm-panel, #tye-cmp-panel, #tye-configs-panel, #tye-cstr-panel) .closex,
html.tye-tdock:not(.tye-ts) body #tye-mates-panel .hdr-btns .add,
html.tye-tdock:not(.tye-ts) body #tye-configs-panel .add-btn {
  width: 36px !important; height: 36px !important; min-width: 36px !important; min-height: 36px !important; flex: none !important; margin: 0 !important; padding: 0 !important;
  border: 0 !important; border-radius: 18px !important; background: transparent !important; color: var(--td-ink2) !important; box-shadow: none !important;
  display: inline-flex !important; align-items: center !important; justify-content: center !important; cursor: pointer !important;
}
html.tye-tdock:not(.tye-ts) body #tye-mates-panel .hdr-btns .add,
html.tye-tdock:not(.tye-ts) body #tye-configs-panel .add-btn { background: var(--td-field) !important; }
html.tye-tdock:not(.tye-ts) body :is(#tye-section-dialog, #tye-explode-dialog, #tye-3dfea-mat-dialog) .fea-mx:hover,
html.tye-tdock:not(.tye-ts) body :is(#tye-motion-panel, #tye-cfdpro-panel, #tye-mates-panel, #tye-pdm-panel, #tye-cmp-panel, #tye-configs-panel, #tye-cstr-panel) .closex:hover,
html.tye-tdock:not(.tye-ts) body #tye-mates-panel .hdr-btns .add:hover,
html.tye-tdock:not(.tye-ts) body #tye-configs-panel .add-btn:hover { background: var(--td-press) !important; color: var(--td-ink) !important; }
html.tye-tdock:not(.tye-ts) body :is(#tye-section-dialog, #tye-explode-dialog, #tye-3dfea-mat-dialog) .fea-mx i,
html.tye-tdock:not(.tye-ts) body :is(#tye-motion-panel, #tye-cfdpro-panel, #tye-mates-panel, #tye-pdm-panel, #tye-cmp-panel, #tye-configs-panel, #tye-cstr-panel) .closex i,
html.tye-tdock:not(.tye-ts) body #tye-mates-panel .hdr-btns .add i,
html.tye-tdock:not(.tye-ts) body #tye-configs-panel .add-btn i { font-size: 18px !important; color: inherit !important; }
html.tye-tdock:not(.tye-ts) body #tye-mates-panel .hdr-btns { display: flex !important; align-items: center !important; gap: 4px !important; flex: none !important; }
/* header extras: the branch picker (Versions), the count chip (Constraints) */
/* (more specific than section 7's field rule, which took its chevron room and its 36 px height: 1,7,4; fix round 4) */
html.tye-tdock:not(.tye-ts) body #tye-pdm-panel :is(input:not([type=range]):not([type=checkbox]):not([type=radio]):not([type=color]), select):is(select.br) {
  height: 36px !important; min-height: 36px !important; padding: 0 30px 0 10px !important; border-radius: 12px !important; font: 500 13px/1 var(--td-font) !important;
}
html.tye-tdock:not(.tye-ts) body #tye-cstr-panel .count-chip { background: var(--td-tint) !important; color: var(--td-acc-ink) !important; border-radius: 9px !important; font: 600 12px/18px var(--td-font) !important; padding: 0 7px !important; }

/* ---------- 5. the footer: 12 / 14 px, a hairline over it (sticky while the card scrolls) ---------- */
html.tye-tdock:not(.tye-ts) body :is(#tye-section-dialog, #tye-explode-dialog, #tye-3dfea-mat-dialog) > .fea-foot,
html.tye-tdock:not(.tye-ts) body :is(#tye-motion-panel, #tye-cfdpro-panel, #tye-mates-panel, #tye-pdm-panel, #tye-cmp-panel, #tye-configs-panel, #tye-cstr-panel) > .foot {
  position: sticky !important; bottom: 0 !important; z-index: 3 !important; display: flex !important; align-items: center !important; flex-wrap: wrap !important; gap: 8px !important;
  margin: 0 !important; padding: 12px 14px !important; box-sizing: border-box !important; background: var(--td-sheet) !important;
  border: 0 !important; border-top: 1px solid var(--td-line) !important; border-radius: 0 !important; box-shadow: none !important;
}
html.tye-tdock:not(.tye-ts) body :is(#tye-section-dialog, #tye-explode-dialog, #tye-3dfea-mat-dialog) > .fea-foot { justify-content: flex-end !important; }

/* ---------- 6. buttons: 40 px; primary = the house pill, secondary on the field, quiet, destructive red ---------- */
/* (secondary) */
html.tye-tdock:not(.tye-ts) body :is(#tye-section-dialog, #tye-explode-dialog) :is(.v3d-sect-ibtn, .secp-qbtn),
html.tye-tdock:not(.tye-ts) body #tye-motion-panel :is(.addrow button, .gact, .foot .stopb),
html.tye-tdock:not(.tye-ts) body #tye-cfdpro-panel .foot .viz,
html.tye-tdock:not(.tye-ts) body #tye-mates-panel .foot :is(.insert, .gmesh),
html.tye-tdock:not(.tye-ts) body #tye-pdm-panel .foot .newbr,
html.tye-tdock:not(.tye-ts) body #tye-cmp-panel .foot :is(.diff, .ghost),
html.tye-tdock:not(.tye-ts) body #tye-configs-panel .foot .save,
html.tye-tdock:not(.tye-ts) body #tye-cstr-panel .foot :is(.diag, .clear:not(.danger)) {
  height: 40px !important; min-height: 40px !important; padding: 0 16px !important; box-sizing: border-box !important; margin: 0 !important;
  display: inline-flex !important; align-items: center !important; justify-content: center !important; gap: 8px !important; white-space: nowrap !important;
  border: 0 !important; border-radius: 20px !important; background: var(--td-field) !important; color: var(--td-ink) !important; box-shadow: none !important; filter: none !important;
  font: 500 13.5px/1 var(--td-font) !important; letter-spacing: 0 !important; cursor: pointer !important;
}
/* (primary: one per card) */
html.tye-tdock:not(.tye-ts) body :is(#tye-section-dialog, #tye-explode-dialog, #tye-3dfea-mat-dialog) .fea-btn-primary,
html.tye-tdock:not(.tye-ts) body #tye-motion-panel .foot .play,
html.tye-tdock:not(.tye-ts) body #tye-mates-panel .foot .solve,
html.tye-tdock:not(.tye-ts) body #tye-pdm-panel .quick .commit-btn,
html.tye-tdock:not(.tye-ts) body #tye-cmp-panel .foot .load,
html.tye-tdock:not(.tye-ts) body #tye-configs-panel .foot .table,
html.tye-tdock:not(.tye-ts) body #tye-cstr-panel .foot .solve {
  height: 40px !important; min-height: 40px !important; padding: 0 18px !important; box-sizing: border-box !important; margin: 0 !important;
  display: inline-flex !important; align-items: center !important; justify-content: center !important; gap: 8px !important; white-space: nowrap !important;
  border: 0 !important; border-radius: 20px !important; background: var(--td-pri-bg) !important; color: var(--td-pri-fg) !important; box-shadow: none !important; filter: none !important;
  font: 600 13.5px/1 var(--td-font) !important; letter-spacing: 0 !important; cursor: pointer !important;
}
/* (quiet: Cancel, Export, Import, Load) */
html.tye-tdock:not(.tye-ts) body :is(#tye-section-dialog, #tye-explode-dialog, #tye-3dfea-mat-dialog) .fea-btn,
html.tye-tdock:not(.tye-ts) body #tye-pdm-panel .foot :is(.export, .import),
html.tye-tdock:not(.tye-ts) body #tye-configs-panel .foot .load {
  height: 40px !important; min-height: 40px !important; padding: 0 14px !important; box-sizing: border-box !important; margin: 0 !important;
  display: inline-flex !important; align-items: center !important; justify-content: center !important; gap: 6px !important; white-space: nowrap !important;
  border: 0 !important; border-radius: 20px !important; background: transparent !important; color: var(--td-ink2) !important; box-shadow: none !important;
  font: 500 13.5px/1 var(--td-font) !important; letter-spacing: 0 !important; cursor: pointer !important;
}
/* (destructive: red words on a quiet button) */
html.tye-tdock:not(.tye-ts) body #tye-cfdpro-panel .foot .clear,
html.tye-tdock:not(.tye-ts) body #tye-mates-panel .foot .clear,
html.tye-tdock:not(.tye-ts) body #tye-cmp-panel .foot .clear,
html.tye-tdock:not(.tye-ts) body #tye-cstr-panel .foot .clear.danger,
html.tye-tdock:not(.tye-ts) body #tye-3dfea-progress .fea-btn-danger {
  height: 40px !important; min-height: 40px !important; padding: 0 14px !important; box-sizing: border-box !important; margin: 0 !important;
  display: inline-flex !important; align-items: center !important; justify-content: center !important; gap: 6px !important; white-space: nowrap !important;
  border: 0 !important; border-radius: 20px !important; background: transparent !important; color: var(--td-danger) !important; box-shadow: none !important;
  font: 500 13.5px/1 var(--td-font) !important; letter-spacing: 0 !important; cursor: pointer !important;
}
html.tye-tdock:not(.tye-ts) body :is(#tye-section-dialog, #tye-explode-dialog, #tye-3dfea-mat-dialog, #tye-3dfea-progress, #tye-motion-panel, #tye-cfdpro-panel, #tye-mates-panel, #tye-pdm-panel, #tye-cmp-panel, #tye-configs-panel, #tye-cstr-panel) :is(.fea-btn, .v3d-sect-ibtn, .secp-qbtn, .addrow button, .gact, .foot button, .quick button):hover {
  filter: none !important; background-image: linear-gradient(var(--td-hover), var(--td-hover)) !important;
}
html.tye-tdock:not(.tye-ts) body :is(#tye-section-dialog, #tye-explode-dialog, #tye-3dfea-mat-dialog, #tye-motion-panel, #tye-mates-panel, #tye-pdm-panel, #tye-cmp-panel, #tye-configs-panel, #tye-cstr-panel) :is(.fea-btn-primary, .foot .play, .foot .solve, .commit-btn, .foot .load.primary, .foot .table):hover {
  background-image: linear-gradient(rgba(255, 255, 255, .12), rgba(255, 255, 255, .12)) !important;
}
html.tye-tdock:not(.tye-ts) body :is(#tye-section-dialog, #tye-explode-dialog, #tye-3dfea-mat-dialog, #tye-3dfea-progress, #tye-motion-panel, #tye-cfdpro-panel, #tye-mates-panel, #tye-pdm-panel, #tye-cmp-panel, #tye-configs-panel, #tye-cstr-panel) :is(.fea-btn, .fea-btn-primary, .v3d-sect-ibtn, .secp-qbtn, .addrow button, .gact, .foot button, .quick button) :is(i, svg) {
  font-size: 16px !important; color: inherit !important; vertical-align: 0 !important;
}
html.tye-tdock:not(.tye-ts) body :is(#tye-section-dialog, #tye-explode-dialog) .v3d-sect-ibtn:after { font: 500 13.5px/1 var(--td-font) !important; color: inherit !important; }
html.tye-tdock:not(.tye-ts) body :is(#tye-pdm-panel, #tye-cmp-panel, #tye-cstr-panel, #tye-configs-panel, #tye-mates-panel) .foot button:disabled { opacity: .45 !important; cursor: not-allowed !important; }
/* the focus ring of a filled pill sits outside it, on the sheet (an inset accent ring on the black / white fill barely showed; fix round 1) */
html.tye-tdock:not(.tye-ts) body :is(#tye-section-dialog, #tye-explode-dialog, #tye-3dfea-mat-dialog, #tye-3dfea-progress, #tye-motion-panel, #tye-cfdpro-panel, #tye-mates-panel, #tye-pdm-panel, #tye-cmp-panel, #tye-configs-panel, #tye-cstr-panel) :is(.fea-btn-primary, .foot .play, .foot .solve, .commit-btn, .foot .load, .foot .table):focus-visible { outline-offset: 2px !important; }

/* ---------- 7. fields, segments, sliders: 40 px, the field fill, the area accent ---------- */
html.tye-tdock:not(.tye-ts) body :is(#tye-section-dialog, #tye-explode-dialog, #tye-motion-panel, #tye-cfdpro-panel, #tye-mates-panel, #tye-pdm-panel, #tye-cmp-panel, #tye-configs-panel, #tye-cstr-panel) :is(input:not([type=range]):not([type=checkbox]):not([type=radio]):not([type=color]), select) {
  height: 40px !important; min-height: 40px !important; box-sizing: border-box !important; padding: 0 12px !important; margin: 0 !important;
  background: var(--td-field) !important; color: var(--td-ink) !important; border: 1px solid var(--td-line) !important; border-radius: 12px !important; box-shadow: none !important;
  font: 500 13.5px/1 var(--td-font) !important; letter-spacing: 0 !important;
}
/* (focused: the accent border - as specific as the field rule above, so it wins - and the :focus-visible ring of section 3, which this
   rule no longer removes; fix round 1: focused and unfocused fields looked the same) */
html.tye-tdock:not(.tye-ts) body :is(#tye-section-dialog, #tye-explode-dialog, #tye-motion-panel, #tye-cfdpro-panel, #tye-mates-panel, #tye-pdm-panel, #tye-cmp-panel, #tye-configs-panel, #tye-cstr-panel) :is(input:not([type=range]):not([type=checkbox]):not([type=radio]):not([type=color]), select):focus { border-color: var(--td-acc) !important; }
/* a slider's ring sits outside its track */
html.tye-tdock:not(.tye-ts) body :is(#tye-section-dialog, #tye-explode-dialog, #tye-motion-panel, #tye-cfdpro-panel, #tye-mates-panel) input[type=range]:focus-visible { outline: 2px solid var(--td-acc) !important; outline-offset: 2px !important; border-radius: 6px !important; }
/* a select keeps room for its chevron: voice_ui.css SELECT_ARROW_ABS_2026Q4 pins the 12 px base-select picker icon 12 px from the right
   edge and gives every select padding-right 30px; the field rule above (1,6,3) took it back to 12 px, so the chevron sat on the last
   letter ("Spi n", "mai n") and Motion's type and Versions' branch read as static chips. One step more specific than the field rule
   (the trailing :is(select), 1,6,4), placed after it (fix round 4) */
html.tye-tdock:not(.tye-ts) body :is(#tye-section-dialog, #tye-explode-dialog, #tye-motion-panel, #tye-cfdpro-panel, #tye-mates-panel, #tye-pdm-panel, #tye-cmp-panel, #tye-configs-panel, #tye-cstr-panel) :is(input:not([type=range]):not([type=checkbox]):not([type=radio]):not([type=color]), select):is(select) { padding-right: 30px !important; }
html.tye-tdock:not(.tye-ts) body :is(#tye-section-dialog, #tye-explode-dialog, #tye-motion-panel, #tye-cfdpro-panel, #tye-mates-panel, #tye-pdm-panel, #tye-cmp-panel, #tye-configs-panel, #tye-cstr-panel) input::placeholder { color: var(--td-ink3) !important; opacity: 1 !important; }
html.tye-tdock:not(.tye-ts) body :is(#tye-motion-panel, #tye-mates-panel, #tye-cfdpro-panel) input[type=range] { accent-color: var(--td-acc) !important; }
html.tye-tdock:not(.tye-ts) body #tye-motion-panel input[type=range]::-webkit-slider-thumb { background: var(--td-acc) !important; }
html.tye-tdock:not(.tye-ts) body #tye-motion-panel input[type=range]::-moz-range-thumb { background: var(--td-acc) !important; }
/* Section / Explode (phase_section_panel.js): the plane segments, the offset slider and its value */
html.tye-tdock:not(.tye-ts) body :is(#tye-section-dialog, #tye-explode-dialog) :is(.v3d-section, .v3d-explode) { padding: 14px !important; }
html.tye-tdock:not(.tye-ts) body :is(#tye-section-dialog, #tye-explode-dialog) :is(.v3d-section-controls, .v3d-explode-controls) { gap: 12px 8px !important; }
html.tye-tdock:not(.tye-ts) body #tye-section-dialog .v3d-sect-seg { background: var(--td-field) !important; border: 0 !important; border-radius: 12px !important; padding: 3px !important; gap: 3px !important; }
html.tye-tdock:not(.tye-ts) body #tye-section-dialog .secp-thumb { top: 3px !important; bottom: 3px !important; border-radius: 9px !important; background: var(--td-seg-on) !important; box-shadow: var(--td-seg-sh) !important; }
html.tye-tdock:not(.tye-ts) body #tye-section-dialog .v3d-sect-ax { height: 34px !important; padding: 0 !important; border-radius: 9px !important; color: var(--td-ink2) !important; font: 500 13px/1 var(--td-font) !important; letter-spacing: .04em !important; }
html.tye-tdock:not(.tye-ts) body #tye-section-dialog .v3d-sect-ax:hover { color: var(--td-ink) !important; }
html.tye-tdock:not(.tye-ts) body #tye-section-dialog .v3d-sect-ax.on { color: var(--td-acc-ink) !important; font-weight: 600 !important; }
html.tye-tdock:not(.tye-ts) body :is(#tye-section-dialog, #tye-explode-dialog) .v3d-section-val {
  height: 40px !important; box-sizing: border-box !important; padding: 0 12px !important; display: inline-flex !important; align-items: center !important; justify-content: flex-end !important;
  background: var(--td-field) !important; border: 1px solid var(--td-line) !important; border-radius: 12px !important; color: var(--td-ink) !important;
}
html.tye-tdock:not(.tye-ts) body :is(#tye-section-dialog, #tye-explode-dialog) input[type=range] { height: 40px !important; background: transparent !important; }
html.tye-tdock:not(.tye-ts) body :is(#tye-section-dialog, #tye-explode-dialog) input[type=range]::-webkit-slider-runnable-track {
  height: 4px !important; border-radius: 2px !important; background-color: var(--td-press) !important; background-image: linear-gradient(var(--td-acc), var(--td-acc)) !important;
}
html.tye-tdock:not(.tye-ts) body :is(#tye-section-dialog, #tye-explode-dialog) input[type=range]::-webkit-slider-thumb {
  width: 18px !important; height: 18px !important; margin-top: -7px !important; border-radius: 9px !important; box-sizing: border-box !important;
  background: var(--td-sheet) !important; border: 2px solid var(--td-acc) !important; box-shadow: 0 1px 3px rgba(0, 0, 0, .18) !important;
}
html.tye-tdock:not(.tye-ts) body :is(#tye-section-dialog, #tye-explode-dialog) input[type=range]::-moz-range-track { height: 4px !important; background: var(--td-press) !important; }
html.tye-tdock:not(.tye-ts) body :is(#tye-section-dialog, #tye-explode-dialog) input[type=range]::-moz-range-progress { height: 4px !important; background: var(--td-acc) !important; }
html.tye-tdock:not(.tye-ts) body :is(#tye-section-dialog, #tye-explode-dialog) input[type=range]::-moz-range-thumb { width: 14px !important; height: 14px !important; background: var(--td-sheet) !important; border: 2px solid var(--td-acc) !important; }

/* ---------- 8. per panel ---------- */
/* FEA: the material cards (cad_sketch3d.js) in the area accent, two to a row in the dock */
html.tye-tdock:not(.tye-ts) body #tye-3dfea-mat-dialog .fea-mbody { padding: 4px 14px 12px !important; }
html.tye-tdock:not(.tye-ts) body #tye-3dfea-mat-dialog .fea-msh { font: 600 11px/1 var(--td-font) !important; letter-spacing: .06em !important; text-transform: uppercase !important; color: var(--td-ink3) !important; padding: 12px 2px 8px !important; }
html.tye-tdock:not(.tye-ts) body #tye-3dfea-mat-dialog .fea-msec { --ma: var(--td-acc); --mt: var(--td-tint); --mt2: var(--td-tint); --mr: transparent; }
html.tye-tdock:not(.tye-ts) body #tye-3dfea-mat-dialog .fea-msh::before { content: none !important; display: none !important; }
html.tye-tdock:not(.tye-ts) body #tye-3dfea-mat-dialog .fea-mcnt { background: var(--td-field) !important; color: var(--td-ink3) !important; font: 600 11px/18px var(--td-font) !important; padding: 0 7px !important; }
html.tye-tdock:not(.tye-ts) body #tye-3dfea-mat-dialog .fea-mgrid { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 6px !important; }
html.tye-tdock:not(.tye-ts) body #tye-3dfea-mat-dialog .fea-mat-card { min-width: 0 !important; border-radius: 12px !important; background: var(--td-field) !important; border: 1px solid transparent !important; box-shadow: none !important; }
html.tye-tdock:not(.tye-ts) body #tye-3dfea-mat-dialog .fea-mat-card:hover { background: var(--td-press) !important; }
html.tye-tdock:not(.tye-ts) body #tye-3dfea-mat-dialog .fea-mat-card.is-selected { background: var(--td-tint) !important; border-color: var(--td-acc) !important; }
html.tye-tdock:not(.tye-ts) body #tye-3dfea-mat-dialog .fea-mchip { background: var(--td-sheet) !important; color: var(--td-ink2) !important; border-radius: 9px !important; box-shadow: none !important; }
html.tye-tdock:not(.tye-ts) body #tye-3dfea-mat-dialog .fea-mat-card.is-selected :is(.fea-mchip, .fea-mck) { color: var(--td-acc-icon) !important; }
html.tye-tdock:not(.tye-ts) body #tye-3dfea-mat-dialog .fea-mat-name { color: var(--td-ink) !important; font: 500 13px/1.2 var(--td-font) !important; }
html.tye-tdock:not(.tye-ts) body #tye-3dfea-mat-dialog .fea-mat-props { color: var(--td-ink3) !important; font-size: 11.5px !important; }
/* (the selected chip's icon: the shipped '.fea-mat-card.is-selected .fea-mchip i { color: #fff !important }' left it white on the sheet
   chip; and the property line wraps - in a 320 / 240 px dock it was cut to 'E 200 . s...', the yield strength out of sight; fix round 3) */
html.tye-tdock:not(.tye-ts) body #tye-3dfea-mat-dialog .fea-mat-card.is-selected .fea-mchip i { color: var(--td-acc-icon) !important; }
html.tye-tdock:not(.tye-ts) body #tye-3dfea-mat-dialog .fea-mat-props { white-space: normal !important; overflow: visible !important; text-overflow: clip !important; }
/* a card under 320 px (beside the tree, Properties or Pro Tools card; data-tdock-narrow): the materials and the CFD scenarios one to a
   row - two to a row cut their names, mid-word at 240 px (fix round 3) */
html.tye-tdock:not(.tye-ts) body[data-tdock-narrow] #tye-3dfea-mat-dialog:not([data-tdock-away]) .fea-mgrid,
html.tye-tdock:not(.tye-ts) body[data-tdock-narrow] #tye-cfdpro-panel:not([data-tdock-away]) .grid { grid-template-columns: minmax(0, 1fr) !important; }
html.tye-tdock:not(.tye-ts) body #tye-3dfea-progress > .fea-hdr { min-height: 52px !important; }
html.tye-tdock:not(.tye-ts) body #tye-3dfea-progress .fea-title-sm { font: 600 15px/1.2 var(--td-font) !important; color: var(--td-ink) !important; }
html.tye-tdock:not(.tye-ts) body #tye-3dfea-progress .fea-prog-fill:not([style*="background"]) { background: var(--td-acc) !important; }
html.tye-tdock:not(.tye-ts) body #tye-3dfea-progress .fea-body { padding: 12px 14px 14px !important; }
/* Motion Study (phase_motion_occt.js): drivers on the field, the add row, the gears row, Play / Stop / Speed */
html.tye-tdock:not(.tye-ts) body #tye-motion-panel .list { padding: 8px 14px 4px !important; flex: 0 1 auto !important; }
html.tye-tdock:not(.tye-ts) body #tye-motion-panel .item { margin: 0 0 6px !important; padding: 6px 6px 6px 12px !important; min-height: 52px !important; border: 0 !important; border-radius: 12px !important; background: var(--td-field) !important; color: var(--td-ink) !important; }
html.tye-tdock:not(.tye-ts) body #tye-motion-panel .item .nm { font: 500 13.5px/1.2 var(--td-font) !important; color: var(--td-ink) !important; }
html.tye-tdock:not(.tye-ts) body #tye-motion-panel .item :is(.dir, .del) { color: var(--td-ink2) !important; border-radius: 15px !important; }
html.tye-tdock:not(.tye-ts) body #tye-motion-panel .item input { width: 64px !important; height: 34px !important; min-height: 34px !important; }
html.tye-tdock:not(.tye-ts) body #tye-motion-panel .empty { padding: 18px 8px !important; color: var(--td-ink3) !important; font: 400 13px/1.5 var(--td-font) !important; }
html.tye-tdock:not(.tye-ts) body #tye-motion-panel .empty b { color: var(--td-ink2) !important; }
html.tye-tdock:not(.tye-ts) body #tye-motion-panel .addrow { padding: 8px 14px !important; gap: 8px !important; border-top: 0 !important; flex-wrap: wrap !important; }
/* (the type select sizes to the option it shows - base-select: room for the longest, "Rotate" (39 px at 13.5 px) beside the chevron, so
   it keeps one width; the body select gives up the 18 px, so body, type and rpm stay on one line in a 320 px card; fix round 4) */
html.tye-tdock:not(.tye-ts) body #tye-motion-panel .addrow .bsel { flex: 1 1 100px !important; min-width: 0 !important; }
html.tye-tdock:not(.tye-ts) body #tye-motion-panel .addrow .kind { flex: 0 0 auto !important; min-width: 88px !important; }
html.tye-tdock:not(.tye-ts) body #tye-motion-panel .addrow .rpm { width: 72px !important; flex: none !important; }
html.tye-tdock:not(.tye-ts) body #tye-motion-panel .addrow .addbtn { flex: 1 1 100% !important; }
html.tye-tdock:not(.tye-ts) body #tye-motion-panel .gactrow { padding: 4px 14px 12px !important; gap: 8px !important; }
html.tye-tdock:not(.tye-ts) body #tye-motion-panel .gact { flex: 1 1 0 !important; }
html.tye-tdock:not(.tye-ts) body #tye-motion-panel .foot .sp { margin-left: auto !important; display: flex !important; align-items: center !important; gap: 8px !important; color: var(--td-ink3) !important; font: 500 12px/1 var(--td-font) !important; }
html.tye-tdock:not(.tye-ts) body #tye-motion-panel .foot .sp input { width: 84px !important; }
/* CFD (phase_cfd_protools_panel.js): its scenario cards keep their own colours */
html.tye-tdock:not(.tye-ts) body #tye-cfdpro-panel > .body { padding: 6px 14px 12px !important; }
html.tye-tdock:not(.tye-ts) body #tye-cfdpro-panel .grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 6px !important; }
html.tye-tdock:not(.tye-ts) body #tye-cfdpro-panel .sc { border-radius: 12px !important; background: var(--td-field) !important; border-color: transparent !important; min-width: 0 !important; }
html.tye-tdock:not(.tye-ts) body #tye-cfdpro-panel .sc:hover { background: var(--td-press) !important; }
html.tye-tdock:not(.tye-ts) body #tye-cfdpro-panel .sc .name { font: 600 12.5px/1.2 var(--td-font) !important; color: var(--td-ink) !important; }
/* (the scenario's name wraps to two lines in the dock's half-width cards - it was cut to 'Rotating (M...'; fix round 1) */
html.tye-tdock:not(.tye-ts) body #tye-cfdpro-panel .sc .name {
  white-space: normal !important; text-overflow: clip !important; overflow: hidden !important; overflow-wrap: break-word !important; word-break: normal !important;
  display: -webkit-box !important; -webkit-box-orient: vertical !important; -webkit-line-clamp: 2 !important;
}
html.tye-tdock:not(.tye-ts) body #tye-cfdpro-panel .sc .desc { font: 400 11px/1.3 var(--td-font) !important; color: var(--td-ink3) !important; word-break: normal !important; overflow-wrap: break-word !important; }
html.tye-tdock:not(.tye-ts) body #tye-cfdpro-panel .cat-h .lbl { font: 600 11px/1 var(--td-font) !important; letter-spacing: .06em !important; text-transform: uppercase !important; color: var(--td-ink3) !important; }
html.tye-tdock:not(.tye-ts) body #tye-cfdpro-panel .foot button { flex: 1 1 0 !important; }
/* Mate (phase_assembly_mates.js) */
html.tye-tdock:not(.tye-ts) body #tye-mates-panel .list { padding: 8px 14px 4px !important; }
html.tye-tdock:not(.tye-ts) body #tye-mates-panel .item { border: 0 !important; border-radius: 12px !important; background: var(--td-field) !important; margin: 0 0 6px !important; }
html.tye-tdock:not(.tye-ts) body #tye-mates-panel .empty { color: var(--td-ink3) !important; font: 400 13px/1.5 var(--td-font) !important; }
html.tye-tdock:not(.tye-ts) body #tye-mates-panel .dof { padding: 10px 14px !important; border-top: 1px solid var(--td-line) !important; color: var(--td-ink3) !important; font: 500 12px/1 var(--td-font) !important; }
html.tye-tdock:not(.tye-ts) body #tye-mates-panel .dofnum { color: var(--td-acc-ink) !important; }
/* Versions (phase_pdm_ui.js): its counts, the commit row, the timeline */
html.tye-tdock:not(.tye-ts) body #tye-pdm-panel .chipsbar { padding: 10px 14px 0 !important; border: 0 !important; background: transparent !important; gap: 6px !important; }
html.tye-tdock:not(.tye-ts) body #tye-pdm-panel .chipsbar .chip { background: var(--td-field) !important; color: var(--td-ink2) !important; border: 0 !important; border-radius: 8px !important; font: 500 12px/1 var(--td-font) !important; padding: 5px 8px !important; }
html.tye-tdock:not(.tye-ts) body #tye-pdm-panel .quick { padding: 12px 14px !important; gap: 8px !important; border: 0 !important; background: transparent !important; }
html.tye-tdock:not(.tye-ts) body #tye-pdm-panel .quick .msg { flex: 1 1 auto !important; min-width: 0 !important; }
html.tye-tdock:not(.tye-ts) body #tye-pdm-panel .timeline { padding: 0 14px 8px !important; min-height: 0 !important; background: transparent !important; }
html.tye-tdock:not(.tye-ts) body #tye-pdm-panel .timeline .commit { border-radius: 12px !important; }
html.tye-tdock:not(.tye-ts) body #tye-pdm-panel .timeline .commit button { min-height: 30px !important; border-radius: 15px !important; }
html.tye-tdock:not(.tye-ts) body #tye-pdm-panel .empty { color: var(--td-ink3) !important; font: 400 13px/1.5 var(--td-font) !important; }
html.tye-tdock:not(.tye-ts) body #tye-pdm-panel .foot :is(.export, .import):first-of-type { margin-left: auto !important; }
/* Compare / Configurations / Constraints (phase_drawing_compare.js, phase_configurations.js, phase_constraints_pro.js) */
html.tye-tdock:not(.tye-ts) body #tye-cmp-panel .status { padding: 10px 14px 0 !important; color: var(--td-ink3) !important; font: 400 12px/1.4 var(--td-font) !important; border: 0 !important; background: transparent !important; }
html.tye-tdock:not(.tye-ts) body #tye-cmp-panel .stats { padding: 8px 14px 12px !important; }
html.tye-tdock:not(.tye-ts) body #tye-cmp-panel .stats .row { border: 0 !important; border-radius: 12px !important; background: var(--td-field) !important; padding: 6px 12px 6px 8px !important; margin: 0 0 6px !important; min-height: 44px !important; box-sizing: border-box !important; }
html.tye-tdock:not(.tye-ts) body #tye-cmp-panel .stats .row .ttl { font: 500 13.5px/1.2 var(--td-font) !important; color: var(--td-ink) !important; }
html.tye-tdock:not(.tye-ts) body :is(#tye-configs-panel, #tye-cstr-panel) .list { padding: 8px 14px 4px !important; }
html.tye-tdock:not(.tye-ts) body :is(#tye-configs-panel, #tye-cstr-panel) .item { border: 0 !important; border-radius: 12px !important; background: var(--td-field) !important; margin: 0 0 6px !important; }
html.tye-tdock:not(.tye-ts) body :is(#tye-configs-panel, #tye-cstr-panel) .empty { color: var(--td-ink3) !important; font: 400 13px/1.5 var(--td-font) !important; }
html.tye-tdock:not(.tye-ts) body #tye-cstr-panel .dof { padding: 10px 14px !important; border-top: 1px solid var(--td-line) !important; color: var(--td-ink3) !important; font: 500 12px/1 var(--td-font) !important; }
html.tye-tdock:not(.tye-ts) body #tye-cstr-panel .dofnum { color: var(--td-acc-ink) !important; }
/* the empty states' big icon, quieter */
html.tye-tdock:not(.tye-ts) body :is(#tye-motion-panel, #tye-mates-panel, #tye-pdm-panel, #tye-configs-panel, #tye-cstr-panel) .empty .ico { color: var(--td-ink3) !important; opacity: .5 !important; }
/* the empty states' help line (an inline opacity .7 on the house ink3 read 2.95:1 in light): full ink3, 5.45:1 (fix round 2) */
html.tye-tdock:not(.tye-ts) body :is(#tye-pdm-panel, #tye-cmp-panel, #tye-configs-panel, #tye-cstr-panel) .empty > span { opacity: 1 !important; color: var(--td-ink3) !important; }
/* Versions' Commit pill: the house accent ring outside it (cad_draw.css's green ring at 50 % - about 1.8:1 on the white card - is more
   specific than section 6's rule for this one button; fix round 2) */
html.tye-tdock:not(.tye-ts) body #tye-pdm-panel .quick button.commit-btn:focus-visible { outline: 2px solid var(--td-acc) !important; outline-offset: 2px !important; }
/* rows whose delete shows on hover only: also with the keyboard */
html.tye-tdock:not(.tye-ts) body :is(#tye-mates-panel, #tye-configs-panel, #tye-cstr-panel) .item .del:focus-visible { opacity: 1 !important; }
/* Versions' row actions (Check out, Tag, Diff; cad_draw.css shows them on hover only): also while the focus is in the row - Tab reached
   six unseen buttons (fix round 3) */
html.tye-tdock:not(.tye-ts) body #tye-pdm-panel .commit:focus-within .acts { opacity: 1 !important; pointer-events: auto !important; transform: translateY(-50%) !important; }
/* ---------- 9. touch (fix round 1): the closes of the Drawing panels that the tools sheet's new History / Relations tiles open are
   44 px targets (they were 26-28 x 40); the rest of the touch look is touch_shell.css's ---------- */
html.tye-tdock.tye-ts body :is(#tye-pdm-panel, #tye-cmp-panel, #tye-configs-panel, #tye-cstr-panel) .closex { min-width: 44px !important; min-height: 44px !important; }
/* a greyed tile pressed in the model tools sheet: the sheet stays open, so its reason toast rises over the sheet (z 9030) and its scrim
   (9020) - it was drawn under them (the toast never takes a tap: pointer-events none). The Drawing sheet's twin is in drawing_cm.css
   (fix round 2) */
html.tye-ts:not(.ts-page):not(.ts-mpage) body:has(> #mcm-sheet.open) #toast { z-index: 9040 !important; }   /* (a page over the sheet keeps its 9060) */
/* END TOOL_DOCK_2026Q4 */
