/** Shopify CDN: Minification failed

Line 110:0 Unexpected ","
Line 138:0 Unexpected ","

**/
/*
 * ============================================================
 * BUILDER THEME GUARD — assets/sb-builder-guard.css
 * ============================================================
 * Neutralises the CCS theme's global element rules inside the builder.
 *
 * sb-builder.css is a verbatim copy of the SIB builder's stylesheet, so it was
 * written against SIB's theme and hardened against that one's resets. This
 * store runs Ella, whose globals are different:
 *
 *     img   { max-width: 100% }
 *     input { appearance: none; background: transparent; border-radius: 0;
 *             min-height: unset }
 *     svg   { display: inline-block; fill: currentColor; stroke: currentColor;
 *             width: 1rem; height: 1rem }
 *
 * The svg rule would repaint every stroked icon as a filled blob and force it
 * to 1rem; the input rule strips the track off a range slider, which is most of
 * the builder's controls.
 *
 * ── Load order matters, and so does specificity ────────────────────────────
 * This must be loaded AFTER the theme and BEFORE sb-builder.css, and scoped
 * with a single class:
 *
 *     Ella      `svg`           (0,0,1)  loses to this
 *     guard     `.sb-ov svg`    (0,1,1)
 *     builder   `.sb-tool svg`  (0,1,1)  ties, and wins on being loaded later
 *
 * So the guard undoes the theme without overriding the builder's own styling.
 * An id selector (#sb-ov) would out-specify the builder and break it -- the
 * per-icon fills in sb-builder.css would stop applying.
 */

/*
 * ── Why every rule below is written twice ──────────────────────────────────
 * The builder's dialogs -- the colour picker, the font list, the name prompt,
 * and the CCS ones beside them -- are `.sb-sub` elements that sit OUTSIDE
 * #sb-ov, as siblings of it, because they are position:fixed and stack above
 * it. Scoping this file to `.sb-ov` alone therefore left every input and icon
 * inside a dialog at the theme's mercy, which is most of the text tool.
 * Both scopes are single-class, so the specificity argument above still holds.
 */

/*
 * ── The one that hid the artwork ───────────────────────────────────────────
 *
 *     :empty { display: none }
 *
 * The theme uses it to collapse section wrappers that Liquid rendered nothing
 * into. It also matches every void and childless element on the page, and a
 * <canvas> has no children by definition -- so fabric's lower-canvas and
 * upper-canvas were both display:none. The garment photo behind them still
 * drew, which is why this looked like "the upload is broken" rather than
 * "the canvas is hidden": the shirt was there, the artwork was on a surface
 * nobody could see. Inputs, images and every empty styled span were hit too.
 *
 * `revert` rather than a fixed value, because the right display differs per
 * element -- inline for a canvas, inline-block for an input, block for a div.
 * Reverting drops to the user-agent value, which is exactly what each of
 * these would have had if the theme rule did not exist.
 *
 * :where() zeroes the scope's specificity, so this weighs the same (0,1,0) as
 * the rule it undoes and wins purely on being loaded later -- and still loses
 * to any of the builder's own single-class rules, which load later again.
 * Scoped with a plain `.sb-ov :empty` it would be (0,2,0) and would start
 * overriding the builder instead of the theme.
 */
:where(.sb-ov, .sb-sub) :empty { display: revert; }

/*
 * The theme styles bare elements with rules that beat the plain [hidden]
 * attribute. This is the one that hid nothing and showed everything -- the
 * builder relies on [hidden] for most of its panel switching.
 */
.sb-ov [hidden],
.sb-sub [hidden] { display: none !important; }

/* Ella forces every svg to 1rem and repaints it. The builder draws stroked
   icons and sets its own sizes and fills per component. */
.sb-ov svg,
.sb-sub svg {
  display: block;
  width: auto;
  height: auto;
  fill: none;
  stroke: currentColor;
  vertical-align: initial;
  transition: none;
}

/* Ella strips native appearance from every input. Range sliders lose their
   track and thumb entirely, which is most of the builder's editing controls. */
.sb-ov input[type="range"],
.sb-sub input[type="range"] {
  -webkit-appearance: auto;
  -moz-appearance: auto;
  appearance: auto;
  background: initial;
  min-height: initial;
}

.sb-ov input[type="text"],
.sb-sub input[type="text"],
,
.sb-ov input[type="number"],
.sb-sub input[type="number"],
,
.sb-ov input[type="search"],
.sb-sub input[type="search"],
,
.sb-ov textarea,
.sb-sub textarea,
,
.sb-ov select,
.sb-sub select {
  -webkit-appearance: auto;
  -moz-appearance: auto;
  appearance: auto;
  background: #fff;
  min-height: initial;
}

.sb-ov input[type="color"],
.sb-sub input[type="color"] {
  -webkit-appearance: auto;
  appearance: auto;
  background: #fff;
}

.sb-ov input[type="checkbox"],
.sb-sub input[type="checkbox"],
,
.sb-ov input[type="radio"],
.sb-sub input[type="radio"] {
  -webkit-appearance: auto;
  appearance: auto;
}

/* max-width: 100% is right for content images and wrong for a canvas overlay
   and for thumbnails the builder sizes itself. */
.sb-ov img,
.sb-sub img { max-width: none; }

/*
 * The theme's own box-sizing and font inheritance should not reach in either.
 * Stated rather than assumed: the builder's layout is built on border-box.
 */
.sb-ov,
.sb-sub,
.sb-ov *,
.sb-sub *,
.sb-ov *::before,
.sb-sub *::before,
.sb-ov *::after,
.sb-sub *::after { box-sizing: border-box; }

/*
 * Ella animates and transforms a lot of bare elements on hover. Inside a
 * design tool that reads as the UI twitching under the pointer.
 */
.sb-ov button,
.sb-sub button { cursor: pointer; text-transform: none; letter-spacing: normal; }
.sb-ov button:hover,
.sb-sub button:hover { transform: none; }
