/* Maxx Industry Manager (card a08e3b7c, Alex TG 10267 "B menjen", 10270 "okés a szín"): Acélkék #16243F the header and the
   primary buttons, Szikra-narancs #FA8128 the accent (dark text on it: white has 2.55:1 only). Light theme; the dark theme keeps
   Frappe's own colours apart from the header. */
:root,
[data-theme="light"] {
	--primary: #16243F;
	--primary-color: #16243F;
	--btn-primary: #16243F;
	--border-primary: #16243F;
	--brand-color: #16243F;
}

/* the header: steel blue with an orange line under it; its text and icons white, the search box stays light */
.navbar {
	--navbar-bg: #16243F;
	border-bottom: 3px solid #FA8128;
}
.navbar .navbar-brand .app-logo {
	max-height: 28px;
}
.navbar #navbar-breadcrumbs a,
.navbar #navbar-breadcrumbs li,
.navbar .navbar-nav .nav-link,
.navbar .navbar-nav .nav-link .icon,
.navbar .navbar-nav > .nav-item > .btn-reset {
	color: #FFFFFF;
	--icon-stroke: #FFFFFF;
}
.navbar #navbar-breadcrumbs li::before,
.navbar #navbar-breadcrumbs li::after {
	color: #C9D2DC;
}
.navbar .vertical-bar {
	border-right-color: #5B6B7C;
}

/* Every table in a form or a dialog (card 1be0b5c4, Alex TG 13633 "gáz hogy ennyi helyen levágódik a szöveg"; tester k730: 73 cut
   headers and values on 22 pages at 1280 px, all in child tables): a long header or value wraps to a second line instead of "...",
   and the row grows with it (Frappe's grid header is a fixed 32 px and a cell a fixed 38 px, both with an ellipsis). The values,
   the inputs of a row being edited and the filter row are unchanged. */
.form-grid .grid-heading-row:not(.with-filter) {
	height: auto;
}
.form-grid .grid-heading-row .grid-static-col,
.form-grid .grid-heading-row .row-check,
.form-grid .grid-heading-row .row-index {
	height: auto;
	min-height: 32px;
}
/* a header breaks at a space; 4 px side padding instead of 8, so a one-word header of a narrow column ("Mennyiség" 68 px in
   65 px, tester k735) fits whole instead of breaking inside the word */
.form-grid .grid-heading-row .grid-static-col {
	padding-left: 4px !important;
	padding-right: 4px !important;
}
.form-grid .grid-body .grid-static-col,
.form-grid .grid-body .row-check,
.form-grid .grid-body .row-index {
	height: auto;
	min-height: 38px;
}
.form-grid .grid-heading-row .static-area,
.form-grid .grid-body .grid-static-col .static-area,
.form-grid .grid-body .grid-static-col .static-area .ellipsis {
	white-space: normal;
	text-overflow: clip;
	word-break: break-word;
	line-height: 1.3;
}
.form-grid .grid-heading-row .static-area {
	word-break: normal;
	overflow-wrap: anywhere;
}
/* A NUMBER NEVER BREAKS INSIDE ITS DIGITS (tester k736, csapatvezeto 14981: "дин. 649,8" + "0" on the next line reads as a valid
   price): a Currency / Float / Int / Percent cell breaks only at a space ("дин." / "649,80", as in 6533692 with the panel closed,
   measured clean), never inside the number; it is not cut on one line either (tester k739: "дин. 649,8" cut without "..." in a
   65 px column, as wrong as the break). A token that still does not fit ends in "...". Only long codes and names break anywhere. */
.form-grid .grid-body .grid-static-col:is([data-fieldtype="Currency"], [data-fieldtype="Float"], [data-fieldtype="Int"], [data-fieldtype="Percent"]) .static-area,
.form-grid .grid-body .grid-static-col:is([data-fieldtype="Currency"], [data-fieldtype="Float"], [data-fieldtype="Int"], [data-fieldtype="Percent"]) .static-area * {
	white-space: normal;
	word-break: normal;
	overflow-wrap: normal;
	text-overflow: ellipsis;
	overflow: hidden;
}
/* the ERP assistant's panel (erp_chat.js, card adc55046): docked on the right under the header on a wide window, the page
   narrower next to it instead of covered (tester k735: the floating panel covered the form's buttons and fields) */
