/* /Components/FeatureList.razor.rz.scp.css */
.panel-head[b-6f02dd4pr9] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-weight: 600;
    margin-bottom: 0.4rem;
}

.panel-actions button[b-6f02dd4pr9] {
    border: 1px solid var(--line);
    background: var(--paper);
    border-radius: 0.3rem;
    cursor: pointer;
    font-size: 1rem;
    line-height: 1;
    padding: 0.15rem 0.45rem;
}

.panel-actions button:disabled[b-6f02dd4pr9] {
    opacity: 0.35;
    cursor: default;
}

.features[b-6f02dd4pr9] {
    list-style: none;
    margin: 0;
    padding: 0;
}

.features li[b-6f02dd4pr9] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.4rem 0.3rem;
    border-bottom: 1px solid var(--line);
}

/* A step that could not be applied stays in the list rather than vanishing,
   so the work behind it is not lost. */
.features li.failed[b-6f02dd4pr9] {
    background: #fdf3e6;
}

.features .number[b-6f02dd4pr9] {
    color: var(--muted);
    min-width: 1.2rem;
    font-variant-numeric: tabular-nums;
}

.features input[b-6f02dd4pr9] {
    width: 4.5rem;
    font: inherit;
    padding: 0.15rem 0.3rem;
    border: 1px solid var(--line);
    border-radius: 0.25rem;
}

.features .badge[b-6f02dd4pr9] {
    font-size: 0.7rem;
    color: var(--warn);
    cursor: help;
}

.features .remove[b-6f02dd4pr9] {
    margin-left: auto;
    border: none;
    background: none;
    cursor: pointer;
    color: var(--muted);
    font-size: 0.9rem;
}
/* /Components/ProgressPanel.razor.rz.scp.css */
.working[b-7fi4uswp4x] {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: color-mix(in srgb, var(--ground) 82%, transparent);
    z-index: 5;
}

.working-card[b-7fi4uswp4x] {
    display: flex;
    align-items: center;
    gap: 0.9rem;
    min-width: 19rem;
    padding: 1rem 1.25rem;
    border: 1px solid var(--line);
    border-radius: 0.5rem;
    background: var(--paper);
    box-shadow: 0 2px 12px rgb(0 0 0 / 12%);
}

.working-spinner[b-7fi4uswp4x] {
    flex: none;
    width: 1.5rem;
    height: 1.5rem;
    border: 3px solid var(--line);
    border-top-color: var(--accent);
    border-radius: 50%;
    animation: working-turn-b-7fi4uswp4x 0.9s linear infinite;
}

/* Turned with a transform on purpose. A step can hold the one thread
   WebAssembly runs on for seconds at a time, and an animation that needed
   layout would freeze with it and read as a hang. A transform is handed to the
   compositor and keeps going. */
@keyframes working-turn-b-7fi4uswp4x {
    to { transform: rotate(360deg); }
}

.working-text[b-7fi4uswp4x] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    min-width: 0;
}

.working-step[b-7fi4uswp4x] {
    color: var(--muted);
    font-size: 0.8rem;
}

/* A real progress element rather than two nested divs with a width on them:
   the value is data, not styling, and it needs no inline style to carry it. */
.working-bar[b-7fi4uswp4x] {
    appearance: none;
    display: block;
    width: 100%;
    height: 4px;
    margin-top: 0.15rem;
    border: none;
    border-radius: 2px;
    background: var(--line);
}

.working-bar[b-7fi4uswp4x]::-webkit-progress-bar {
    border-radius: 2px;
    background: var(--line);
}

.working-bar[b-7fi4uswp4x]::-webkit-progress-value {
    border-radius: 2px;
    background: var(--accent);
    transition: width 0.2s ease-out;
}

.working-bar[b-7fi4uswp4x]::-moz-progress-bar {
    border-radius: 2px;
    background: var(--accent);
}
/* /Components/RadiusDialog.razor.rz.scp.css */
.overlay[b-iy0mho3sca] {
    position: fixed;
    inset: 0;
    background: rgba(20, 24, 28, 0.35);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 10;
}

.dialog[b-iy0mho3sca] {
    background: var(--paper);
    border-radius: 0.5rem;
    padding: 1.25rem 1.5rem;
    min-width: 20rem;
    box-shadow: 0 1.5rem 3rem rgba(0, 0, 0, 0.2);
}

.dialog h2[b-iy0mho3sca] {
    margin: 0 0 0.25rem;
    font-size: 1.05rem;
}

.dialog label[b-iy0mho3sca] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin: 0.9rem 0;
}

