.workcanvas {
    width: 100%;
    display: grid;
    grid-template-rows: minmax(20px, auto) 1fr;
    grid-template-columns: 100%;
    padding: 0px;
    padding: 0px;
    margin: auto;
    position: absolute;
    top: 0;
    left: 0;
    height: 100%;
    transform-origin: 0 0;
    will-change: transform, scale;
    contain: layout;
}

.viewport .fmod {
    transition: 0s !important;
    transform-origin: center;
    /* contain: layout; */
}

.viewport.afterzoom {
    width: 101% !important;
    height: 101% !important;
}

.viewport.afterzoom .fmod {
    will-change: auto !important;
}

/* //if elemment has min-width: 100%; inline style */
.viewport .fmod.frame[style*="min-width: 100%"] {
    min-width: 0 !important;
}

.fmod.selected,
.fmod:has(.fmod.selected) {
    will-change: transform, margin, width, height;
}

/* Advanced render optimizations */
.pixleator:has(#canvaslike-container.is-zooming) .fmod {
    pointer-events: none;
}

/* GPU-accelerated rendering for better performance */
/* Avoid promoting every element to its own layer to reduce GPU layer thrash */
.viewport .fmod {
    /* transform: translateZ(0); */
    will-change: auto;
}

.viewport .fmod.visible {
    will-change: transform;
}

/* Optimize for high element counts */
@media (min-resolution: 2dppx) {
    .viewport .fmod {
        image-rendering: optimizeQuality;
    }
}

/* Optimize rendering during interactions */
.pixleator.is-zooming .viewport,
.pixleator.is-panning .viewport,
.scale-low .viewport *,
.scale-low .viewport {
    image-rendering: pixelated;
    text-rendering: optimizeSpeed;
}

.fmod:not(.selected):not(:has(.selected)),
.fmod:not(.selected):not(:has(.selected)) * {
    image-rendering: pixelated;
    text-rendering: optimizeSpeed;
}

/* Memory-efficient rendering for large canvases */
.viewport {
    contain: layout style paint;
    isolation: isolate;
}

/* 
.viewport.workcanvas {
    isolation: isolate;
    contain: layout style;
}

.low-performance .work-container {
  scale: 10;
}

.low-performance .pixleator {
  isolation: isolate;
  contain: layout style;
  overflow: clip;
  width: 10vw;
  height: 10vh;
  position: absolute;
  scale: 0.1;
  transform-origin: 0 0;
  
} */

div#rbgcp-wrapper>*:last-child>div:last-child {
    justify-content: flex-start !important;
    gap: 4px;
    align-items: flex-start;
}

div#rbgcp-wrapper>*:last-child>div:last-child>div:not(:last-child) {
    border: 1px solid #8b8b8b;
}

#canvaslike-container .spline *,
#canvaslike-container .lottie * {
    pointer-events: none !important;
    object-fit: cover !important;
}

.fmod iframe,
.fmod.text:not(.text-editing) * {
    pointer-events: none !important;
}

.text-element-container,
.text-content.ProseMirror {
    -webkit-text-fill-color: inherit;
    background-image: inherit;
    background-position: inherit;
    background-size: inherit;
    background-repeat: inherit;
    background-clip: inherit;
}

/* Persistent selection highlight using decorations */
.fmod .persistent-selection-highlight {
    background: #007bff !important;
    color: white !important;
    opacity: 0.8 !important;
}

.fmod .persistent-selection-highlight.component {
    background: #7700ff !important;
}

/* Ensure decorations persist even when editor loses focus */
.fmod.text-editing .persistent-selection-highlight {
    background: #007bff !important;
    color: white !important;
    opacity: 0.8 !important;
}

/* .text-editing hightlighted text should be transparent */
.fmod.text-editing *::selection {
    background: transparent !important;
}


.preview-iframe-holder {
    max-height: calc(100vh - 80px);
}

.workcanvas>.fmod[data-is-absolute="true"] {
    position: relative;
    margin-left: var(--left);
    margin-top: var(--top);
}

.element-outline.selection-locked {
    outline-style: dashed !important;
    outline-width: calc(1px * var(--scale)) !important;
    outline-color: #007bff79 !important;
    box-sizing: border-box !important;
}

.selected:after,
.creation-element:after,
body:not(.svg-editing) .viewport .fmod:not(.top-ctrl):not(.potential-parent):hover:after {
    content: '';
    width: calc(100% * var(--scale));
    height: calc(100% * var(--scale));
    outline: 2px solid #007bff;
    outline-offset: -2px;
    position: absolute;
    top: 0;
    left: 0;
    pointer-events: none;
    scale: calc(1/var(--scale));
    transform-style: flat;
    /* scale: calc(1/var(--scale)); */
    transform-origin: top left;
}

.component.selected:after,
.creation-element.component:after,
body:not(.svg-editing) .viewport .fmod.component:not(.top-ctrl):not(.potential-parent):hover:after {
    outline-color: #7700ff;
}

.fmod.potential-parent:after {
    content: '';
    width: calc(100% * var(--scale));
    height: calc(100% * var(--scale));
    outline: 4px solid #007bff;
    outline-offset: -4px;
    position: absolute;
    top: 0;
    left: 0;
    pointer-events: none;
    scale: calc(1/var(--scale));
    transform-style: flat;
    /* scale: calc(1/var(--scale)); */
    transform-origin: top left;
}

.fmod.component.potential-parent:after {
    outline-color: #7700ff;
}

.pixleator:has(#canvaslike-container:not(.is-panning):not(.is-zooming)):has(.element-outline) .selected:after {
    opacity: 0;
}

/* Assistant-selected element styles */
.assistant-selected:after {
    outline: 2px solid #10b981 !important;
    /* Green outline for AI-selected elements */
    box-shadow: 0 0 0 4px rgba(16, 185, 129, 0.2) !important;
    /* Subtle glow effect */
}

.assistant-selected.selected:after {
    outline: 2px solid #10b981 !important;
    /* Override blue selection with green */
    box-shadow: 0 0 0 4px rgba(16, 185, 129, 0.3) !important;
    /* Stronger glow when both selected and assistant-selected */
}

#controls-container {
    position: absolute;
    top: 0;
    left: 0;
    pointer-events: none;
    transform-origin: top left;
    width: 100%;
    height: 100%;
}

.control {
    position: absolute;
    width: calc(10px / var(--scale));
    height: calc(10px / var(--scale));
    background-color: #007bff;
    border-radius: 50%;
    pointer-events: auto;
    cursor: pointer;
}

.fmod.component .control {
    background-color: #7700ff;
}

.rotate-control {
    top: calc(-25px / var(--scale));
    left: 50%;
    transform: translateX(-50%);
}

.resize-control {
    bottom: calc(-5px / var(--scale));
    right: calc(-5px / var(--scale));
    cursor: se-resize;
}

.selection-box {
    position: absolute;
    border: 1px solid #007bff;
    background-color: rgba(0, 123, 255, 0.1);
    pointer-events: none;
}


.element-outline {
    position: absolute;
    width: calc(var(--width) * var(--scale));
    height: calc(var(--height) * var(--scale));
    outline: 2px solid #007bff;
    pointer-events: none;
    scale: calc(1/var(--scale));
    transform-origin: top left;
}

.component.element-outline {
    outline-color: #7700ff;
}

.auto-layout-controls {
    scale: calc(1/var(--scale));
    transform-origin: top left;
    width: calc(var(--width) * var(--scale));
    height: calc(var(--height) * var(--scale));
}

.pixleator:has(#canvaslike-container.is-zooming) #controls-container {
    /* display: none !important; */
}

.group-selection {
    position: absolute;
    outline: 2px dashed #007bff;
    pointer-events: none;
    scale: calc(1/var(--scale));
    transform-origin: top left;
    width: calc(var(--width) * var(--scale));
    height: calc(var(--height) * var(--scale));
}