body.ec-dokkolva #body {
	margin-right: 376px;
}
/* ...and on a LIST the left sidebar (assigned to, created by, tags) folds away while the panel is docked: next to the panel the
   purchasing lists had room for 4 columns and dropped the lines' summary, the column the work needs (tester 18161, csapatvezeto
   18164). Frappe's sidebar button still opens it (its inline display wins), and it is back when the panel closes. */
body.ec-dokkolva .page-container[data-page-route^="List/"] .layout-side-section {
	display: none;
}
/* next to the docked panel the page is 889 px at 1280 (tester k736: 47 px columns, words and numbers broken): a table keeps the
   width it has with the panel closed at 1280 (about 970 px, measured clean in k736) and scrolls sideways inside its frame instead
   (csapatvezeto 14981: scrolling is an acceptable price, a misread number is not); the columns keep their shares */
body.ec-dokkolva #body .form-grid-container {
	overflow-x: auto !important;
}
body.ec-dokkolva #body .form-grid-container > .form-grid {
	min-width: 980px;
}
/* the Link field's list of a row being edited leaves the scrolling frame (tester k739: the frame cut it off entirely): fixed at
   its own place under the input instead of absolute inside the frame. With the panel closed too (card 5d1d0739, tester k742: the
   absolute list ran 96 px below the window and the arrow keys chose out of sight): erp_chat.js places it in both states */
#body .form-grid .awesomplete > [role="listbox"] {
	position: fixed;
	top: auto;
	left: auto;
	right: auto;
	width: auto;
	max-width: 420px;
	z-index: 1035;
}
/* a dialog with a wide table: wider than Bootstrap's modal-xl (1140 px), up to the window less a margin */
.modal.anyag-racs .modal-dialog.modal-xl {
	max-width: min(1600px, calc(100vw - 32px));
}

/* THE ID COLUMN OF ANY LIST (card dcd063cb, fejlesztobackend 15072, tester k741): "MAT-MR-2026-00003" lost its distinguishing
   end (146 of 152 px, 96 with the assistant panel open), so the rows could not be told apart by it. The ID cell (Frappe's link
   with data-filter "name,=,...") wraps at its hyphens instead, whole, and the row grows with it, as on our own lists. */
.list-row-col:has(a.filterable[data-filter^="name,=,"]),
.list-row-col:has(a.filterable[data-filter^="name,=,"]) .ellipsis {
	white-space: normal;
	text-overflow: clip;
	word-break: normal;
	overflow-wrap: anywhere;
	line-height: 1.3;
}
.list-row:has(.list-row-col a.filterable[data-filter^="name,=,"]) {
	height: auto;
	min-height: 40px;
	padding-top: 10px;
	padding-bottom: 10px;
}

/* THE QUOTATION NUMBER OF ANY LIST IS SHOWN WHOLE (card b6175daf, tester 17993, csapatvezeto 17996; Alex rule 748: the job's ID
   is visible on every list, in full): a document that serves several works lists all their numbers ("2026/0013, 2026/0014"), and
   at 1280 px the Material Request list cut it to "2026/0013, 2...", its header to "Ajánlatszám ...". The cell (Frappe's link with
   data-filter "custom_ajanlat,=,...", every list that shows the field) and its header break into lines at their spaces instead,
   and the row grows with them. A number itself never breaks (overflow-wrap normal: "2026/0013" stays whole; "SAL-QTN-2026-00001"
   may break only at the hyphen before its digits, as the ID column does). */
.list-row-col:has(a.filterable[data-filter^="custom_ajanlat,=,"]),
.list-row-col:has(a.filterable[data-filter^="custom_ajanlat,=,"]) .ellipsis,
.list-row-head .list-row-col:has(> span[data-sort-by="custom_ajanlat"]),
.list-row-head .list-row-col > span[data-sort-by="custom_ajanlat"] {
	white-space: normal;
	text-overflow: clip;
	word-break: normal;
	overflow-wrap: normal;
	line-height: 1.3;
}
.list-row:has(.list-row-col a.filterable[data-filter^="custom_ajanlat,=,"]) {
	height: auto;
	min-height: 40px;
	padding-top: 10px;
	padding-bottom: 10px;
}
.list-row-head:has(.list-row-col > span[data-sort-by="custom_ajanlat"]) {
	height: auto;
	min-height: 32px;
}