.dialog input[b-iy0mho3sca] {
    width: 6rem;
    font: inherit;
    padding: 0.3rem 0.4rem;
    border: 1px solid var(--line);
    border-radius: 0.25rem;
}

.dialog .error[b-iy0mho3sca] {
    color: var(--error);
    font-size: 0.85rem;
    margin: 0 0 0.5rem;
}

.dialog-actions[b-iy0mho3sca] {
    display: flex;
    justify-content: flex-end;
    gap: 0.5rem;
}

.dialog-actions button[b-iy0mho3sca] {
    padding: 0.4rem 0.9rem;
    border: 1px solid var(--line);
    border-radius: 0.35rem;
    background: var(--paper);
    cursor: pointer;
    font: inherit;
}

.dialog-actions .primary[b-iy0mho3sca] {
    background: var(--accent);
    border-color: var(--accent);
    color: #fff;
}
/* /Layout/MainLayout.razor.rz.scp.css */
.app-shell[b-6d1sdbvri4] {
    /* Fill the viewport: the 3D viewport needs a fixed, known box to render
       into, and nothing on this screen should scroll the page itself. */
    position: fixed;
    inset: 0;
    display: flex;
    overflow: hidden;
}
/* /Pages/Editor.razor.rz.scp.css */
/* One screen, three areas: a toolbar, the list of fillets, and the model. */
.editor[b-suxj8gxehp] {
    display: grid;
    grid-template-columns: 20rem 1fr;
    grid-template-rows: auto 1fr;
    height: 100%;
    outline: none; /* focusable only so it can receive the keyboard shortcuts */
}

.toolbar[b-suxj8gxehp] {
    grid-column: 1 / -1;
    display: flex;
    align-items: center;
    gap: 1.25rem;
    padding: 0.6rem 1rem;
    background: var(--paper);
    border-bottom: 1px solid var(--line);
    font-size: 0.9rem;
}

.toolbar .logo[b-suxj8gxehp] {
    /* The file's own dimensions are on the element so the toolbar does not
       jump while it loads; these two decide what is actually shown. */
    width: auto;
    height: 1.75rem;
    flex: none;
}

.toolbar strong[b-suxj8gxehp] {
    font-size: 1rem;
    letter-spacing: 0.01em;
}

.toolbar .file[b-suxj8gxehp] {
    cursor: pointer;
    padding: 0.35rem 0.8rem;
    border: 1px solid var(--line);
    border-radius: 0.35rem;
    background: var(--ground);
}

/* ::deep because the input belongs to InputFile, not to this component, so it
   does not carry this stylesheet's scope attribute. Without it the file picker
   sits in the toolbar in its raw form. */
.toolbar .file[b-suxj8gxehp]  input {
    display: none;
}

.toolbar .slider[b-suxj8gxehp] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    color: var(--muted);
}

.toolbar .slider span[b-suxj8gxehp] {
    min-width: 2.5rem;
}

.toolbar button[b-suxj8gxehp] {
    padding: 0.35rem 0.8rem;
    border: 1px solid var(--line);
    border-radius: 0.35rem;
    background: var(--paper);
    cursor: pointer;
    font: inherit;
}

.toolbar button:disabled[b-suxj8gxehp] {
    opacity: 0.45;
    cursor: default;
}

.stage[b-suxj8gxehp] {
    position: relative;
    overflow: hidden;
}

.stage canvas[b-suxj8gxehp] {
    display: block;
    width: 100%;
    height: 100%;
}

.empty[b-suxj8gxehp] {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.25rem;
    pointer-events: none; /* the canvas underneath still takes the clicks */
    text-align: center;
}

.side[b-suxj8gxehp] {
    border-right: 1px solid var(--line);
    background: var(--paper);
    overflow-y: auto;
    padding: 0.75rem;
    /* A column so the credit can be pushed to the bottom of the panel rather
       than trailing whatever the list happens to end with. */
    display: flex;
    flex-direction: column;
}

.credit[b-suxj8gxehp] {
    margin: auto 0 0;
    padding-top: 0.75rem;
    font-size: 0.75rem;
    color: var(--muted);
    text-align: center;
}

.credit a[b-suxj8gxehp] {
    color: inherit;
}

.note[b-suxj8gxehp] {
    padding: 0.5rem 0.65rem;
    border-radius: 0.35rem;
    margin-bottom: 0.5rem;
    font-size: 0.85rem;
    border-left: 3px solid var(--line);
    background: var(--ground);
}

.note.error[b-suxj8gxehp] { border-left-color: var(--error); }
.note.warn[b-suxj8gxehp] { border-left-color: var(--warn); }