.control-point {
    position: absolute;
    width: calc(10px / var(--scale));
    height: calc(10px / var(--scale));
    background-color: #007bff;
    border-radius: 50%;
    cursor: pointer;
    z-index: 1000;
}

.fmod.component .control-point {
    background-color: #7700ff;
}

#controls-container .control-point {
    pointer-events: auto;
}

.resize-handle {
    position: absolute;
    width: 10px;
    height: 10px;
    background-color: rgb(93, 90, 90);
    background-color: transparent;
    z-index: 1;
}

.resize-handle:not(.n):not(.s):not(.e):not(.w):after {
    content: '';
    position: absolute;
    width: 10px;
    height: 10px;
    background-color: white;
    border: 1px solid #4285f4;
    border-radius: 50%;
    scale: 1;
    transform-origin: top left;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

.resize-handle.n {
    top: -10px;
    left: 50%;
    width: 100%;
    border-radius: 0;
    background-color: transparent;
    border-color: transparent;
    transform: translateX(-50%);
    cursor: n-resize;
}

.resize-handle.s {
    bottom: -10px;
    left: 50%;
    width: 100%;
    border-radius: 0;
    background-color: transparent;
    border-color: transparent;
    transform: translateX(-50%);
    cursor: s-resize;
}

.resize-handle.e {
    right: -10px;
    top: 50%;
    height: 100%;
    border-radius: 0;
    background-color: transparent;
    border-color: transparent;
    transform: translateY(-50%);
    cursor: e-resize;
}

.resize-handle.w {
    left: -10px;
    top: 50%;
    height: 100%;
    border-radius: 0;
    transform: translateY(-50%);
    background-color: transparent;
    border-color: transparent;
    cursor: w-resize;
}

.resize-handle.ne {
    top: -10px;
    right: -10px;
    cursor: ne-resize;
    width: 20px;
    height: 20px;
}

.resize-handle.se {
    bottom: -10px;
    right: -10px;
    cursor: se-resize;
    width: 20px;
    height: 20px;
}

.resize-handle.sw {
    bottom: -10px;
    left: -10px;
    cursor: sw-resize;
    width: 20px;
    height: 20px;
}

.resize-handle.nw {
    top: -10px;
    left: -10px;
    cursor: nw-resize;
    width: 20px;
    height: 20px;
}

.rotate-handle {
    position: absolute;
    width: 10px;
    height: 10px;
    background-color: transparent;
    border: 1px solid transparent;
    border-radius: 50%;
    cursor: pointer;
    scale: 4;
}

.rotate-handle.nw {
    top: -20px;
    left: -20px;
    cursor: url('/icons/rotTL.svg') 16 16, auto;
}

.rotate-handle.ne {
    top: -20px;
    right: -20px;
    cursor: url('/icons/rotTR.svg') 16 16, auto;
}

.rotate-handle.se {
    bottom: -20px;
    right: -20px;
    cursor: url('/icons/rotBR.svg') 16 16, auto;
}

.rotate-handle.sw {
    bottom: -20px;
    left: -20px;
    cursor: url('/icons/rotBL.svg') 16 16, auto;
}

.resize-handle.resize-from-center {
    background-color: yellow;
    /* or any other visual indicator */
}

.is-panning,
.is-zooming,
.is-panning .fmod,
.is-zooming .fmod,
.is-panning .fmod *,
.is-zooming .fmod *
 {
    pointer-events: none !important;
}

.is-panning .selection-box,
.is-zooming .selection-box {
    display: none;
}

.pixleator:has(.is-panning, .is-zooming) #controls-container {
    display: none !important;
}

.element-top-overlay {
    position: absolute;
    pointer-events: auto;
    /* background-color: rgba(139, 139, 139, 0.51); */
    margin-left: var(--left);
    margin-top: var(--top);
    grid-area: 1 / 1 / 2 / 2;
    cursor: move;
    /* border-radius: 8px; */
    padding: calc(5px / var(--scale));
    transform: translateY(calc(-100% - (10px / var(--scale))));
    width: var(--width);
}

/* Layer hover highlight styles */
body:has(.layers-list:hover) .layer-hover-highlight {
    outline: calc(2px / var(--scale)) solid #007bff !important;
    outline-offset: calc(2px / var(--scale));
    transition: outline 0.15s ease-in-out;
}


body:has(.layers-list:hover) .component.layer-hover-highlight {
    outline-color: #7700ff !important;
}

body:has(.layers-list:hover) .layer-hover-highlight::before {
    content: '';
    position: absolute;
    top: calc(-4px / var(--scale));
    left: calc(-4px / var(--scale));
    right: calc(-4px / var(--scale));
    bottom: calc(-4px / var(--scale));
    background-color: #007bff12;
    pointer-events: none;
    border-radius: calc(4px / var(--scale));
    transition: background-color 0.15s ease-in-out;
}

.fmod.video>img {
    pointer-events: none;
    object-fit: contain;
}

.fmod.video[data-object-fit="cover"]>img {
    object-fit: cover;
}

.child-w-full>* {
    width: 100%;
}

.hide {
    min-width: var(--width) !important;
    min-height: var(--height) !important;
    z-index: -1;
}

.fmod.hide:not(.selected):not(:has(.selected)),
.top-ctrl.hide {
    /* display: none !important; */
    background: rgba(120, 120, 120, 0.35) !important;
}

.fmod.hide:not(:has(.selected)) *,
.top-ctrl.hide * {
    display: none !important;
}