/* A NUMBER IN ANY LIST IS NEVER CUT SILENTLY (tester k746: "дин. 103.134,0" on the sales orders, "дин. 206.40" for 206.400,20 on
   the quotations; csapatvezeto 15236: every list). Frappe's formatter puts a Currency / Float value into a block div
   (formatters.js:15, _right: <div style='text-align: right'>), the cell's own ellipsis does not draw on it, and the cell cut
   it without a mark. The div itself ends in a visible "..." now. A floor, not a fix: the whole number needs fewer columns. */
.list-row-col a > div,
.list-row-col span.ellipsis > div {
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;
}

/* THE MAIN COLUMN OF ANY LIST IS NEVER CUT SILENTLY (tester k759: Készletmozgás "Maradék visszavéte", Anyag méret, CAD,
   Munkaszerződés minta, without "..."). The k744 mechanism, on every list: the title span (Frappe's level-item, flex-shrink 0)
   took the whole column next to the checkbox and the column cut its end. It now shrinks to the room left, and Frappe's own
   ellipsis on the link shows the cut; our own lists (.anyag-lista, below) wrap it instead. */
.list-row .list-subject > span:not(.select-like) {
	flex: 1 1 auto;
	min-width: 0;
	justify-content: flex-start;
}
.list-row .list-subject > span:not(.select-like) > a {
	min-width: 0;
}

/* The work's lists (gyartas_listak.js, fmarveen 4795, Alex 4898/4905 "látszódjon a teljes név"): the title column breaks into
   lines instead of "...", the row grows; only where gyartas_listak.js puts .anyag-sortores on the list (moved here from a
   style element the script wrote at run time, the same rules). */
.frappe-list.anyag-sortores .list-row-container .list-row { height: auto; min-height: 40px; }
.frappe-list.anyag-sortores .list-row .list-subject { align-items: flex-start; }
.frappe-list.anyag-sortores .list-row .list-subject,
.frappe-list.anyag-sortores .list-row .list-subject .level-item,
.frappe-list.anyag-sortores .list-row .list-subject a {
	white-space: normal !important; overflow: visible !important; text-overflow: clip !important;
	overflow-wrap: anywhere; flex-shrink: 1; min-width: 0;
}
/* ...but the row's checkbox is a level-item too, and the rule above let it shrink next to a two-line title (to 2-8 px wide, tester
   k823, csapatvezeto 17702): it keeps its size on every list. On the work's lists the status badge ("Részben megrendelt", 139 px
   in a 103 px column at 1280) and the column headers ("Szállítás dátuma", "% kiszállítva") break at their spaces into a second
   line instead of being cut; the header row grows with them. No text is cut at 1280 px (Alex's rule for the lists). */
.frappe-list .list-row .list-subject .list-row-checkbox { flex: 0 0 auto !important; min-width: 14px; }
.frappe-list.anyag-sortores .list-row .list-row-col .indicator-pill,
.frappe-list.anyag-sortores .list-row .list-row-col .indicator-pill .ellipsis {
	display: inline-block; max-width: 100%; height: auto; line-height: 1.25; padding-top: 2px; padding-bottom: 2px;
	white-space: normal; overflow: visible; text-overflow: clip; word-break: normal; overflow-wrap: normal; vertical-align: middle;
}
/* ...and on our own lists (.anyag-lista) too: the purchasing lists' date headers ("Szükséges ekkorra", "Rögzítés dátuma") in a 99 px
   column were cut at 1280 px (card 4188f654) */
.frappe-list.anyag-sortores .list-row-head,
.anyag-lista .list-row-head { height: auto; min-height: 32px; }
.frappe-list.anyag-sortores .list-row-head .list-row-col,
.frappe-list.anyag-sortores .list-row-head .list-row-col span,
.anyag-lista .list-row-head .list-row-col:not(.list-subject),
.anyag-lista .list-row-head .list-row-col:not(.list-subject) span {
	white-space: normal; overflow: visible; text-overflow: clip; word-break: normal; overflow-wrap: normal; line-height: 1.25;
}

/* Our own lists (lista_nezet.js, fejleszto 13824): a long value wraps to a second line instead of "..." at 1280 px; the row
   grows with it (Frappe's row is a fixed 40 px with 15 px padding, which only fits one line). */
