/* ==========================================================================
   FAB & SPEED DIAL
   ========================================================================== */

/* --- EXPRESSIVE FABS --- */
.fab {
    display: inline-flex; align-items: center; justify-content: center;
    width: 56px; height: 56px;
    border-radius: 16px;
    background: var(--md-sys-color-primary-container);
    color: var(--md-sys-color-on-primary-container);
    border: none; cursor: pointer;
    box-shadow: var(--md-sys-elevation-3);
    transition: all 0.3s cubic-bezier(0.2, 0, 0, 1);
    position: relative; overflow: hidden;
}
.fab:hover { box-shadow: var(--md-sys-elevation-4); }

.fab-extended {
    width: auto;
    padding: 0 20px;
    gap: 12px;
    border-radius: 16px;
}

.fab-standard {
    width: 56px; height: 56px; border-radius: 16px;
    font-size: 24px;
}

/* --- EXPRESSIVE VARIANTS --- */
.fab-expressive-large {
    width: 96px; height: 96px;
    border-radius: 28px;
    border-top-left-radius: 4px;
    font-size: 32px;
}
.fab-expressive-medium {
    width: 56px; height: 56px;
    border-radius: 16px;
    border-bottom-right-radius: 4px; 
}
.fab-expressive-small {
    width: 40px; height: 40px;
    border-radius: 12px;
    border-top-right-radius: 4px;
}

/* --- SPEED DIAL --- */
.speed-dial-container { position: relative; z-index: 10; display: flex; justify-content: flex-start; }
.speed-dial-actions {
    position: absolute; bottom: 80px; left: 0; transform: translateY(20px) scale(0.9);
    display: flex; flex-direction: column; gap: 12px;
    pointer-events: none; opacity: 0; 
    transition: all 0.3s cubic-bezier(0.2, 0, 0, 1);
    z-index: 5;
    align-items: flex-start; /* Left align buttons */
    width: max-content;
}
.speed-dial-container.open .speed-dial-actions {
    opacity: 1; pointer-events: auto;
    transform: translateY(0) scale(1);
}

/* --- STAGGERED ANIMATION --- */
.speed-dial-actions button {
    opacity: 0; transform: translateY(10px);
    transition: all 0.3s cubic-bezier(0.2, 0, 0, 1);
}
.speed-dial-container.open .speed-dial-actions button {
    opacity: 1; transform: translateY(0);
}
.speed-dial-container.open .speed-dial-actions button:nth-child(3) { transition-delay: 0.05s; }
.speed-dial-container.open .speed-dial-actions button:nth-child(2) { transition-delay: 0.1s; }
.speed-dial-container.open .speed-dial-actions button:nth-child(1) { transition-delay: 0.15s; }

.speed-dial-container.open .fab {
    background: var(--md-sys-color-primary-container);
    color: var(--md-sys-color-on-primary-container);
    transform: rotate(45deg); 
    box-shadow: var(--md-sys-elevation-4);
}
.speed-dial-container.open .fab span { transform: none; }

/* --- FAB MORPHING --- */
.fab-morph { transition: all 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275); }
.fab-morph.square { border-radius: 4px !important; }
.fab-morph.circle { border-radius: 50% !important; }