.viewport {

    /* Import CSS variables */
    & {
        --0: 0px;
        --4xs: 1px;
        --3xs: 2px;
        --2xs: 4px;
        --xs: 8px;
        --sm: 12px;
        --md: 16px;
        --lg: 20px;
        --xl: 24px;
        --2xl: 32px;
        --3xl: 40px;
        --4xl: 48px;
        --5xl: 56px;
        --6xl: 64px;
        --7xl: 72px;
        --8xl: 80px;
        --9xl: 88px;
        --10xl: 96px;
        --full: 100%;
        --half: 50%;
        --quarter: 25%;
        --three-quarters: 75%;
        --one-third: 33.33%;
        --two-thirds: 66.66%;
        --one-fourth: 25%;
        --three-fourths: 75%;
        --one-fifth: 20%;
        --two-fifths: 40%;
        --three-fifths: 60%;
        --four-fifths: 80%;
        --one-sixth: 16.66%;
        --five-sixths: 83.33%;
        --one-seventh: 14.28%;
        --two-sevenths: 28.57%;
        --three-sevenths: 42.85%;
        --four-sevenths: 57.14%;
        --five-sevenths: 71.42%;
        --six-sevenths: 85.71%;
        --color-primitive-white: 255 255 255;
        --color-primitive-black: 0 0 0;
        --color-transparent: transparent;
        --transition-none: 0s;
        --transition-fast: 0.2s;
        --transition-medium: 0.3s;
        --transition-slow: 0.6s;
        --unset: unset;
        --thin: 100;
        --extra-light: 200;
        --light: 300;
        --normal: 400;
        --medium: 500;
        --semi-bold: 600;
        --bold: 700;
        --extra-bold: 800;
        --black: 900;
        --scrollbar-width: 4px;
        --scrollbar-thumb-color: var(--color-fg-accent);
        --scrollbar-thumb-border-color: var(--color-fg-accent);
        --scrollbar-thumb-hover-color: var(--color-fg-accent) / 70%;
        --scrollbar-thumb-border-radius: 10px;
        --scrollbar-thumb-border-width: var(--0);
        --scrollbar-thumb-hover-border-color: var(--color-fg-accent) / 70%;
        --scrollbar-bg-color: var(--color-fg-secondary);
        --color-primitive-primary: 40 40 40;
        --color-primitive-alt: 230 230 230;
        --color-primitive-accent: 80 120 150;
        --color-primitive-accent-light: 180 200 230;
        --color-primitive-dark: 16 16 16;
        --color-primitive-light: 230 230 230;
        --text-selection-color: var(--color-fg-accent);
        --color-fg-primary: rgb(var(--color-primitive-primary));
        --color-fg-secondary: rgb(var(--color-primitive-dark));
        --color-fg-accent: rgb(var(--color-primitive-accent));
        --color-fg-gradient: linear-gradient(135deg, var(--color-primitive-primary), var(--color-primitive-accent-light));
        --color-fg-transparent: transparent;
        --color-bg-primary: rgb(var(--color-primitive-alt));
        --color-bg-secondary: rgb(var(--color-primitive-light));
        --color-bg-accent: rgb(var(--color-primitive-accent));
        --color-bg-transparent: transparent;
        --color-bg-gradient: linear-gradient(135deg, rgb(var(--color-primitive-alt)), rgb(var(--color-primitive-light)));
        --font-family-title: Satoshi;
        --font-family-body: Satoshi;
        --font-weight-h1: var(--extra-bold);
        --font-weight-h2: var(--light);
        --font-weight-h3: var(--bold);
        --font-weight-h4: var(--medium);
        --font-weight-h5: var(--normal);
        --font-weight-h6: var(--normal);
        --font-weight-body: var(--normal);
        --text-size-h1: var(--5xl);
        --text-size-h2: var(--4xl);
        --text-size-h3: var(--3xl);
        --text-size-h4: var(--xl);
        --text-size-h5: var(--lg);
        --text-size-h6: var(--md);
        --text-size-body: var(--sm);
        --text-color-h1: var(--color-fg-primary);
        --text-color-h2: var(--color-fg-primary);
        --text-color-h3: var(--color-fg-primary);
        --text-color-h4: var(--color-fg-secondary);
        --text-color-h5: var(--color-fg-secondary);
        --text-color-h6: var(--color-fg-secondary);
        --text-color-body: var(--color-fg-secondary);
        --shadow-sm: 0 1px 2px 0 rgb(var(--color-primitive-black) / 5%);
        --shadow-md: 0 4px 6px -1px rgb(var(--color-primitive-black) / 10%), 0 2px 4px -1px rgb(var(--color-primitive-black) / 6%);
        --shadow-lg: 0 10px 15px -3px rgb(var(--color-primitive-black) / 10%), 0 4px 6px -2px rgb(var(--color-primitive-black) / 5%);
        --shadow-xl: 0 20px 25px -5px rgb(var(--color-primitive-black) / 10%), 0 10px 10px -5px rgb(var(--color-primitive-black) / 4%);
        --shadow-2xl: 0 25px 50px -12px rgb(var(--color-primitive-black) / 25%);
        --btn-padding-x: var(--md);
        --btn-padding-y: var(--xs);
        --btn-border-radius: var(--sm);
        --btn-font-size: var(--sm);
        --btn-font-weight: var(--normal);
        --btn-border-width: var(--3xs);
        --btn-text-color: var(--color-bg-primary);
        --btn-bg-color: var(--color-fg-accent);
        --btn-border-color: var(--color-fg-accent);
        --btn-shadow: 0 0 10px var(--color-fg-accent) / 0.5;
        --card-shadow: var(--shadow-sm);
        --card-border-width: var(--0);
        --card-border-radius: var(--md);
        --card-padding-x: var(--md);
        --card-padding-y: var(--md);
        --card-bg-color: rgb(var(--color-primitive-light) / 0.5);
        --container-gap: var(--sm);
        --container-padding-x: var(--sm);
        --container-padding-y: var(--sm);
        --color-white: #fff;
        --color-black: #000;
        --color-transparent: transparent;
        font-family: var(--font-family-body), -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
        font-size: var(--text-body);
        font-weight: var(--font-weight-body);
        color: var(--text-color-main);
        background-color: var(--bg-body);
    }

    ::selection {
        background-color: var(--text-selection-color);
        color: var(--color-white);
    }
}

*[role="tabpanel"][data-state="inactive"] {
    display: none;
}


.viewport>.fmod {
    /* isolation: isolate; */
}

.viewport>.fmod .fmod,
.viewport .top-ctrl {
    transform-origin: center;
    /* will-change: transform; */
    pointer-events: none;
}

.fmod:not([data-auto-layout="true"]) {
    padding: 0 !important;
}

.viewport .fmod:has(.fmod:not(.top-ctrl):hover) {
    outline: none !important;
}

.fake-collapse {
    padding: 0;
    border-width: 0px;
    /* margin-bottom: -30px; */
    cursor: pointer;
}

.fake-collapse h4 {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    gap: 4px;
    justify-content: space-between;
    padding: 0 5px;
}

.fake-collapse.fake-collapse-close {
    margin-bottom: 0px;
}

.fake-collapse:not(.fake-collapse-close) h4 svg {
    transform: rotate(180deg);
}

.fake-collapse * {
    pointer-events: none;
}

.keyframe[data-state="open"]>button[type="button"] {
    margin-bottom: -20px;
}

.added-keyframes {
    padding-top: 15px;
}

/* Low resolution mode when heavily zoomed out (scale < 0.3) */
.low-performance .fmod {
    /* Force lower image quality */
    image-rendering: pixelated;
    image-rendering: -moz-crisp-edges;
    image-rendering: crisp-edges !important;
    /* Disable animations */
    animation: none !important;
    transition: none !important;

    /* Optimize rendering */
    will-change: auto !important;
    /* Disable expensive text rendering */
    -webkit-font-smoothing: none;
    -moz-osx-font-smoothing: unset;
    text-rendering: optimizeSpeed;
}


.fmod>iframe {
    height: 100% !important;
    width: 100% !important;
    min-width: 100% !important;
    min-height: 100% !important;
    max-width: 100% !important;
    max-height: 100% !important;
    width: stretch !important;
    height: stretch !important;
}

.creation-mode,
.creation-mode * {
    cursor: crosshair !important;
}

svg#svgroot>svg:nth-child(2)>* {
    fill: transparent !important;
    stroke: transparent !important;
}

.fmod:has(> #svg-editor-container) {
    background: transparent !important;
}

svg#svgroot #selectorParentGroup circle {
    fill: white !important;
    stroke: #4285f4 !important;
    stroke-width: 1px !important;
}

svg#svgroot #selectorParentGroup line {
    stroke: #4285f4 !important;
}

svg#svgroot #selectorParentGroup path {
    stroke: #4285f4 !important;
}

#selectorGrip_rotate {
    cursor: url('/icons/rotTL.svg') 16 16, auto !important;
}

/* //svg editor */


/* SvgEditor UI Styles */

#svg-editor-container {
    position: relative;
}

.svg-editor-ui-container {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
}

.svg-editor-toolbar {
    position: absolute;
    top: -45px;
    left: 50%;
    transform: translateX(-50%) scale(var(--scale, 1));
    transform-origin: bottom center;
    background-color: #ffffff;
    padding: 8px;
    border-radius: 8px;
    border: 1px solid #e0e0e0;
    z-index: 1001;
    display: flex;
    gap: 4px;
    pointer-events: all;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}

.svg-editor-toolbar button {
    background: none;
    border: none;
    padding: 6px;
    border-radius: 5px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
}

.svg-editor-toolbar button:hover {
    background-color: #f0f0f0;
}

.svg-editor-toolbar button.active {
    background-color: #e0e0e0;
}

.svg-editor-toolbar .separator {
    border-left: 1px solid #e0e0e0;
    margin: 0 4px;
}