.anyag-lista .list-row {
	height: auto;
	min-height: 40px;
	padding-top: 10px;
	padding-bottom: 10px;
}
.anyag-lista .list-row .list-row-col.ellipsis:not(.tag-col),
.anyag-lista .list-row .list-row-col:not(.tag-col) .ellipsis {
	white-space: normal;
	text-overflow: clip;
	word-break: break-word;
	line-height: 1.3;
}
/* the main column takes one share like the others, not two (its title is short: a time, a name), so the other columns are wide
   enough for a header and a status badge; a badge keeps its fixed height on one line (tester k667) */
.anyag-lista .list-row .list-subject,
.anyag-lista .list-row-head .list-subject {
	flex: 1;
}
.anyag-lista .list-row .list-row-col .indicator-pill {
	white-space: nowrap;
}
/* ...and its text never breaks inside a word: the long values' break-word above reached the pill's own .ellipsis span, so
   "Számlázandó" broke into "Számlázan" / "dó" (card 93a55061); a status of several words still wraps at its spaces */
.anyag-lista .list-row .list-row-col .indicator-pill .ellipsis {
	word-break: normal;
	overflow-wrap: normal;
}
/* the main column's text gets the room left by the row's checkbox (tester k744, RFID events "Idő": the text span is a flex item that
   did not shrink, so it took the whole 143 px column next to the 38 px checkbox, and a time 105-143 px wide, e.g. "27.10.2026
   19:40:51", neither wrapped nor fitted: its end was cut off silently, while a wider one wrapped). Now it shrinks to the room
   left and wraps at its space, whole. */
.anyag-lista .list-row .list-subject > span:not(.select-like) {
	flex: 1 1 auto;
	min-width: 0;
	justify-content: flex-start;
}
/* ...but the main column (a date and time, a name) breaks only at a space, never inside the digits (makett with the open panel's
   93 px, tester k745: "27.10.2" / "026" / "19:40:5" / "1"), and a part that still does not fit ends in a visible "..."; a cut
   announces itself, a broken number does not (csapatvezeto 15146). The status badge too: "Ismeretlen e" was cut silently. */
.anyag-lista .list-row .list-row-col.list-subject.ellipsis,
.anyag-lista .list-row .list-row-col.list-subject .ellipsis {
	word-break: normal;
	overflow-wrap: normal;
	text-overflow: ellipsis;
}
/* on our own lists a number breaks at its space first ("дин." / "103.134,00", whole), never inside the digits, and only a part that
   still does not fit ends in "..." (the rule above, on every list, keeps it on one line) */
.anyag-lista .list-row .list-row-col a > div,
.anyag-lista .list-row .list-row-col span.ellipsis > div {
	white-space: normal;
	word-break: normal;
	overflow-wrap: normal;
}
/* the badge itself, not an inner span: our formatters put the text straight into the pill (rfid_esemeny_list.js), and Frappe's
   pill is an inline-flex box, on which text-overflow draws no "..." (tester k746: "Ismeretlen e" still cut silently with
   fde8ac4). As an inline-block it ends in a visible "..." (mock on that DOM: "Ismeretlen..."). */
.anyag-lista .list-row .list-row-col .indicator-pill {
	display: inline-block;
	max-width: 100%;
	height: auto;
	line-height: 1.2;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	vertical-align: middle;
}
/* ...a badge marked .anyag-pill-tores breaks at its spaces instead, so a result of two words is read whole at 1280 px (card 57ca4256,
   tester 19418: "Ismeretlen e..." for "ismeretlen eszköz" on the RFID events) */
.anyag-lista .list-row .list-row-col .indicator-pill.anyag-pill-tores {
	white-space: normal;
	overflow: visible;
	text-overflow: clip;
	word-break: normal;
	overflow-wrap: normal;
}
/* THE MATERIAL SUMMARY (anyag_osszesito.js, tesztelo 2986, fmarveen 2988 / 3269; moved here from the script's own <style>):
   the sheet, size and demand cells of its grid wrap instead of being cut, and the tab glows red while the summary is missing,
   out of date or has a wrong row */
