/**
 * WS40 — Host-theme armour (shared by every frontend template).
 *
 * Third-party themes style bare semantic tags aggressively, and those rules
 * leak into any plugin markup that uses them. Measured on live installs:
 *
 *   · a magazine theme forced `height:38px` on every <button>, so the Consolle
 *     value cards — which need about 62px — spilled outside their own box;
 *   · another theme forced `white-space:nowrap` + `text-overflow:ellipsis` on
 *     <dt> and attached a decorative 16x2px `::before` bar to every label, so
 *     the labels were truncated and prefixed by a stray dash.
 *
 * Both were the same class of defect, and every WS40 template is exposed to it:
 * the frontend shortcodes emit 27 <button>, plus headings, <p>, <small> and
 * tables, and until now only ws40-consolle.css carried any protection.
 *
 * WHAT THIS FILE DOES — and only this: it NEUTRALISES what a host theme can
 * impose. It never sets WS40 design. Each template stylesheet loads after this
 * one and overrides every non-`!important` declaration below, so appearance is
 * unchanged; only theme interference is removed.
 *
 * SCOPE: `[class*="ws40"]` matches WS40 containers only, so nothing outside the
 * plugin's own markup is ever touched.
 *
 * `!important` is deliberate and required — do not "clean it up". On the real
 * sites the theme rules won on specificity against plain class selectors, which
 * is why a gentle declaration was not enough. It is limited to the five
 * properties that actually broke the layout.
 *
 * <dd> is intentionally excluded from the white-space reset: value elements
 * (e.g. .ws40con-full__val) keep `nowrap` by design so a number is never split
 * from its unit.
 *
 * @package   WS40
 * @author    Pasqualino De Marco <info@weatherstation40.live>
 * @copyright 2024-2026 Pasqualino De Marco — Licensed under GPL-2.0-or-later
 * @license   GPL-2.0-or-later
 */

/* Structure: free the box and drop inherited text decoration. */
[class*="ws40"] button,
[class*="ws40"] dl,
[class*="ws40"] dt,
[class*="ws40"] dd,
[class*="ws40"] h1,
[class*="ws40"] h2,
[class*="ws40"] h3,
[class*="ws40"] h4,
[class*="ws40"] h5,
[class*="ws40"] h6,
[class*="ws40"] p,
[class*="ws40"] small,
[class*="ws40"] table,
[class*="ws40"] tr,
[class*="ws40"] td,
[class*="ws40"] th,
[class*="ws40"] ul,
[class*="ws40"] ol,
[class*="ws40"] li {
    height: auto !important;
    min-height: 0 !important;
    max-height: none !important;
    text-overflow: clip !important;
    font-family: inherit;
    font-style: inherit;
    text-transform: none;
    letter-spacing: normal;
    text-decoration: none;
    text-shadow: none;
    float: none;
    list-style: none;
}

/* Wrapping: themes truncate labels with nowrap + ellipsis. <dd> excluded. */
[class*="ws40"] button,
[class*="ws40"] dl,
[class*="ws40"] dt,
[class*="ws40"] h1,
[class*="ws40"] h2,
[class*="ws40"] h3,
[class*="ws40"] h4,
[class*="ws40"] h5,
[class*="ws40"] h6,
[class*="ws40"] p,
[class*="ws40"] small,
[class*="ws40"] li {
    white-space: normal !important;
}

/* Decorative markers and bars themes hang on semantic tags.
   Scoped to bare tags on purpose: WS40's own pseudo-elements live on classed
   elements (e.g. .ws40con-stat__striphld scroll shadows) and stay untouched. */
[class*="ws40"] button::before,  [class*="ws40"] button::after,
[class*="ws40"] dl::before,      [class*="ws40"] dl::after,
[class*="ws40"] dt::before,      [class*="ws40"] dt::after,
[class*="ws40"] dd::before,      [class*="ws40"] dd::after,
[class*="ws40"] h1::before,      [class*="ws40"] h1::after,
[class*="ws40"] h2::before,      [class*="ws40"] h2::after,
[class*="ws40"] h3::before,      [class*="ws40"] h3::after,
[class*="ws40"] h4::before,      [class*="ws40"] h4::after,
[class*="ws40"] h5::before,      [class*="ws40"] h5::after,
[class*="ws40"] h6::before,      [class*="ws40"] h6::after,
[class*="ws40"] p::before,       [class*="ws40"] p::after,
[class*="ws40"] small::before,   [class*="ws40"] small::after,
[class*="ws40"] li::before,      [class*="ws40"] li::after {
    content: none !important;
}