.svg-editor-layer-panel {
    position: absolute;
    top: 0;
    right: calc(-200px * var(--scale, 1));
    width: calc(190px * var(--scale, 1));
    height: auto;
    max-height: 80%;
    background-color: #ffffff;
    border-radius: 8px;
    border: 1px solid #e0e0e0;
    z-index: 1001;
    pointer-events: all;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
    display: flex;
    flex-direction: column;
}

.svg-editor-layer-panel h4 {
    margin: 0;
    padding: 10px;
    font-size: 14px;
    border-bottom: 1px solid #e0e0e0;
    color: #333;
}

.svg-editor-layer-list {
    list-style: none;
    margin: 0;
    padding: 5px;
    overflow-y: auto;
    flex-grow: 1;
}

.svg-editor-layer-item {
    padding: 8px 10px;
    font-size: 13px;
    border-radius: 4px;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 8px;
}

.svg-editor-layer-item:hover {
    background-color: #f0f0f0;
}

.svg-editor-layer-item.selected {
    background-color: #dbeafe;
    color: #1e40af;
}

.svg-editor-controls-panel {
    position: absolute;
    top: 0;
    left: calc(-200px * var(--scale, 1));
    width: calc(190px * var(--scale, 1));
    background-color: #ffffff;
    border-radius: 8px;
    border: 1px solid #e0e0e0;
    z-index: 1001;
    pointer-events: all;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
    padding: 10px;
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.control-group {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.control-group label {
    font-size: 13px;
    color: #333;
    margin: 0;
}

.control-group .input-row {
    display: flex;
    align-items: center;
    gap: 6px;
}

.control-group input[type="color"] {
    width: 32px;
    height: 32px;
    border: none;
    padding: 0;
    border-radius: 4px;
    overflow: hidden;
    cursor: pointer;
}

.control-group input[type="color"]::-webkit-color-swatch-wrapper {
    padding: 0;
}

.control-group input[type="color"]::-webkit-color-swatch {
    border: none;
    border-radius: 4px;
}

.control-group input[type="number"] {
    width: 60px;
    border: 1px solid #ccc;
    border-radius: 4px;
    padding: 6px;
    font-size: 13px;
}

.control-group input[type="text"] {
    width: 100%;
    box-sizing: border-box;
    border: 1px solid #ccc;
    border-radius: 4px;
    padding: 6px;
    font-size: 13px;
}

.viewport>.fmod,
.viewport>.fmod.frame>.fmod,
.fmod[data-level="current"]>.fmod,
.viewport>.top-ctrl,
.fmod[data-level="current"]>.top-ctrl,
.viewport .fmod:has(.selected),
.viewport .fmod.selected {
    pointer-events: auto;
}

.deepselect .fmod:not([data-locked="true"]:not([data-hidden="true"])) .fmod:not([data-locked="true"]:not([data-hidden="true"])),
.deepselect .top-ctrl {
    pointer-events: auto !important;
}


.fmod.drag *,
.fmod.rotate *,
.fmod.resize *,
.pixleator:not(.deepselect) .viewport:has(.fmod.drag) .fmo:not(:has(.drag)):not(.viewport > .fmod) {
    pointer-events: none !important;
}

.fmod:has(.fmod.drag) {
    pointer-events: all !important;
}





/* Auto-layout controls styles */
.auto-layout-controls {
    pointer-events: none;
}

.padding-handle,
.gap-handle {
    position: absolute;
    pointer-events: auto;
    transition: opacity 0.2s ease;
    opacity: 0;
    /* border: 1px solid rgba(255, 255, 255, 0.3); */
    /* box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); */
}

.padding-handle:hover,
.gap-handle:hover {
    opacity: 1;
    /* transform: scale(1.1); */
}

.padding-handle-left,
.padding-handle-right,
.gap-handle-row {
    cursor: col-resize;
    max-width: 10%;
}

.gap-handle-row {
    /* height:  calc(100% * var(--scale) - 16px); */
}

.padding-handle-top,
.padding-handle-bottom,
.gap-handle-column {
    cursor: row-resize;
    max-height: 10%;
}

.gap-handle-column {
    /* width:  calc(100% * var(--scale) - 16px); */
}

.gap-handle {
    cursor: grab;
}

.gap-handle:active {
    cursor: grabbing;
}

/* Different colors for different handle types */
.padding-handle-left,
.padding-handle-right,
.padding-handle-top,
.padding-handle-bottom,
.gap-handle {
    display: flex;
    align-items: center;
    justify-content: center;
    /* background-color: #00000090 !important; */
    border-radius: 24px;
}

.padding-handle-left,
.padding-handle-right,
.padding-handle-top,
.padding-handle-bottom {
    z-index: 1002;
}

.dark .gap-handle,
.dark .padding-handle-left,
.dark .padding-handle-right,
.dark .padding-handle-top,
.dark .padding-handle-bottom {
    /* background-color: #ffffff90 !important; */
}

.fmod.text.text-editing,
.fmod.text.text-editing * {
    min-width: 2px;
    min-height: 10px;
    word-wrap: normal;
}


/* Different colors for different handle types */
.padding-handle-left:after,
.padding-handle-right:after,
.padding-handle-top:after,
.padding-handle-bottom:after,
.gap-handle:after {
    content: '';
    max-height: 45%;
    max-width: 45%;
    border-radius: 4px;
    background-color: #777777;
    border: 1px solid #eaeaea;
    transform-origin: center;
    box-sizing: content-box;
    scale: 2;
}

.dark .padding-handle-left:after,
.dark .padding-handle-right:after,
.dark .padding-handle-top:after,
.dark .padding-handle-bottom:after,
.dark .gap-handle:after {
    background-color: #eaeaea;
    border: 1px solid #777777;
}

.padding-handle-left:after,
.padding-handle-right:after,
.gap-handle-row:after {
    height: 48px;
    width: 8px;
}

.padding-handle-top:after,
.padding-handle-bottom:after,
.gap-handle-column:after {
    height: 8px;
    width: 48px;
}



/* Handle size adjustments based on scale */
.scale-low .padding-handle,
.scale-low .gap-handle {
    /* min-width: 18px;
  min-height: 18px; */
}

.scale-medium .padding-handle,
.scale-medium .gap-handle {
    /* min-width: 16px;
  min-height: 16px; */
}

.scale-high {
    image-rendering: pixelated;
}

.scale-high .padding-handle,
.scale-high .gap-handle {
    /* min-width: 14px;
  min-height: 14px; */
}

/* Visibility improvements */
/* .auto-layout-controls:hover .padding-handle,
.auto-layout-controls:hover .gap-handle {
  opacity: 0.8;
} */

/* Active state during dragging */
.padding-handle.dragging,
.gap-handle.dragging {
    /* opacity: 1 !important; */
    z-index: 1002;
}

/* Alt mode visual feedback for padding handles */
.padding-handle.alt-mode {
    background-color: #FF9500 !important;
    box-shadow: 0 2px 8px rgba(255, 149, 0, 0.4);
}

.dark .padding-handle.alt-mode {
    background-color: #FF9F0A !important;
    box-shadow: 0 2px 8px rgba(255, 159, 10, 0.4);
}

/* end of auto-layout controls */

/* Auto-layout reorder indicator styles */
.auto-layout-reorder-indicator {
    position: absolute;
    background-color: #007AFF !important;
    border-radius: 2px;
    pointer-events: none;
    z-index: 1003;
    opacity: 0;
    transition: opacity 0.2s ease;
    box-shadow: 0 0 8px rgba(0, 123, 255, 0.5);
}

.auto-layout-reorder-indicator.active {
    opacity: 1;
}

/* Dark mode support for reorder indicator */
.dark .auto-layout-reorder-indicator {
    background-color: #0A84FF !important;
    box-shadow: 0 0 8px rgba(10, 132, 255, 0.5);
}

/* end of auto-layout reorder indicator */

/* Border radius control styles */
.border-radius-handle {
    position: absolute;
    width: 8px;
    height: 8px;
    background-color: #ffffff;
    outline: 1px solid #0A84FF;
    border-radius: 50%;
    cursor: pointer;
    z-index: 1004;
    opacity: 0;
    transition: opacity 0.2s ease, transform 0.1s ease;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
    will-change: transform, opacity;
}

/* Border radius handles are now controlled by JavaScript hover events */

.border-radius-handle.dragging {
    opacity: 1 !important;
    z-index: 1005;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.4);
    transition: box-shadow 0.1s ease;
}

/* Individual corner handle styles for visual distinction */
.border-radius-top-left {
    cursor: nw-resize;
}

.border-radius-top-right {
    cursor: ne-resize;
}

.border-radius-bottom-right {
    cursor: se-resize;
}

.border-radius-bottom-left {
    cursor: sw-resize;
}

/* Visual feedback for border radius adjustment is now handled by JavaScript */

/* Smooth movement animation for all handles during drag */
.border-radius-handle {
    transform-origin: center;
}

.border-radius-top-left {
    top: 10px;
    left: 10px;
    transform-origin: top left;
}

.border-radius-top-right {
    top: 10px;
    right: 10px;
    transform-origin: top right;
}

.border-radius-bottom-right {
    bottom: 10px;
    right: 10px;
    transform-origin: bottom right;
}

.border-radius-bottom-left {
    bottom: 10px;
    left: 10px;
    transform-origin: bottom left;
}

/* end of border radius control */

.marked {
    box-shadow: calc(1px / var(--scale)) calc(1px / var(--scale)) calc(30px / var(--scale)) #f43f5f !important;
    outline: calc(1px / var(--scale)) solid #f43f5f !important;
}

.pixleator:not(.deepselect) .border-radius-handle,
.pixleator:not(.deepselect) .padding-handle,
.pixleator:not(.deepselect) .gap-handle {
    display: none !important;
}

.auto-layout-reorder-indicator {
    position: absolute;
    background-color: #007AFF;
    border: 1px solid #ffffff;
    outline: 1px solid #007AFF;
    outline-offset: 1px;
    border-radius: 2px;
    pointer-events: none;
    z-index: 1003;
    opacity: 0;
    transition: opacity 0.2s ease;
}

.auto-layout-reorder-indicator-row {
    width: 2px;
    height: 100%;
}

.auto-layout-reorder-indicator-column {
    width: 100%;
    height: 2px;
}

/* Visual CMS Editor Styles */
.visual-cms-mode {
    position: relative;
}

.visual-cms-status-bar {
    pointer-events: auto;
}

.visual-cms-legend {
    pointer-events: auto;
}

.legend-item {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 6px;
    font-size: 12px;
}

.visual-cms-legend {
    transition: all 0.3s ease;
    transform: translateY(calc(100% - 20px));
}

.visual-cms-legend:hover {
    transform: translateY(0);
}

.legend-item span {}

.legend-item:last-child {
    margin-bottom: 0;
}

/* .legend-color {
  width: 12px;
  height: 12px;
  border-radius: 2px;
} */

.contextual-action-bar {
    pointer-events: all;
    animation: slideIn 0.2s ease-out;
}

/* CMS Connection Visual Indicators */
.cms-connected-page {
    outline: calc(4px / var(--scale)) solid #3b82f6 !important;
    outline-offset: calc(4px / var(--scale));
    position: relative;
}

.cms-connected-page::before {
    content: "PAGE" !important;
    position: absolute !important;
    top: -8px !important;
    left: -2px !important;
    background: #3b82f6 !important;
    color: white !important;
    font-size: 10px !important;
    font-weight: 600 !important;
    padding: 2px 6px !important;
    border-radius: 3px !important;
    z-index: 1000 !important;
    scale: calc(1 / var(--scale)) !important;
    width: fit-content !important;
    transform: none !important;
}

.cms-connected-post-type::before {
    content: "POST TYPE";
    background: #8b5cf6;
    scale: calc(1 / var(--scale));
}

.cms-connected-collection {
    outline: calc(4px / var(--scale)) solid #10b981 !important;
    outline-offset: calc(4px / var(--scale));
    position: relative;
}

.cms-connected-collection::before {
    content: "COLLECTION";
    position: absolute;
    top: -8px;
    left: -2px;
    background: #10b981;
    color: white;
    font-size: 10px;
    font-weight: 600;
    padding: 2px 6px;
    border-radius: 3px;
    z-index: 1000;
    scale: calc(1 / var(--scale));
}

.cms-connected-field {
    outline: calc(4px / var(--scale)) solid #f59e0b !important;
    outline-offset: calc(4px / var(--scale));
    position: relative;
}

.cms-connected-field::before {
    content: "FIELD";
    position: absolute;
    display: flex;
    align-items: center;
    justify-content: center;
    height: 30px !important;
    top: -8px;
    left: -2px;
    background: #f59e0b;
    color: white;
    font-size: 10px;
    font-weight: 600;
    padding: 2px 6px;
    border-radius: 3px;
    z-index: 1000;
    scale: calc(1 / var(--scale));
}

.cms-connected-page-part {
    outline: calc(4px / var(--scale)) solid #ec4899 !important;
    outline-offset: calc(4px / var(--scale));
    position: relative;
}

.cms-connected-page-part::before {
    content: "PAGE PART";
    position: absolute;
    top: -8px;
    left: -2px;
    background: #ec4899;
    color: white;
    font-size: 10px;
    font-weight: 600;
    padding: 2px 6px;
    border-radius: 3px;
    z-index: 1000;
    scale: calc(1 / var(--scale));
}

.cms-connected-header::before {
    content: "HEADER";
}

.cms-connected-footer::before {
    content: "FOOTER";
}

.cms-connected-menu {
    outline: calc(4px / var(--scale)) solid #8b5cf6 !important;
    outline-offset: calc(4px / var(--scale));
    position: relative;
}

.cms-connected-menu::before {
    content: "MENU";
    position: absolute;
    top: -8px;
    left: -2px;
    background: #8b5cf6;
    color: white;
    font-size: 10px;
    font-weight: 600;
    padding: 2px 6px;
    border-radius: 3px;
    z-index: 1000;
    scale: calc(1 / var(--scale));
}

.cms-connected-ignored {
    outline: calc(4px / var(--scale)) solid #6b7280 !important;
    outline-offset: calc(4px / var(--scale));
    position: relative;
    opacity: 0.6;
}

.cms-connected-ignored::before {
    content: "IGNORED";
    position: absolute;
    top: -8px;
    left: -2px;
    background: #6b7280;
    color: white;
    font-size: 10px;
    font-weight: 600;
    padding: 2px 6px;
    border-radius: 3px;
    z-index: 1000;
    scale: calc(1 / var(--scale));
}

.cms-connected-repeater {
    outline: calc(4px / var(--scale)) solid #14b8a6 !important;
    outline-offset: calc(4px / var(--scale));
    position: relative;
}

.cms-connected-repeater::before {
    content: "REPEATER";
    position: absolute;
    top: -8px;
    left: -2px;
    background: #14b8a6;
    color: white;
    font-size: 10px;
    font-weight: 600;
    padding: 2px 6px;
    border-radius: 3px;
    z-index: 1000;
    scale: calc(1 / var(--scale));
}

.cms-connected-breadcrumbs {
    outline: calc(4px / var(--scale)) solid #0ea5e9 !important;
    outline-offset: calc(4px / var(--scale));
    position: relative;
}

.cms-connected-breadcrumbs::before {
    content: "BREADCRUMBS";
    position: absolute;
    top: -8px;
    left: -2px;
    background: #0ea5e9;
    color: white;
    font-size: 10px;
    font-weight: 600;
    padding: 2px 6px;
    border-radius: 3px;
    z-index: 1000;
    scale: calc(1 / var(--scale));
}

/* Legend indicator colors */
.cms-connected-page-indicator {
    background: #3b82f6;
}

.cms-connected-collection-indicator {
    background: #10b981;
}

.cms-connected-field-indicator {
    background: #f59e0b;
}

.cms-connected-page-part-indicator {
    background: #ec4899;
}

.cms-connected-ignored-indicator {
    background: #6b7280;
}

.cms-connected-repeater-indicator {
    background: #14b8a6;
}

.cms-connected-breadcrumbs-indicator {
    background: #0ea5e9;
}

/* Dark mode adjustments */
.dark .cms-connected-page,
.dark .cms-connected-collection,
.dark .cms-connected-field,
.dark .cms-connected-page-part,
.dark .cms-connected-menu,
.dark .cms-connected-ignored,
.dark .cms-connected-repeater,
.dark .cms-connected-breadcrumbs {
    outline-color: currentColor;
    outline-style: solid;
    outline-width: 2px;
}

/* Hover effects in visual mode */
.visual-cms-mode .fmod:hover {
    cursor: pointer;
    /* transform: scale(1.02);
  transition: transform 0.1s ease; */
}

.visual-cms-mode .fmod:not(.selected):hover:not(:has(:hover))::after {
    background: #3b82f652;
}

/* Animation for contextual bar */
@keyframes slideInDown {
    from {
        opacity: 0;
        transform: translateX(-50%) translateY(-10px);
    }

    to {
        opacity: 1;
        transform: translateX(-50%) translateY(0);
    }
}

.contextual-action-bar {
    animation: slideInDown 0.2s ease-out;
}

.dimensions-display {
    position: absolute;
    bottom: -24px;
    left: 50%;
    transform: translateX(-50%);
    padding: 2px 6px;
    border-radius: 3px;
    font-size: 11px;
    font-family: Arial, sans-serif;
    font-weight: 500;
    white-space: nowrap;
    pointer-events: none;
    z-index: 1000;
    user-select: none;
    background-color: rgba(130, 130, 130, 0.7);
    color: white;
}

.hide-grid .fmo-ui-type-grid {
    display: none !important;
}

.fmo-ui-type-grid,
.fmo-ui-item-grid {
    width: 100%;
    height: 100%;
}

.fmo-ui-type-grid {
    width: 100% !important;
    height: 100% !important;
}

/* New grid cell class */
.fmo-ui-grid-cell {
    /* Individual cell styling */
    transition: opacity 0.2s ease;
    border: 1px solid transparent;
}

.fmo-ui-grid-cell:hover {
    /* Hover effects for cells */
    opacity: 0.6 !important;
    border-color: rgba(255, 255, 255, 0.5);
}

/* Target specific cells */
.fmo-ui-grid-cell[data-grid-row="0"] {
    /* First row */
}

.fmo-ui-grid-cell[data-grid-col="0"] {
    /* First column */
}

/* UI Elements Styling Examples */

/* Base styles for all UI elements */
.fmo-ui-container {
    /* Container is already styled in JavaScript */
    font-size: inherit;
}

/* Individual UI items */
.fmo-ui-item {
    /* Base item styles - pointer-events: none is set in JS */
    pointer-events: none;
}

/* Grid items and cells */
.fmo-ui-item-grid {
    /* Grid container styling */
    border-radius: 2px;
    box-sizing: border-box;
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}

/* CSS Grid support */
.fmo-ui-item-grid[style*="display: grid"] {
    /* Ensure CSS Grid works properly */
    box-sizing: border-box;
}

.fmo-ui-item-grid[style*="display: grid"] .fmo-ui-grid-cell {
    /* CSS Grid cells should fill their grid area */
    width: 100%;
    height: 100%;
}

.fmo-ui-grid-cell {
    /* Individual grid cell styling */
    transition: opacity 0.2s ease;
    border: 1px solid transparent;
    box-sizing: border-box;
}

.fmo-ui-grid-cell:hover {
    /* Hover effect for grid cells */
    opacity: 0.6 !important;
    border-color: rgba(255, 255, 255, 0.5);
}

/* Specific grid cell targeting examples */
/* .fmo-ui-grid-cell[data-grid-row="0"] { border-top: 2px solid red; } */
/* .fmo-ui-grid-cell[data-grid-col="0"] { border-left: 2px solid blue; } */

/* Guide items */
.fmo-ui-item-guide-vertical {
    /* Vertical guide styling */
    box-shadow: 0 0 2px rgba(0, 0, 0, 0.2);
}

.fmo-ui-item-guide-horizontal {
    /* Horizontal guide styling */
    box-shadow: 0 0 2px rgba(0, 0, 0, 0.2);
}

/* Specific item targeting examples */
[data-ui-item-id="guide-1"] {
    /* Style a specific guide */
    opacity: 0.8;
}

[data-ui-item-name="Grid 2"] {
    /* Style a specific grid by name */
    border-style: dashed;
}

/* Hover effects (if you want to make them interactive) */
.fmo-ui-item:hover {
    opacity: 0.7;
}

/* Animation examples */
.fmo-ui-item-guide-vertical {
    transition: opacity 0.2s ease;
}

.fmo-ui-item-guide-horizontal {
    transition: opacity 0.2s ease;
}

/* Custom grid line styling examples */
/* .fmo-ui-item-grid::before { content: ''; position: absolute; etc... } */

/* Hidden state styling examples */
/* .fmo-ui-item[style*="display: none"] { transform: scale(0.8); } */

/* Responsive adjustments */
@media (max-width: 768px) {

    .fmo-ui-item-guide-vertical,
    .fmo-ui-item-guide-horizontal {
        opacity: 0.5;
    }
}

#selectorParentGroup {
    translate: var(--buffer-size) calc(var(--buffer-size));
}