.frappe-control[data-fieldname="custom_anyag_osszesito"] .grid-body .grid-static-col { height: auto; min-height: 38px; }
.frappe-control[data-fieldname="custom_anyag_osszesito"] .grid-static-col[data-fieldname="item_code"] .static-area,
.frappe-control[data-fieldname="custom_anyag_osszesito"] .grid-static-col[data-fieldname="meret"] .static-area,
.frappe-control[data-fieldname="custom_anyag_osszesito"] .grid-static-col[data-fieldname="igeny"] .static-area {
	white-space: normal; overflow: visible; text-overflow: clip; overflow-wrap: anywhere;
}
/* A FORM'S TAB ROW WRAPS INSTEAD OF HIDING ITS LAST TABS (378d43ce, fmarveen 17714 / csapatvezeto 17715): Frappe keeps the tabs on
   one line and scrolls them sideways, so at 1280 px the BOM's "Weboldal" and "Kapcsolatok" (and the employee's "RFID",
   "Kapcsolatok") were cut off at the right edge with no visible scroll bar. They now break into a second line; where they fit
   (1920 px) nothing changes. */
.form-tabs-list .form-tabs { flex-wrap: wrap; overflow: visible; row-gap: 0; }
.form-tabs .nav-link.anyag-osszesito-piros { color: var(--red-600) !important; font-weight: 600; }
.form-tabs .nav-link.anyag-osszesito-piros::after { content: " \25CF"; color: var(--red-500); }
/* QUICK GROUPS IN THE QUOTATION'S ITEMS (quotation_egyedi_meret.js cs_racs_jeloles, Alex 07:27; moved here from the script's own
   <style>): a group line bold on a light background with a thicker line above, its members slightly indented, a line under the last */
