main.configurator-grid.svelte-d6606d {
  --sidebar-width: 18.75rem;
  --sidebar-cell-padding: 0rem;
}
main.configurator-grid.sidebar-movable.svelte-d6606d {
  --sidebar-cell-padding: 1.5rem;
}
main.configurator-grid.no-sidebar.svelte-d6606d {
  --sidebar-width: 0rem;
  --sidebar-cell-padding: 0rem;
  height: calc(100dvh - var(--sheet-handle-height));
}
main.configurator-grid.svelte-d6606d {
  display: grid;
  grid-template-columns: [start sidebar-start canvas-start footer-start] calc(var(--sidebar-width) + var(--sidebar-cell-padding)) [toolbar-row-start sidebar-end header-start] auto [footer-end header-end canvas-end toolbar-row-end end];
  grid-template-rows: [start sidebar-start canvas-start header-start] min-content [header-end] minmax(0, 1fr) [toolbar-row-start] min-content [toolbar-row-end canvas-end sidebar-end footer-start] min-content [footer-end end];
  height: 100dvh;
  width: 100dvw;
  overflow: hidden;
}
main.configurator-grid.svelte-d6606d .sidebar-cell:where(.svelte-d6606d),
main.configurator-grid.svelte-d6606d .header-cell:where(.svelte-d6606d),
main.configurator-grid.svelte-d6606d .toolbar-cell:where(.svelte-d6606d) {
  z-index: 100;
  position: relative;
}
main.configurator-grid.svelte-d6606d .sidebar-cell:where(.svelte-d6606d) {
  box-sizing: border-box;
  height: 100%;
  grid-column: sidebar-start/sidebar-end;
  grid-row: sidebar-start/sidebar-end;
  counter-reset: sidebar-section measurement-label;
  display: flex;
  flex-direction: row;
  padding: var(--sidebar-cell-padding) 0 var(--sidebar-cell-padding) var(--sidebar-cell-padding);
}
main.configurator-grid.svelte-d6606d .header-cell:where(.svelte-d6606d) {
  grid-column: header-start/header-end;
  grid-row: header-start/header-end;
  box-sizing: border-box;
  padding: 1rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
main.configurator-grid.svelte-d6606d .canvas-cell:where(.svelte-d6606d) {
  grid-row: canvas-start/canvas-end;
  grid-column: canvas-start/canvas-end;
}
main.configurator-grid.svelte-d6606d .toolbar-cell:where(.svelte-d6606d) {
  grid-row: toolbar-row-start/toolbar-row-end;
  grid-column: toolbar-row-start/toolbar-row-end;
  display: flex;
  box-sizing: border-box;
  padding: 1.5rem;
  z-index: 1000;
  pointer-events: none;
}
main.configurator-grid.svelte-d6606d .toolbar-cell:where(.svelte-d6606d) .toolbar:where(.svelte-d6606d) {
  flex: 1;
  display: flex;
  justify-content: center;
  font-weight: bold;
}
main.configurator-grid.svelte-d6606d .toolbar-cell:where(.svelte-d6606d) .logo:where(.svelte-d6606d) {
  flex: 0;
  font-weight: bold;
  pointer-events: auto;
}
main.configurator-grid.svelte-d6606d .footer:where(.svelte-d6606d) {
  grid-column: footer-start/footer-end;
  grid-row: footer-start/footer-end;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
  padding: 0.275rem 2rem;
  background-color: var(--lib-control-bg);
}
main.configurator-grid.svelte-d6606d .footer:where(.svelte-d6606d):empty {
  display: none;
}
    @position-try --flip-y {
        position-area: bottom span-right;
        margin: 20px 0 0 0;
    }

    @position-try --flip-x {
        position-area: left span-bottom;
        margin: 0 20px 0 0;
    }

    .panel.svelte-rzz155 {
        position: relative;
        display: flex;
        flex: 1;
        /* The wrapper can stretch far beyond its chrome (flex: 1) — keep it transparent to input
           and re-enable on the chrome itself, so oversized wrappers never swallow clicks meant
           for the canvas or panels beneath. */
        pointer-events: none;

        > * {
            pointer-events: auto;
        }

        &.panel-anchored-attached {
            position: fixed;
            position-area: top span-right;
            position-try-fallbacks: --flip-y;
            /* position-try-order: most-height; */
            margin: 0 0 20px 0;

            &.anchor-axis-x {
                position-area: right span-bottom;
                position-try-fallbacks: --flip-x;
                /* position-try-order: most-width; */
                margin: 0 0 0 20px;
            }
        }

        &.panel-anchored-detached {
            position: fixed;
            /* position-area: bottom span-right; */
            top: anchor(top);
            left: anchor(left);
            margin: 0;
        }

        &.panel-fallback-centered {
            /* Modal-like fallback without anchor positioning: the wrapper covers the viewport but
               stays pointer-transparent (see .panel), so only the centered chrome receives input. */
            position: fixed;
            inset: 0;
            justify-content: center;
            align-items: center;
        }
    }

    .placeholder.svelte-rzz155 {
        --corner-radius: var(--lib-control-border-radius-lg);

        background-color: rgba(255, 255, 255, 0.4);
        border-radius: var(--corner-radius);
        width: 100px;
        height: 100px;
        position: relative;
        pointer-events: none;

        &.panel-anchored-attached {
            position: fixed;
            position-area: top span-right;
            position-try-fallbacks: --flip-y;
            /* position-try-order: most-height; */
            margin: 0 0 20px 0;
        }

        &.anchor-axis-x {
            position-area: right span-bottom;
            position-try-fallbacks: --flip-x;
            /* position-try-order: most-width; */
            margin: 0 0 0 20px;
        }

        opacity: 0;
        transition: opacity 0.2s ease-in-out;

        &.dragging {
            opacity: 1;
        }
    }

    .toolbar.svelte-dgxcdi {
        --corner-radius: var(--lib-control-border-radius-lg);

        position: relative;
        display: flex;
        flex-direction: row;
        align-items: stretch;
        width: -moz-fit-content;
        width: fit-content;
        /* Centers the toolbar inside the stretched .panel flex wrapper (previously supplied by
           the UA [popover] stylesheet before the vestigial popover attribute was removed). */
        margin: auto;

        border-radius: var(--corner-radius);
        box-shadow: var(--lib-control-shadow-standard);
        overflow: hidden;
        padding: 0;
        border: none;
        background: none;

        .drag-handle:where(.svelte-dgxcdi) {
            display: flex;
            align-items: center;
            justify-content: center;
            padding: 0.5rem 0.25rem;

            color: var(--lib-control-icon);
            background: rgba(255, 255, 255, 0.15);
            backdrop-filter: blur(4px);

            cursor: grab;
            -webkit-user-select: none;
                    user-select: none;
            touch-action: none;

            &:active {
                cursor: grabbing;
            }
        }

        .content:where(.svelte-dgxcdi) {
            display: flex;
            flex-direction: row;
            align-items: center;
            gap: 0.75rem;
            padding: 0.375rem;

            background: var(--lib-control-bg);
        }
    }

    /* Scroll + sub-sidebar slide machinery, shared by the desktop panel sidebar and the mobile
       sheet. All sizing is driven by --sidebar-width, owned by the host (grid layout or sheet). */
    .body.svelte-1w94zmj {
        position: relative;
        flex: 1;
        display: flex;
        flex-direction: column;
        /* flex children default to min-height: auto; without 0 the scroll region below could
           never shrink under its content height, so it would never actually scroll */
        min-height: 0;
        box-sizing: border-box;
        background: var(--color-white);
    }

    .content-container.svelte-1w94zmj {
        position: absolute;
        top: 0;
        bottom: 0;
        left: 0;
        right: 0;
        transform: translateX(0);
        width: calc(var(--sidebar-width) * 2);
        transition: transform var(--lib-motion-duration-fast) ease-in-out;
        display: flex;

        &.show-sub-sidebar {
            transform: translateX(-50%);
        }
    }

    .content-scroll.svelte-1w94zmj {
        min-height: 0;
        width: var(--sidebar-width);
        box-sizing: border-box;
        display: flex;
        flex-direction: column;
        gap: 1.5rem;
        padding: 0.625rem calc(0.625rem - var(--scrollbar-size));
        scrollbar-gutter: stable both-edges;
        overflow-x: hidden;
        overflow-y: auto;
        overscroll-behavior: contain;
        scroll-behavior: smooth;

        @media (hover: none) and (pointer: coarse) {
            scroll-snap-type: y proximity;
        }
    }

    /* Chrome only — Panel.Root positions the panel (dock / float / zone-clamped detach). */
    .sidebar.svelte-1rfw4gt {
        position: relative;
        display: flex;
        flex-direction: column;
        overflow: hidden;
        background: var(--color-white);
        /* One authoritative width in both regimes (--sidebar-width, owned by the grid layout).
           Attached, the grid column is sized to exactly this plus the cell padding; detached, the
           fixed-position panel wrapper shrink-wraps around it. The explicit width also caps the
           flex automatic minimum, so intrinsically wide content can never push past it. */
        width: var(--sidebar-width);
        flex: none;
        box-sizing: border-box;
        isolation: isolate;

        &.movable {
            border-radius: var(--lib-control-border-radius-xl);
            box-shadow: var(--lib-control-shadow-standard);
            /* header + resize bar are translucent; the body stays white */
            background: none;
        }

        .header:where(.svelte-1rfw4gt) {
            display: flex;
            align-items: center;
            gap: 0.75rem;
            padding: 0.375rem 0.75rem;
            box-sizing: border-box;

            color: var(--lib-control-text-muted);
            background: rgba(255, 255, 255, 0.85);
            backdrop-filter: blur(4px);

            cursor: grab;
            -webkit-user-select: none;
                    user-select: none;
            touch-action: none;

            &:active {
                cursor: grabbing;
            }

            .title:where(.svelte-1rfw4gt) {
                font-size: 0.75rem;
                font-weight: 600;
                white-space: nowrap;
            }
        }

        .resize:where(.svelte-1rfw4gt) {
            display: flex;
            align-items: center;
            justify-content: center;
            height: 1rem;

            color: var(--lib-control-icon);
            background: rgba(255, 255, 255, 0.85);
            backdrop-filter: blur(4px);

            cursor: ns-resize;
            touch-action: none;
        }

        .sidebar-menu-horizontal:where(.svelte-1rfw4gt) {
            z-index: 1;
        }
    }

    .sidebar-menu-vertical.svelte-1rfw4gt {
        padding-top: 3rem;
    }

    .anchor.svelte-tn4zpm {
        display: contents;
    }

    .anchors-dynamic.svelte-vacrq {
        position: absolute;
        inset: 0;
        z-index: 900;
        pointer-events: none;

        .anchor-dynamic:where(.svelte-vacrq) {
            position: absolute;
            /* width: 20px;
            height: 20px;
            border-top-left-radius: 50%;
            border-bottom-right-radius: 50%;
            background-color: #fff; */
            top: 0;
            left: 0;
            width: 0;
            height: 0;
            overflow: hidden;
        }
    }

    .context-menu.svelte-uohxp7 {
        display: flex;
        flex-direction: column;
        align-items: stretch;
        width: -moz-fit-content;
        width: fit-content;

        border-radius: var(--lib-control-border-radius-lg);
        box-shadow: var(--lib-control-shadow-standard);
        overflow: hidden;

        .header:where(.svelte-uohxp7) {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 0.5rem;
            padding: 0.375rem 0.75rem;

            color: var(--lib-control-text);
            background: rgba(255, 255, 255, 0.85);
            backdrop-filter: blur(4px);

            -webkit-user-select: none;

                    user-select: none;

            &.draggable {
                cursor: grab;
                touch-action: none;

                &:active {
                    cursor: grabbing;
                }
            }

            .grab:where(.svelte-uohxp7) {
                display: flex;
                align-items: center;
                gap: 0.5rem;
            }

            .title:where(.svelte-uohxp7) {
                font-size: 0.75rem;
                font-weight: 600;
                line-height: 1;
                white-space: nowrap;
            }

            .close:where(.svelte-uohxp7) {
                display: flex;
                align-items: center;
                justify-content: center;
                padding: 0.25rem;

                border: none;
                /* -sm exists; the previous bare --lib-control-border-radius token does not. */
                border-radius: var(--lib-control-border-radius-sm);
                background: transparent;
                color: var(--lib-control-icon);
                cursor: pointer;

                &:hover {
                    background: var(--lib-control-bg-subtle);
                }

                /* Attached: keep the reserved space but hide the control (also drops pointer events). */
                &.hidden {
                    visibility: hidden;
                }
            }
        }

        .content:where(.svelte-uohxp7) {
            display: flex;
            flex-direction: column;
            align-items: stretch;
            gap: 0.5rem;
            padding: 0.75rem;

            background: var(--lib-control-bg);
        }
    }

    .item.svelte-rablto {
        /* State vocabulary per ButtonAtom (shape-minimal / color-secondary): states mutate the
           locals, the element rules below apply them. */
        --background-color: transparent;
        --text-color: var(--lib-control-text-secondary);
        --outline-color: transparent;

        --font-size: 0.875rem;

        &.size-small {
            --font-size: 0.75rem;
        }

        display: flex;
        align-items: center;
        gap: 0.375rem;

        width: 100%;
        padding: 0.25rem 0.375rem;

        border: none;
        border-radius: var(--lib-control-border-radius-md);

        cursor: pointer;

        font-size: var(--font-size);
        font-weight: 500;
        line-height: 1.25rem;
        white-space: nowrap;

        background: var(--background-color);
        color: var(--text-color);
        outline: var(--focus-ring-width) var(--focus-ring-style) var(--outline-color);
        outline-offset: var(--focus-ring-offset);

        &:hover {
            --background-color: var(--lib-control-bg-muted);
        }

        &:focus {
            --background-color: var(--lib-control-bg-muted);
            --outline-color: var(--focus-ring-color);
        }

        /* Pressed preview = the selected look, as in ButtonAtom's minimal-secondary active. */
        &:active {
            --background-color: var(--lib-control-text-secondary);
            --text-color: var(--lib-control-text-inverted);
        }

        /* Last so a selected item keeps its look under hover/focus. */
        &.selected {
            --background-color: var(--lib-control-text-secondary);
            --text-color: var(--lib-control-text-inverted);
        }

        .text:where(.svelte-rablto),
        .shortcut:where(.svelte-rablto) {
            text-box: trim-both cap alphabetic;
        }

        .shortcut:where(.svelte-rablto) {
            margin-left: auto;
            padding-left: 0.75rem;
        }
    }
.collapsible-item.svelte-102yrh6 {
  --collapsible-item-gap: 0.75rem;
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  background: var(--lib-control-bg-subtle);
  border-radius: var(--lib-control-border-radius-md);
}

.header.svelte-102yrh6 {
  --background-color: transparent;
  --text-color: var(--lib-control-text-secondary);
  --outline-color: transparent;
}
.header.svelte-102yrh6:hover {
  --background-color: var(--lib-control-bg-muted);
}
.header.svelte-102yrh6 {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.375rem;
  width: 100%;
  padding: 0.25rem 0.375rem;
  border: none;
  border-radius: var(--lib-control-border-radius-md);
  cursor: pointer;
  font-size: 0.875rem;
  font-weight: 500;
  line-height: 1.25rem;
  white-space: nowrap;
  background: var(--background-color);
  color: var(--text-color);
  outline: var(--focus-ring-width) var(--focus-ring-style) var(--outline-color);
  outline-offset: var(--focus-ring-offset);
}
.header.svelte-102yrh6 .title:where(.svelte-102yrh6) {
  display: flex;
  align-items: center;
  gap: 0.375rem;
}
.header.svelte-102yrh6 .chevron:where(.svelte-102yrh6) {
  display: flex;
  color: var(--lib-control-icon);
  transition: transform var(--lib-motion-duration-slow) var(--lib-motion-easing-spring);
}
.header.svelte-102yrh6 .chevron.open:where(.svelte-102yrh6) {
  transform: rotate(-180deg);
}

.content.svelte-102yrh6 {
  display: flex;
  flex-direction: column;
  gap: 0.625rem;
  padding: 0.5rem 1.25rem;
}
    .divider.svelte-1i98co {
        width: 100%;
        height: 0;
        margin: 0;
        border: none;
        border-top: 1px solid var(--lib-control-border-subtle);
    }