#pathpointgrip_container circle,
#selectorParentGroup circle,
html svg#svgroot #selectorParentGroup circle {
    r: calc(4px / var(--scale));
    stroke-width: calc(2px / var(--scale)) !important;
}

#pathpointgrip_container path:not(#path_stretch_line),
#selectorParentGroup path:not(#path_stretch_line) {
    stroke-width: calc(2px / var(--scale)) !important;
    stroke-dasharray: calc(12px / var(--scale));
}

html svg#svgroot #selectorParentGroup line {
    stroke-width: calc(2px / var(--scale)) !important;
}

#path_stretch_line {
    stroke-width: calc(2px / var(--scale));
}


.svg-editing .pixleator {
    pointer-events: none !important;
}

.svg-editing .svg-editor-container {
    pointer-events: all !important;
}

.svg-editing #controls-container {
    display: none !important;
}

/* .viewport.workcanvas.focus-mode-active {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr;
  gap: 50px;
}
.viewport.workcanvas.focus-mode-active > .fmod[data-is-page="true"]:not(.element-top-overlay) {
  margin: 0 !important;
  grid-area: auto !important;
}
.viewport.workcanvas.focus-mode-active > .fmod:not([data-is-page="true"]):not(.element-top-overlay) {
  position: absolute;
}
.viewport.workcanvas.focus-mode-active .element-top-overlay.top-ctrl:not(:last-child) {
  display: none;
}
.viewport.workcanvas.focus-mode-active .element-top-overlay.top-ctrl:last-child {
  position: absolute;
  display: flex;
  margin-top: 0 !important;
  margin-left: 0 !important;
} */


