@use "sass:map";
@use "sass:list";
@use "./functions.scss" as *;

$resizerId: "[data-cms-tool='cms-element-resizer']";
$resizeActive: '[data-cms-element-resizer="true"]';
[data-div-type="element"] {
  &[data-element-type="productDetails"] {
    // width: var(--_sf-con-nw-wh);
    width: var(
      --_sf-el-wh-st-mx,
      calc(
        1% *
          var(
            --_ctm-mob-prod-ele-nw-wh-vl,
            var(--_ctm-tab-prod-ele-nw-wh-vl, var(--_ctm-prod-ele-nw-wh-vl))
          )
      )
    );
    // width: calc(1% * var(--_ctm-prod-lt-wh, auto));
    // width: ;

    // width: 100%;
    // height: var(--_ctm-pro-lt-ht) !important;
    // width: 100%;
    height: auto;
    margin: var(
      --_ctm-mob-prod-lt-mn,
      var(--_ctm-tab-prod-lt-mn, var(--_ctm-prod-lt-mn, var(--_ctm-lt-mn)))
    );

    &[data-background-type="color"] {
      background-color: prepareMediaVariable(--_ctm-prod-dn-bd-cr);
    }

    &[data-background-type="gradient"] {
      --_sf-prod-gradient-angle: calc(#{prepareMediaVariable(--_ctm-prod-dn-gt-ae, 90)} * 1deg);
      --_sf-prod-gradient-start-color: #{prepareMediaVariable(--_ctm-prod-dn-gt-st-cr, transparent)};
      --_sf-prod-gradient-start-position: calc(
        #{prepareMediaVariable(--_ctm-prod-dn-gt-st-pn, 0)} * 1%
      );
      --_sf-prod-gradient-end-color: #{prepareMediaVariable(--_ctm-prod-dn-gt-ed-cr, transparent)};
      --_sf-prod-gradient-end-position: calc(
        #{prepareMediaVariable(--_ctm-prod-dn-gt-ed-pn, 100)} * 1%
      );
      --_sf-prod-gradient-position: #{prepareMediaVariable(--_ctm-prod-dn-gt-pn, center)};

      &[data-gradient-type="Linear Gradient"] {
        background-image: linear-gradient(
          var(--_sf-prod-gradient-angle),
          var(--_sf-prod-gradient-start-color) var(--_sf-prod-gradient-start-position),
          var(--_sf-prod-gradient-end-color) var(--_sf-prod-gradient-end-position)
        );
      }

      &[data-gradient-type="Radial Gradient"] {
        background-image: radial-gradient(
          circle at var(--_sf-prod-gradient-position),
          var(--_sf-prod-gradient-start-color) var(--_sf-prod-gradient-start-position),
          var(--_sf-prod-gradient-end-color) var(--_sf-prod-gradient-end-position)
        );
      }
    }

    &[data-background-type="image"] {
      background-image: prepareMediaVariable(--_ctm-prod-dn-bd-ie);
      background-attachment: prepareMediaVariable(--_ctm-prod-dn-bd-at);
      background-position: prepareMediaVariable(--_ctm-prod-dn-bd-pn);
      background-position-y: prepareMediaVariable(--_ctm-prod-dn-bd-pn-y);
      background-repeat: prepareMediaVariable(--_ctm-prod-dn-bd-rt);
      background-size: prepareMediaVariable(--_ctm-prod-dn-bd-se);
    }

    // background-color: var(
    //   --_ctm-mob-prod-dn-bd-cr,
    //   var(--_ctm-tab-prod-dn-bd-cr, var(--_ctm-prod-dn-bd-cr))
    // );
    // background-image: var(
    //   --_ctm-mob-prod-dn-bd-ie,
    //   var(--_ctm-tab-prod-dn-bd-ie, var(--_ctm-prod-dn-bd-ie))
    // );
    // background-attachment: var(
    //   --_ctm-mob-prod-dn-bd-at,
    //   var(--_ctm-tab-prod-dn-bd-at, var(--_ctm-prod-dn-bd-at))
    // );
    // background-position: var(
    //   --_ctm-mob-prod-dn-bd-pn,
    //   var(--_ctm-tab-prod-dn-bd-pn, var(--_ctm-prod-dn-bd-pn))
    // );
    // background-repeat: var(
    //   --_ctm-mob-prod-dn-bd-rt,
    //   var(--_ctm-tab-prod-dn-bd-rt, var(--_ctm-prod-dn-bd-rt))
    // );
    // background-size: var(
    //   --_ctm-mob-prod-dn-bd-se,
    //   var(--_ctm-tab-prod-dn-bd-se, var(--_ctm-prod-dn-bd-se))
    // );
    min-height: var(--_ctm-mob-prod-lt-ht, var(--_ctm-tab-prod-lt-ht, var(--_ctm-prod-lt-ht)));

    // Layout padding, and the design section's border and shadow. None of these were
    // consumed here before — the schema declares all of them, but this stylesheet only
    // handled width, margin, min-height and the background, so Padding, Border Style,
    // Border Radius and Box Shadow each had nothing reading the value they wrote.
    // Every variable carries an explicit fallback so elements saved before this keep
    // rendering bare rather than inheriting the parent's border or background.
    padding: prepareMediaVariable(--_ctm-prod-lt-pg, 0);
    // Padding and border are drawn inside the width and height set in layout instead of
    // adding to them, so the element keeps the size the user asked for.
    box-sizing: border-box;

    border-color: prepareMediaVariable(--_ctm-prod-dn-br-cr, transparent);
    border-style: prepareMediaVariable(--_ctm-prod-dn-br-se, none);
    border-width: prepareMediaVariable(--_ctm-prod-dn-br-wh, 0);
    border-radius: prepareMediaVariable(--_ctm-prod-dn-br-rs, 0);

    box-shadow: var(
      --_show-shadow,
      prepareMediaVariable(--_ctm-prod-dn-sw-ae, 0 0)
        prepareMediaVariable(--_ctm-prod-dn-sw-br, 0)
        prepareMediaVariable(--_ctm-prod-dn-sw-sd, 0)
        prepareMediaVariable(--_ctm-prod-dn-sw-cr, transparent)
    );

    // "Show Border" / "Show Shadow" switches, surfaced as data attributes by the
    // element since the properties above are painted from variables.
    &[data-show-border="false"] {
      border-width: 0;
      border-style: none;
    }
    &[data-show-shadow="false"] {
      --_show-shadow: none;
    }

    // &:not(:has(#{$resizerId}#{$resizeActive})) {
    //   min-height: 100px !important;
    // }

    & > div {
      &.wrapper {
        width: 100%;
        grid-template-rows: auto !important;
        grid-template-columns: 100% !important;
        // grid-template-rows: max(var(--_ctm-pro-lt-ht), auto) !important;
      }
    }
  }
}
