/* Friendly error dialog. Wally (#ea5211) is warm and goofy; Wilma (#3c3cc6) is calm and smart; plain is neutral. */
.friendly-error-dialog {
    --fe-accent: #5f6b7a;
    --fe-tint: #f4f6f8;
    max-width: 30rem;
    width: calc(100% - 2rem);
    border: none;
    border-top: 6px solid var(--fe-accent);
    border-radius: 14px;
    padding: 0;
    box-shadow: 0 12px 40px rgba(0, 0, 0, .28);
    overflow: hidden;
}
.friendly-error-dialog::backdrop { background: rgba(20, 20, 35, .45); }
.friendly-error-dialog .fe-body {
    display: flex;
    gap: 1rem;
    align-items: flex-start;
    padding: 1.25rem 1.25rem .5rem;
    background: linear-gradient(180deg, var(--fe-tint) 0%, #fff 70%);
}
.friendly-error-dialog .fe-img {
    width: 96px;
    height: 96px;
    object-fit: contain;
    border-radius: 6px;
    flex: none;
    border: 1px solid #efdecd;
    background: #fff;
}
.friendly-error-dialog .fe-name {
    margin: 0 0 .15rem;
    font-size: .8rem;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
    color: var(--fe-accent);
}
.friendly-error-dialog .fe-title { margin: 0 0 .5rem; font-size: 1.15rem; color: #222; }
.friendly-error-dialog .fe-text { margin: 0 0 .5rem; color: #333; line-height: 1.45; }
.friendly-error-dialog .fe-reassure { margin: 0; font-size: .85rem; color: #555; }
.friendly-error-dialog .fe-actions {
    display: flex;
    justify-content: flex-end;
    padding: .75rem 1.25rem 1rem;
    margin: 0;
}
.friendly-error-dialog .fe-ok {
    background: var(--fe-accent);
    border: none;
    color: #fff;
    border-radius: 999px;
    padding: .45rem 1.4rem;
    font-weight: 600;
}
.friendly-error-dialog .fe-ok:hover,
.friendly-error-dialog .fe-ok:focus-visible { filter: brightness(.9); outline: 2px solid var(--fe-accent); outline-offset: 2px; }

/* Wally: playful, a little wobble on entry. */
.friendly-error-dialog.fe-wally { --fe-accent: #ea5211; --fe-tint: #fdeee6; border-radius: 18px 18px 18px 4px; }
.friendly-error-dialog.fe-wally[open] .fe-img { animation: fe-wobble .6s ease-in-out 1; }

/* Wilma: composed, steady, no bounce. */
.friendly-error-dialog.fe-wilma { --fe-accent: #3c3cc6; --fe-tint: #ececfb; border-radius: 10px; }
.friendly-error-dialog.fe-wilma .fe-title { color: #2a2a8f; }

@keyframes fe-wobble {
    0%, 100% { transform: rotate(0); }
    25% { transform: rotate(-8deg); }
    75% { transform: rotate(8deg); }
}
@media (prefers-reduced-motion: reduce) {
    .friendly-error-dialog.fe-wally[open] .fe-img { animation: none; }
}

/* Settings preview (Settings/FriendlyErrors): slides share the dialog chrome. */
.fe-slide {
    --fe-accent: #5f6b7a;
    --fe-tint: #f4f6f8;
    max-width: 34rem;
    border-top: 6px solid var(--fe-accent);
    border-radius: 14px;
    box-shadow: 0 6px 20px rgba(0, 0, 0, .15);
    overflow: hidden;
    background: #fff;
}
.fe-slide.fe-wally { --fe-accent: #ea5211; --fe-tint: #fdeee6; border-radius: 18px 18px 18px 4px; }
.fe-slide.fe-wilma { --fe-accent: #3c3cc6; --fe-tint: #ececfb; border-radius: 10px; }
.fe-slide.fe-wilma .fe-title { color: #2a2a8f; }
.fe-slide .fe-body { display: flex; gap: 1rem; align-items: flex-start; padding: 1.25rem 1.25rem .5rem; background: linear-gradient(180deg, var(--fe-tint) 0%, #fff 70%); }
.fe-slide .fe-img { width: 96px; height: 96px; object-fit: contain; border-radius: 6px; flex: none; border: 1px solid #efdecd; background: #fff; }
.fe-slide .fe-name { margin: 0 0 .15rem; font-size: .8rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--fe-accent); }
.fe-slide .fe-title { margin: 0 0 .5rem; font-size: 1.15rem; }
.fe-slide .fe-text { margin: 0 0 .5rem; line-height: 1.45; }
.fe-slide .fe-reassure { margin: 0; font-size: .85rem; color: #555; }
.fe-slide .fe-actions { display: flex; justify-content: flex-end; padding: .75rem 1.25rem 1rem; }
.fe-slide .fe-ok { background: var(--fe-accent); color: #fff; border-radius: 999px; padding: .45rem 1.4rem; font-weight: 600; }
.fe-carousel { display: grid; gap: .75rem; max-width: 34rem; }
.fe-carousel-nav { display: flex; align-items: center; justify-content: space-between; }
.fe-carousel-nav button { font-size: 1.5rem; line-height: 1; padding: .2rem .8rem; }
.fe-range { width: 100%; accent-color: #ea5211; }
.fe-toggle-row { display: flex; gap: 1rem; align-items: center; flex-wrap: wrap; }