.fmod:not([data-auto-layout="true"]) {
    padding: 0;
}

.fmod:not([data-is-absolute="true"]) {
    position: relative;
}


*:not(.viewport)>.fmod[data-sizing-y="fill"]:not([data-is-aspect-ratio-locked="true"]) {
    height: 100%;
    grid-template-rows: 100%;
}


*:not(.viewport):not(.page-group)>.fmod[data-sizing-x="fill"]:not(.component:not(.instance)),
.page>.fmod:not([data-sizing-x="hug"]):not([data-sizing-x="fixed"]) {
    width: 100%;
    grid-template-columns: 100%;
}

.fmod[data-auto-layout="true"]:not([data-flex-direction="down"]):not([data-flex-direction="up"]):not(.viewport):not(.component-group):not(.page-group)>.fmod[data-sizing-y="fill"]:not([data-is-aspect-ratio-locked="true"]) {
    height: stretch;
}

.fmod[data-auto-layout="true"][data-flex-direction="left"]:not(.viewport):not(.page-group):not(.component-group)>.fmod[data-sizing-x="fill"]:not([data-is-aspect-ratio-locked="true"]),
.fmod[data-auto-layout="true"][data-flex-direction="right"]:not(.viewport):not(.page-group):not(.component-group)>.fmod[data-sizing-x="fill"]:not([data-is-aspect-ratio-locked="true"]) {
    width: stretch;
}