.grid-row.cs-fej > .data-row { background: var(--blue-50, #eaf0f8); font-weight: 600;
	border-top: 2px solid var(--blue-500, #4a74b0); }
.grid-row.cs-tag > .data-row { box-shadow: inset 4px 0 0 var(--blue-500, #4a74b0); }
.grid-row.cs-tag > .data-row .grid-static-col[data-fieldname="item_code"] { padding-left: 20px; }
.grid-row.cs-utolso > .data-row { border-bottom: 2px solid var(--blue-500, #4a74b0); }
/* A MANUFACTURED MATERIAL LINE'S ITEM CODE in the BOM's items grid opens its own BOM (bom_muveletek.js, Alex 2026-10-13; moved here
   from the script's own <style>) */
.cs-bom-link .static-area { color: var(--text-color); text-decoration: underline; cursor: pointer; }
/* THE ERP ASSISTANT'S PANEL (erp_chat.js; moved here from the script's own <style>): the question on the right in a bubble, the
   answer, the wait and an error on the left, and the "Gondolkodom..." dots */
.ec-kerdes{align-self:flex-end;background:var(--control-bg);padding:6px 9px;border-radius:8px;max-width:85%}
.ec-valasz,.ec-var,.ec-hiba{align-self:flex-start;max-width:90%;padding:2px 2px}
.ec-pontok::after{content:"";animation:ec-pontok 1.2s steps(4,end) infinite}
@keyframes ec-pontok{0%{content:""}25%{content:"."}50%{content:".."}75%{content:"..."}}
/* THE OPERATION'S PARAMETER NAME IS NOT CUT SILENTLY (card b38ce688, tester k762: "RAL 7035 - gruba tekstura" showed as
   "RAL 7035 - grul" in 123 of 199 px, while the Fogyóanyagok text beside it wrapped, whole). Where the table has room (the form's
   own width at 1280 px: about 1025 px) the name's input is as wide as its text; the table's other inputs keep fitting (measured in
   headless Chromium with Frappe's desk CSS: nothing cut at 1025 px). Where it has not (the assistant panel docked), a wider name
   would push the table further out of the form, so there the name ends in a visible "..." and the whole name is its tooltip.
   Only a name that would be cut grows (.mf-nev-hosszu, set by muvelet_fogyo.js mf_nev_szelesseg): a table of short names keeps its old
   widths (csapatvezeto 16186, tester k777). */
.frappe-control[data-fieldname="custom_fogyo_helyek_html"] { container-type: inline-size; }
.mf-tabla input.mf-nev { text-overflow: ellipsis; }
@container (min-width: 860px) {
	.mf-tabla input.mf-nev.mf-nev-hosszu { field-sizing: content; min-width: 100%; }
}
/* The loading screen's logo bigger (card 77ebc9c4, Alex TG 311: "a betöltő képernyőn a logó legyen nagyobb"). Frappe's splash
   (templates/includes/splash_screen.html, on the desk load and after the login) holds the image in an INLINE max 100 x 100 px box;
   our logo is 368 x 100 (maxx-im-logo.svg, arculat.py splash_image), so it showed 100 x 27. An inline style wins over a stylesheet
   rule, hence !important here rather than a copy of Frappe's template, which would have to follow every Frappe update. The logo's
   own size, at most 80 % of a narrow window; the height follows the drawing. */
.centered.splash > img {
	max-width: min(368px, 80vw) !important;
	max-height: none !important;
}

/* ONE WIDTH ON EVERY PAGE (card 378d43ce, Alex TG 869 / 872: "vagy teljes szélesség legyen mindenhol vagy ne"; csapatvezeto 17637).
   From 1400 px every desk page (forms, lists, reports, workspaces) uses 96 % of the window, at most 2200 px: one rule, no page
   kind and no switched class, so the width never jumps between pages. Under 1400 px Frappe's own container is already the
   window's width (1280: 1265 px). The user's own "full width" toggle gives the same. A one-line field (data, link, number, date)
   stays at most 760 px wide, so a field alone in its row does not stretch across a wide screen; tables, texts and HTML do. */
@media (min-width: 1400px) {
	.container, body.full-width .container { width: 96%; max-width: 2200px; }
	.form-column .frappe-control:is([data-fieldtype="Data"], [data-fieldtype="Link"], [data-fieldtype="Dynamic Link"], [data-fieldtype="Select"],
		[data-fieldtype="Int"], [data-fieldtype="Float"], [data-fieldtype="Currency"], [data-fieldtype="Percent"], [data-fieldtype="Date"],
		[data-fieldtype="Datetime"], [data-fieldtype="Time"], [data-fieldtype="Duration"], [data-fieldtype="Phone"], [data-fieldtype="Autocomplete"],
		[data-fieldtype="Read Only"], [data-fieldtype="Password"]) { max-width: 760px; }
}

/* An item code in a grid cell breaks only after its dots / dashes / slashes, never inside a word (meret_cimke.js torheto, card
   93a55061, tester k383: "12.09.ERO606040IP65.szerele" / "s") */
.anyag-tetelkod, .anyag-tetelkod * { word-break: normal; overflow-wrap: normal; }

/* THE WORK ORDER FORM'S TITLE WHOLE (card 4188f654, csapatvezeto 18498, tester k449): its title is the work's full name
   ("2026/0011 · Silos Srbija d.o.o. · 2026-0011-12.04.ER306020IP65.szereles-nyit", 757 px), Frappe's title box is at most 25vw
   (320 px at 1280) and cut it with "...", the status badge next to it too. Here the title takes the header's first row and wraps
   at its spaces if it must, the buttons the second; the header's height variable grows with it, so the sticky form tabs
   (form.scss: top = navbar + page head height) stay under it. */
[data-page-route="Work Order"] { --page-head-height: 100px; }
[data-page-route="Work Order"] .page-head .page-head-content {
	height: auto; min-height: var(--page-head-height); flex-wrap: wrap; row-gap: 6px; align-content: center;
}
[data-page-route="Work Order"] .page-head .page-title,
[data-page-route="Work Order"] .page-head .page-actions { flex: 1 1 100%; max-width: 100%; }
[data-page-route="Work Order"] .page-head .title-area .title-text { max-width: none; white-space: normal; overflow: visible; text-overflow: clip; }

/* THE MATERIAL ISSUE ROW BEING TYPED IN: the item input and its size label on one line, as the static cell shows them (Alex TG 15109
   "miért van alatta ?", anyagkiadas_se.js szerkesztett_cimke) */
.field-area.kiadas-szerk-sor { display: flex; align-items: center; gap: 6px; }
.field-area.kiadas-szerk-sor > .frappe-control { flex: 1 1 auto; min-width: 0; }
.field-area.kiadas-szerk-sor > .kiadas-szerk-cimke { flex: 0 0 auto; white-space: nowrap; }

/* Frappe's field-name badge ("get_stock_and_rate") shows on hover while Alt is held - on a Hungarian keyboard AltGr types [ ] @ and
   leaves it on; it is a developer aid, not a label (Alex's picture 11-05 13:51, csapatvezeto 19561) */
.show-tooltip .frappe-control:hover .tooltip-content { opacity: 0; pointer-events: none; }