.top-ctrl,
.fmod {
    margin-left: 0;
    margin-top: 0;
    height: var(--height);
    width: var(--width);
    grid-area: 1 / 1 / 2 / 2;
    transform-origin: center;
}

.fmod:not(*[data-auto-layout="true"] > *[data-is-absolute="true"]),
.viewport .fmod .top-ctrl {
    margin-left: var(--left);
    margin-top: var(--top);
}

*[data-auto-layout="true"]>*[data-is-absolute="true"] {
    position: absolute;
}

.frame:not([data-auto-layout="true"]) {
    align-content: start;
    position: relative;
    display: none;
    grid-template-rows: minmax(20px, auto) 1fr;
    display: grid;
    grid-template-columns: 100%;
    padding: 0px;
}

.fmod:has(>.fmod):not([data-auto-layout="true"]) {
    display: grid;
    grid-template-columns: 100% 1fr;
    grid-template-rows: 100% 1fr;
}

.start_auto_fill,
.const_y_top,
*:not([data-auto-layout="true"])>.fmod[data-y-constraint="top"],
*:not([data-auto-layout="true"])>.fmod:not([data-y-constraint]),
.top-ctrl {
    align-self: start;
}

.center_y_auto_fill,
.const_y_center,
.fmod:not([data-auto-layout="true"])>.fmod[data-y-constraint="center"],
.fmod .fmod[data-y-constraint="center"][data-is-absolute="true"] {
    align-self: center;
}

.end_auto_fill,
.const_y_bottom,
.fmod:not([data-auto-layout="true"])>.fmod[data-y-constraint="bottom"],
.fmod .fmod[data-y-constraint="bottom"][data-is-absolute="true"] {
    align-self: end;
}

.right_auto_fill,
.const_x_right,
.fmod:not([data-auto-layout="true"])>.fmod[data-x-constraint="right"],
.fmod .fmod[data-x-constraint="right"][data-is-absolute="true"]:not(.workcanvas > .fmod) {
    justify-self: right;
}

.center_x_auto_fill,
.const_x_center,
.fmod:not([data-auto-layout="true"])>.fmod[data-x-constraint="center"],
.fmod .fmod[data-x-constraint="center"][data-is-absolute="true"] {
    justify-self: center;
}

.left_auto_fill,
.const_x_left,
*:not([data-auto-layout="true"])>.fmod[data-x-constraint="left"],
*:not([data-auto-layout="true"])>.fmod:not([data-x-constraint]),
.top-ctrl {
    justify-self: left;
}

.fmod:not([data-auto-layout="true"])>.fmod[data-x-constraint="right"] {
    margin-left: 0;
    margin-right: var(--left);
}

.fmod:not([data-auto-layout="true"])>.fmod[data-y-constraint="bottom"] {
    margin-top: 0;
    margin-bottom: var(--top);
}

.fmod[data-is-fixed="fixed"] {
    position: absolute;
}

.fmod[data-is-fixed="fixed"],
.fmod[data-is-fixed="sticky"] {
    top: 0;
}

.fmod .fmod[data-is-fixed="fixed"][data-x-constraint="right"],
.fmod .fmod[data-is-fixed="sticky"][data-x-constraint="right"] {
    left: auto;
    margin-right: var(--left);
}

.fmod .fmod[data-is-fixed="fixed"][data-y-constraint="bottom"],
.fmod .fmod[data-is-fixed="sticky"][data-y-constraint="bottom"] {
    top: auto;
    margin-bottom: 0;
    bottom: var(--top);
}





*[data-hidden="true"] {
    display: none !important;
}

*[data-auto-layout="true"] {
    display: flex;
    align-content: flex-start;
}

.fmod[data-sizing-y="hug"] {
    height: max-content;
    grid-template-rows: auto;
}

.fmod[data-sizing-x="hug"] {
    width: max-content;
    grid-template-columns: auto;
    max-width: 100%;
}

*[data-auto-layout="true"]>*[data-is-absolute="true"] {
    position: absolute;
}

*[data-auto-layout="true"]>.fmod[data-is-absolute="true"] {
    left: var(--left);
    top: var(--top);
}

*[data-auto-layout="true"]>.fmod[data-is-absolute="true"][data-x-constraint="right"] {
    right: var(--left);
    left: auto;
}

*[data-auto-layout="true"]>.fmod[data-is-absolute="true"][data-y-constraint="bottom"] {
    bottom: var(--top);
    top: auto;
}

*[data-auto-layout="true"]>.fmod[data-is-absolute="true"][data-x-constraint="center"] {
    left: calc(50% + var(--left));
    translate: -50% 0;
}

*[data-auto-layout="true"]>.fmod[data-is-absolute="true"][data-y-constraint="center"] {
    top: calc(50% + var(--top));
    translate: 0 -50%;
}

*[data-auto-layout="true"]>.fmod[data-is-absolute="true"][data-x-constraint="center"][data-y-constraint="center"] {
    left: calc(50% + var(--left));
    top: calc(50% + var(--top));
    translate: -50% -50%;
}

*[data-auto-layout="true"]>*:not([data-is-absolute="true"]):not([data-sizing-x="fill"]) {
    transform-origin: center;
    flex-shrink: 0;
}

*:not([data-flex-direction="up"]):not([data-flex-direction="down"]):not(.component-group):not(.page-group)>*[data-sizing-x="fill"] {
    transform-origin: center;
    flex-shrink: 1;
    flex-grow: 1;
    flex-basis: 0;
}

*[data-flex-direction="up"]>*[data-sizing-y="fill"],
*[data-flex-direction="down"]>*[data-sizing-y="fill"] {
    transform-origin: center;
    flex-shrink: 1;
    flex-grow: 1;
    flex-basis: 0;
}

*[data-flex-direction="down"] {
    flex-direction: column;
}

*[data-flex-direction="up"] {
    flex-direction: column-reverse;
}

*[data-flex-direction="right"] {
    flex-direction: row-reverse;
}

*[data-flex-direction="left"] {
    flex-direction: row;
}

*[data-flex-wrap="true"] {
    flex-wrap: wrap;
}

*::selection {
    /* background-color: red;
  background-color: var(--text-select-color); */
}

*[data-locked="true"],
*[data-locked="true"] *,
[style*="pointer-events: none;"] *:not(.padding-handle):not(.gap-handle):not(.border-radius-handle) {
    pointer-events: none !important;
}

*[data-scroll="horizontal"] {
    overflow-x: scroll;
    overflow-y: visible;
}

*[data-scroll="vertical"] {
    overflow-y: scroll;
    overflow-x: visible;
}

*[data-clip-content="true"] {
    overflow: clip !important;
}

*.text[data-clip-content="true"] * {
    overflow: clip !important;
}

*[data-scroll="horizontal"][data-clip-content="true"] {
    overflow-y: clip;
}

*[data-scroll="vertical"][data-clip-content="true"] {
    overflow-x: clip;
}

*[data-scroll="both"] {
    overflow: scroll;
}

*[data-object-fit="contain"] {
    object-fit: contain;
}

*[data-object-fit="cover"] {
    object-fit: cover;
}

*[data-flex-alignment-y="top"]:not([data-flex-direction="up"]):not([data-flex-direction="down"]) {
    align-items: flex-start;
}

*[data-flex-alignment-y="bottom"]:not([data-flex-direction="up"]):not([data-flex-direction="down"]) {
    align-items: flex-end;
}

*[data-flex-alignment-y="center"]:not([data-flex-direction="up"]):not([data-flex-direction="down"]) {
    align-items: center;
    align-content: center;
}

/* something inside flex direction up or down with data-sizing-y="fixed" */
*[data-flex-direction="up"]>*[data-sizing-y="fixed"],
*[data-flex-direction="down"]>*[data-sizing-y="fixed"] {
    flex-shrink: 0;
}


/* X-axis alignment */
*[data-flex-alignment-x="left"]:not([data-flex-direction="up"]):not([data-flex-direction="down"]):not([data-flex-direction="right"]) {
    justify-content: flex-start;
}

*[data-flex-alignment-x="right"]:not([data-flex-direction="up"]):not([data-flex-direction="down"]):not([data-flex-direction="right"]) {
    justify-content: flex-end;
}

*[data-flex-alignment-x="center"]:not([data-flex-direction="up"]):not([data-flex-direction="down"]) {
    justify-content: center;
}

*[data-flex-alignment-x="left"][data-flex-direction="right"] {
    justify-content: flex-end;
}

*[data-flex-alignment-x="right"][data-flex-direction="right"] {
    justify-content: flex-start;
}

*[data-flex-direction="left"]>*[data-sizing-x="fixed"],
*[data-flex-direction="right"]>*[data-sizing-x="fixed"] {
    flex-shrink: 0;
}


/* Alignment rules for column direction (up/down) - axes are flipped */
/* X-axis alignment becomes align-items */
*[data-flex-alignment-x="left"][data-flex-direction="up"],
*[data-flex-alignment-x="left"][data-flex-direction="down"] {
    align-items: flex-start;
}

*[data-flex-alignment-x="right"][data-flex-direction="up"],
*[data-flex-alignment-x="right"][data-flex-direction="down"] {
    align-items: flex-end;
}

*[data-flex-alignment-x="center"][data-flex-direction="up"],
*[data-flex-alignment-x="center"][data-flex-direction="down"] {
    align-items: center;
}

/* Y-axis alignment becomes justify-content */
*[data-flex-alignment-y="bottom"][data-flex-direction="up"],
*[data-flex-alignment-y="top"][data-flex-direction="down"] {
    justify-content: flex-start;
}

*[data-flex-alignment-y="top"][data-flex-direction="up"],
*[data-flex-alignment-y="bottom"][data-flex-direction="down"] {
    justify-content: flex-end;
}

*[data-flex-alignment-y="center"][data-flex-direction="up"],
*[data-flex-alignment-y="center"][data-flex-direction="down"] {
    justify-content: center;
}

html *.fmod[data-flex-direction="down"][data-column-gap-size="auto"],
html *.fmod[data-flex-direction="up"][data-column-gap-size="auto"] {
    justify-content: space-between;
}

html *.fmod:not([data-flex-direction="up"]):not([data-flex-direction="down"])[data-row-gap-size="auto"],
html *.fmod[data-flex-direction="left"][data-row-gap-size="auto"],
html *.fmod[data-flex-direction="right"][data-row-gap-size="auto"] {
    justify-content: space-between;
}

html *.fmod[data-flex-direction="down"][data-column-gap-size="around"],
html *.fmod[data-flex-direction="up"][data-column-gap-size="around"] {
    justify-content: space-around;
}

html *.fmod:not([data-flex-direction="up"]):not([data-flex-direction="down"])[data-row-gap-size="around"],
html *.fmod[data-flex-direction="left"][data-row-gap-size="around"],
html *.fmod[data-flex-direction="right"][data-row-gap-size="around"] {
    justify-content: space-around;
}


*[data-auto-layout="true"]>.fmod:not([data-is-absolute="true"]) {
    margin-left: 0;
    margin-top: 0;
    margin-bottom: 0;
    margin-right: 0;
}


html .fmod.component-group:not(.element-top-overlay) {
    border: calc(2px/var(--scale)) dashed #7700ff;
    border-radius: 12px;
    width: max-content;
    height: max-content;
    display: flex;
    flex-direction: row;
    container-type: unset;
    row-gap: 40px;
    column-gap: 40px;
    padding: calc(30px/var(--scale)) calc(20px/var(--scale)) calc(20px/var(--scale)) calc(20px/var(--scale)) !important;
}

html .fmod.page-group:not(.element-top-overlay) {
    border: calc(2px/var(--scale)) solid rgb(132 132 132 / 26%);
    background: #84848434;
    border-radius: calc(12px/var(--scale));
    width: max-content;
    height: max-content;
    display: flex;
    flex-direction: row;
    row-gap: 40px;
    column-gap: 40px;
    padding: calc(70px/var(--scale)) calc(10px/var(--scale)) calc(10px/var(--scale)) calc(10px/var(--scale)) !important;
}

.fmod:not(.variant):not(.instance).component:before {
    content: 'master';
    transform: translateY(calc(-100% - (10px / var(--scale))));
    font-size: calc(12px / var(--scale));
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    z-index: 1000;
    height: fit-content;
}

.fmod.variant:not(.instance)[data-variant-name]:before {
    content: attr(data-variant-name);
    transform: translateY(calc(-100% - (10px / var(--scale))));
    font-size: calc(12px / var(--scale));
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    z-index: 1000;
    height: fit-content;
}

.dark .fmod[data-variant-name]:before,
.dark .fmod:not(.variant):not(.instance).component:before {
    color: white;
}

html .fmod.page-group:not(.element-top-overlay)>.fmod:not([data-sizing-x="hug"]) {
    flex-shrink: 0;
    container-type: inline-size;
    /* background: white; */
}

html .fmod.component-group:not(.element-top-overlay)>.fmod:not([data-sizing-x="hug"]) {
    flex-shrink: 0;
    container-type: inline-size;
    /* background: white; */
}

html .fmod.page-group.element-top-overlay {
    transform: unset !important;
    padding: calc(20px/var(--scale)) calc(10px/var(--scale)) !important;
}

html .fmod.component-group.element-top-overlay {
    padding-left: calc(40px/var(--scale)) !important;
}

.skeleton * {
    --scale: 0.75;
}

.contextual-action-bar {
    /* add opacity 0 and then an animation to fade in ater 1 second delay*/
    opacity: 0;
    animation: contextualFadeIn 0.3s ease-in-out forwards 0.3s;
    /* 1s delay */
}

.fmod:has(>img.fill-image) {
    background: transparent !important;
}

img.fmod {
    max-width: unset;
    max-height: unset;
}



img.fmod {
    object-fit: cover;
}

@keyframes contextualFadeIn {
    from {
        opacity: 0;
    }

    to {
        opacity: 1;
    }
}

.fmod:is([style*="filter:"], [style*="backdrop-filter:"]) {
    will-change: transform;
}

.fmod:is(.component-group, .page-group) .component {
    /* min-width: 0 !important; */
}